Ich baue an einem design mit, für das eine Zusatzplatine gemacht werden soll, auf der ein FPGA und ein DSP sitzen werden und das nun auch eine Vorverarbeitung leisten soll. Diese ist von der Methodik nach einfach, vom Umfang her aber recht ordentlich. Das Problem ist die Bandbreite von nur zwar nur 40MHz bei allerdings aufwändiger Filterung, die mir das halbe FPGA zustellt. Ich brauche nach ersten Schätzungen einen FIR-Filter von mindestens 1000 Stufen, um genau genug zu werden und davon auch noch 2 in Reihe. Bevor ich einen dickeren FPGA vorschlage, wollte ich Ausschau halten, ob es nicht fertige Filter-ASICs gibt, die das schon leisten. Benötigt wird ein Filter mit 1024 Stufen mit einer möglichst schmalbandigen Durchlasswirkung bei 2,2 Mhz, das auf 20 MHz laufen kann. Bis zu 60 könnte ich im FPGA machen. Gibt es da was?
Hallo Markus, hast Du das mal mit einem ADI DASP-214xx angeschaut? Diese DSP-Famielie hat einen FIR-Beschleuniger, der Dir helfen könnte. Grüße, Kurt
Ich denke mal, dass du mit 1000 Stufen einen FIR mit der Ordnung 1000 meinst. Hast du dir mal angeschaut ob nicht ein IIR angebracht wäre?
Viktor N. schrieb: > Was soll das Filter denn koennen ? wie ich schrieb: Markus Wagner schrieb: > Benötigt wird ein Filter mit 1024 Stufen mit einer möglichst > schmalbandigen Durchlasswirkung bei 2,2 Mhz, das auf 20 MHz laufen kann. > Bis zu 60 könnte ich im FPGA machen. Der Filter-ASIC so es ihn gibt, sollte mit wenigesten 20 MHz zu takten sein, tausend Werte oder 1024 verarbeiten und dann das gefilterte Signal wieder ausgeben. Die 1000 Stufen korrelieren natürlich auch mit der FIR-Filtergüte, die ich ausgerechnet habe. Kurt Harders schrieb: > hast Du das mal mit einem ADI DASP-214xx angeschaut? Gefunden und gelesen, aber noch nicht verstanden. Ich habe keine Details zur Achitetur vorliegen. Kriege ich da meine 1024 Filter-koeffizienten rein?
Hallo Markus, Markus Wagner schrieb: >> hast Du das mal mit einem ADI DASP-214xx angeschaut? > Gefunden und gelesen, aber noch nicht verstanden. > > Ich habe keine Details zur Achitetur vorliegen. Kriege ich da meine 1024 > Filter-koeffizienten rein? Der ADSP-214xx hat einen FIR-Beschleuniger mit 1024 Taps und 1024 Koeffizienten. Was der genau bringt kann ich nicht sagen. Wenn diese Lösung für Dich in Frage kommt, wende Dich direkt an den Support von ADI. Die helfen schnell, kompetent und ohne Ansehen der erwrteten Stückzahl :-) Grüße, Kurt
1000 Taps? Also wenn Latenz nicht das Problem ist schon mal über Konvolution per fft nachgedacht? Stichwort "fft convolution". https://www.google.com/#hl=en&gs_rn=12&gs_ri=psy-ab&tok=ZLEN-mf9fekGRClZz1u-qQ&cp=7&gs_id=7j&xhr=t&q=fft+convolution&es_nrs=true&pf=p&output=search&sclient=psy-ab&oq=fft+con&gs_l=&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.46471029,d.bGE&fp=98bf9c98293df37&biw=1208&bih=1474 Braucht dann aber etwas mehr Speicher im FPGA, doch nur ca. ein Zehntel an der MAC/s-Leistung. Wollte man die Latenz reduzieren, kann man noch Kompromisse machen und eine Art Hybrid zwischen fft Konvolution und fir machen. Ich glaube irgend wo mit fftw http://www.fftw.org/ gemacht so was fertig gesehen zu haben. Auch eine Kaskadierung/Parallelisierung von firs und Dezimation ist evtl. anwendbar, kommt am Ende auf das gleiche wie "fft konvolution" hinaus. Wenn die Systembandbreite von 20MHz gar nicht gebraucht wird kann man ja einfach nur downsamplen, fir mit weniger taps und wieder upsamplen.
Dogbert schrieb: > Wenn die Systembandbreite von 20MHz gar nicht gebraucht wird kann man ja > einfach nur downsamplen, fir mit weniger taps und wieder upsamplen. Sehe ich ja, es geht nur um einen Bandpass bei 2.2Mhz. Je nach Bandbreite kann man da erst schon mal auf 10Mhz runtersamplen. Da ein Bandpass auch immer eine gewisse Gruppenlaufzeit hat sollte auch Latenz kein Problem sein. Ich denke das lässt sich für erschreckend wenig Geld in FPGAs machen, hier einen ASIC zu nehmen macht nur Sinn wenn man damit quasi auch die "Entwicklung" kaufen will.
Ich bräuchte es halt schon ziemlich genau. Mit dem Runtersamplen hole ich mir ja auch neue Probleme rein.
Wie genau? Genauigkeit ist wählbar. Da es aber ein Bandpass ist der wohl eine schmale Bandbreite hat denn er hat 1000 Taps könnte man etwas anderes machen: Es hat ja parallelen zu einem Radioempfänger, Stichwort „Gnuradio“, „direct conversion“. Runtermischen durch Multiplikation mit der Mittenfrequenz 0Grad/90Grad „IQ Demodulation“. Evtl. Bandbegrenzung am Eingang um Aliasing dabei auszuschließen, keine Mischprodukte über der Fs/2. Multirate Tiefpass in mehreren Stufen auf die gewünschte Bandbreite für die IQ-Signale. Da kommt man evtl. bei guter Stopbandunterdrückung vielleicht mit 32*2 (symmetrisch) Taps pro Stufe aus. Nur die erste fällt ins Gewicht, die nachfolgenden laufen immer halb so schnell. Auch eine Kombination aus Boxcar (Kammfilter) und FIR wie in DS Wandlern könnte den Aufwand noch weiter reduzieren. Oder ein CIC Filter? Die letzte Stufe die „genau“ sein soll und leicht änderbar dann auf jeden fall als FIR aber dafür bei 1/16 der Samplerate und mit deutlich weniger Taps. Wieder upsamplen, mit der Mittenfrequenz 0/90Grad multiplizieren und summieren. Die Genauigkeit leidet nicht, mathematisch äquivalent, praktisch muss man natürlich auf die Anzahl der Bits an verschiedenen Stellen achten. Hätte auch den Vorteil die Mittenfrequenz wäre leicht "durchstimmbar" über den NCO. Oder soll das Signal vielleicht eh in irgend einer weise demoduliert werden? Eine effektive Implementierung erfordert ein gewisses DSP-Wissen und Erfahrung. Evtl. ist sogar der gewählte Lösungsweg für das Gesamtsystem zu überdenken. Man könnte evtl. mit analoger Vorfilterung, und dann undersampling bei vielleicht dem 10-fachen der schmalen Bandbreite des Filters die günstigste und einfachste Lösung erzielen.
Ich habe nun einen weiteren FPGA davorgeknallt, in den ich einbauen kann, was ich will. Momenten bleibt es bei zwei optimierten FIR-Filtern mit nunmher 2048 TAPS.
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.