Forum: FPGA, VHDL & Co. Register asynchron lesen/schreiben


von Ben (Gast)


Lesenswert?

Hallo,

vielleicht kann mir jemand zu folgendem Problem einen Denkanstoss geben.

Ich möchte auf ein 8 Bit breites Register aus 2 verschiedenen Prozessen 
heraus zugreifen.

Process_1 (Takt_A): Schreibt Daten
Process_2 (Takt_B): Liest Daten

Das ist ja meines Wissens ein generelles Problem, wenn Daten genau dann 
gelesen werden, wenn der andere Prozess Daten reinschreibt.

Wie lässt sich das Problem mit den 2 unterschiedlichen Takten 
beherschen?

Meine Idee war es mit dem Xilinx CoreGenerator ein asynchrones FIFO zu 
erzeugen (FIFO Tiefe = 1). Allerdings brauche ich dann doch wieder ne 
kleine Statemachine um das FIFO anzusprechen, oder?
Ist das ein brauchbarer Ansatz oder gibts da bessere Ideen?

Danke an Alle Antwortenden,
Ben

von Jan M. (mueschel)


Lesenswert?

Lasse dir einfach ein dual ported fifo mit independent clocks erstellen. 
Dann hast du zwei voellig unabhaengige Schnittstellen und brauchst dich 
um nichts mehr zu kuemmern.

Als Fifo kannst du ruhig auch eine Tiefe von 16 nehmen, die kostet die 
selben Ressourcen.

von Ben (Gast)


Lesenswert?

Danke, dein Vorschlag geht dann auch in dieselbe Richtung.

Wie schaut es denn mit Dual Port Ram aus?
Ist das schneller als die FIFO Implementierung von CoreGen?

Ich müsste 16 Bit Signale mit 3MHz schreiben und lesen. Ich glaube 
irgendwo mal ne maximal Frequenz von deutlich unterhalb von 3 MHz für 
die Xilinx FIFOs gelesen zu haben.

Danke für jede Hilfe!!

von Jan M. (mueschel)


Lesenswert?

3 MHz? Niemals! Ein Virtex 2 schafft deutlich ueber 200 MHz, ein 
Spartan3 muesste sicher mit 100 MHz dabei sein.

Ein generierter Fifo ist garantiert nicht langsamer als ein BlockRAM 
plus eigene Logik, eher schneller.

von Ben (Gast)


Lesenswert?

Ok,
Danke schön!

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.