Kapitel 9 Implementering av digitala filter Som vi sett i kapitel 8 kan det behövas ett mycket stort antal koefficienter för att representera ett digitalt filter. Detta gäller i synnerhet FIR filter. Det följer att vikt bör fästas vid hur filtret implementas. Detta påverkar såväl beräkningshastighet, minnesbehov och inverkan av kvantiseringsfel. Betrakta ett diskret system av typen b k y(n k) + a k x(n k) (9.1) Vid implementeringen av systemet skall utsignalsekvensen {y(n)} beräknas ur insignalsekvensen {x(n)}. En direkt rekursiv lösning av ekvation (9.1) är i allmänhet inte den effektivaste implementeringsmetoden, utan andra sätt att organisera beräkningarna kan vara snabbare eller ge mindre kvantiseringsfel. Olika sätt att organisera beräkningen av utsignalen från ett linjärt system motsvaras av olika sätt att representera systemet med hjälp av delsystem. Dylika representationer kallas realiseringar av systemet. En realisering kan grafiskt beskrivas i form av blockdiagram av den typ som behandlades i kapitel 7 (jämför t.ex. problem 7.1). Realiseringar av ett diskret system kallas också strukturer för representation av systemet. Det har utvecklats en mängd olika strukturer för diskreta system med vilka digitala filter kan realiseras. En del av strukturerna är icke-triviala och speciellt konstruerade för specifika tillämpningstyper. Vi skall här endast i korthet beskriva några av de viktigaste filterstrukturerna. Deras olika egenskaper, såsom effekten av kvantiseringsfel m.m., skall dock ej diskuteras. 9.1 Strukturer för system med ändligt impulssvar I detta avsnitt betraktas realiseringar av ett system med ändligt impulssvar, som beskrivs av differensekvationen N 1 h(k)x(n k) (9.2) 146
Direkt realisering. I en direkt realisering av systemet (9.2), beräknas utsignalen direkt som summan h(0)x(n) + h(1)x(n 1) + + h(n 1)x(n N + 1) (9.3) (jämför figur 6.28 i Ifeachor och Jervis (1993)). Realiseringen fordrar lagring av N 1 tidigare insignalvärden, samt N multiplikationer och N 1 additioner per steg. Om FIR filtret är faslinjärt, så att symmetrivillkoret h(n) = ±h(n 1 n) (9.4) gäller, kan beräkningarna förenklas. För symmetriska faslinjära filter av typ I och II får vi (N 1)/2 1 h(k) [x(n k) + x(n (N 1 k))] +h[(n 1)/2]x(n (N 1)/2) (N udda) (9.5) N/2 1 h(k) [x(n k) + x(n (N 1 k))] (N jämnt) (9.6) Jämför figur 6.29 i Ifeachor och Jervis (1993). Antalet multiplikationer reduceras i detta fall med ca 50% jämfört med en direkt realisering enligt (9.3). Det bör dock observeras att en implementering enligt ovan i flera digitala signalprocessorer kräver en mera komplicerad indexering av data, vilket reducerar metodens effektivitet. Kaskadstrukturer. En kaskadstruktur för realisering av ett FIR filter fås genom att faktorisera överföringsfunktionen i faktorer av ordningen två enligt N 1 h(k)z k = H 1 (z) H 2 (z) H K (z) (9.7) H k (z) = b k0 + b k1 z 1 + b k2 z 2 (9.8) och K är heltalsdelen av (N + 1)/2. Faktoriseringen kan alltid göras så att koefficienterna b ik är reella. Med denna struktur kan FIR filtret realiseras med hjälp av standard byggblock bestående av FIR system av längden tre. Andra strukturer för FIR system. Andra viktiga strukturer för realisering av FIR system är bl.a.: - frekvenssamplings-strukturen, - lattice-strukturen. Dessa strukturer har utvecklats för speciella typer av tillämpningar för vilka de är speciellt effektiva. Vi skall dock ej behandla dem här. 147
9.2 Strukturer för system med oändligt impulssvar I detta avsnitt betraktas system med oändligt impulssvar, som beskrivs av differensekvationen b k y(n k) + a k x(n k) (9.9) och vars överföringsfunktion ges av M a k z k 1 + N b k z k (9.10) Direkt realisering. En direkt realisering av systemet kan åstadkommas på två sätt. Definiera funktionen H 1 (z) bestående av överföringsfunktionens täljare, H 1 (z) = a k z k (9.11) samt funktionen H 2 (z) bestående av överföringsfunktionens nämnare, H 2 (z) = 1 1 + N b k z k (9.12) I en direkt realisering av typ I faktoriseras överföringsfunktionen enligt H 2 (z)h 1 (z) (9.13) Systemet representeras alltså som en produkt av ett FIR system H 1 (z) åtföljt av ett IIR system H 2 (z) med täljarpolynomet 1. I tidsplanet motsvaras detta av att först beräkna en signal w(n) från ett FIR system enligt och utsignalen fås från ett IIR system enligt w(n) = a k x(n k) (9.14) b k y(n k) + w(n) (9.15) I en direkt realisering av typ II faktoriseras överföringsfunktionen enligt H 1 (z)h 2 (z) (9.16) I denna realisering representeras systemet som en produkt av ett IIR system H 2 (z) med täljarpolynomet 1 åtföljt av ett FIR system H 1 (z). Detta motsvarar i tidsplanet beräkningen av en signal w(n) från ett IIR system enligt w(n) = b k w(n k) + x(n) (9.17) 148
och beräkningen av utsignalen med ett FIR system enligt a k w(n k) (9.18) De direkta realiseringarna av IIR system är känsliga för kvantiseringfel. Detta beror på det faktum att utsignalen y(n) beräknas som en funktion av ett antal tidigare utsignaler y(n 1),..., y(n N). Kvantiseringfelen kommer för att påverkas av ett dynamiskt system, och i värsta fall förstärkas av detta. Observera också att systemets egenskaper beror kritiskt av polernas lägen, dvs av nämnarpolynomets nollställen. Nollställena hos polynom av hög ordning är emellertid extremt känsliga för polynomets koefficienter. Det följer att kvantiseringsfel kan ha en stor inverkan på ett systems poler och igenom helt förändra systemet egenskaper. För IIR system av hög ordning är de direkta implementeringsmetoderna för ej att rekommendera. Motsvarande fenomen inträffar ej för FIR system, eftersom dynamiken ej på samma sätt är känsligt beroende av överföringsfunktionens nollställen. Känslighetsproblemet som den direkta implementeringen av IIR system lider av kan undvikas genom att uppdela systemet i delsystem av låg ordning. Vanligen används delsystem av ordningen två, eftersom det är den lägsta ordning med vilken system med komplexkonjugerade poler kan behandlas med reell aritmetik. Delsystem kan kombineras antingen i serie (kaskadstruktur) eller parallellt. Kaskadstrukturer. Precis som FIR system så kan även IIR system realiseras i form av kaskadstrukturer. Vi faktoriserar överföringsfunktionen (9.10) enligt H 1 (z) H 2 (z) H K (z) (9.19) H k (z) = a k0 + a k1 z 1 + a k2 z 2 1 + b k1 z 1 + b k2 z 2 (9.20) och K är heltalsdelen av (N + 1)/2. Systemet kan således realiseras som en produkt av standard byggblock bestående av IIR system av andra ordningen (jämför figur 7.20 i Ifeachor och Jervis (1993)). Parallellstrukturer. Ett annat sätt att uppdela ett IIR system är genom att införa en partialbråksuppdelning av överföringsfunktionen (9.10) enligt K C + H k (z) (9.21) a k0 + a k1 z 1 H k (z) = (9.22) 1 + b k1 z 1 + b k2 z 2 I detta fall kan systemet realiseras genom att parallellkoppla IIR system av andra ordningen, jämför figur 7.21 i Ifeachor och Jervis (1993). 149
Exempel 9.1. Betrakta ett system av fjärde ordningen med överföringsfunktionen 10(1 1 2 z 1 )(1 2 3 z 1 )(1 + 2z 1 ) (1 3 4 z 1 )(1 1 8 z 1 )(1 z 1 + 1 2 z 2 ) Systemet kan realiseras med en kaskadstruktur sammansatt av andra ordningens delsystem t.ex. genom uppdelningen 10H 1 (z)h 2 (z) H 1 (z) = 1 2 3 z 1 1 7 8 z 1 + 3 32 z 2 H 2 (z) = 1 + 3 2 z 1 z 2 1 z 1 + 1 2 z 2 För att bestämma en parallellstruktur för realisering av systemet bör överföringsfunktionen partialbråkuppdelas. En partialbråksuppdelning med nämnarpolynom av andra ordningen är 14.75 12.90z 1 24.50 + 26.82z 1 1 7 8 z 1 + 3 + z 2 1 z 32 1 + 1 2 z 2 150