Problem mit parallelem statt sequentiellem Ablauf

Gast #936779
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
Angehängte Dateien:
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)
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.