LOGIQUE PROGRAMMABLE EN VERILOG
Chapitre 1. Introduction
Chapitre 2. Traitement combinatoire et syntaxe du langage
Chapitre 3. L'usage de l'outil QUARTUS II
Chapitre 4. Description comportementale
4.1. Le bloc always et le type reg
4.2. Les opérateurs conditionnels
4.3. La mémoire élémentaire
4.4. L'alternative multiple
4.5. Exemple de description par table de vérité
4.6. Traitement séquentiel par l'exemple
4.6.1. Bascule D
4.6.2. Compteur modulo 16
4.6.3. Compteur de 4 à 28
4.6.4. Compteur/décompteur modulo 16
4.6.5. Compteur modulo 16 avec entrée de validation et RAZ synchrone
4.6.6. Compteur modulo 16 à chargement asynchrone
4.6.7. Registre à décalage 6 bits (1 entrée série - 1 sortie parallèle)
4.6.8. Registre à décalage 6 bits (1 entrée série - 1 sortie série)
4.7. Exercices
4.8. Solutions des exercices
Chapitre 5. Projets : énoncés
Chapitre 6. Projets : vers la solution
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante

4.6.3. Compteur de 4 à 28

Il s'agit ici de faire un compteur allant de 4 à 28 et ainsi de suite.

Le comportement consiste à ajouter 1 jusqu'à atteindre 28 et passer de nouveau à 4.

Le programme est :

module cptDe4A28 (clk, N) ;

input clk ;

output[4 : 0] N ;

reg [4 : 0] N ;

always @ (posedge clk)

begin

N = N + 1 ;

if (N > 28)

N = 4 ;

end

endmodule

 

remarque: la valeur initiale n'est pas positionnable avec la version étudiante, par contre la version universitaire du logiciel connait le bloc initial qui permettrait de faire débuter notre compteur à la valeur désirée sans l'artifice d'un signal externe.

Il faut alors ajouter un bloc « initial » entre les déclarations des variables et endmodule :

initial

N = 4;

On peut aussi contourner cette difficulté (version étudiante du logiciel) en ajoutant un circuit résistance-condensateur dérivateur sur une entrée « init » à la façon d'un reset de microprocesseur. Ceci permet de faire un positionnement au démarrage et d'avoir un bloc actif seulement à l'initialisation.

On écrirait alors :

always @ (posedge init)

N = 4;

 

Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante