Décrire la logique séquentielle
Créer des registres cadencés, gérer reset et enable, puis comprendre les affectations non bloquantes.
Quand le circuit garde un état
La logique séquentielle mémorise une valeur d'un cycle à l'autre. Une bascule met généralement à jour sa sortie sur un front d'horloge.
module data_register (
input wire i_clk,
input wire i_reset,
input wire i_enable,
input wire [7:0] i_data,
output reg [7:0] o_data
);
always @(posedge i_clk) begin
if (i_reset)
o_data <= 8'h00;
else if (i_enable)
o_data <= i_data;
end
endmoduleposedge i_clk déclenche le bloc au front montant. Si vaut 0, aucune nouvelle affectation n'est faite et le registre garde sa valeur. C'est ici volontaire.