Hardwarebeschreibungssprachen und Verifikation

Was bedeutet „always @(*)“ in Verilog?

  1. AEs stellt ein Flipflop dar, das bei jeder steigenden Taktflanke ausgeführt wird
  2. BEs wird nur einmal zu Beginn der Simulation ausgeführt
  3. CEs stellt eine kombinatorische Schaltung dar, die immer ausgeführt wird, wenn sich eines der im Block gelesenen Signale ändert
Antwort und Erläuterung anzeigen

Antwort: C. Es stellt eine kombinatorische Schaltung dar, die immer ausgeführt wird, wenn sich eines der im Block gelesenen Signale ändert

Das @( ) nach always heißt Sensitivitätsliste und legt fest, bei Änderung welcher Signale der Block ausgeführt wird. Mit „*“ werden automatisch alle im Block gelesenen Signale eingetragen, sodass eine kombinatorische Schaltung korrekt dargestellt wird. Beim Eintragen von Hand werden leicht Signale vergessen, daher sind für kombinatorische Schaltungen „@(*)“ oder always_comb von SystemVerilog sicherer.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

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

Vergleiche zu diesem Thema