Hardwarebeschreibungssprachen und Verifikation
Welche Art von Reset und welches Verhalten hat die obige Beschreibung?
always @(posedge clk or negedge rst_n)
if (!rst_n) q <= 0;
else q <= d;
- ASynchroner Reset: q wird nur 0, wenn rst_n 0 ist und der Takt steigt
- BAsynchroner Reset: Sobald rst_n 0 wird, wird q sofort 0, ohne den Takt abzuwarten
- Cq wird 0, wenn rst_n 1 wird
Antwort und Erläuterung anzeigen
Antwort: B. Asynchroner Reset: Sobald rst_n 0 wird, wird q sofort 0, ohne den Takt abzuwarten
Da „negedge rst_n“ in der Sensitivitätsliste steht, wird der Block auch im Moment des Wechsels von rst_n von 1 auf 0 ausgeführt, und q wird unabhängig vom Takt 0. Das ist ein asynchroner Reset. Das „_n“ im Namen kennzeichnet nach Konvention ein Signal mit negativer Logik, das bei 0 aktiv ist. Er hat den Vorteil, dass auch bei stehendem Takt zurückgesetzt werden kann, doch beim Zeitpunkt der Rücknahme des Resets ist Vorsicht geboten.