Aller au contenu

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
2. Le reset est actif sur niveau bas:

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