Hallo zusammen,
ich würde gerne verstehen, wie ich eine fertige Datei z.B. einen
Addierer in eine Testbench einfügen kann? Die Testbench sollte dann alle
X ns an die Eingänge des Addierers einen Wert anlegen und diesen nach Y
auf Richtigkeit überprüfen.
Über eine softwareunabhängige Erklärung würde ich mich sehr freuen. Da
ich gerne den Code, welcher dazu verwendet wird, verstehen möchte.
Im Internet habe ich bisher noch nicht das Richtige für mich gefunden
und auch das Buch VHDL-Synthese liefert mir hier keine Erklärung, welche
ich nachvollziehen kann.
Ich hoffe ihr könnt mir hier weiter helfen.
Gruß IH453
Was genau ist Dein Problem beim Verständnis welcher Anleitung?
Es hat doch keinen Zweck, dass wir hier nun die 1001te Anleitung genau
auf Dich zugeschnitten schreiben.
Zumal wir keinerlei Anhaltspunkte haben, worin sich unsere von den
anderen Erklärungen unterscheiden sollte, damit Du sie verstehst.
Zumal die Wahrscheinlichkeit aufgrund der schieren Anzahl hoch ist, dass
es sich eher um Dein individuelles Problem handelt als darum, dass
sämtliche Anleitungen in allen relevanten Punkten völlig unverständlich
formuliert sind.
IH453 schrieb:> auch das Buch VHDL-Synthese
Ja nun, weil der erklärte Zweck dieses Buchen eben nicht die
Sumilation, sondern die Synthese ist...
> Über eine softwareunabhängige Erklärung würde ich mich sehr freuen.
Jetzt mal ohne Witz: die hast du selber geliefert...
> Die Testbench sollte dann alle X ns an die Eingänge des Addierers einen> Wert anlegen und diesen nach Y auf Richtigkeit überprüfen.
Das ist maximal Softwareunahängig. Darin kommt nicht mal die
Beschreibungssprache vor, die bei dir auch nur aus eine kleinen
Nebenbemerkung im vorletzten Satz erkennbar wird.
Um die Sache allgemein zu machen: eine VHDL-Testbench ist ein
VHDL-Modul, das keinen Port nach aussen hat. In dieses VHDL-Modul wird
der Prüfling (dein Counter) als Komponente eingebunden. Und dann mit
Signalen und Signalverläufen an den Eingängen stimuliert. Die Ausgabe
wird dann mit Abfragen (Assert) auf Richtigkeit überprüft.
Sieht dir das mal an:
http://www.lothar-miller.de/s9y/archives/78-Bubblesort.htmlhttp://www.lothar-miller.de/s9y/archives/53-Drehgeber,-Encoder,-Quadraturdecoder.htmlhttp://www.lothar-miller.de/s9y/archives/29-Division-in-VHDL.html
Und das: http://www.stefanvhdl.com/
ClkProcess:PROCESS-- Process um die Simulation zu beenden
55
BEGIN
56
IFstop_simulation='1'THEN
57
ASSERTfalseREPORT"Simulation zu ENDE"SEVERITYnote;
58
WAIT;
59
ENDIF;
60
61
62
63
StimuProcess:PROCESS(clk)-- StimuProcess
64
VARIABLEi:natural:=0;
65
BEGIN
66
IFclk='1'THEN-- rising edge
67
A<=test_array(i).Ax;
68
B<=test_array(i).Bx;
69
C<=test_array(i).Cx;
70
71
i:=i+1;
72
IF(i>15)THENstop_simulation<='1';ENDIF;
73
74
ENDIF;
75
ENDPROCESS;
76
77
Response-- Vergleich?
78
79
80
81
ENDarchitectureTEST_vhdl;
Zur Idee:
Ich versuche eine AND-Logik mit 3 Eingängen zu realisieren.
Kann man dies so realisieren?
Nun fehlt mir jedoch noch der Verleich, ob die Ausgänge korrekt sind.
Diesen Vergleich würde ich gerne alle 20 ns durchführen. Hätte Ihr hier
vielleicht noch einen Tipp für mich?
Gruß IH453
IH453 schrieb:> Nun fehlt mir jedoch noch der Verleich, ob die Ausgänge korrekt sind.> Diesen Vergleich würde ich gerne alle 20 ns durchführen. H
Falsche Denkweise. Du musst da nichts zeitgesteuert machen. Du kannst
einfach auf die Änderung einen Signals reagieren, indem du es in die
Sensitivliste eines Prozesses aufnimmst.
> Ich versuche eine AND-Logik mit 3 Eingängen zu realisieren.> Kann man dies so realisieren?
Kann man, sieht aber umständlich aus. So insgesamt. Frage: funktioniert
die Testbench bis hierher schon? Mit dem Ansehen der Waveform kann kam
das ja ganz leicht
kontrollieren...