Übungsaufgabe 
In dieser Übung geht es um Testbenches.
Vorbereitung 
- Projektordner herunterladen und entpacken
- Projekt
testbench.xiseöffnen
Schreiben der Testbench 
Spezifikation 
Die Komponente shifter soll folgender Spezifikation entsprechen
- Die Komponente hat einen Ausgangsvektor
leds_omit 4 Bit Breite - Nach dem Reset bzw. nach der Initialisierung wird
"0001"aufleds_oausgegeben. - Ist während einer steigenden Taktflanke an
clk_ider Eingangup_iaktiv sollen die Ausgänge in folgender Reihenfolge wechseln:"0010","0100","1000"und dann wieder"0001" - Ist während einer steigenden Taktflanke an
clk_ider Eingangdown_iaktiv sollen die Ausgänge in folgender Reihenfolge wechseln:"1000","0100","0010"und dann wieder"0001" down_ihat die höhere Priorität wieup_i- Ist weder
up_inochdown_iaktiv, soll sich der Ausgang nicht verändern - Der Eingang
reset_iführt einen asynchronen Reset aus und dies hat die höchste Priorität
Schreiben der Testbench 
Erweitere die Datei shifter_tb.vhd.
- Mittels
assertkönnen Bedingungen geprüft werden. - Mittels
wait forkann für eine bestimmte Zeit gewartet werden.
Beispiel:
wait for 10 ns; assert leds_o="0001" report "Nach dem Reset sollte der Ausgang auf 0001 sein";
Der Teil mit report ist optional. Ein wait for 0 ns wertet einmal alle Signale aus, dies hilft oft direkt nach dem Start der Simulation (unmittelbar nach dem Start sind alle Signale uninitialised-'U').
Prüfen der Testbench 
Für die Komponente shifter stehen vier verschiedene Implementierungen zur Verfügung (architectures). Die Testbench soll erkennen, welcher der vier Implementierungen funktioniert.
Die Testbenches heißen behave1, behave2, behave3 und behave4.