Hardwarebeschreibungssprachen und Verifikation
Was entsteht bei der Logiksynthese, wenn wie oben als kombinatorische Schaltung gedachter Code geschrieben wird?
always @(*) begin
if (en)
y = d;
end
- AEine kombinatorische Schaltung, in der y bei en gleich 0 automatisch 0 wird
- BEin vom Takt gesteuertes D-Flipflop
- CEin unbeabsichtigtes Latch, weil y bei en gleich 0 seinen Wert halten muss
Antwort und Erläuterung anzeigen
Antwort: C. Ein unbeabsichtigtes Latch, weil y bei en gleich 0 seinen Wert halten muss
Bei en gleich 0 gibt es keine Zuweisung an y, sodass y den vorherigen Wert behalten muss. Da kombinatorische Schaltungen nichts speichern, erzeugt die Logiksynthese ein Latch, das den Wert hält. Latches erschweren die Timing-Analyse und können durch Rauschen Fehlfunktionen verursachen, weshalb sie zu vermeiden sind, wenn sie nicht beabsichtigt sind. Wird in allen Fällen ein Wert zugewiesen, etwa mit „else y = 0;“, entsteht eine kombinatorische Schaltung.