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;