Forum: Digitale Signalverarbeitung / DSP / Machine Learning FPGA oder DSP einfaches Designbeispiel


von Kevin (Gast)


Lesenswert?

Editieren
Liebe Signalverarbeiter,
wie entscheidet man ob man ein Design mittels FPGA/CPLD oder mit einem 
DSP angeht.

Wenn die Taktraten annähernd gleich sind, ~400 MHz ist die parallele 
Implementierung in einem FPGA bestimmt ein Vorteil, wenn man es denn 
benötigt.

Der Preis eines FPGA`s ist höher. Was sind darüber hinaus Kriterien 
pro/kontra bezüglich FPGA oder DSP?
Kann man anhand einer konkreten Implementierung ein Fallbeispiel 
diskutieren?

Z.B: FIR Filter mit 128 Koeffizienten, Samplingrate maximal, was wäre 
mit DSP möglich was mit FPGA. Interessant wäre was mit derzeit 
günstigsten DSP`s zB: Blackfin 504 etc. und was mit einem FPGA/CPLD, die 
den vergleichbaren Job packen würden, möglich wäre (bezüglich 
Verarbeitungsfrequenz, Preis pro Stück).

Viele Grüße

von Martin S. (strubi)


Lesenswert?

Hi,

gibt dazu viele Ansichten. Im Endeffekt musst du abschätzen, was deine 
Entwicklungszeit wert ist, und welche Peripherie und Interfaces du 
brauchst.
Wenn du das noch nicht weisst, würde ich prinzipiell kleckern, und mir 
ein Pizzablech mit allem drauf was interessant ist (z.B. Avnet 
Firecracker, o.ä.) erwerben.
Weitere Antwort-Fragen:
- Reichen die MMACs? (Assemblersprache ansehen, Zyklen ausrechnen, 
Abschätzung machen)
- Welche minimalen Latenzzeiten sind erforderlich?
- Wo müssen die Daten hin?

Generell kannst du schon mal rechnen, dass die Entwicklung mit dem FPGA 
kostspieliger wird, da du sehr viel mehr verifizieren (Testbenches..) 
musst, denn in den meisten Fällen bist du damit konfrontiert, dass du 
deine eigene Logik designst.

An deinem Beispiel kann man soweit festnageln:

- Du kannst auf dem FPGA deine MAC units duplizieren und n-fach parallel 
laufen lassen, also Samplerate: 400 / 128 * n  MHz FIR-Filtern. n hängt 
von der Anzahl Gatter ab (was du halt reinbekommst bei der 
Timing-Vorgabe)
- Auf dem Blackfin hast du nur zwei parallele ALUs, also n = 2. Und du 
bist in diesem Fall auf 16 bit (1.15 Fixkomma)-Wertebereich beschränkt.

Die andere Frage ist, wie die Daten rein/ und rausmüssen, ob FIFOs 
dazukommen, usw.

Wenn die CPU noch einiges anderes machen muss, z.b. Daten per Netzwerk 
verschicken, usw. kommen die Latenzzeiten ins Spiel.
Allenfalls musst du für viel Leistung dann auch die Aufgaben auf ein
DSP/FPGA-Gespann aufteilen. Machen wir auch oft so, das ist vom 
Entwicklungsaufwand her optimal: "Dumme", simple Sachen ins FPGA, alle 
Intelligenz in den Blackfin oder ARM.

Wenn du keine niedrigen Latenzzeiten brauchst, sind ev. die 
OMAP-Prozessoren von TI auch interessant, da es fertige Linuxports gibt 
(die Boards sind entsprechend populär). Beim Blackfin gibt es "nur" 
uClinux (kein virtuelles memory), aber dafür ist er für dedizierte 
Standalone-Anwendungen einfacher zu programmieren.

Gruss,

- Strubi

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.