ich habe mehrere Karten mit einem 16Bit breiten DA BUS, welche alle an
einen FPGA gehen sollen um dann in einem CPU Modul ausgelesen zu werden.
Also DA -> FPGA -> FIFO -> CPU.
Die DA Wandler sind jeweils getriggert und können maximal 10MSPS. Es
gibt 6 solcher DA Module.
Wie würdet ihr sowas an einen FPGA anbinden und gibt es eventuell schon
fertige Chips für sowas? Bisher bin ich mit den FTDI FIFOs immer ganz
gut gefahren aber das waren Anwendungen für nur einen DA Wandler.
Warum externe FIFOs? FIFOs direkt im FPGA zu implementieren sollte doch
kein Problem sein.
Oder hast du zwischen FPGA und "CPU" noch eine Schnittstelle à la USB zu
überwinden?
Diese Forderung:
Holger F. schrieb:> welche alle an einen FPGA gehen sollen
widerspricht deiner späteren Schlussfolgerung, einen IC einsetzen zu
wollen. Was sollte der denn leisten?
Holger F. schrieb:> Also DA -> FPGA -> FIFO -> CPU.
Wenn DA = Digital Analog, dann sind Deine Pfeile falsch herum, es sei
denn Du meintest einen AD-Wandler.
Joe F. schrieb:> Warum externe FIFOs? FIFOs direkt im FPGA zu implementieren sollte> doch> kein Problem sein.> Oder hast du zwischen FPGA und "CPU" noch eine Schnittstelle à la USB zu> überwinden?
Ja das ist der Plan. Alternativ könnte ich auch geteilten Speicher vom
ultraScale+ nehmen. Generell geht es mir eher um etwas allgemeineres.
Nämlich wie man den Bus am besten an den FPGA anbindet. Also mir strebt
sowas wie ein Multiplexer vor, bei dem die 16 Datenleitungen selektiert
werden und das eben für jeden DA wandler. Das heißt die Gesamtfrequenz
ist dann 10MSPS * N.
wenn Du die Wandler getriggert hintereinander ansteuerst, dann konntest
Du eventuell ja eine Art Interleave auf dem Interface implementieren.
Was sind das denn für Wandler-IC?
Holger F. schrieb:> Nämlich wie man den Bus am besten an den FPGA anbindet. Also mir strebt> sowas wie ein Multiplexer vor, bei dem die 16 Datenleitungen selektiert> werden und das eben für jeden DA wandler.
Also am einfachsten wäre es wohl, alle 6 Wandler direkt an den FPGA
anzuschließen.
Dann kann man auch alle zeitgleich auslesen.
16x6 sind in Summe 96 IOs, für viele FPGAs eher die untere Liga.
Externe tri-state Latches oder eine MUX bei 60 MHz würde ich mir nicht
antun.
Multi-channel Data Acquisition System (DAQ) is widely used in Signal
process-ing, different fields of Engineering and Communications
applications This paper describes Field Programmable Gate Array (FPGA)
based hardware design and implementation of the multi-channel DAQ system
on soft-core embedded pro-cessor. A complete six channel data
acquisition system utilizing FPGA as a main processing element has been
designed and realized. Each analog channel oversampled to reduce the
analog filter orders and decimated and filters in dig-ital domain. A
soft-core processor (Microblaze) used to control the sampling rates,
serial programming of ADC and data acquisition from each channel [4]. An
embedded soft-core processor is to be customized for a given application
and synthesized for an FPGA target. At final, a RS232 based debug module
is implemented on FPGA to debug application software and uploading data
from NAND flash. Required and relevant hardware have been realized using
Spartan-3 FPGA device.
Das habe ich getestet mit einer UHR. In jedem der 6 Module lese ich die
Uhrzeit gleichzeitig aus .. und baue die zu einem String zusammen.
Gruss Holger.
Ich gehe mal davon aus, dass du "Holger F. (Gast)" bist.
Was willst du mit deinem Post mitteilen?
Wie im Diagramm ersichtlich sind alle 6 Module direkt und parallel am
FPGA angeschlossen.
Problem also gelöst, system up and running?
Holger schrieb:> Das habe ich getestet mit einer UHR. In jedem der 6 Module lese ich die> Uhrzeit gleichzeitig aus .. und baue die zu einem String zusammen.
Das müssen dann wohl Analoguhren gewesen sein, wenn du die über 6
AD-Wandler ausgelesen hast...
Nun, man könnte doch FIFOs verwenden. So dual Clock Teile. Die hängen
alle an einem Bus und haben je einen WR für das FPGA. Dann kann man die
zyklisch vom FPGA aus befüllen reihum während vom DA Wandler langsam
daraus wieder gelesen wird. Ich vermute mit 100 MHz sollte das noch gut
machbar sein.
Statt FIFO müsste aber auch ein getaktetes Register funktionieren. Also
für jeden DAC eines. Die kann man auch reihum nacheinender schreiben vom
FPGA aus und dann sieht der DA die Ausgänge. Schick wären dann noch
verschobene Takte für die DACs damit die die Daten lange genug stabil
sehen. Oder eine zweite schnelle Registerstufe.
Joe F. schrieb:> Was willst du mit deinem Post mitteilen?
Vielleicht wollte er auf dem Weg Stefans Rückfrage beantworten, dass es
tatsächlich um ADCs geht (und nicht um DACs, wie von ihm durchgehend
geschrieben).
Jetzt müsste nur noch eine Idee her, worin dabei das eigentliche Problem
liegen soll. Dann könnte man ggf. helfen, das Problem zu lösen.
Holger F. schrieb:> Ich meine> natürlich AD Wandlung.
Gut, das ist ein Schritt zur Klärung der Randbedingungen.
Wenn du jetzt noch verrätst, welcher ADC eingesetzt werden soll, lässt
sich ggf. auch eine sinnvolle Antwort auf deine Ursprungsfrage geben
(mit welchem "Bussystem" der ADCs am besten ans FPGA angebunden wird).
Die nächste zu klärende Randbedinung für die Verbindung FPGA-CPU wird
dann sein, ob deren Bandbreite dauerhaft für die 10MS/s*6S*2Byte/S
ausreichen muss, oder es reicht, wenn im FPGA zwischengespeicherte
Ergebnisse übertragen werden.
Holger F. schrieb:> Es soll ein ADS1675 zum Einsatz kommen.
Also ein serielles Interface mit LVDS-Pegeln (und nichts mit "16
Datenleitungen"). Damit dürfte die Frage nach einem externen
Multiplexer-IC hinfällig geworden sein.
Holger F. schrieb:> Also mir strebt> sowas wie ein Multiplexer vor, bei dem die 16 Datenleitungen selektiert> werden und das eben für jeden DA wandler.
Schließ einfach die 6 seriellen Interfaces deiner 6 ADCs direkt ans FPGA
an und betreibe sie parallel, alles andere wäre komplizierter und
schlechter. Wenn dein FPGA keine LVDS-IOs frei haben sollte, dann setze
einfach LVDS-Transceiver vor das FPGA.
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.