Logique sequentielle
Logique séquentielle¶
- Dès qu'il y a mémorisation, elle doit être séquentielle.
- Un processus sensible au seul front d'horloge
- et éventuellement un signal de remise à zéro si celui-ci est asynchrone
- Les affectations doivent être différées (
<=
) - L'état initial doit être défini dans le même processus avec une condition de remise à zéro (reset)
Structure de base¶
- Avec remise à zéro synchrone, le signal de reset ne fait pas partie de la liste de sensibilité
always_ff@(posedge clk)
if (reset)
begin
...
end
else
begin
...
end
-
Avec remise à zéro asynchrone, le signal de reset fait partie de la liste de sensibilité.
-
Le reset est actif sur niveau haut:
always_ff@(posedge clk or posedge reset)
if (reset)
begin
...
end
else
begin
...
end
always_ff@(posedge clk or negedge nreset)
if (!nreset)
begin
...
end
else
begin
...
end
Mémorisation implicite¶
- Exemple D-FF avec reset synchrone et enable
always_ff@(posedge clk)
if (!nreset)
Q <= 0;
else if(ena)
Q <= D;
// else Q ne change pas