Hallo, ich möchte aus einem NF-Signal in Echtzeit plötzlich auftretende Störsignale beliebiger Frequenz entfernen, also quasi ein Autonotchfilter bauen. Das ganze soll auf einem DSP laufen, die Hardware soll aber erst mal keine Rolle spielen. Mich interessiert die Theorie, die dahinter steckt. Kann mir jemand einen Tip geben, wie man sowas realisiert? Ein Notchfilter alleine ist nicht das Problem, nur wie erkenne ich ein plötzlich auftretendes monofrequentes Signal? Ich habe hier ein Zeitschriftenartikel aus dem Jahre 1988 liegen, der ein solches Gerät beschreibt. Damals wurde ein TMS320E15 verwendet, dessen Geschwindigkeit mit knapp 9 MIPs angegeben wird. Also leistungsfähige Hardware scheint man nicht zu benötigen, ich denke auch das es ohne FFT funktioniert. Denn ich bezweifele, dass der o. g. DSP eine FFT mit ausreichender Frequenzauflösung in Echtzeit und das noch für zwei Kanäle schafft. Gruß Thorsten
Definiere erstmal NF-Signal ... - Frequenzbereich? - Erwartete Signalform? Ansonsten einfach zunächst N Samples sammeln und eine FFT machen. Im Ergebnis nach den "großen" Peaks suchen. Auf diese den Filter abstimmen. Woher erkennst du was Nutz- und was Störsignal ist? Hast du einen Algorithmus für einen Notch-Filter-Entwurf, den du auch auf einem DSP implementieren kannst? Eine FFT ist auch bei 9 MIPS noch locker machbar, kommt nur auf die Länge und die Definition des Begriffes Echtzeit an. Gib einfach ein paar mehr Infos zur Anwendung und dir wird auch gezielt geholfen. Alex
Mehr Infos, gerne! Der Frequenzbereich beträgt maximal 20kHz, es handelt sich um Sprache und Musik. Ich möchte mich zunächst nicht einschränken und sage, es handelt sich um ein Stereosignal. > Woher erkennst du was Nutz- und was Störsignal ist? Eben genau das ist ja das Problem, das Filter soll das erkennen. Ich denke, es gibt hierfür signalstatistische Ansätze. Die Sache mit der FFT hat das Problem, dass man eine möglichst hohe Frequenzauflösung benötigt um sicher zu gehen, dass man den Störer auch erfasst. Hohe Auflösung bedeutet hoher Speicherbedarf und viel Rechenpower; auch wenn ich oben geschrieben habe, dass das zunächst keine Rolle spielen soll. Dennoch will ich nach Möglichkeit die einfachste (und billigste) Hardware haben. Zur Anwendung: es soll eine Erweiterung für meinen Kurzwellenempfänger sein. Beim Empfang nachts z. B. auf 60m passiert es öfter, dass plötzlich aus heiterem Himmel eine Morsestation mit dem Sendebetrieb auf einer benachbarten Frequenz beginnt. Die Verständlichkeit eines schwachen Rundfunksignals leidet hierdurch stark und das Notchfilter soll da helfen. Bisher habe ich ein Notchfilter auf meinem DSP laufen, dessen Bandbreite und Center-Frequenz ich manuell einstellen kann. Das ist etwas mühselig, da man öfter schon etwas länger braucht, um auf den Störer schmalbandig abzustimmen. Breitbandig ist sinnlos, weil dadurch das NF-Signal leidet. Dieses Filter funktioniert soweit einwandfrei. Nun möchte ich aber das Filter dahingehend ändern, dass es den plötzlich auftretenden Peak selbstständig erkennt und das Notchfilter automatisch anpasst (Stichwort adaptives Filter). > Hast du einen Algorithmus für einen Notch-Filter-Entwurf, > den du auch auf einem DSP implementieren kannst? Wie schon geschrieben, dass ist kein Problem. > Eine FFT ist auch bei 9 MIPS noch locker machbar, kommt nur auf > die Länge und die Definition des Begriffes Echtzeit an. Naja unter Echtzeit verstehe ich hier jetzt, dass ich von jedem Kanal (links und rechts) ein Sample bekomme, diesen vom Filter bearbeiten lasse, und anschließend wieder an den Codec schicke. D. h. ich habe bei einer Samplingfrequenz von 44kHz ca. 23µs für alles Zeit. Dauert die Berechnung länger gehen Daten verloren. Gute Nacht! Thorsten
Anstatt einer FFT kannst du dir auch Bandpassfilter für die benachbarten Bänder (hängt halt von deren Zahl ab und ob sie bei festen Frequenzen sind) basteln (z.B. DT2-Systeme oder falls die Ordnung höher sein muss (D2T3-Systeme o.ä.). Somit kannst du schmalbandig mit geringerer Rechenleistung den Störer erkennen anstatt eine komplette FFT machen zu müssen. Voraussetzung: Der DSP kennt dein aktuell genutztes Band (damit er nicht dieses als Störer identifiziert) oder hat ein Kriterium um Sprache von Morsesignalen zu unterscheiden (Morsefrequenz eventuell detektieren?) Meine Anspielung auf die Echtzeitanforderung bezog sich nicht auf das Filter sondern mehr auf die Zeit für die Störsignalerkennung. Dort sollten zur Not auch mehrere Millisekunden in Ordnung sein. Diese haben die oben erwähnten Filter unvermeidlicherweise. Bin leider kein Funkamateur, sonst wären ein paar meiner neuen Fragen sicherlich überflüssig gewesen. Alex
"Dort sollten zur Not auch mehrere Millisekunden in Ordnung sein. Diese haben die oben erwähnten Filter unvermeidlicherweise." Hmm, schlechter Ausdruck. Wollte sagen, dass solcherlei Filter selbst Einschwingzeiten haben, du somit auch Signalpeaks nur mit einer gewissen Verzögerung detektieren kannst.
Das mit der Verzögerung sollte kein Problem sein. Da sich der Störer in seiner Frequenz ja eher nur langsam bzw. überhaupt nicht ändert, bedeutet das auch für das Filter, dass es sich "einmalig" auf den Störer einstellt. Ein paar ms Verzögerung stören da nicht. Bei meinem jetzigen Notchfilter ist es ja genaus so. Jedesmal wenn ich die Frequenz oder Bandbreite verändere, wird der komplette Satz Filterkoeffizienten (256)* neu berechnet und im Speicher abgelegt. Dieser Vorgang dauert ca. 32ms, der DSP hat 24.576MIPs. Dies macht sich in keinster Weise negativ bemerkbar. Aber zurück zum eigentlichen Problem. Sprache bzw. Musik ändert sich ja bekanntlich nicht sprunghaft. Taucht nun plötzlich ein Störer auf, so kommt es zu einer sprunghaften Änderung. Evtl. kann man das ausnutzen. Ich werde mal weiter recherchieren :) Thorsten *) Ich benutze zur Zeit übrigens ein einfaches FIR-Filter, daher die große Anzahl der Koeffizienten.
Solche Filter mit dem LMS (least mean square)-Algorithmus gibts schon länger, ich habe einen Funkgerätelautsprecher mit eingebautem AD21xx Fixkomma-DSP. Es gibt im Web freien Programmcode zum Beispiel auch für ein TMS320C26 Eavluationsboard. http://www.programmersheaven.com/download/2386/download.aspx KC7WW's DSP Sound Processor for PSA PC Soundcards This package allows you to use your DSP sound card to perform digital signal processing system for noise reduction and autonotching. The LMS algorithm, as described by W9GR in QST, is programmed to run in real time on the sound card's DSP processor. Enjoy your HF or satellite communications and lower listening stress.
Hi, was du suchst sind adaptive Filter, die so funktionieren, dass sie das störende, quasi-stationäre Signal (also die sinusförmige Komponente) erkennen und ausfiltern, somit das stochastische Signal (also z.B. die Sprache) übrig lassen. Ich empfehle, hier anzufangen zu lesen: http://en.wikipedia.org/wiki/Adaptive_filter Gruß, Andreas www.dsp-bayer.de
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.