Hardwarebeschreibungssprachen und Verifikation

Welche Aussage zum Verhalten der nichtblockierenden Zuweisung (<=) in Verilog ist korrekt?

  1. ADie linke Seite wird im Moment der Zuweisung aktualisiert, und in der nächsten Zeile wird dieser neue Wert verwendet
  2. BAlle rechten Seiten des gleichen Zeitpunkts werden zuerst ausgewertet, danach werden die linken Seiten gemeinsam aktualisiert
  3. CDas Ergebnis der Zuweisung wird verworfen, und nichts ändert sich
Antwort und Erläuterung anzeigen

Antwort: B. Alle rechten Seiten des gleichen Zeitpunkts werden zuerst ausgewertet, danach werden die linken Seiten gemeinsam aktualisiert

Bei nichtblockierenden Zuweisungen werden an der Taktflanke zuerst die rechten Seiten aller <= mit den alten Werten ausgewertet und danach alle linken Seiten gleichzeitig überschrieben. Das entspricht dem Verhalten einer realen Schaltung, in der viele Flipflops mit demselben Takt gleichzeitig die Werte unmittelbar vor der Flanke übernehmen. Daher gilt für die Beschreibung getakteter sequentieller Schaltungen grundsätzlich die nichtblockierende Zuweisung.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

  1. Bei der obigen Beschreibung war unmittelbar vor der steigenden Taktflanke a=0 und b=1. Welche Werte haben a und b nach der steigenden Flanke?
  2. Ein zweistufiges Schieberegister sollte entstehen, wurde aber wie oben mit blockierenden Zuweisungen (=) geschrieben. Welches Problem tritt auf?
  3. Welche Richtlinie zur Verwendung der Zuweisungsarten in Verilog ist allgemein korrekt?
  4. Was bedeutet „always @(*)“ in Verilog?
  5. Die obige Beschreibung sollte eine kombinatorische Schaltung sein. Welches mögliche Problem ist korrekt beschrieben?

Vergleiche zu diesem Thema