14 / 37 · Konzept
Flipflops, Enable und Steuerprioritäten
Halten, Laden und Reset als Folgezustandsfunktion definieren und unbeabsichtigtes Clock-Gating vermeiden.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Ein Register speichert die Folgezustandsfunktion
bezeichnet den Zustand vor der Flanke, den dort übernommenen Eingang und den Zustand danach. Für ein RegisterRegister Speichert einen Zustand aus mehreren Bits. Die synchronen Register dieses Kurses übernehmen festgelegte Eingaben an Taktflanken. Mehr erfahren mit reset vor enable gilt:
Bei enable=0 bleibt der gespeicherte Wert trotz D-Änderungen erhalten. Diesen Haltepfad im sequenziellen RTL nicht eigens zuzuweisen ist etwas anderes als eine fehlende kombinatorische Zuweisung: Halten gehört zur Registerspezifikation.
module enabled_register (
input logic clk, rst, en,
input logic [7:0] d,
output logic [7:0] q
);
always_ff @(posedge clk) begin
if (rst) q <= 8'b0;
else if (en) q <= d;
end
endmoduleDies ist synchroner active-high-Reset. Sind reset und enable an derselben Flanke 1, wird 0 gespeichert. Eine andere Reihenfolge ändert die Funktion; Priorität muss deshalb in Code und Tests stehen, nicht nur im Kommentar.
Jede Spalte dokumentiert eine steigende FlankeSteigende Flanke Übergang des Takts von 0 auf 1. Nicht zu verwechseln mit dem gesamten hohen Pegelintervall CLK=1. Mehr erfahren. Eingänge gelten davor, Zustände mit „after“ unmittelbar danach. Die Spalten zeigen Abtastreihenfolge, keine physische LaufzeitLaufzeit Zeit nach einer Eingangsänderung, bis der Ausgang auf dem richtigen Wert stabil ist. Logische Äquivalenz und zeitliche Eigenschaften sind getrennte Aussagen. Mehr erfahren. Anfangs Q=0xA5: erste Spalte Halten, zweite Schreiben, dritte gleichzeitiges reset und enable.
Wellenformdaten anzeigen
| Signal | Wellenform | Buswerte |
|---|---|---|
| edge | 2345 | E0 → E1 → E2 → E3 |
| reset | 0.10 | |
| enable | 01.0 | |
| D | 2.34 | 3C → 99 → 77 |
| Q after | 234. | A5 → 3C → 00 |
Enable ist kein Signal zum direkten Abschneiden des Takts
Ein beliebiges gated_clk = clk & en kann bei en-Änderungen kurze Impulse oder unerwartete Flanken erzeugen. Welche Zelle Clock-enable-RTL realisiert, bestimmen Synthese und Implementierung. Clock-Gating zur Energieeinsparung ist gesondert mit geeigneten Zellen und Timing-Prüfung zu entwerfen.
Prioritäten werden sichtbar, wenn reset, load und enable zusammentreffen. Jedes Steuersignal nur einzeln zu aktivieren genügt nicht. Beispielsweise muss q=A5 bei en=0, d=3C halten und an der nächsten Flanke mit en=1 3C übernehmen.
Selbst ausprobieren
q startet mit 0xA5. Eine Flanke hat rst=1, en=1, d=0x3C, die nächste rst=0, en=0. Welche Werte entstehen nach beiden Flanken?
Erklärung lesen
An der ersten Flanke erzwingt Resetpriorität 0; an der zweiten hält enable=0 diesen Wert. Wäre reset innerhalb der en-Bedingung implementiert, könnte ein Reset bei en=0 verloren gehen. Auch diese Kombination muss geprüft werden.