mikrocontroller.net

Forum: Projekte & Code M16C FIR Filter mit RMPA Befehl


Autor: Sascha Pypke (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.)

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sascha Pypke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.