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
Also ich habe das mit nem AXI Fifo gelöst. Habe 3 ADCs mit 192 KHz, welche die Daten in nen AXI-Fifo werfen Diese lese ich aus und feuere sie über nen UDP-Stream einfach raus. Funzt wunderbar mit minimaler CPU-Last.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.