Forum: Digitale Signalverarbeitung / DSP / Machine Learning Digitale Filter-ICs oder ASICs


von Michael W. (Gast)


Lesenswert?

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?

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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?

von Viktor N. (Gast)


Lesenswert?

Was soll das Filter denn koennen ?

von Michael W. (Gast)


Lesenswert?

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?

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

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

von Dogbert (Gast)


Lesenswert?

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.

von Dogbert (Gast)


Lesenswert?

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.

von Michael W. (Gast)


Lesenswert?

Ich bräuchte es halt schon ziemlich genau. Mit dem Runtersamplen hole 
ich mir ja auch neue Probleme rein.

von Dogbert (Gast)


Lesenswert?

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.

von Michael W. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.