www.mikrocontroller.net

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


Autor: Hans-Werner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Ultimativer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.