Forum: FPGA, VHDL & Co. Ist ein massiv paralleler Datenbus im FPGA sinnvoll?


von Klaus (Gast)


Lesenswert?

Hallo,

ich habe hier 4 ADC mit 16 Bit und je 1MSample Datenrate. Die Daten 
sollen durch einen FPGA verarbeitet werden. Filtern, Mischen, teilweise 
FFT.

Ist des sinnvoll die Daten im FPGA seriell zwischen den einzelnen 
Einheiten zu übertragen? Jeder Kanal nacheinander auf einem 16 Bit Bus 
(AXI Stream) oder ist es im FPGA effektiver einen massiv parallelen Bus 
mit 72 Bit zu nutzen.

FPGA (Spartan 6)

MfG

Klaus

von Fpgakuechle K. (Gast)


Lesenswert?

Klaus schrieb:

> ich habe hier 4 ADC mit 16 Bit und je 1MSample Datenrate. Die Daten
> sollen durch einen FPGA verarbeitet werden. Filtern, Mischen, teilweise
> FFT.

> FPGA (Spartan 6)

PCB oder Kabel? Taktfrequenz auf dem Parallelbus? Länge?

Zu erwartende Problem sind Übersprechen und zeitlicher Signalversatz 
zwischen den Einzelleitungen (skew). Bei einem Msample sollte das aber 
beherrschbar sein. Bei der dimensionierung der Stütz-C an den FPGA-Pins 
spielt die Anzahl gleichzeitig schaltender Ausgänge eine Rolle. Aber 1 
MHz sollte kein Problem sein. Zum Vergleich: der alte PCI 1,0 von 1991 
läuft mit 33MHz und 32 parallenen Daten/Adresse.

MfG,

von mar IO (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> PCB oder Kabel? Taktfrequenz auf dem Parallelbus? Länge?

Im FPGA ein Kabel ziehen???

von Fpgakuechle K. (Gast)


Lesenswert?

mar IO schrieb:
> Fpga Kuechle schrieb:
>> PCB oder Kabel? Taktfrequenz auf dem Parallelbus? Länge?
>
> Im FPGA ein Kabel ziehen???

Nein, zwischen FPGA-(Board) und ADC-(board)

MfG,

von berndl (Gast)


Lesenswert?

Klaus schrieb:
> Filtern, Mischen, teilweise
> FFT.
>
> Ist des sinnvoll die Daten im FPGA seriell zwischen den einzelnen
> Einheiten zu übertragen?

Wenn du deine 4 ADC-Daten sauber in deine 'Einheiten' nacheinander 
fuettern kannst, dann brauchst du auch nur ca. 1/4 der Logik im FPGA. 
Wenn du viel Platz hast kannst du natuerlich auch alles 4x einbauen und 
brauchst keine Synchronisierung.
Probier's doch einfach aus, ist doch nur ein bisschen umverdrahten und 
instantiieren im top-level...

von mar IO (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> mar IO schrieb:
>> Fpga Kuechle schrieb:
>>> PCB oder Kabel? Taktfrequenz auf dem Parallelbus? Länge?
>>
>> Im FPGA ein Kabel ziehen???
>
> Nein, zwischen FPGA-(Board) und ADC-(board)
>
> MfG,

Habe ich etwas anders verstanden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus schrieb:
> einen massiv parallelen Bus mit 72 Bit
Naja, wenn jede Graka schon den Speicher extern mit 128 Bit anbindet, 
dann sind 72 Bit aka 4*16 Bit noch nicht massiv...

Und natürlich ist es in erster Näherung einfacher und schneller, wenn 
einfach alles 4x da ist. Denn dann musst du nur 1x enwickeln und 3x 
instantiieren.
Erst dann, wenn dir dann nach 3,5 Einheiten der Platz ausgeht, musst 
du dir Gedanken um ein Zeitmultiplexverfahren machen...

von Peter (Gast)


Lesenswert?

Der FX3 hat einen 16 bzw. 32bit breiten Datenbus. >> ergo das geht gut

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter schrieb:
> Der FX3 hat einen 16 bzw. 32bit breiten Datenbus. >> ergo das geht gut
Im Deutschaufsatz wäre das ein klares "Thema verfehlt!"

von Bronco (Gast)


Lesenswert?

Ich hatte mal ein Spartan3 Projekt mit 6 RAM-Bänken à 16bit Daten + 
24Bit Adressen + Steuerleitungen. Alles parallel. Machte in Summe über 
256 Leitungen und lief einwandfrei mit 66MHz.

Wichtig dabei war:
1. Zusammengehörende Signale (z.B. alle Bits eines Datenbus) in den 
gleichen IOB packen, sonst wird das Laufzeitverhalten im FPGA 
suboptimal.
2. Leiterbahnlängen gleich lang halten.

von KennIch (Gast)


Lesenswert?

> 1. Zusammengehörende Signale (z.B. alle Bits eines Datenbus) in den
> ,gleichen IOB packen

In einem IOB passt nur ein bit, gemeint ist wohl eher gleiche io_Bank. 
Xilinx empfiehlt einen lauf ohne Location constraint, da sich der placer 
dann die pins schon optimal raussucht. danach das PCB designen.

MfG

von Falk B. (falk)


Lesenswert?

@ Bronco (Gast)

>1. Zusammengehörende Signale (z.B. alle Bits eines Datenbus) in den
>gleichen IOB packen, sonst wird das Laufzeitverhalten im FPGA
>suboptimal.

Da es sowieso getaktet ist kann man problemlos FlipFlips in den IOBs 
nutzen, sowohl rein als auch raus, was das Timing total relaxt.

>2. Leiterbahnlängen gleich lang halten.

Naja, man kann alles übertreiben. Jaja, PCI schriebt das vor, +/-2,5mm 
für die Taktleitung auf der Backplane. Aber bei dem Thema wird gern 
übertrieben.
Zum Vergleich 10mm Leitung haben ca. 50ps Laufzeit. 66MHz sind 15 ns 
Periodenauder, da ist der Faktor 300 dazwischen.

von Christoph Z. (christophz)


Lesenswert?

Falk Brunner schrieb:
> Naja, man kann alles übertreiben. Jaja, PCI schriebt das vor, +/-2,5mm
> für die Taktleitung auf der Backplane. Aber bei dem Thema wird gern
> übertrieben.

Klassisches PCI ist ja im Vergleich zu aktuellen schnellen ADCs oder 
DDR*-Ram langsam.

Und zum Anderen, lieber beim Layouten aus Vorsicht übertreiben als dann 
mehrere Wochen vergeuden weil der Prototyp nicht oder nur manchmal 
läuft, oder noch schlimmer in der Serie manche Produktionslose einfach 
nicht gehen oder wesentlich häufiger Probleme haben.

von Falk B. (falk)


Lesenswert?

@ Christoph Z. (christophz)

>Und zum Anderen, lieber beim Layouten aus Vorsicht übertreiben

NEIN!

Reseven sind schön und gut, Übertreibung nur selten. Hab ich live 
erlebt, wie die Leute sich ohne Grund nur wegen ein paar Zahlen, die 
SICHTBAR falsch und vollkommen übertrieben waren, in die Hosen gemacht 
und ANDEREN Leuten haufenweise Arbeit gemacht haben! NEIN DANKE!

>als dann
>mehrere Wochen vergeuden weil der Prototyp nicht oder nur manchmal
>läuft, oder noch schlimmer in der Serie manche Produktionslose einfach
>nicht gehen oder wesentlich häufiger Probleme haben.

Dafür gibt es eine Inbetriebnahme und Typprüfung, wo sowas gemessen und 
bewertet wird!

von berndl (Gast)


Lesenswert?

Falk Brunner schrieb:
> Reseven sind schön und gut, Übertreibung nur selten

Reserven bedeuted: Man weiss recht gut was man tut und baut sich noch 
etwas Luft ein (==Angstfaktor). Uebertreibung bedeuted in aller Regel: 
Ich spezifiziere einfach mal das Maximum; sollen sich andere damit 
rumschlagen...

Falk hat recht. Reserven kann einen Board Respin bedeuten, aber dann 
weisst du auch warum und wieso. Uebertreibung kann bedeuten: Es 
funktioniert, aber ich weiss nicht warum

von Christoph Z. (christophz)


Lesenswert?

Falk Brunner schrieb:
> Dafür gibt es eine Inbetriebnahme und Typprüfung, wo sowas gemessen und
> bewertet wird!

Ach wär das schön, wenn das bei uns hier alle so ernst nehmen würden.

berndl schrieb:
> Reserven bedeuted: Man weiss recht gut was man tut und baut sich noch
> etwas Luft ein (==Angstfaktor). Uebertreibung bedeuted in aller Regel:
> Ich spezifiziere einfach mal das Maximum; sollen sich andere damit
> rumschlagen...

Würde ich glatt unterschreiben!


Mir ging es eher um die Art Leute, die meint alle anderen machen das 
viel zu Kompliziert und dann selber ohne das nötige Wissen zu erarbeiten 
dann einen Schnellschuss produzieren. Ausbaden dürfen das Nachher die 
Leute von der Produktion und vom Support...

von KennIch (Gast)


Lesenswert?

Christoph Z. schrieb:
> berndl schrieb:
>> Reserven bedeuted: Man weiss recht gut was man tut und baut sich noch
>> etwas Luft ein (==Angstfaktor). Uebertreibung bedeuted in aller Regel:
>> Ich spezifiziere einfach mal das Maximum; sollen sich andere damit
>> rumschlagen...


Nunja hier (Spartan-6) hat man durch die IO-delay elemente einige 
reserven im FPGA mit denen man PCB-Längenunterschiede ausgleichen kann. 
Also Nix mit zwangsläufig nötigen PCB-Respin.
http://www.xilinx.com/support/documentation/user_guides/ug381.pdf S.70

So ist das halt mit den Angstfaktor: Vor lauter panik schätzt man seine 
Freiheitsgrade geringer ein und eröffnet auf neuen Teilgebieten 
Materialschlachten nur weil man sich dort ein wenig besser auskennt.

MfG,

von Bronco (Gast)


Lesenswert?

Falk Brunner schrieb:
> Da es sowieso getaktet ist kann man problemlos FlipFlips in den IOBs
> nutzen, sowohl rein als auch raus, was das Timing total relaxt.

Oh ja, das sollte man tunlichst machen (heisst beim Spartan glaub ich 
"Pack IOB").
Das war auch eine Lektion, die ich auf die ganz harte Tour lernen mußte 
;)

von berndl (Gast)


Lesenswert?

KennIch schrieb:
> Nunja hier (Spartan-6) hat man durch die IO-delay elemente einige
> reserven im FPGA mit denen man PCB-Längenunterschiede ausgleichen kann.
> Also Nix mit zwangsläufig nötigen PCB-Respin.

naja, es geht ja nicht nur um z.B. Laufzeiten externer Signale. Es geht 
auch um so sachen wie z.B. Spannungsversorgung (Leistung und Sequence 
beim einschalten), DeCaps, Pads fuer Signale von denen man nicht so 
genau weiss ob man sie jetzt braucht. Evtl. einen Absatz in den gefuehlt 
tausenden von Seiten Dokumentation uebersehen und dein Board tut halt 
nicht. Und dann faengt der Aerger richtig an...

Und einfach funktionierende Eval-Board Schaltungen zu uebernehmen ist 
halt sehr oft ueber's Ziel hinaus geschossen und damit teuer.

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.