www.mikrocontroller.net

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


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: firsir (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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 :-)

Autor: Rene B. (themason) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: firsir (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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 ;-)

Autor: Rene B. (themason) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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 :)

Autor: firsir (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.)

Autor: Rene B. (themason) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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 :-)

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Rainer Siedler (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net