www.mikrocontroller.net

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


Autor: Ben (Gast)
Datum:

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

Autor: Jan M. (mueschel)
Datum:

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

Autor: Ben (Gast)
Datum:

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

Autor: Jan M. (mueschel)
Datum:

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

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,
Danke schön!

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.