Forum: FPGA, VHDL & Co. FIR-Filter extrem parallelisieren (Datenbreite)


von firsir (Gast)


Lesenswert?

Ich möchte ein langes FIR-Filter extrem parallel berechnen.

Zwei Dinge vermag ich aber derzeit nicht abzuschätzen:

1. Mein Virtex 5 hat ja diese DSP48-Slices mit einem 
25x18-Multiplizierer. Wenn ich z.B. 32 Bit Fixkomma multiplizieren will, 
wie viele solche Multiplizierer kann ich bauen? Ich schätze mal, es 
braucht je 2 DSP-Slices für einen 32 x 32 Multiplizierer?

2. Ich habe also mehrere 100 Multiplizierwerke, doch habe ich irgend 
eine Chance, diese auch mit Daten zu füttern? Ich müsste zu diesem Zweck 
ja jeweils 1 Koeffizient und 1 Signalwert pro Multiplizierer aus einem 
RAM lesen können. Da sowohl Signal wie auch Koeffizienten sehr lange 
sind und sich dynamisch ändern können, komme ich nicht um die Verwendung 
von BlockRAM herum...

Wäre sehr um eine Einschätzung froh, ob das möglich ist oder nicht :-)

von Rene B. (themason) Benutzerseite


Lesenswert?

Was für ein "langes" filter ist das denn ? Ne Sprungantwort von einem 
Hall-Raum ? :-)

Für 32x32 Multiplikationen wirst du 4 Multiplizierer brauchen. Wenn du 
mit 24x32 auskämst würden 2 Multis reichen.

BlockRAM wäre an der Stelle am sinnigsten.
Über welche Frequenz reden wir denn mit der du die FIR füttern möchtest 
?
Vllt wäre eine "parallele Serialisierung" an der Stelle sinniger. Wenn 
du z.b. 1000 Takte hast um einen Wert zu verarbeiten könnte man ja 1000x 
Anzahl (Rechenwerke inkl RAM) durchrechnen.

von firsir (Gast)


Lesenswert?

Rene B. schrieb:
> Vllt wäre eine "parallele Serialisierung" an der Stelle sinniger. Wenn
> du z.b. 1000 Takte hast um einen Wert zu verarbeiten könnte man ja 1000x
> Anzahl (Rechenwerke inkl RAM) durchrechnen.

Ich bin daran, verschiedene Architekturvarianten durchzudenken. Deshalb 
die Frage nach den Möglichkeiten auf dem FPGA ;-)

von Rene B. (themason) Benutzerseite


Lesenswert?

Na ja .... wenns um Flexibilität was die weitere Signalverarbeitung 
angeht wäre man mit einem DSP sicher besser beraten. Wenns die Daten 
aber eben sehr schnell reinrauschen (>1MHz), und bis auf einfache 
Operationen wie eben den FIR-Filter nichts weiter gemacht wird wäre ein 
FPGA sicherlich ne Option.
Aber dazu müsste man eben wissen was der Anwendungszweck ist. Audio ? 
Video ? SDR ? Oder was anderes ?
Ein FPGA hat halt den Vorteil das man auf unterster Ebene seine Signale 
bearbeiten kann und jederzeit die Logik austauschen kann. Wenn es aber 
um Flexibilität (komplexe Bearbeitung) geht die man vom uC oder DSP her 
kennt wird das erst sinnvoll mit größerern FPGAs und nem Softcore wie 
dem NIOS oder dem MicroBlaze. Das in Kombination hat sicherlich viele 
Möglichkeiten. Aber wenns z.b. nur um Audio ginge wäre jeder neuere DSP 
sicherlich schneller und auch schneller programmiert :)

von firsir (Gast)


Lesenswert?

Wie gesagt: Es geht mir um eine Einschätzung, was betreffend gesamter 
Datenbreiten aus BlockRAMs auf Multiplizierer auf einem Virtex 5 
ungefähr möglich ist.

Kann ich "alle" Multiplizierer gleichzeitig mit je zwei 
unterschiedlichen Elementen aus BlockRAMs füttern oder kommt der FPGA da 
nicht mehr mit? (Im Extremfall lese ich also für jeden der rund 100 
Multiplizierer 2 x 32 Bit aus einem BlockRAM.)

(Ich weiss ja auch, dass man manchmal die Frage etwas weiter fassen 
sollte. In diesem Fall überblicke ich das Problem aber recht gut, bis 
auf diese Erfahrungslücke. Deshalb ist eine Diskussion über den genauen 
Zweck oder Implementierungsalternativen wirklich nicht das, was mir 
hilft.)

von Rene B. (themason) Benutzerseite


Lesenswert?

>Kann ich "alle" Multiplizierer gleichzeitig mit je zwei
>unterschiedlichen Elementen aus BlockRAMs füttern oder kommt der FPGA da
>nicht mehr mit?

Im Prinzip ja, da im FPGA ja alles parallel vorhanden ist. Lediglich mit 
den verbindungen zu den Multiplizierern kann es eng werden.
Mitkommen wird der FPGA sicherlich. Ob jetzt nur ein Transistor oder 
alle schalten ist dem FPGA als solches schnuppe ... nur eben nicht der 
Spannungsversorgung :-)

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

firsir schrieb:
> Wäre sehr um eine Einschätzung froh, ob das möglich ist oder nicht :-)

Eine Einschätzung ist nur möglich, wenn wir die Samplingfrequenz und die 
erforderliche Filterlänge kennen. Denn die Struktur eines Filters hängt 
entscheidend vom Verhältnis Takt/(Samplingfrequenz*Filterordnung) ab.

Außerdem gibt es von Xilinx den CoreGenerator. Der erzeugt dir 
FIR-Filter nach Wunsch.

Tom

von Rainer Siedler (Gast)


Lesenswert?

Wir verwenden für solche Aufgaben dedizierte FPGA-Plattformen, welche 
mit passenden Filterarchitekturen geladen werden. Von Seiten der FPGAs 
werden aber nicht immer ausreichend Multiplizierer bereitgestellt, um 
FIR Filter in unbegrenzter Breite parallel berechnen zu können, daher 
ist eine Sequenzialisierung nötig.

Das Extrem wäre ein völlig serielles Filter, dass mit 1/n der 
Taktfrequenz Daten verarbeiten kann. Das wiederum läuft in einem DSP 
schneller und einfacher ab. Filter, die keine Teilparallilität 
aufweisen, sind in FPGAs nicht sinnvoll zu implementieren.

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.