Guten Tag, ich möchte gerne mein Testbench optimieren bzw. verständlicher machen. Und daher möchte ich meine eingegebene Daten(data) nicht direkt mit Hand eingeben (so wie ich es tue). Wie kann ich so was realisieren? process begin data <= (others => '0'); wait for 500 ns; data <= (others => '1'); wait for 20 ns; data <= "10101000"; wait for 20 ns; data <= "01010110"; . . . . usw end process; Schönen Dank im Voraus. Viele Grüße, cony
Indem du z.B. aus einer Textdatei den Stimulus einliest (siehe TEXTIO.VHDL). Der Vorteil dabei ist auch, dass zur Änderung der Stimulusdatei der Simulator idR nicht neu gestartet werden muss.
SimpleSIM schrieb: > Indem du z.B. aus einer Textdatei den Stimulus einliest > (siehe TEXTIO.VHDL). Der Vorteil dabei ist auch, dass zur > Änderung der Stimulusdatei der Simulator idR nicht neu > gestartet werden muss. danke fürs antworten.. kannst Du mir bitte ein Beispiel zeigen?
Lothar Miller schrieb: > Eat this... ;-) ich wollte ganz einfach paar verschieden 8 bit daten eingeben. einfacher sollte es doch gehen??? ich bin neue in VHDL, daher weisse ich nicht alles was man bei vhdl machen kann... ich habe eigntlich in Richtung for-loop und eine Variable oder so was gedacht..
cony schrieb: > ich wollte ganz einfach paar verschieden 8 bit daten eingeben. einfacher > sollte es doch gehen??? Dann lass von meinem Beispiel alles weg, was du nicht brauchst. > ich bin neue in VHDL, daher weisse ich nicht > alles was man bei vhdl machen kann... Dann probiers aus, was du davonbrauchst. Ein wenig darfst du schon auch selber denken... > ich habe eigntlich in Richtung for-loop und eine Variable oder so was > gedacht.. Aber bitte nur zur Simulation.
Wenn du es so einfach haben willst: Einfach ein array mit 8-bit Werten (constant) definieren und die dann in einer loop auf deinen Design loslassen. Beispiel:
1 | constant size_test_type : integer := 19; |
2 | type test_type is array(0 to size_test_type-1) of std_logic_vector(31 downto 0); |
3 | signal test_data: test_type := ( |
4 | x"F_EFF_FFE_F", |
5 | x"F_FFE_FFF_E", |
6 | .....
|
7 | x"0_78F_78F_5", |
8 | x"0_91D_91D_6", |
9 | x"C_FFF_EFF_D"
|
10 | );
|
Jetzt kannst du mit test_data(i) in einer loop einfach drauf zugreifen...
PS: Der Vektor ist bei mir als 'signal' definiert, weil ich in der Testbench spaeter noch mit pseudo-random Daten arbeite und den Vektor damit ueberschreibe...
cony schrieb: > data <= "10101000"; > wait for 20 ns; > data <= "01010110"; > . PPS: Du kannst uebrigens auch anstatt "10101000" sowas schreiben: * b"1010_1000" * x"A8" -- allerdings nur bei vielfachen von 4-bit Macht die Sache deutlich uebersichtlicher und leichter verstaendlich finde ich...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.