Hardwarebeschreibungssprachen und Verifikation

Welche Kombination aus Grund für das Entstehen eines Latches in der obigen Beschreibung und Gegenmaßnahme ist korrekt?

always @(*) begin
    case (sel)
        2'b00: y = a;
        2'b01: y = b;
        2'b10: y = c;
    endcase
end
  1. AWeil im case drei Eingänge verwendet werden. Die Eingänge werden auf zwei reduziert
  2. BWeil bei sel=2'b11 keine Zuweisung an y erfolgt. Es wird ein default-Zweig ergänzt, sodass in allen Fällen ein Wert festgelegt ist
  3. CWeil always @(*) verwendet wird. Es wird auf always @(posedge clk) umgestellt
Antwort und Erläuterung anzeigen

Antwort: B. Weil bei sel=2'b11 keine Zuweisung an y erfolgt. Es wird ein default-Zweig ergänzt, sodass in allen Fällen ein Wert festgelegt ist

sel hat 2 Bit und damit vier Werte, doch der Fall 2'b11 ist nicht beschrieben; y muss dann den vorherigen Wert halten, und es entsteht ein Latch. Wird der Wert aller übrigen Fälle etwa mit „default: y = 0;“ festgelegt oder y vor dem case ein Standardwert zugewiesen, entsteht eine kombinatorische Schaltung. Latches durch vergessene Bedingungen sind ein Fehler, dem HDL-Anfänger häufig begegnen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Hardwarebeschreibungssprachen und Verifikation

  1. Welche Schreibweise wird häufig verwendet, um in einem always-Block einer kombinatorischen Schaltung unbeabsichtigte Latches zu verhindern?
  2. Welche der folgenden Verilog-Beschreibungen wird bei der Logiksynthese nicht zur Schaltung, sondern ignoriert (Beschreibung für die Simulation)?
  3. Welche Schaltung entsteht bei der Logiksynthese der obigen Beschreibung, die die Einsen in 8-Bit-d zählt?
  4. Welche Art von Reset und welches Verhalten hat die obige Beschreibung?
  5. Welche Aussage zum Unterschied zwischen synchronem und asynchronem Reset ist korrekt?

Vergleiche zu diesem Thema