Zynq - Daten an Peripherie streamen

OP #5590707
Lesenswert?

Hallo,
ich bin aktuell an der Portierung eines Projekts auf einen Zynq 
UltraScale.
Im FPGA gibt es 4 voneinander unabhängige Module, welche jeweils 
kontinuierlich mit 32bit Daten bei 500kSPS (max. 1MSPS) gefüttert werden 
müssen. Es dürfen keine Samples doppelt vorkommen oder übersprungen 
werden. Vom Anwendungsfall kommt das einem DAC sehr gleich. Der 500kHz 
Takt wird in den jeweiligen Modulen erzeugt, bzw. mit einer PLL jeweils 
leicht variiert. Er ist also nicht synchron mit dem AXI Takt des PS.

Die Datenrate liegt also bei ca. 2MByte/s pro Modul.
Die Daten werden in Linux selbst erzeugt, oder per TCP empfangen.

Da ich absoluter neuling in Sachen Zynq und AXI bin frage ich mich, wie 
ich die Schnittstelle am besten gestalte. Die Module könnten ja direkt 
über einen AXI Stream versorgt werden?

Frage 1:
Wie synchronisiere ich die Module mit dem AXI Stream Master. Es gibt 
einen AXI Stream Clock rate Converter und einen AXI Stream Data FIFO, 
worin liegen hier die Unterschiede/Vorteile?

Frage 2:
Wie erzeuge ich am besten den AXI Stream? Als Möglichkeit habe ich den 
AXI Stream FIFO oder den AXI DMA Controller gefunden.
Der DMA Controller entlastet sicherlich die CPU, jedoch ist die 
Implementierung unter Linux komplexer. Welche Vorteile bietet der FIFO?

viele Grüße
Manuel

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