Hardwarebeschreibungssprachen und Verifikation

Welche Richtlinie zur Verwendung der Zuweisungsarten in Verilog ist allgemein korrekt?

  1. AÜberall nur blockierende Zuweisungen (=) verwenden
  2. BFür getaktete sequentielle Schaltungen nichtblockierende Zuweisungen (<=), für always-Blöcke kombinatorischer Schaltungen blockierende Zuweisungen (=) verwenden
  3. CIn einem always-Block beide willkürlich mischen
Antwort und Erläuterung anzeigen

Antwort: B. Für getaktete sequentielle Schaltungen nichtblockierende Zuweisungen (<=), für always-Blöcke kombinatorischer Schaltungen blockierende Zuweisungen (=) verwenden

Wird eine sequentielle Schaltung mit nichtblockierenden Zuweisungen beschrieben, entspricht dies dem Verhalten einer Schaltung, in der alle Flipflops gleichzeitig Werte übernehmen, und das Ergebnis hängt weder von der Schreibreihenfolge noch von der Ausführungsreihenfolge anderer always-Blöcke ab. Bei kombinatorischen Schaltungen ist es natürlich, Zwischenwerte von oben nach unten zu berechnen, daher werden blockierende Zuweisungen verwendet. Wichtig ist auch, in einem always-Block nicht beide zu mischen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

  1. Was bedeutet „always @(*)“ in Verilog?
  2. Die obige Beschreibung sollte eine kombinatorische Schaltung sein. Welches mögliche Problem ist korrekt beschrieben?
  3. Was entsteht bei der Logiksynthese, wenn wie oben als kombinatorische Schaltung gedachter Code geschrieben wird?
  4. Welche Kombination aus Grund für das Entstehen eines Latches in der obigen Beschreibung und Gegenmaßnahme ist korrekt?
  5. Welche Schreibweise wird häufig verwendet, um in einem always-Block einer kombinatorischen Schaltung unbeabsichtigte Latches zu verhindern?

Vergleiche zu diesem Thema