Circuite secvențiale

De la WikiLabs
Versiunea din 10 martie 2012 19:49, autor: Radu Hobincu (Discuție | contribuții) (Circuite de memorare. Registrul)

Circuitele secvențiale sunt circuitele care sunt sincronizate de un semnal de ceas, adică ale căror ieșiri nu se modifică decât pe frontul pozitiv (sau negativ, în funcție de descriere) de ceas.

Semnalul de ceas

Semnal de ceas în Modelsim

Semnalul de ceas este un semnal periodic, care oscilează cu o anumită frecvență, numită frecvența de ceas.

Observație: Vezi sintaxa Verilog pentru a afla cum se generează un semnal de ceas în simulare.

Elementele semnalului de ceas

Circuite de memorare. Registrul

Registrul este celula elementară de memorare și baza circuitelor secvențiale. Odată o valoare încarcată într-un registru, aceasta se păstrează până la suprascrierea ei cu o altă valoare.

Regulă: Încărcarea unei valori într-un registru se face doar pe frontul de ceas.
Regulă: În Verilog, încărcarea cu o valoare a unui registru se face exclusiv în blocuri always.
Regulă: Dacă un modul este secvențial atunci obligatoriu el va avea un port de intrare pentru semnalul de ceas.

Reprezentarea grafică a unui registru pe n biți

Simulare a unui registru pe 4 biți

Aceasta este implementarea în Verilog a unui registru pe 4 biți care nu face decât să propage intrarea la ieșire și nimic mai mult iar în imagine puteți vedea o simulare Modelsim care arată că ieșirea nu se schimbă decât pe frontul pozitiv de ceas care urmează schimbării intrării:

module Register(
  input clock,
  input [3:0] in,
  output reg [3:0] out
  );

always@(posedge clock) begin
  out <= in;  
end

endmodule