Forum: FPGA, VHDL & Co. FPGA wahl DAC 160MSPS


von M. M. (blackcow)


Lesenswert?

Ich brauche zwei Kanäle, auf denen ich jeweils mit 160MSPS auf einen 
8-bit DAC Daten ausgeben will. Die daten können vorher in den FPGA 
geladen werden und sind 100us lang. Das heißt ich brauche einen Speicher 
von (16000*8*2)/8 = 32kbit.

Also der FPGA bekommt ein Triggersignal und ließt den Speicher aus und 
gibt es direkt an die zwei DACs weiter. Die Daten können vorher langsam 
eingelesen werden.

Ich will ein PCB dafür designen, da ich mehrere Module brauche. Für mich 
stellt sich nun die Frage welchen FPGA ich dafür nehmen sollte.

von Gustl B. (-gb-)


Lesenswert?

Hallo,
ich hatte 2020 ein Board mit FPGA XC7S50, DAC AD9747 und ADC AD9650 
gebastelt. Zusätzlich drauf war ein FT2232H für JTAG und FIFO Interface 
und auch etwas RAM in Form von einem HyperRAM Baustein. Hat 
funktioniert, liegt jetzt im Schrank (-:

Schaltplan (recht unordentlich) und Layout gibt es in diesem Thread. Da 
ist auch ein Bild der Platine (Layout).

von Florian (flori_n)


Lesenswert?

M. M. schrieb:
> Das heißt ich brauche einen Speicher
> von (16000*8*2)/8 = 32kbit.
Du meinst 32 kB, oder?
160e6 sps · 100e-6 s · 8 bits/sample · 2 = 256 kbits (sps · t · 
Bits/sample · Kanäle)

Wie werden die Daten zu dem oder den DAC übertragen? Wenn parallel 
sollte das kein großes Problem sein. Wenn seriell, musst du mit deutlich 
mehr als 1 GB/s übertragen. Dann braucht das FPGA entsprechend schnelle 
Pins bzw. Transceiver.

PS: Es wäre schön, wenn die Vorschau mal den Text so anzeigen würde, wie 
er auch im Beitrag dargestellt wird.

: Bearbeitet durch User
von M. M. (blackcow)


Lesenswert?

Florian schrieb:
> Du meinst 32 kB, oder?
Ja, klar, 32kByte. Nicht bit.
Da ist es vermutlich sinnvoll den internen Block RAM zu benutzen.
Aber 160MHz Systemfrequenz sind schon eine Nummer oder? Wie siehts da 
mit Lattice ECP-5 aus?

Das Interface ist parallel. Sowas wie den AD9704 hätte ich angedacht.

Gustl B. schrieb:
Ah, cool. Ich werds mir anschauen!

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

M. M. schrieb:
> 160MHz Systemfrequenz sind schon eine Nummer oder?
Nicht wirklich. Außerdem geht es auch mit 80 MHz DDR am Eingang und 
Wertbreitenverdopplung zum BRAM. Die können 2x8 zu 16 Bit parallel. Das 
sind dann 80MHz SYSFREQ und ging schon mit FPGAs vor 20 Jahren.

M. M. schrieb:
> mit Lattice ECP-5
Der ist da schon etwas unterfordert.

Die Lattice sind in dem Bereich generell meist günstiger. Ich verbaue 
die selber aber so gut wie nie, weil mir die toolchain nicht gefällt.

von Rick D. (rickdangerus)


Lesenswert?

M. M. schrieb:
> Also der FPGA bekommt ein Triggersignal und ließt den Speicher aus und
> gibt es direkt an die zwei DACs weiter. Die Daten können vorher langsam
> eingelesen werden.
BTDT. Aber mit etwas höherer Samplerate, Bitbreite und Speichertiefe.

M. M. schrieb:
> Da ist es vermutlich sinnvoll den internen Block RAM zu benutzen.
Prinzipiell ja, aber ich würde trotzdem empfehlen schon mal externen RAM 
vorzusehen. Am Ende kommt der Chef/Kunde und will eine höhere Samplerate 
oder einen breiteren DAC oder umschaltbare Waveforms und dann fängt man 
mit der Hardware von vorne an.

> Aber 160MHz Systemfrequenz sind schon eine Nummer oder?
Das kommt auf die Strukturbreite im FPGA an (und natürlich auf die Länge 
der Logikpfade).

Ein (eher unzureichender) Hinweis für die mögliche Geschwindigkeit ist 
es zu schauen, wie schnell die IOs schalten können. Intern geht dann 
meist etwas mehr.
Außerdem kann man prüfen, wie schnell und breit diverse 
High-Speed-Transceiver am internen Interface arbeiten.

Hier mal ein paar Zahlen aus meiner Praxis:
- Kintex 7 -> 250 MHz
- Stratix IV -> 133 MHz
- Mach XO2 -> 80 MHz

von Andreas U. (Gast)


Lesenswert?

Rick D. schrieb:
> Hier mal ein paar Zahlen aus meiner Praxis:
> - Kintex 7 -> 250 MHz
> - Stratix IV -> 133 MHz

Das ist aber noch ein gutes Stück wech vom Machbaren. :-)

Ein Kintex läuft bei unserem Data-Logger mit intern 400 MHz, die IO-Pins 
mit dem Doppelten, die Serializer in den IOs sogar mit dem Dreifachen. 
Das geht so auch zum DaVinci-Prozessor. Der zuckelt mit 1,2GHz. Ich weiß 
es, weil ich die Schnittstellen-Spec und die Software dafür geschrieben 
habe. Wir setzen ein fertiges Modul ein, das fast unverändert läuft. Bei 
den langsameren Baugruppen und FPGAs hat der einfach  mehr wait states 
und arbeitet mit 3x300 = 900MHz. Vor 10 Jahren haben wir das mal in 
einem ARINC-Test-Gerät verbaut, war ein "Flugzeugbus" mit 600MHz, damals 
300x2. Heute macht der mit 400x2.

Transceiver laufen mit 8x1Gbps. 8 Kanäle mit b8b10 zu 800MHz. Die ADCs 
ohne wire code mit 200 Msps half channel in 10 Bits. Zuletzt verbaut in 
einer Marineanwendung zur Funkkommunikation.

Mag wer kaufen? Sind super preiswert. Steuersystem komplett Linux, frei 
programmierbar mit Verbindung zu TI/EMIF, wishbone oder einem Zynq/400 
MHz AXI.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.