Ü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_o
mit 4 Bit Breite - Nach dem Reset bzw. nach der Initialisierung wird
"0001"
aufleds_o
ausgegeben. - Ist während einer steigenden Taktflanke an
clk_i
der Eingangup_i
aktiv sollen die Ausgänge in folgender Reihenfolge wechseln:"0010"
,"0100"
,"1000"
und dann wieder"0001"
- Ist während einer steigenden Taktflanke an
clk_i
der Eingangdown_i
aktiv sollen die Ausgänge in folgender Reihenfolge wechseln:"1000"
,"0100"
,"0010"
und dann wieder"0001"
down_i
hat die höhere Priorität wieup_i
- Ist weder
up_i
nochdown_i
aktiv, soll sich der Ausgang nicht verändern - Der Eingang
reset_i
führt einen asynchronen Reset aus und dies hat die höchste Priorität
Schreiben der Testbench
Erweitere die Datei shifter_tb.vhd.
- Mittels
assert
können Bedingungen geprüft werden. - Mittels
wait for
kann 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
.