Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe System zur digitalen Signalverarbeitung: Signal- Quelle AAF ADC DAC RCF DSP Po rt Po rt Signal- Ziel Das Bild zeigt ein allgemeines System zur digitalen Signalverarbeitung. Bei Signal-Aufnahme, bzw. Wiedergabe kann einer der beiden Zweige durch ein hier nicht dargestelltes digitales Speichermedium ersetzt werden. Signalquelle bzw. Ziel können. elektroakustische Wandler wie Mikrofon und Lautsprecher oder Signalgenerator und Messgerät (Oszilloskop, Spektrum-Analyser, etc.) sein. AAF (Anti Aliasing Filter) und RCF (Re-Construction Filter) sind analoge Tiefpässe. Sie sind wegen des Abtasttheorems erforderlich und unterdrücken Signalanteile oberhalb der halben Abtastfrequenz. ADC (Analog Digital Converter ) und ADC (Digital Analog Converter ) werden von demselben Taktsignal mit der Abtastfrequenz (s für sampling) gesteuert. DSP (Digital Signal Processor) ist ein Spezialprozessor kann aber auch ein PC (z.b. mit Soundkarte) sein. Der DSP hat den Vorteil der geringeren Baugröße und Stromaufnahme. Analoge Filter Die Übertragungsfunktion des RC-Tiefpasses wird durch das Verhältnis von Ausgangsspannung zu Eingangsspannung definiert: G s = U s a U e s = s C s C R = mit der komplexen Frequenz s= j. s R C
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe Ue R C Ua Durch Wahl der Bauteile R = kω, C =.59 nf ergibt sich eine -3dB-Grenzfrequenz von f g = =khz. Im Bode-Diagramm werden die Amplitude in db und die Phase mit R C einer logarithmischen Frequenzachse dargestellt. Der RC-Tiefpass hat nur eine Polstelle in der komplexen Ebene. Abbildung RC-Tiefpass - -6 - -4 db Magnitude %i*imag(s) Pol- Nullstellen in der s-ebene e4 8e4-8 - 6e4-6 -3 - - -3-4 -5-6 -7-8 -9 degrees ()/(+s*r*c) 3 3 Phase 4 4 5 5 Hz Hz 4e4 e4 -e4-8e4-6e4-4e4 -e4 e4 4e4 6e4 8e4 e4 -e4-4e4-6e4-8e4 real(s) -e4
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe 3 Digitale Filter Ein digitales Filter besteht aus Addierern +, Multiplizierern b und Registern z -, die mit der Abtastfrequenz getaktet werden und somit die Verzögerung um die Abtastperiode = z =e s ausgedrückt.. Die Verzögerung um eine Abtastperiode wird mathematisch durch x n x n- z - b b + + /a a y n - z y n- Die Übertragungsfunktion (z.b.. Ordnung): Y z X z =G z = b b z b z wird nach wird in eine a a z a z Differenzengleichung überführt, indem für X(z) und Y(z) die indizierten Variablen x und y eingesetzt werden. Der Index n entspricht dem aktuellen Zeitpunkt, Verzögerungen von i durch den Index n-i ausgedrückt werden. y n =[b x n b z x n b z x n a z y n a z y n ] a x n- z - vermieden werden. b + Die Division Um Register einzusparen können die Verzögerungen in den mittleren Zweig verlegt werden. a z - y n- a kann durch Normierung aller Koeffizienten auf a
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe 4 Analoge Filter digital realisieren Um ein analoges Filter in ein digitales zu überführen, muss die Übertragungsfunktion G(s) in die Übertragungsfunktion G(z) überführt ln z werden, indem in G(s) die variable s durch s(z) ersetzt werden. Die Gleichung z=e s nach s aufgelöst ergibt s=. Der natürliche Logarithmus ln ist jedoch für die Filterrealisierung nicht geeignet. Die Reihenentwicklung des ln : ln z = [ z z z 3 3 z z 5 3 5 z ] für z. Die die Tustin-Formel s= z enthält nur das. Glied dieser unendlichen 5 z Reihe. Mit dieser bilinearen Transformation werden senkrechte Linien in der s-ebene auf Kreise in der z-ebene abgebildet. Die imaginäre Achse wird zu einem Kreis mit dem Radius e =, die gesamte linke Halbebene liegt innerhalb dieses Kreises. jω ω ω = σ Ω =/π jv Ω D =π/ Ω = Ω ω Ω D =π Ω D =π Während die imaginäre Achse eine lineare Frequenzteilung hat, wird bei der Abbildung auf den Kreis die Frequenzteilung verzerrt (der Bereich ω= bis ω wird auf den oberen Halbkreis abgebildet). Durch Einsetzen von z=e j D in die Tustin-Formel ergeben sich mit der Eulerschen Formel die Beziehungen: j = e j D = e j D Ts/ e j D Ts / e j T D s e j T / D s e = j sin D T / j T / D s cos D T / = tan d, bzw. d = arctan, wobei s-ebene D die Kreisfrequenz des digitalen Filters ist. Ω D =3π/ z-ebene Die normierte Kreisfrequenz Ω erleichtert es, unterschiedliche Filterenwürfe zu vergleichen. Bei analogen Filtern ist es üblich, die Frequenz durch eine Bezugsfrequenz (Grenz-, Resonanz- oder Mittenfrequenz) zu dividieren, beim Vergleich mit dem digitalen Filter ist Abtastfrequenz eine sinnvolle Bezugsfrequenz :Ω = f/. Für digitale Filter gilt: D = D = D = f D, so dass der Punkt f D = bei e j =e j in der z-ebene liegt. u
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe 5 Der analoge Tiefpass als digitales Filter In der Übertragungsfunktion des RC-Tiefpasses wird die Variable s mit Hilfe der Tustin-Formel substituiert. Für die Abtastfrequenz von 48 khz ergibt sich : z G z = z = z z R C RC RC = z,578875,578875 z Die Simulationen des analogen und des digitalen Filters verlaufen aufgrund der Frequenzverzerrung unterschiedlich. In der Übertragungsfunktion wird die Abtastperiode Ts so korrigiert, dass sich die Kurven bei fg= R C bzw. bei einem Betrag von 7% (-3dB) schneiden:..9.8.7.6.5.4.3.. Frequenzgang des Analog- und des Digital-Filters (ohne Korrektur) Digital-Filter h(z) Analog-Filter h(s)...3.4.5. 4.8 9.6 4.4 9. 4. khz f/fs k = tan f g f g korrigierte Übertragungsfunktion G k z = z,33,33 z..9.8.7.6.5.4.3.. Frequenzgang des Analog- und des Digital-Filters (korrigiert) Digital-Filter h(z) Analog-Filter h(s)...3.4.5 f/fs. 4.8 9.6 4.4 9. 4. khz
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe 6 Realisierung des digitalen Filters auf einem DSP in der Sprache C Ein kausales Filter darf nur negative Potenzen von z enthalten, deshalb werden Zähler und Nenner mit z multipliziert. Der DSP rechnet vorzugsweise im Festpunktformat. Um Werte > zu vermeiden, werden alle Koefizienten durch den größten Betrag dividiert (Normierung). z G k z =,3354,3354 z = z,434738,434738 z =,3354,3354 z,3655 z Die Differenzengleichung y n =,434738 x n,434738 x n,3655 y n wird in ein C-Programm umgesetzt, dabei werden Ringspeicher angelegt, für die Koeffizienten BA[m+n], für die Eingangswerte X[m] und für die Ausgangswerte Y[n], dabei ist m die Ordnung des Zählerpolynoms + und n die Ordnung des Nennerpolynoms. Die Angaben _circ und _fract stehen für Ringspeicher und den Datentyp Fractional. (Über den C-Standard hinausgehende Erweiterungen in Tasking CC56xxx für DSP56xxx) Ein * vor dem Variablenname bedeutet Zeiger; ein Zeiger auf einen Ringspeicher wird automatisch auf den Anfang des Ringspeichers gesetzt, wenn beim Inkrementieren (Operator ++) das Ende erreicht wurde (dies wird von der Hardware des Prozessors unterstützt). Die Zeiger PBA, PX und PY werden jeweils mit dem Anfang der Ringspeicher BA, X und Y initialisiert. Der Datentyp Fractional kann Werte von - bis + darstellen, der C-Compiler erlaubt die Zuweisung von Werten im Gleitkommaformat (float und double), wenn deren Betrag < ist.
Realisierung digitaler Filter FHTW-Berlin Prof. Dr. F. Hoppe 7 Das C-Programm zu Realisierung des digitalen Filters (Tasking CC56xxx für DSP56xxx) static _circ _fract BA[3], X[], Y[]; _circ _fract *PBA = &BA[],*PX = &X[], *PY = Y ; static int i=, N=; // N = Ordnung des Filtes - BA[] =.434738; BA[] =.434738; BA[] = -.3655 ; long _fract summe; while(){ } // while while(ssisr.b.rfs) ; while(!ssisr.b.rfs) ; summe =.; *--PX = rxdata[]; // B[] // B[] // A[] // 48 (56)-Bit-Akkumulator // Bit 3: Receive Frame Sync : wait for synchronization // wait for one for(i=n;i>=;--i) summe += *PX++ * (long _fract) *PBA++; // Zaehler for(i=n;i>=;--i) summe -= *PY++ * (long _fract) *PBA++; // Nenner // Neuen X-Wert eintragen *--PY = _round(summe); // Neuen Y-Wert eintragen txdata[] = *PY; txdata[] = *PY; // Ausgabe linker Kanal // Ausgabe rechter Kanal