Forum: Projekte & Code M16C FIR Filter mit RMPA Befehl


von Sascha Pypke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, endlich habe ich mal etwas Zeit gefunden und habe den RMPA Befehl 
getestet.
Es ist schon unglaublich was man alles damit kann.
Es ist ein kleines Beispiel, mit dem ich zeigen möchte wie simpel man 
einen digitalen Audiofilter realisieren kann.
Ich habe ein Mikrofon am ADC0(mit Vorverstärker) und einen Kopfhörer am 
DAC0(mit Verstärker) angeschlossen und los gehts.
Es handelt sich um einem Bandpassfilter der bei 1Khz liegt und ca. 100Hz 
Bandbreite hat.
Der M16C sampelt mit 8Khz die Audiodaten und macht den Filter dabei 
spielend in Echtzeit. Der FIR Filter ist mit 66 Taps realisiert. Der 
M16C könnte bis ca. 128 Taps arbeiten.
Dabei macht der Prozessor 528000 Multiplicationen und 528000 Additionen 
und eine Division pro Sekunde. Und vor allem mit 32 Bit Register (R2R0).

Als kleiner Tip als Aplikation kann man es als CW-Filter für Kurzwelle 
verwenden wenn man einen SSB Empfänger hat. Ansonsten pfeift man halt 
ins Mikro.

Viel Spaß Sascha

(P.S. für Rückfragen meine eMail steht im Programm.)

von Obelix (Gast)


Lesenswert?

Ich habe mal in ferner Zukunft vor, einen DCF77 Empfanger mit einem M16C 
zu bauen, un dabei die Frequenz per FIR herausfiltern. Da du ja jetzt 
schon Erfahrungen damit gemacht hast, meinst du das könnte klappen?

von Sascha Pypke (Gast)


Lesenswert?

Uffff 77.5 KHz das ist für einen M16C natürlich viel.
Du brauchst dann eine Samplingfrequenz von mindestens dem 4 fachen.
Also so ca. 310 KHz, der AD-Wandler macht da gerade noch mit, aber der 
Rechenpower fehlt. Wenn mann einen IIR Filter nimmt (der sogar 
wesentlich steiler für einen solchen Zweck ist) muss man nicht ganz so 
viel rechnen.
Ein IIR-Filter braucht pro Stage 4 Multiplikationen, 4 additionen und 
eine Division (wenn man Integer rechnet) 2 Stages mindestens für 
Bandpass, normalerweise 5mul und 5 add, aber eine kann man sich bei 
Bandpass einsparen.
Also könnte gerade noch gehen. ?!?!?

Also ich würde sagen nimm einen ADuC7020 der macht 1 mega Sampel bei 12 
Bit und hat eine ARM7 CPU, die allerdings nicht die schnellste ist.
Aber für den Job reicht es gut. Und 4 Stages IIR auch.

Gruß Sascha

von Obelix (Gast)


Lesenswert?

Vielen Dank für deine Auskunft.

Einen ARM habe ich noch nie eingesetzt, deswegen würde ich lieber auf 
der Renesas Schiene bleiben. Wenn ich mit meinem jetzigen Projekt fertig 
bin, kann ich ja mal ein wenig Experimientieren. Ich komme auch gut an 
M32C ran, die sind auch eine Nummer schneller.

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.