Hardwarebeschreibungssprachen und Verifikation
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?
always @(posedge clk) begin
a <= b;
b <= a;
end
- Aa=1, b=0 (vertauscht)
- Ba=1, b=1
- Ca=0, b=0
Antwort und Erläuterung anzeigen
Antwort: A. a=1, b=0 (vertauscht)
Bei nichtblockierenden Zuweisungen werden zuerst die beiden rechten Seiten (alter Wert von b = 1 und alter Wert von a = 0) ausgewertet und danach a=1 und b=0 gleichzeitig geschrieben, sodass die Werte vertauscht werden. Als Schaltung sind die Ausgänge zweier Flipflops mit den Eingängen des jeweils anderen verbunden. Bei blockierender Zuweisung (=) würde a in der ersten Zeile 1, in der zweiten Zeile erhielte b den neuen Wert 1 von a, und beide wären 1.