Bram Interface CDC Problem

Gast #4774997
Lesenswert?
• ▲
▼
Hallo,

Ich muss an ein bestehendes Modul welches ein BRAM Interface hat 
anbinden und darüber Register beschreiben und lesen. Problematisch wird 
es dadurch, dass das von mir erstellte Modul mit 160MHz und das bereits 
bestehende Modul mit 250MHz laufen muss. Das BRAM Interface bietet 
leider auch keine Möglichkeit den Master zu bremsen(Handshake) und 
liefert im Falle eines Schreibvorgangs somit jeden Takt valide Daten. 
Nun bin ich etwas ratlos wie man ein bidirektionales CDC in diesem Fall 
gestalten kann und über jeden Tipp dankbar.

Xilinx BRAM-Controller:
https://www.xilinx.com/support/documentation/ip_documentation/axi_bram_ctrl/v4_0/pg078-axi-bram-ctrl.pdf
Gast #4775474
Lesenswert?
• ▲
▼
So allgemein ist es schwierig, da prinzipiell das eine Interface zu 
schnell scheint.

Wenn es ein Datenstrom wäre, könnte man die Datenbreite verdoppeln um 
damit die Datenrate zu halbieren.

Oder ein FIFO wäre noch eine Möglichkeit, falls es auch wieder 
leerlaufen kann.

Wäre eines von beiden machbar?
Gast #4775720
Lesenswert?
• ▲
▼
Was verstehst Du denn im Umfeld von FPGAs unter "CDC"? Ich kenne den 
Begriff in 3 Ausführungen und keiner will mir passen.

Zu der Frage mit dem Zugriff über FIFOs: Ja, das geht am Einfachsten, 
birgt aber das Problem der Datenkonsistenz. Was geschrieben wird, ist 
erstmal noch nicht im RAM und kann so bald nicht gelesen werden.

Dann: Du machst Dein BRAM-IF hoffentlich nicht über das langsame 
AXI-Gedöhns?

Wie sieht denn Dein timing des Zugriffs aus?
#4776092
Lesenswert?
• ▲
▼
CDC ist hier clock domain crossing. Sowas geht halt dann über FIFOs, ist 
doch überall so. Da braucht man halt ein paar Handshake Signale, damit 
man weiß wann die Daten valide sind. Ist ja zum Beispiel am MIG auch 
nicht anders.
Und Axi Streaming ist auch nicht langsam, ist doch nur ein simples FIFO 
Interface.
Gast #4777299
Lesenswert?
• ▲
▼
Gebonnt! Nur "ein paar Handshake"-Signale erfordern eben auch eine 
Abtastung durch die langsame domain und da geht das Tempo dann pauschal 
mal auf unter 80MHz runter. Angesichts der 250MHz an der Quelle wird es 
irgendwas mit 62,5MHz, wenn man alles mit der Quelle raussynched.
Gast #4777461
Lesenswert?
• ▲
▼
Weltbester FPGA-Pongo schrieb im Beitrag #4777299:
> Nur "ein paar Handshake"-Signale erfordern eben auch eine
> Abtastung durch die langsame domain und da geht das Tempo dann pauschal
> mal auf unter 80MHz runter.

Mit direktem Handshake zwischen Quelle und Abnehmer ist das so. Aber 
wenn man das FIFO in beiden Taktdomänen arbeiten lässt und mit 
almost-full bzw. almost-empty Flags arbeitet, dann kann die langsamere 
Seite ihre volle Bandbreite ausspielen (in diesem Fall also die 
160MByte/s).

Kostet halt ein bisschen Latenz (weil dazu mehrere Bytes im FIFO 
vorrätig sein müssen), und dass die schnellere Seite nicht ihre volle 
Bandbreite nutzen kann (weil die langsamere Seite die Daten nicht 
schnell genug abholen kann) wurde ja schon mehrfach beschrieben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren