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 :-)
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.
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 ;-)
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 :)
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.)
>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 :-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.