Ich habe für die Aufbereitung eines Signals einige FIR-Filter unterschiedlicher Qualität entwickelt und hänge nun an der Problematik der effektiven Implementierung. Die Filter haben wenigstens eine Koeffizientenzahl von 128 und die Daten kommen mit 12.5MHz. Bei einer total sequenziellen Implementierung benötige ich 64 Schritte, wenn ich die Symmetrie nutze und gelange zu einer Abtastfrequenz von 800 MSPS. Da ich nur mit 100 MHz arbeiten kann, kann ich nur jeden 8.ten Block an Daten bearbeiten, also 12,5%. Ich habe den Filter daher 8x drin und arbeite geschachtelt. Die Frage ist, wie man davon wegkommen kann? Wo müsste man ansetzen, um das Problem zu entschärfen, also wie kann ich mit einer Mehrfachnutzung von Daten oder Koeefizienten die Rechung verkürzen oder vereinfachen? Ein link zu passender Literatur wäre auch schon hilfreich, wobei ich den Standard wohl so ziemlich durch habe:-)
"FPGA-Based Implementation of Signal Processing Systems" von Roger Woods
Du must doch nur eine Pipeline implementieren die mit 12,5MHz funktioniert. Demnach wird dein Analogsignal digitalisiert und zwar mit 12,5MHz. Anschließend wandert Dein digitaisiertes Signal durch den Filter mit 64 Steps. Demnach verzögert sich Dein Signal doch nur um 64 Steps. Wenn man damit leben kann ist dies doch kein Problem.
Martin schrieb: > Du must doch nur eine Pipeline implementieren nun ja, eigentlich wären es sogar 128, aber ich buffere ja schon und schiebe es durch 64 mit Koeffizientenspiegelung. Bei vollem pipelining hätte ich dann 64 Mulitplierinstanzen weg und die müssen 32 Bit Daten x 24 Bit Koeffizienten berechnen. Das FPGA soll halt auch noch was anderes tun, als nur die Eingangsdaten filtern :-) SuperWilly schrieb: > "FPGA-Based Implementation of Signal Processing Systems" von Roger Woods Da schaue ich mal, Danke.
Klaus L. schrieb: > Die Frage ist, wie man davon wegkommen kann? Warum? Das was Du beschreibst, klingt nach einer optimalen Lösung. Man kann ja prinzipiell zwischen zwei Extremen wählen: 1. Alles parallel: schnell, aber viel Platzbedarf 2. Alles seriell: langsam, aber klein Du hast schon den goldenen Mittelweg implementiert. Wenn Dir Design zu groß ist, kannst Du die Taktfrequenz erhöhen (was bei 100 MHz, je nach Chip schon schwierig werden dürfte) oder weniger Koeffizienten bzw. kleinere verwenden. Was ist denn Dein eigentliches Problem? Zu viele Multiplizierer? Zu viel Slices? Duke
Duke Scarring schrieb: > Was ist denn Dein eigentliches Problem? Zu viele Multiplizierer? Der generelle Wunsch nach Optimierung:-)
Klaus L. schrieb: >> Was ist denn Dein eigentliches Problem? Zu viele Multiplizierer? > Der generelle Wunsch nach Optimierung:-) Ok. Dann hast Du offensichtlich zu viel Zeit :-) (Wobei ich die Intention sehr gut nachvollziehen kann.) Duke
> Zeit
eher anders herum, daher frage ich ja, statt nachzulesen :-)
Ich habe mir jetzt das o.g. Buch besorgt, es brachte mir im hiesigen Fall wenig, dafür aber anderweitig empfehlenswert, falls es wen interessiert.
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.