Forum: FPGA, VHDL & Co. Problem mit parallelem statt sequentiellem Ablauf


von Hans-Werner (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang ein "einfaches" Modell eines Speichers inklusive Testbench.
Es wurde eine Komponente RAM und eine Komponente CAM definiert.
RAM ist ein Dualport-RAM. CAM erweitert RAM und soll zusätzlich das 
Suchen eines Speicherinhaltes ermöglichen.
Die Testbench soll nacheinander Daten in den Speicher schreiben, diesen 
lesen und anschliessend einen Inhalt suchen. Hierzu wurde ein Prozess 
control zur Steuerung und separate Prozesse für das Schreiben, Lesen und 
Suchen definiert. Die einzelnen Prozesse werden vom Control-Prozess 
durch das Setzen eines Start-Signals gestartet. Die einzelnen Prozesse 
wechseln daraufhin vom Wartezustand(Idle) in den 
Initialisierungszustand.
Das Problem zeigt sich bei der Anweisung "data_in_cam <= "0011";"
im Prozess lookup_at_cam : process (clock_cam).
Wird diese Anweisung ausgeklammert ist ein Schreiben und Lesen möglich, 
andernfalls nicht (Simulation mit ISE Simulator unter ISE Webapck 10.1).
Dies obwohl der Prozess erst nach dem Schreiben und Lesen ausgeführt 
werden soll.
Wo ist der "Denk"-Fehler ?

Danke

von Klaus F. (kfalser)


Lesenswert?

Du hast 2 Prozesse, die das selbe Signal treiben !
Signale sind keine Variablen, die einen neuen Wert erhalten zum 
Zeitpunkt wenn ein Prozess sie überschriebt, sondern funktionieren wie 
eine Art Bus, Stichwort "resolved signals".

Entweder Du schreibst deine Testbench um, sodass nur ein Prozess 
data_in_cam treibt, oder der 2. Prozess setzt data_in_cam auf alles 'Z' 
(hochohmig, gilt für signale vom Typ std_logic)

von Ultimativer (Gast)


Lesenswert?

Solche Testbenches gehören zu der Sorte Schmier und Fink! Da kann man 
alles machen, muss aber immer mitdenken und auch dokumentieren, was 
passiert. Das taugt nicht für Teamarbeit.

Ich rate immer zu expliciten Testbenches, die auch synthesefähig gemacht 
werden können. Diese zwingen zu strukturiertem Entwickeln der Systeme.

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
Noch kein Account? Hier anmelden.