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.5. Compteur modulo 16 avec entrée de validation et RAZ synchrone

Ce composant doit compter modulo 16, posséde une entrée de comptage (Horloge), une entrée de validation (Enable) et une entrée de remise à zéro (Clear).

Le comportement consiste à prendre en compte les traitements seulement si Enable est à 1. Pour la suite, la remise à zéro (prise en compte de Clear) ne peut se faire que sur le front actif sur Horloge à condition que le signal Enable soit actif.

Le programme est :

module cptdecptmodulo16 (clk, en, clr, preset , N) ;

input clk , en, clr, preset ;

output[3 : 0] N ;

reg [3 : 0] N ;

always @ (posedge clk)

if (en)

begin

N = N + 1 ;

if (clr)

N = 0 ;

end

endmodule

L'ordre d'écriture des traitements a son importance. Les évaluations sont faites au cours du traitement dans le bloc always. Il est possible de faire en sorte que l'évaluation soit faite à la sortie du bloc always. Ceci se fait par le changement du signe d'affectation "<=" (affectation dite non bloquante)

Ajouter un preset est aussi simple :

module cptdecptmodulo16 (clk, en, clr, preset , N) ;

input clk , en, clr, preset ;

output[3 : 0] N ;

reg [3 : 0] N ;

always @ (posedge clk)

if (en)

begin

N = N + 1 ;

if (preset)

N = 15 ;

if (clr)

N = 0 ;

end

endmodule

 

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