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