KANDÓ KÁLMÁN VILLAMOSMÉRNÖKI KAR
Dr. Wührl Tibor
DSP algoritmusok
ÓE-KVK 2116 Budapest, 2014. 1
Tartalom Köszöntő .............................................................................................................................................. 3 1.
2.
Bevezető ...................................................................................................................................... 4 1.1.
Mintavételezés és annak hatása............................................................................................. 4
1.2.
Kvantálási probléma ............................................................................................................. 8
1.3.
A/D konverter kvantálási zajának csökkentése ................................................................... 10
1.4.
Jelfolyamdiagramok a „z” síkon és az időtartományban .................................................... 15
Csatornakiegyenlítők ................................................................................................................. 21 2.1.
Hangfrekvenciás hangszínszabályozó................................................................................. 21
2.2.
Adatátviteli csatorna kiegyenlítő ........................................................................................ 27
3.
Jelfelismerés .............................................................................................................................. 30
4.
DC tartalom eltávolítás .............................................................................................................. 35 4.1.
DC leválasztás hullámdigitális tervezési módszerrel .......................................................... 35
4.2.
DC leválasztás direkt tervezési módszerrel ........................................................................ 41
5.
Automatikus erősítés szabályozás (AGC) ................................................................................. 45
6.
Szűrőkarakterisztika trükkös javítása ........................................................................................ 49
7.
Digitális hangeffektek ................................................................................................................ 59
8.
7.1.
Túlvezérlés - Overdrive ...................................................................................................... 62
7.2.
Késleltetés - Delay .............................................................................................................. 65
7.3.
Visszhang - Echo ................................................................................................................ 66
7.4.
Zengetés - Reverb ............................................................................................................... 66
7.5.
Tremolo ............................................................................................................................... 68
7.6.
Octaver ................................................................................................................................ 69
7.7.
Wah-wah ............................................................................................................................. 70
Mellékletek ................................................................................................................................ 71 8.1.
Rövidítések jegyzéke .......................................................................................................... 71
8.2.
Irodalom .............................................................................................................................. 72
2
Köszöntő Kedves Olvasó! A digitális technika számos előnye, a chip technológiák rohamos fejlődése jó minőségű és olcsó híradástechnikai eszközök előállítását teszi lehetővé. Nem szabad ugyanakkor megfeledkeznünk a DSP korlátairól és a digitális mintavételes rendszerek rendszerbe foglalt hibáiról sem. A mintavételezés nemkívánatos hatásai, a véges bitszám miatt keletkező hibák, kvantálási torzítások és zajok mind olyan hatások, melyekkel pontosan tisztában kell lennünk. Ebben a jegyzetben néhány, digitális jelfeldolgozással kapcsolatos módszert, algoritmust ismertetek. A leírt algoritmusok megértéséhez alap DSP ismeretek szükségesek, melyek más egyetemi jegyzetekből elsajátíthatók, például: „Hullámdigitális jelfeldolgozás alapjai” (ÓE KVK 2072); „Bevezetés a Matlab® használatába – Híradástechnika és jelfeldolgozás” (ÓE KVK 2071). Az alkalmazott rövidítéseket a könyv végén a rövidítések jegyzékében adtam meg. Külön köszönetet szeretnénk mondani a könyv szakmai lektorának, Kún Gergelynek, aki sok szakmai észrevétellel, alkotó kritikával tette jobbá ezt a jegyzetet.
Eredményes, kitartó munkát kívánok! Szerző
3
1. Bevezető Ugyan a „Köszöntő” fejezetben azt írtam, hogy az alap DSP ismeretek meglétére számítok (és ez továbbra is így van), de ennek ellenére néhány alapismeret rövid összefoglalását fontosnak tartottam. Először a mintavételezést, annak hatását, majd a kvantálást és annak hatását vizsgáljuk. Fontos a két dolog különválasztása, és az egyes hatások pontos megértése! Környezetünk (persze, ha nem megyünk le a kvantumfizika szintjére) analóg, vagyis az egyes jelenségek és az azokat időben leíró függvények időben- és halmazon folytonosak. A digitális ábrázolási móddal ezen időben és halmazon folytonos eseményeket igyekszünk „leírni” időben és halmazon diszkrét jellel. Ez úgy lehetséges, ha az időben folytonos eseményből bizonyos időközönként (mintavételi időközönként) mintát veszünk, majd az egyes mintákat, mint mérési eredményeket egy-egy digitális számmal adjuk meg. Az első lépésben tehát mintavételezést végeztünk, és időben tettük diszkrétté a jelet, míg a másodikban egy véges bitszámú számábrázolással kódoltunk. A véges bitszám miatt a kódolásnál kerekítési hibát ejtünk, vagyis kvantálást végzünk. A kvantálási hiba a jelre „ráül” és zajként jelentkezik. Ennek a fejezetnek az utolsó részében a DSP algoritmusokat leíró jelfolyamdiagramok értelmezését tesszük meg a „z” síkon és az időtartományban.
1.1. Mintavételezés és annak hatása Egy X(t) folytonos függvény (analóg jelből), „Tm” mintavételi időközönként mintát veszünk, akkor úgynevezett PAM (Pulzus Amplitúdó Modulált) jelet kapunk.
1.1-1. ábra Mintavételezés Tm időközönként A mintavételi idő reciproka, az egy másodperc alatt végzett mintavételek számát, vagyis a mintavételi frekvenciát adja. 4
fm
1 Tm {1.1-1}
A mintavételezés gyakoriságát, illetve a mintavételi frekvencia értékét szabályok kötik, mely szabályt mintavételi tételnek, Nyquist-Shannon kritériumnak is szokás nevezni. A mintavételi tétel a következőt mondja, hogy a mintasorozatból az analóg jel elméletileg veszteség mentesen akkor állítható vissza, ha a mintavételi frekvencia legalább a kétszerese az analóg jelben előforduló legmagasabb frekvenciájú komponensének. Matematikai értelemben ezt a következő reláció fejezi ki:
f m 2 f max {1.1-2} Az egyenlőség kizárólag matematikai értelemben vett határérték, a gyakorlatban mindig nagyobb mintavételi frekvenciát választunk, mint az a 2 f max értéke szerint adódik. Ahhoz, hogy meg tudjuk határozni a mintavételi frekvenciát, ismernünk kell az átalakítandó jelben szereplő legmagasabb frekvenciájú harmonikus összetevőt. Egy adott jelben található harmonikus komponensek meghatározására rendelkezésünkre áll egy matematikai eszköz, a Fourier analízis. Első lépésben meg kell vizsgálnunk azt, hogy a digitalizálni kívánt analóg jelben mekkora a legmagasabb frekvenciájú harmonikus komponens f max , majd ezen adat ismeretében választhatjuk meg a mintavételi frekvencia értékét. Sok esetben az analóg jel spektrumának felső határfrekvenciája nehezen határozható meg, vagy felesleges komponensek is jelen vannak (gondoljuk a mobiltelefon készülék mikrofonjába beszélő előfizetők emberi beszéd spektrumkép különbözőségeire, a háttérzajokra, stb.). Az ilyen esetekben még mielőtt digitalizálnánk a jeleinket, analóg szűrésnek, sávkorlátozásnak vetjük alá azokat.
1.1-2. ábra Mintavételezés és az azt megelőző analóg sávkorlátozás A sávkorlátozást végző analóg szűrőre szűrőkövetelményt kell megfogalmaznunk! A szűrőkövetelményben meg kell adjuk, hogy mely frekvenciatartomány legyen az „áteresztő”, és mely sáv legyen a záró tartomány. Meg kell határoznunk az egyes sávokhoz tartozó csillapítás 5
értékeket is. Példaként nézzünk meg egy aluláteresztő szűrő követelményt, ahol a csillapítás értékeket ábrázoljuk a frekvencia függvényében:
1.1-3. ábra Sávkorlátozó, aluláteresztő analóg szűrő követelménye Az áteresztő és a záró sáv között egy véges méretű tartomány helyezkedik el, melyet „átmeneti sávnak” szoktunk nevezni. Erre a tartományra nem adunk meg követelményt. Ideális szűrő esetén (amilyet természetesen nem tudunk előállítani) az átmeneti sáv (frekvencia szerinti szélessége) nullára csökkenthető. Ideális szűrőhöz végtelen fokszám szükséges. Az áteresztő sáv maximális csillapítás értékét adja az aa értéke. Ebben a sávban a csillapítás ingadozás a hasznos spektrális komponensek amplitúdó torzítását eredményezi. A záró sávban a csillapításnak (az) olyan értékűnek kell lenni, hogy a nem kívánt komponensek szintje olyan értékűre csökkenjen, hogy azok ne sértsék a mintavételi tételt. Hogy is lehet ez? Hiszen minden komponens, aminek harmonikus összetevőinek frekvenciája fm/2 érték feletti, már megsérti a Shannon tételt! Most egy picit előre kell szaladnunk, és a kvantálás és kódolással kapcsolatos fogalmakra kell támaszkodnunk, melyek összefoglalóját csak a következő alfejezetben adom meg! Tételezzük fel a következőket (és az egyszerűség kedvéért most konkrét számértékeket nézzünk): Az egyes jelminták kódolásához használjunk 16 bites lineáris A/D konvertert! Ekkor a teljes dinamikatartományt 2^16 = 65536 részre bontjuk. A legkisebb kivezérlés határát a legkisebb helyértékű bit fogja jelenteni. A maximális kivezérlés és a legkisebb kivezérlés közötti viszony: (
) {1.1-3}
Ez azt jelenti, hogyha egy nem kívánt frekvenciájú komponenst tartalmazó analóg jel érkezik a rendszerünkbe, és annak a jelszintje megegyezik a teljes, maximális kivezérléshez tartozó szinttel, akkor ezt a komponenst körülbelül 96dB-lel kell csillapítani ahhoz, hogy annak szintje LSB 6
(legkisebb helyértékű bit szintje) alá csökkenjen, vagyis az A/D konverter már ne ábrázolja azt. Most természetesen azzal a feltételezéssel éltünk, hogy az analóg bemenetünk áramköreinek túlvezérlése az A/D konverter teljes kivezérléséhez igazodik, vagyis pontosan megegyezik azzal. A fenti konkrét példa meg is adta a választ! A sávkorlátozó szűrőnk zárócsillapításának olyan értékűnek kell lennie, hogy a nemkívánatos komponensek amplitúdóját az A/D konverter által ábrázolt LSB szint érték alá nyomja. A zárócsillapítás frekvenciaértékét (fz-t) a Shannon tétel adja, vagyis fz legyen nagyobb, mint fm/2. Például egy audió rendszer esetén az fm értéke legyen 44100Hz, ekkor fz-nek 22050Hz adódik. Az audió jel maximális hasznosnak tekintett harmonikus összetevőjének frekvencia komponense 20kHz, ez az érték adja az fa-t. A Shannon mintavételi tétel megsértése úgynevezett spektrumátlapolódás jelenségét okozza. A spektrumátlapolódás fizikai értelemben az a jelenség, amikor a hasznos frekvenciasávon kívül eső komponensekből vett minták hasznos sávba eső komponenseket produkálnak. A jelenség megértéséhez vizsgáljunk meg egy konkrét példát!
1.1-4. ábra Átlapolódás jelenség vizsgálata az időtartományban A fenti példában a mintavételi frekvencia legyen fm=8000Hz. Az u2-nek jelölt harmonikus jelből, melynek frekvenciája 5kHz vegyünk mintát fm értékkel (most tudatosan megszegtük a Shannon tételt, hiszen az fmax most csak maximum 4kHz lehetne!). A mintavételek időpontját a Tm időközönként berajzolt függőleges vonalak szemléltetik. A mintavételi időpontokban kapott mérési eredmények viszont tökéletesen leírják a fenti ábrán u1-nek jelölt 3kHz frekvenciájú harmonikus jelet! A példában tehát a sávon kívüli komponens bele fog hajlani a hasznos tartományba. Szintén ilyen jelenséget tapasztalnánk, ha az eredeti jel frekvenciája 6kHz lenne, ekkor viszont a hasznos sávban, a mintákból reprodukált harmonikus jel frekvenciája 2kHz-nek adódik. Ha a 7
gondolatkísérletünket tovább végezzük, és egy 9kHz-es harmonikus komponensből veszünk mintákat,
akkor
a
minták
a
hasznos
sávban
1kHz-es
harmonikus
jelet
adnak.
A
spektrumátalapolódás a végtelenségig tart, a spektrumképek fm/2 szerinti periodicitást mutatnak.
1.1-5. ábra Spektrum periodicitás a frekvenciatartományban a mintavételezés hatására
1.2. Kvantálási probléma Az előző alfejezetben átismételtük a mintavételezést, annak fontosabb hatását, valamint Shannon mintavételi tételt. A kapott PAM minták időben diszkrétek, vagyis a mintavételi időpillanatokban írja csak le a jelet, ugyanakkor halmazon még folytonosak. Most vizsgáljunk meg egy PAM mintát!
1.2-1. ábra PAM minta kvantálása Egy adott mintavételi időpillanatban a PAM minta az analóg jel pillanatértékét reprezentálja, és ezt végtelen pontossággal teszi, hiszen halmazon még folytonos. Ezt a mérési eredményt szeretnénk most egy digitális számmal leírni. Ha a digitális számunk „n” bites, akkor a teljes ábrázolási tartományt 2n részre oszthatjuk fel. a fenti ábra „X” tengelyére rajzolt körök jelzik az ábrázolható értékeket, melyekből 2n db van és minden ponthoz egy-egy „n” bites digitális kód tartozik. A példában a PAM minta sajnos nem esik egybe egyik ábrázolható ponttal sem, ezért ahhoz, hogy digitálisan ábrázolni tudjuk a mintát, kvantálnunk kell azt. A kvantálás, jelen esetben „Δ” kerekítési 8
hibát jelent. A kerekítési hibák nagysága mintáról mintára változó értékű sorozat, ami zajnak fogható fel, és ezért kvantálási zajnak is nevezzük azt. A kvantálási zaj a „hasznos” 0 – fm/2 frekvenciasávban helyezkedik el és sok esetben jó közelítéssel egyenletes fehér zajnak értelmezhető. Valóságban a kvantálási zaj korrelál, vagyis kapcsolatban van a hasznos jellel, hiszen az gerjeszti azt. Ez a kapcsolat sok esetben meglehetősen zavaró! A kvantálási zaj, és az általa okozott probléma többféle módon kezelhető, de elméletben a legjobb megoldást a minél nagyobb bitszám használata jelenti. Vizsgáljuk meg, hogy például egy 3Vp-p maximális kivezérelhetőségű analóg rendszer esetén a digitalizálást egy 16 bites lineáris konverziós karakterisztikájú A/D konverterre bízzuk, akkor mekkora felbontással rendelkezünk?
{1.2-1} A példában az LSB érték, és egyben a felbontás is, 45,78 µV. Ez most sok, vagy kevés? A feltett kérdés így alapvetően hibás! Minden esetben a felhasználástól függ, hogy ez az érték elegendő-e vagy sem. Sok esetben, főleg híradástechnikai készülékeknél, ahol emberi érzékszervek (fül és a szem) élvezik az előállított, illetve reprodukált jeleket nem is a zaj szint nagysága számít pusztán, hanem a jel-zaj viszonya. A fenti példa esetén egy adott jelszintnél kiszámítható a legrosszabb jel és kvantálási zaj viszony értéke, de ha a vizsgálatainkat az egyes minták esetében tesszük meg, akkor már elszomorítóbb eredményekkel találhatjuk magunkat szemben. Gondoljuk egy, a hasznos jel tekintetében a nullátmenet közeli helyzetben történő mintavételezésre! A bitszám, és így a felbontás minden határon túli növelése nem lehetséges, és a gyakorlatban sokszor értelme sincs. A fenti 16 bites példában a kvantálási lépcsőnk 45,78 µV, ami azt jelenti, hogy az A/D konverter előtti analóg áramkörök zaja, erősítés hibája ennél az értéknél kisebbnek kell lennie. A rendszerünk tápfeszültség szűrését is ennek megfelelően kell megvalósítanunk, valamint az A/D konverter eszköz referenciafeszültség zajának is jóval ez alatti értéknél kell lennie! Mindennek nemcsak elvi, hanem gyakorlati, konstrukciós oldalon is teljesülnie kell, hiszen egy digitális építőelemekből álló rendszer meglehetősen nagy zaj termelésére képes, ami a környező analóg áramkörökre nézve igen zavaró lehet. A fentiekből látható, hogy magasabb bitszám ugyan pontosabb ábrázolást tesz lehetővé (hiszen ez célunk), de ugyanakkor hatalmas követelményeket is állít az adott berendezés megvalósításánál. A megnövelt bitszám, mindamellett, hogy a kvantálási zaj szintjét csökkenti, további feladatokat és problémákat okoz. Ha 8 bit helyett 16 bitet használunk, akkor ugyanabból az analóg jelforrásból 9
dupla akkora adatmennyiséget állítunk elő ugyan akkora idő alatt. Ez a digitális jel átvitelénél dupla akkora adatátviteli sebességigényt támaszt, valamint a digitális jel tárolásánál dupla akkora tárkapacitásra lesz szükségünk. Digitális jelfeldolgozás esetén nagyobb kapacitású feldolgozó egységre lesz szükségünk a nagyobb bitszámú minták kezelésénél. A kvantálási probléma kezelésére a gyakorlatban több „költséghatékony” megoldást is használunk. A távközlésben a beszédátviteli megoldásoknál gyakran használjuk a PCM „A” és a „µ” konverziós karakterisztikákat, melyek kevés bitszámmal (8 bit), már viszonylag kis jelszintek esetén is az emberi fül számára elfogadható jel-zaj viszonyt mutat. A kvantálási zaj kellemetlen, a hasznos jellel korreláló hatását, bizonyos esetekben egy másik zaj (úgynevezett dither zaj) hozzáadásával tompíthatjuk. Ekkor ugyan a jel-zaj viszony romlik, de a reprodukált jel érzékelése (hallás és látás) jobb minőségűnek tűnik az ember számára. Az A/D konverterek zajcsökkentésére, és kvantálási problémáinak kezelésére DSP oldalon is van némi lehetőség. Ezt fogjuk megvizsgálni a következő alfejezetben.
1.3. A/D konverter kvantálási zajának csökkentése Az előző két alfejezetben áttekintettük a mintavételezést és annak hatását, valamint a kvantálási zaj probléma körét. A mintavételezést (a PAM jel előállítást) és az egyes minták digitális kódolását (PAM mintákból PCM kódsorozat előállítást) gondosan szétválasztottuk. Most viszont némiképp összekapcsoljuk a két dolgot, de a kedves Olvasót remélem most nem zavarom össze! Ebben segít az, ha megjegyezzük a következőt: Abban az esetben, ha a mintavételezés gyakoriságát sűrűbbre választjuk, mint azt a Shannon mintavételi tétel előírja, vagyis magasabb mintavételi frekvenciát választunk, ez a kvantálási zajt nem fogja csökkenteni! Láttuk, hogy nem egyszerű, és nem is olcsó nagy bitszámú A/D konverter készítése, valamint nagy felbontású A/D konverter rendszerbe integrálása is precízebb áramkörtervezést és konstrukciót igényel. Sok 16 bites jelfeldolgozó processzor (például dsPIC33 Microchip DSC) a fenti okból 10, illetve 12 bites A/D konvertert tartalmaz. Abban az esetben, ha a megoldandó feladathoz a chipben található A/D átalakító nem megfelelő, akkor külső 16 bites A/D illesztést kell tennünk, ami kényelmetlen és drága. Létezik egy trükkös megoldás [1], természetesen a hatékonyságát és alkalmazhatóságát minden esetben a konkrét feladat ismeretében kell meghatározni. Az alapgondolat az, hogy a kvantálási zaj a 0 – fm/2 hasznos frekvenciasávban egyenletesen terül el.
10
1.3-1. ábra Kvantálási zaj spektruma Most válasszunk magasabb mintavételi frekvenciát (fm2-t)! Az egyes mintáknál a kvantálási hibánk természetesen statisztikailag nem változik, viszont a kvantálási zaj most is a hasznos sávban (0 – fm2/2) fog elterülni, ami most nagyobb sávszélességet jelent [1].
1.3-2. ábra Kvantálási zaj spektruma magasabb (fm2) mintavételi frekvencia esetén Az előző ábrán bejelöltük az első példában szereplő „fm” mintavételi frekvencia értékeket is, valamint az „fm2”-t, amit pont a duplája az „fm”-nek. Tételezzük fel, hogy a digitális mintáink, melyek most 10 vagy 12 bitesek egy 16 bites regiszterben jelennek meg (így van ez a dsPIC33 jelfeldolgozó kontrollereknél is), a nem használt bitek pedig nulla állapotban vannak. Ezen mintákból álló PCM jelsorozatot vezessük rá egy digitális aluláteresztő szűrőre (fm2/4 frekvencia feletti komponenseket szűrjük ki), melynek mintavételi frekvenciája megegyező a túlmintavételező A/D konverter mintavételi frekvenciájával, vagyis fm2vel.
11
Analóg jel
PCM szűrt jel
PCM Analóg Szűrő (fm2/4)
A/D konverter fm2
DSP Szűrő (fm2/4)
1.3-3. ábra Kvantálási zaj csökkentés DSP szűrővel A DSP aluláteresztő szűrő kimenetén a 16 bites aritmetika jóvoltából már 16 bites minták jelennek meg, melyekben az fm2/4 frekvencia feletti komponensek, vagyis a kvantálási zaj magasabb frekvenciás komponensei már csillapítottak lesznek.
1.3-4. ábra Szűrt zajspektrum A megoldásban a szűréshez használhatunk IIR struktúrájú szűrőket, vagy választhatunk hullámdigitális megoldást is. A következőkben egy „Gazsi” LWDF-re vonatkozó megoldást ismertetek. A tervezés a MATLAB® programmal és a WDF toolboxban található függvények felhasználásával történt. Az átviteli függvényt a „hs” változó tárolja, a Hs_cauer_birec függvény első paramétere a szűrő fokszáma, míg a második a zárócsillapítás értéke dB-ben. Mivel úgynevezett „bireciprok” szűrő tervezéséről van szó, a szűrő áteresztő sávja a mintavételi frekvencia negyedénél található, ezért értelemszerűen ezt a paramétert megadni nem kell. hs=Hs_cauer_birec(11,80); Hs2LWDF(hs(1),1,1,'1,2') A szűrő struktúráját a következő ábra szemlélteti:
12
1.3-5. ábra Aluláteresztő (felüláteresztő) bireciprok LWDF A szűrő szorzó együtthatók: γ1 = -0.23020 γ2 = -0.66308 γ3 = -0.06408 γ4 = -0.44367 γ5 = -0.88209 A fenti 11-ed fokú szűrő (a rendszer 11T késleltető tagotból felépülő minimál hálózat) látszólag csak öt konstans szorzót tartalmaz, ami a bireciprok struktúrának köszönhető. A „nem látszó” szorzóegyütthatók valójában 1 értéket jelentő konstansok (egyes adaptorokhoz tartozó reflexiós tényezők nulla értéket vesznek fel). A struktúrában szereplő, másodfokú mindent áteresztő tagok egy párhuzamos kétkapu adaptorral és a hozzá kapcsolódó kettő tároló elemmel alakíthatók ki.
13
1.3-6. ábra Aluláteresztő (felüláteresztő) bireciprok LWDF átvitele A fenti karakterisztika egy alul-, és egy felüláteresztő szűrő karakterisztikáját szemlélteti (sorrendben kék, zöld). A szűrő annak megfelelően működik, hogy mely kimenetét használjuk. A fenti trükkös, zajcsökkentő eljárásnál szem előtt kell tartanunk a következőket:
Az olyan DSP megoldások, melyek visszacsatolásokat tartalmaznak, és a visszacsatoló kör bármely pontján szorzó áramkör van, az kvantálási zaj forrásként jelenik meg;
A túlmintavételezés magasabb számú PCM mintát jelent, mintha csak a szükséges mintavételi frekvenciát választottuk volna, és ez többlet erőforrás igényt támaszt;
Bármilyen digitális jelfeldolgozásnak vetünk alá egy mintasorozatot (jelen esetben aluláteresztő szűrővel szűrjük azt), akkor a hasznos jelünk paraméterei is megváltoznak (áteresztő sávi erősítés/csillapítás ingadozás, fázistorzítások).
Mindezek ismeretében tudunk csak dönteni arról, hogy megéri-e, de ez mindig a konkrét feladattól függ!
14
1.4. Jelfolyamdiagramok a „z” síkon és az időtartományban Ebben a rövid áttekintő fejezetben a jelfolyamdiagramok pontos értelmezését vizsgáljuk az időtartományban és
diszkrét
frekvencia tartományban. A
vizsgálatokat egyszerű
DSP
megoldásokkal végezzük, először egy első fokú differenciáló tag értelmezését végezzük el. A számítást az x(n) és az x(n-1) mintával végezzük, vagyis az időtartományban a következő egyenletet írhatjuk: ( )
( )
(
) {1.4-1}
Ez alapján az időtartományban a jelfolyam diagramunk a következő:
x(n)
y(n) -1
1.4-1. ábra Első fokú differenciátor jelfolyamdiagramja az időtartományban Most határozzuk meg az első fokú differenciáló tagunk jelfolyamdiagramját a „z” síkon. Tudjuk, hogy az időtartományban a „T” késleltetés (a „T” most a mintavételi frekvencia reciproka) a „z” síkon a „z” komplex frekvenciaváltozóval történő osztás, vagy 1/z-vel, vagyis z-1-el történő szorzásnak felel meg. Az összegzés a „z” síkon szintén összegzés marad, valamint a konstans szorzás a „z” síkon szintén konstans szorzás lesz. Mindez a Laplace transzformáció, illetve a Z transzformáció azonosságaiból következik: { ( )
( )}
{ ( )}
{ ( )} {1.4-2}
Az a(t) és a b(t) időfüggvények összegének Z transzformáltja megegyezik az a(t) időfüggvény Z transzformált és a b(t) időfüggvény Z transzformált összegével. {
( )}
{ ( )} {1.4-3}
A „c” konstans számmal megszorzott a(t) időfüggvény Z transzformáltja megegyezik az a(t) időfüggvény Z transzformáltjának „c” szeresével.
15
X(z)
Y(z) -1
-1
Z
1.4-2. ábra Első fokú differenciátor jelfolyamdiagramja a „z” síkon A fenti ábra alapján könnyen felírhatjuk az átviteli függvényt a „z” síkon: ( )
( )
( )
( )
( )
{1.4-4}
( )
A fentiekben egy grafikus diszkrét Laplace transzformálást (Z transzformálást) hajtottunk végre, hiszen az első fokú differenciátor jelfolyam diagramját transzformáltuk a „z” síkra. Természetesen ha ez utóbbi ábrára felírjuk a bemenő mintasorozat Z transzformáltjának, valamint a kimenő mintasorozat Z transzformáltjának hányadosát, akkor a „z” síkon az átviteli függvényt, vagyis H(z)t kapjuk. Most tekintsünk át egy első fokú integrátort! Az időtartományban az integrátort a következő összefüggés írja le: ( )
( )
(
) {1.4-5}
Ez alapján az első fokú integrátor jelfolyamdiagramja az időtartományban:
x(n)
y(n) y(n-1)
1.4-3. ábra Első fokú integrátor jelfolyamdiagramja az időtartományban Most ismét rajzoljuk át az időtartományban létrehozott jelfolyam diagramot a „z” síkra! Természetesen most is a „T” együtemnyi késleltetés z-1 szorzás lesz a „z” síkon, az elágazó csomópont elágazó csomópont, míg az összegző csomópont összegző csomópont marad. 16
x(z) Z-1
y(z)
z-1· y(z)
1.4-4. ábra Első fokú integrátor jelfolyamdiagramja a „z” síkon A bevezető zárásaként az úgynevezett mindentáteresztő („all-pass”) tagokat vizsgáljuk meg. A mindentáteresztő tagok a teljes működési frekvencia tartományban a frekvenciától függetlenül egységnyi erősítést mutatnak, viszont a frekvencia függvényében fázistolást végeznek. A mindentáteresztő tagok pólusai és zérusai konjugált reciprok párok:
1.4-5. ábra Első fokú mindentáteresztő tag pólus-zérus képe (α=0,5) (zérus a -2, pólus pedig a -0,5 helyen van) A fenti pólus-zérus képpel rendelkező mindentáteresztő tag átviteli függvénye a következő: ( ) {1.4-6} ahol a példában α = 0,5 értékű. Most általánosan nézzünk meg egy direkt struktúrájú megvalósítást egy elsőfokú mindentáteresztő tagra. Bővítsük a {1.4-6} összefüggést a
taggal: ( ) {1.4-7} 17
Pici átrendezés után: ( ) {1.4-8} A fenti összefüggésből ráismerhetünk az elsőfokú IIR struktúrára. Az IIR struktúra átviteli függvénye a „z” síkon általánosan (N fokszám esetén) a következő [6]: N
H(z)
dn z
n
n 0 N
1 cn z n n 1
{1.4-9} A {1.4.9} összefüggésben a
az előrecsatoló ág „n”-edik szorókonstansát, míg a
a
visszacsatoló ág „n”-edik szorzó konstans értékét jelenti. Elsőfokú tag esetén N=1, így az előrecsatoló ágban
és
, a visszacsatoló ágban pedig
kap helyet.
Az {1.4-8} és az {1.4-9} összehasonlításával megállapíthatjuk, hogy:
Ennek megfelelően a direkt struktúrával megvalósított mindentáteresztő tag jelfolyam diagramja a „z” síkon:
α
x(z) -α
y(z)
Z-1
1.4-6. ábra Első fokú mindentáteresztő kialakítása elsőfokú IIR struktúrával a „z” síkon Ha a hullámdigitális jelfeldolgozás tervezés módszerét alkalmazzuk, akkor a mindentáteresztő tagok párhuzamos adaptor segítségével valósíthatók meg, ami valójában nem más, mint a Ψ síkon modellezett cirkulátor és egy reaktáns elem, mint áramkör transzformálásának eredménye a „z” síkra [6].
18
-1
a1
b1
a2 Z-1
b2
1.4-7. ábra Első fokú mindentáteresztő kialakítása hullámdigitális struktúrával a „z” síkon A fenti ábrán megadott tag összekötő hálózatrészét a következő összefüggések írják le:
b1 a 2 ( a 2 a1) b 2 a1 ( a 2 a1) {1.4-10} ahol az „ ” a kapun haladó feszültséghullámot, míg „ ” a reflektált feszültséghullámot jelenti. A struktúrában a „γ” a reflexiós tényező, mely a kapuellenállások (R1 és R2) arányából számítható:
R1 R 2 R1 R 2
{1.4-11} Hullámdigitális hídszűrő (LWDF) tervezés esetén (lásd 1.3-5 ábra) közvetlenül az adaptor reflexiós paramétereit kapjuk. Fontos megemlíteni, hogy az 1.4-6 ábrán látható párhuzamos kétkapu adaptornak több lineáris ekvivalense létezik, melyek véges bitszámú, nemlineáris környezetben történő alkalmazáskor – elsősorban fixpontos számábrázolás esetén van jelentősége – más-más tulajdonságokat mutatnak. Tervezéskor szempont lehet, hogy az adott DSP algoritmus viszonylag kis bitszámon is jó kivezérelhetőséggel, jó dinamikatartománnyal rendelkezzen. E cél elérése érdekében a mindentáteresztő tagok hullámdigitális adaptor struktúráit úgy szoktuk cserélgetni, hogy a szorzótényezők +0,5 érték közeliek (lehetőleg ez alattiak) legyenek. Ezt a tervezési módszert „skálázásnak” nevezzük. Másodfokú mindentáteresztő tag átviteli függvénye általánosan: ( ) {1.4-12}
19
1.4-8. ábra Másodfokú mindentáteresztő tag pólus-zérus képe (α1=0,25; α2=0,5) A fenti ábrán két pólus látható (x-szel), és 2 zérus (o-val), amik egymás konjugáltjai.
Remélem, hogy ez a rövid, áttekintésnek szánt „Bevezető” segített a kedves Olvasónak az egyes korábban tanultak rendszerezésében, és most bátran nekiláthatunk néhány DSP algoritmus vizsgálatának.
20
2. Csatornakiegyenlítők A Híradástechnikában számos alkalmazásnál előfordulnak lineáris torzítások, melyek kiigazítása, kompenzálása szükséges. Egy tipikus kijavítást igénylő torzítás a frekvencia függvényében változó erősítés (csillapítás) torzítás. Ez a torzítás forma a hangtechnikai láncoknál, a hangfrekvenciás tartományban működő rendszereknél, de a nagyfrekvenciás adatátviteli megoldásoknál is ugyanúgy előfordul. Ugyanazon jellegű probléma más-más megoldást igényel. A hangfrekvenciás rendszerek frekvenciamenet kiegyenlítésénél a fázis problémákat gyakran elhanyagoljuk, a frekvenciamenet kiegyenlítés során vétett fázishibákat „bocsánatos bűnnek” vesszük. Ennek oka az, hogy bizonyos hibákat az emberi fül nem, vagy csak kis mértékben érzékel. A digitális modulációk (például PSK, QAM) esetén a demodulátor fokozat már nem ilyen „elnéző”. Az átviteli csatorna frekvenciamenet kiegyenlítése során ha fázishibát okozunk, akkor a demodulátor „félreérti” a vett szimbólumot, és úgynevezett szimbólumok közti áthallás (ISI) jön létre, ami bithibát jelent az átviteli láncban. Emiatt a digitális modulációkkal előállított szimbólumokat szállító csatorna kiegyenlítése esetén a fázistorzítási paramétereket is figyelembe kell vennünk. Ebben a fejezetben két kiegyenlítésre alkalmas algoritmust vizsgálunk. Az első egy háromsávos hangtechnikai lánc hangszínszabályozó, míg a másik egy digitális QAM átviteli lánc csatornakiegyenlítő áramköre.
2.1. Hangfrekvenciás hangszínszabályozó Hangtechnikai
rendszerek
frekvenciamenetének
esetén
gyakran
megváltoztatása,aminek
igényként számos
merül oka
fel
lehet.
a
hangtechnikai
Elképzelhető,
lánc
hogy
a
hangtechnikai lánc egyes elemeinek problémáit kívánjuk eliminálni, vagy a teremakusztikai adottságok miatt kényszerülünk erre. Gyakorlati ok lehet az emberi fül hangerő függő érzékenysége is. Amikor a hangszínszabályozás az emberi hallás érzethez igazítja a rendszer működését, fiziológiai hangszínszabályozásról beszélünk. A hangszínszabályozó elvi felépítése egyszerű. A hangfrekvenciás sávot sáv áteresztő szűrőkkel fel kell bontani, majd az egyes sávok erősítését frekvencia független erősítő tagokkal, szorzó tagokkal kell beállítani.
21
G1
x(n) G2
y(n)
G3
2.1-1. ábra Hangszínszabályozó blokksémája A szűrők kialakítása több féle lehet. Egyszerű direkt IIR struktúrával, de akár hullámdigitális struktúrával is megvalósíthatók a sáváteresztő tagok. A szűrőkövetelmények definiálásánál figyelembe kell venni a szomszédos szűrők átmeneti sávjaira kialakított jellemzőket. Itt elvárás lehet az is, ha minden blokk frekvencia független erősítését ugyan azon paraméterre állítjuk, akkor az eredő erősítés a frekvencia függvényében ne ingadozzon egy megadott értéknél (például 1dB-nél) jobban a teljes frekvenciasávban. Az algoritmus példánkban egy egyszerű háromsávos hangszínszabályozó szerepel, mely a hangfrekvenciás sávot három hasznos sávra bontja, „mély”, „közép” és „magas”-ra. Válasszuk például a keresztezési frekvenciáknak a 700Hz és a 4kHz frekvenciát! Az aluláteresztő szűrőt, ami 0 Hz – 700 Hz sávban ereszt át egy harmadfokú hullámdigitális struktúrával alakítottuk ki. A példaalgoritmusok Matlab® WDF toolbox [10] segítségével készültek.
2.1-2. ábra Aluláteresztő (700 Hz) LWDF struktúra
22
A szűrő ágaiban elhelyezkedő mindentáteresztő tagok párhuzamos kétkapu adaptorokkal és a hozzá kapcsolódó késleltető elemekkel valósíthatók meg. Az egyes reflexiós paraméterek a következők: γ1 = 0,93776 γ2 = -0,96835 γ3 = 0,99487 A híd struktúra kettő kimenettel rendelkezik (rendelkezhet), így ennek megfelelően egy alul- és egy felüláteresztő szűrő karakterisztikát kapunk, természetesen jelen esetben az aluláteresztő kimenetet kell használnunk.
2.1-3. ábra Aluláteresztő LWDF átviteli függvény (kék) A fenti ábrán a frekvenciaértékek a mintavételi frekvenciához relatívak. A 700 Hz áteresztő sávi felső határ 44100 Hz mintavételi frekvencia esetén igaz. Más mintavételi frekvencia alkalmazása esetén a szűrőt át kell tervezni, szerencsés esetben elegendő a szűrőkonstansok (jelen esetben a három reflexiós tényező) újraszámítása. A sáváteresztő szűrő 700 Hz – 4000 Hz tartományban enged át, természetesen most is a 44100Hz mintavételi frekvenciát vettük alapul. A struktúra most egy hatodfokú szűrővel kialakított LWDF, melyben a mindentáteresztő tagok realizálása szintén párhuzamos kétkapu adaptorokkal történhet.
23
2.1-4. ábra Sáváteresztő (700-4000 Hz) LWDF struktúra Az egyes refelxiós tényezők értékei a sáváteresztő szűrő esetén: γ1 = -0,74577 γ2 = 0,97159 γ3 = -0,88902 γ4 = 0,85105 γ5 = -0,97808 γ6 = 0,99472
24
2.1-5. ábra Sáváteresztő (700-4000 Hz) LWDF átviteli függvény (kék) A „magas hangok” áteresztésére felüláteresztő szűrőt alkalmaztunk a példában, ami most egy harmadfokú LWDF:
2.1-6. ábra Felüláteresztő LWDF struktúra A felüláteresztő LWDF reflexiós paraméterei a következők: γ1 = 0,37443 γ2 = -0,84403 γ3 = 0,84658 A szűrő átviteli jellemzőit a következő ábra szemlélteti, ahol a frekvenciaértékek szintén a 44100Hz mintavételi frekvenciához viszonyítottak.
25
2.1-7. ábra Felüláteresztő (4000 Hz) LWDF átviteli függvény (zöld)
26
2.2. Adatátviteli csatorna kiegyenlítő Az adatátviteli csatornák (például hozzáférési hálózatok átviteli közegei) frekvenciafüggő csillapítás torzítása különböző lehet. Ez függ az adott fizikai közeg minőségétől, a kábel hosszától, esetleg a vonalszakaszba beépített erősítő tulajdonságaitól. Abban az esetben, ha egy frekvenciafüggő csillapítás torzítású csatornán szeretnénk nagy adatátviteli sebességet kialakítani többszintű modulációs eljárással, akkor az ilyen torzítások kompenzálása feltétlenül szükséges. Napjainkban teljesen természetes, hogy nagy szimbólumszámú QAM-et alkalmazunk, például kábelmodemes internet hozzáférésnél EDS3.0 rendszerekben 256 állapot, de EDS3.1 esetén a szimbólumszám maximum 16384-nek definiált. A nagy szimbólumszám azt jelenti, hogy a szimbólumok egymáshoz „közel” helyezkednek el, így a demodulálásnál könnyen félreérthetők a vett szimbólumok, és úgynevezett szimbólumok közti áthallás (ISI – Inter Symbol Interference) jön létre, ami bithibát eredményez.
2.2-1. ábra Átviteli csatorna (amplitúdó és fázis) torzítás hatása a QAM szimbólumra A fenti ábrán jól látszik, hogy a csatorna fázis- és amplitúdó torzítása miként hat a szimbólumra. A fázistorzítás hatására a szimbólum az ábrán piros nyíllal jelzett irányokba mozdul el, míg az átviteli közeg amplitúdó torzítás hatását a kék nyíl szemlélteti. Mindkét torzító hatás az egyes szimbólumokat a szomszédos szimbólumok irányába mozdítja el, így az a helyes detektálást veszélyezteti. A gyakorlatban például egy 8 MHz sávszélességű átviteli csatorna (kábelhálózaton egy TV csatorna) sávon belül néhány dB-es amplitúdó torzítás is bithibát okozhat, amit feltétlenül kompenzálni kell. A kompenzálás során könnyű fázishibát ejteni, amit a fenti ábrából láttuk, hogy szintén nem megengedett, ezért kizárólag lineáris fázismenetű megoldást választhatunk. Ezt a feltételt a FIR struktúrájú szűrők elégítik ki.
27
d0
Xin(z) Z-1
d1
Z-1
d2
Z-1
Yout(z)
dN
2.2-2. ábra „N”-ed fokú FIR struktúra a „z” síkon A FIR szűrő átviteli függvényét a „z” síkon a következő összefüggés adja: N
H(z)
dn z
n
n 0
1
{2.2-1} Mivel a {2.2-1} összefüggés nevezője „z” komplex változótól független konstans, ezért az átviteli függvénynek nincs pólusa. Ez a tény jó hatással van a stabilitásra, hiszen a struktúrában nincs visszacsatolás, ezért a FIR struktúra mindig stabil. Ezt a jellemzőt szokás „struktúrájában stabil”nak nevezni. Az időtartományban a FIR struktúra a konvolúció műveletét végzi el, a bejövő mintát és a korábban beérkezett mintákat (melyek a tároló elemekben találhatóak) a szorzó tényezőknek megfelelő súlyozással a kimenetre vezeti. ( )
∑ (
) {2.2-2}
A DOCSIS 3.0 és 3.1 ajánlás az adás irányba 24-ed fokú FIR szűrőt helyez. A szűrő konstansokat a kábelmodem (CM) és a központ oldali végződés (CMTS) közti mérési eredményből számítják [9]. A FIR szűrő konstansai az amplitúdó korrektor áramkör súlyfüggvény mintáival fog megegyezni.
28
A CMTS a szűrő konstansok számítását a MER (Modulation Error Ratio) érték alapján optimalizálja, ahol az MER: [
]
[
∑
] {2.2-3}
- konstellációs szimbólumok energia átlaga; - Átlagoláshoz felhasznált szimbólumok száma; - hiba (error) vektor, ami a vett szimbólum és az ideális szimbólum pozíció közti eltérést írja le.
2.2-3. ábra Az
hiba vektor meghatározása
29
3. Jelfelismerés Egy digitális jelfolyamban megjelenő jel felismerése, detekciója a Híradástechnika számos területén lehet feladat. A jelek detektálását korábban analóg áramkörökkel is megvalósították, például analóg szűrőkkel és komparátorokkal vagy fáziszárt hurkokkal. A telekommunikációban gyakorlati problémaként jelentkezik egy-egy jelzőhang (telefonos tárcsahang, foglaltsági hang vagy csengetés visszhang) felismerése, valamint a DTMF jelek dekódolása. Szóba kerülhet még egy segédvivő meglétének ellenőrzése, stb. A mostani példánkban egy olyan algoritmust vizsgálunk, mely egy adott jelfolyamban, digitális szűrőalgoritmusra alapuló eljárással detektálni képes egy f1 – f2 frekvenciatartományban elhelyezkedő jelet. Az algoritmusban sáváteresztő szűrést, jel energia számításokat és összehasonlításokat, komparálási feladatokat látunk el. A jeldetekciót hiszterézises döntési mechanizmussal egészítjük ki, így növelhetjük a detekció stabilitását, csökkenthetjük a pergési („prellezési”) és billegési jelenségeket. reset -1 Teljesítmény átlag x(n)
f1-f2 Küszöb komparátor & Delay
Teljesítmény átlag
1/0 kimenet
Küszöb komparátor
3-1. ábra Jeldetektálás f1-f2 frekvenciatartományban A példában készítsünk egy olyan szűrőt, amely 8 kHz mintavételi frekvencia esetén az f1 = 1000Hz, f2 = 1200Hz sávba eső harmonikus komponenseket ereszti át. A megoldáshoz most is LWDF megoldást választunk, segítségül a MATLAB® WDF toolbox [10] szolgált.
30
3-2. ábra Az f1-f2 frekvenciatartományban sáváteresztő LWDF A reflexiós tényezők: γ1 = -0.92973 γ2 = 0.65323 γ3 = -0.96272 γ4 = 0.59562 γ5 = -0.96963 γ6 = 0.70171 A tervezett szűrő átviteli karakterisztikája:
3-3. ábra Az f1-f2 frekvenciatartományban sáváteresztő LWDF átvitele (kék) 31
Skálázott szűrő jelfolyamdiagramja:
a212
-1
-1
-1
x(n)
a111
-1
-1 y(n)
1/2
-1
-1 -1
-1
a515
-1
-1
a313
-1
-1
a616
-1
-1
a414
3-4. ábra Az f1-f2 frekvenciatartományban sáváteresztő LWDF teljes, skálázott jelfolyamdiagramja
32
A teljesítmény átlag számítások láncba kapcsolt hálózatelméleti tárolókkal valósíthatók meg. A struktúra kísértetiesen emlékeztet a FIR struktúrára, de a bemenetre, x(n), a négyzetre emelt mintasorozatot fogadjuk és „N” mintanégyzet átlagát kalkuláljuk.
x(n)
1/N
y(n)
1/N
1/N
1/N
3-5. ábra Teljesítmény átlag számítás algoritmusa A fenti algoritmusban az összegző csomópont előtt szerepelnek az 1/N konstans együtthatójú szorzók. Természetesen ezek a szorzások egy lépésben, az összegző csomópont kimenetén elvégezhetők, és így az „N” darab szorzás helyett csak egy szorzásműveletet kell elvégeznünk. A véges bitszámon történő számábrázolás miatt ekkor figyelembe kell venni a túlcsordulás veszélyét. A jelfelismerő algoritmusban egy „N” méretű csúszó ablakban jel teljesítmény átlag számítást végzünk. Ezt megtesszük a sáváteresztett spektrum tartományában (sáváteresztő szűrőből kimenő minta négyzetekből) és ugyanakkor teljesítmény átlagot számítunk a teljes, szűretlen jelre is. A két átlag összehasonlításának segítségével dönthetjük el, hogy a keresett spektrumban kellő jelenergia van-e jelen vagy sem. Érvényes jel detektálásának megszűnésekor (amikor a szűrt jelből számított jelenergia a teljes jelenergiához viszonyítottan egy megadott szint alá csökken) az összehasonlító algoritmusunkkal lehetőség adódik egy „reset” jel generálására, ami a teljesítmény átlag számító algoritmus tárolóinak azonnali törlését triggereli. Ezzel a megoldással „behúzási” késleltetést, valójában egy hiszterézises működést alakíthatunk ki. A komparálási szintek, valamint az átlagolás darabszáma („N”) az adott alkalmazástól és hardver környezettől függ.
33
Az ismertetett egyszerű algoritmus természetesen egy meghatározott bemenő jelszint felett működik helyesen. Üres csatorna esetén az algoritmust tiltani kell. A tiltó jelet a szűretlen ágból származó teljesítmény átlag értékéből származtathatjuk.
34
4. DC tartalom eltávolítás A mérnöki áramkör tervezés során gyakori feladat egy jelről az egyen tartalom (DC) eltávolítás. Analóg rendszereknél ezt egyszerűen egy csatoló kondenzátorral szoktuk megvalósítani. A kondenzátor kapacitás méretezése általában úgy történik, hogy a lezáró ellenállások (generátor belső ellenállás és terhelés) értékéhez méretezzük egy adott alsó határfrekvenciára a kapacitást. C
Rg
AC Rl
4-1. ábra Csatoló kondenzátoros DC leválasztó Ami alapelv az analóg áramkör tervezésben bevált, azt alkalmazzuk a digitális jelfeldolgozó áramköreinkben is!
4.1. DC leválasztás hullámdigitális tervezési módszerrel Abban az esetben, ha analóg áramköri tervezésből indulunk ki, akkor célszerűen a hullámdigitális jelfeldolgozás tervezési módszerét vesszük elő, és a Ψ referencia síkon megtervezett analóg áramköri modellt transzformáljuk át a „z” síkra. C Rg
AC
R2 γ2 R1
R3
γ1
γ3
Rl
4.1-1. ábra DC leválasztó referencia modell a Ψ síkon A lezáró tagokat most egységnyinek választjuk, de természetesen az adott feladat dönti majd el ezeket az értékeket. Az alsó határfrekvencia figyelembevételével kell megválasztanunk a kondenzátor értékét. A Ψ referencia síkot célszerű, fizikai dimenzió mentes síknak kezelni, így az ellenállás és a kondenzátor értékek dimenziómentes viszonyszámok lesznek. Ekkor az egyes kapuellenállásokat a következő értékeknek célszerű választani: 35
R1 = Rg R2 = 1/C R3 = Rl A feszültséghullámokkal történő leírást követően a struktúrát transzformáljuk a „z” síkra a bilineáris transzformáció segítségével, melynek fizikai dimenziótlan Ψ referencia sík esetén következő az alakja:
{4.1-1} Az egyes kapukon a beeső „a” és a reflektált „b” feszültséghullámok alakja a következő:
{4.1-2} Mindezek alapján írjuk fel a „C” kondenzátorra jutó feszültség és a rajta átfolyó áram kapcsolatát! A feszültség a függvényében: U ( ) I( )
1 C
{4.1-3} Fejezzük ki az A() haladó, és a B() reflektált hullámokból {4.1-2} az U() és az I() függvényeket!
U ( )
A() B() 2
I( )
A() B() 2R
{4.1-4} Helyettesítsük be a {4.1-3} összefüggésbe a {4.1-4} szerinti egyenleteket, így a síkon megkapjuk a „C” építőelem hullámleírását. A() B() A() B() 1 2 2R C
{4.1-5} Az egyszerűsítéseket követően fejezzük ki a reflektált hullámot: B() A()
1 R C 1 R C
{4.1-6} 36
Használjuk ki a dimenzió mentesség előnyeit és az R kapuellenállásnak válaszunk 1/C értéket! A síkon a reflektált hullám tehát: B() A()
1 1
{4.1-7} Az eredményt a bilineáris transzformáció {4.1-1} segítségével transzformáljuk át a „z” síkra! Ez alapján a reflektált hullám:
B(z) A(z) z 1 {4.1-8} egyenlőséget kapjuk, ami azt jelenti, hogy a beeső A(z) feszültség hullám hatására a B(z) reflektált hullám nem lesz más, mint a beeső hullám egy ütemnyi késleltetése.
4.1-2. ábra A kondenzátor, mint egykapu építőelem a „z” síkon az R=1/C feltétel mellett Az összekapcsolást háromkapu soros adaptor biztosítja, mely kapuellenállásaiból (R1, R2 és R3) határozhatók meg a kapukhoz tartozó γ reflexiós tényezők:
2 R1 R1 R2 R3 2 R2 2 R1 R2 R3 2 R3 3 R1 R2 R3 1
{4.1-9} Háromkapus, soros összekapcsoló hálózatrész (adaptor) esetén az egyes kapukon a reflektált hullámot a következő három egyenlet írja le:
B1 A1 1 ( A1 A2 A3) B2 A2 2 ( A1 A2 A3) B3 A3 3 ( A1 A2 A3) {4.1-10} A fentiek alapján a „z” síkon megrajzolhatjuk a transzformált struktúrát, vagyis a DSP jelfolyam diagramot:
37
Z-1 a2
b2
a3
a1 γ2 γ1
γ3
b1
b3
4.1-3. ábra DC leválasztó DSP jelfolyam diagram a „z” síkon A {4.1-10} összefüggések alapján a soros háromkapu adaptor jelfolyamdiagramja megrajzolható. A reflexiós tényezők összefüggése alapján [6], miszerint az összes reflexiós tényező összege mindig 2-vel egyenlő, alárendelt kapu választására ad lehetőséget, vagyis az egyik szorzótényező a {4.110} egyenletrendszerből kihelyettesíthető [6].
1 2 3 2 {4.1-11} A {4.1-11} alapján:
2 1 2 3 {4.1-12} A {4.1-12}-et helyettesítsük vissza a {4.1-10} egyenletekbe!
b1 a1 1 (a1 a 2 a3) b2 a 2 2 (a1 a 2 a3) b3 a3 (2 1 2) (a1 a 2 a3) {4.1-13} Természetesen az első kettő egyenlet változatlan maradt, de a harmadik kapu (most ezt választottuk alárendelt kapunak) reflektált hullámát számoló összefüggésből a 3 eltűnt. A harmadik kapu reflektált hullámát (a {4.1-10} egyenletrendszer utolsó egyenlete) természetesen tovább rendezhetjük: b3 a 3 (2 1 2) (a1 a 2 a 3) a 3 2 a1 2 a 2 2 a 3 1 (a1 a 2 a 3) 2 (a1 a 2 a 3) 2 a1 2 a 2 a 3 1 (a1 a 2 a 3) 2(a1 a 2 a 3)
{4.1-14}
38
A {4.1-14} összefüggésben fellelhető 1 (a1 a2 a3) , valamint a 2 (a1 a2 a3) tagot fejezzük ki a {4.1-13} egyenletrendszer első kettő egyenletének segítségével:
a1 b1 1 (a1 a 2 a3) a 2 b2 2 (a1 a 2 a3) {4.1-15} Helyettesítsük vissza a {4.1-14} kifejezésbe a {4.1-15} összefüggéseit, így b3-ra a következő összefüggést kapjuk: b3 a1 a 2 a3 b1 b2
{4.1-16} A {4.1-15} egyenletrendszer első kettő egyenlete, valamint a {4.1-16} egyenlet segítségével könnyen megrajzolhatjuk a soros háromkapu adaptor jelfolyam diagramját. Ne felejtsük el, hogy ez a három egyenlet együttesen írja le a vizsgált összekötő hálózatrészt.
4.1-4. ábra Soros háromkapu adaptor A kondenzátor építőelem, és a háromkapu összekapcsoló hálózatrész struktúrájának ismeretében egyszerűen felrajzolhatjuk a DC leválasztó fokozat jelfolyamdiagramját. A jelfolyamdiagramot az időtartományban fogjuk elkészíteni, vagyis gondolatban egy inverz Z transzformációt is elvégzünk. A „z” síkon a z-1-el történő szorzás együtemnyi „T” késleltetés, míg az összekapcsoló hálózatrész jelfolyam diagramja frekvencia független, ezért struktúrájában változatlan marad. A konstans szorzók, konstans szorzók maradnak, az összegző csomópontok továbbra is összegző csomópontok lesznek.
39
x(n) -γ1
-γ2
-1
y(n)
4.1-5. ábra DC leválasztás jelfolyam diagramja az időtartományban Az áramkör bemenetét az egyes kapu haladó hullám bemenete jelenti, amit az ábrán most x(n) bemenő mintasorozat gerjeszt, a kimenet pedig a hármas adaptor kapu reflektált hullám kimenete, melyen az y(n) mintasorozat távozik. Mivel szükségtelen volt a bemeneti kapun a reflektált hullám kiszámítása (b1), ezért azt az ábrán nem tüntettük fel. Ez az egyszerűsítés további jelfolyam diagram egyszerűsítési lehetőséget ad, de mindezt már a kedves Olvasóra bízom. Nem szabad elfelejtenünk azonban, hogy az egymással lineárisan ekvivalens jelfolyamdiagramok a véges számábrázolásból adódó nemlineáris környezetben másképp fognak viselkedni!
40
4.2. DC leválasztás direkt tervezési módszerrel Természetesen a digitális mintasorozatból a DC tartalom direkt struktúrával is eltávolítható. A lehető legegyszerűbb megoldás, ha az előzőleg (első fejezet) ismertetett differenciátor alap struktúrát választjuk: ( )
( )
( )
( ) ( )
( )
{4.2-1}
X(z)
Y(z) -1
Z
-1
4.2-1. ábra Első fokú differenciátor a „z” síkon, mint DC leválasztó A bemenetre érkező jel (x(n) mintasorozat Z transzformáltja X(z)) még tartalmazhat egyenkomponenst, de az Y(z) már egyenkomponens mentes lesz. Az előző jelfolyamdiagram időtartomány analízise Matlab® környezetben az alábbi: N=2000; x=zeros(N,1); x(1)=1; y=zeros(N,1); y2=zeros(N,1); for n=1:N-1 y(n)=x(n)-y2(n); y2(n+1)=x(n); end A rendszer impulzus válasza:
41
4.2-2. ábra Első fokú DC leválasztó impulzus válasza A rendszer átviteli függvénye:
4.2-3. ábra Első fokú DC leválasztó átviteli függvénye Az első fokú DC leválasztó átviteli függvényéből látható, hogy ugyan a DC tartalmat szépen eltávolítja, de a spektrum alsóbb komponenseit is jelentősen csillapítja. Ha ez a csillapítás gondot okoz, akkor az átvitelt kompenzálni kell egy integráló taggal. A megoldást „leaky integrator” megoldásnak szokták nevezni, melynek az átviteli függvénye a következő: ( )
( ) ( ) {4.2-2}
Melyből következik:
42
( )
( ) {4.2-3}
Ebből felrajzolhatjuk a jelfolyamdiagramot a „z” síkon.
x(z)
y(z)
Z-1
α
z-1· y(z) 4.2-4. ábra Kompenzáló integrátor a DC leválasztóhoz A kompenzált DC leválasztó teljes átviteli függvénye a „z” síkon a következő: ( )
( ) ( ) {4.2-4}
A zérus a z=1 helyen, míg az áramkör pólusa a
helyen található, mely könnyen belátható, ha
-vel bővítjük a {4.2-4} összefüggést. A direkt struktúrájú DC leválasztó megvalósítására több, lineárisan ekvivalens kialakítás létezik. Természetesen, helyes megoldást kapunk, ha kaszkádosítjuk a 4.2-1. és 4.2-4. ábrák jelfolyam diagramjait, de nem feltétlenül ez adja az optimális struktúrát. A következő ábrán egy lehetséges, direkt struktúrájú megoldást láthatunk:
y(z)
x(z) -α
Z-1 -1
4.2-5. ábra DC leválasztó jelfolyamdiagramja Különböző
konstansok esetén az átviteli függvény különböző módon alakul:
43
4.2-6. ábra Kompenzált DC leválasztó Bode diagramja különböző α paraméterekkel Az α paraméter minél inkább közelíti az egységsugarú kört a „z” síkon, a DC leválasztás annál hatékonyabbá válik, viszont így a stabilitás határát közelítjük. A stabilitási határ megközelíthetősége az adott hardveres megvalósítástól, vagyis a számábrázolási pontosságtól függ, ugyanis, ha a számábrázolásból eredő pontatlanság, jelen esetben a szorzást követő kvantálási hiba a pólust rátolja, vagy túltolja az egységsugarú körön, akkor a DSP algoritmus begerjed, instabillá válik.
44
5. Automatikus erősítés szabályozás (AGC) Az automatikus erősítés szabályozás (AGC) funkció számos híradástechnikai berendezésben alkalmazott eljárás. Korábban ezt a funkciót analóg áramkörökkel valósították meg, digitális jelfeldolgozást tartalmazó eszközökben viszont célszerű ezt szintén digitálisan realizálni. A cél az, hogy különböző, esetleg ingadozó jelszintű jelből viszonylag konstans szintű jel álljon elő. Ezt egy adaptívan, a bemenő jelszinttől függő erősítés változtatással érhetjük el. A jelet reprezentáló bemenő mintasorozat konstanssal történő szorzása frekvencia független erősítést jelent, az ábrán „G”-vel jelölt szorzó számértéket kell meghatároznunk és bizonyos határok között változtatnunk. A jelszint megfigyelését két ponton végezhetjük, vizsgálhatjuk az AGC áramkör bementén a jelszintet, és ez alapján kalkulálhatjuk a „G”-t, de a kimeneti jelszintet is vizsgálhatjuk, és az aktuális kimenő jelszint és az elvárt kimenő jelszint különbségéből számolhatjuk a szükséges „G” erősítési tényezőt. x(n)
y(n)
G
5-1. ábra AGC kialakítás frekvencia független szorzóval Most vizsgáljunk meg egy konkrét, kimenő jelszintet mérő megoldást! x(n)
y(n)
Referencia
G α y4(n)
-1
y1(n)
y2(n)
5-2. ábra AGC kialakítás a kimenő jelszint detekcióval A fenti jelfolyam diagram y(n) mintasorozatának jelenergiáját az egyes minták négyzetre emelésével tudjuk számítani. Az így kapott négyzetre emelt mintasorozat elemei arányosak lesznek a jelszinttel. Ezt a csomópontot az ábrán y1(n)-nek jelöltük, és az elvárt kimenő szinttel arányos „Referencia” értékkel hasonlítjuk össze. A kapott differencia jelet y2(n)-nek tüntettük fel. Az y2(n) mintákat egy konstans „α” paraméterrel szorozzuk, mely paraméter az AGC áramkör beavatkozó
45
képességét fogja jelenteni. A jelfolyamdiagramban y4(n)-nek jelölt mintasorozat fogja képezni a beavatkozáshoz szükséges erősítést. A fenti AGC algoritmus Matlab® szimulációját a következő „m” forráskóddal tudjuk vizsgálni: clear all; N=10000; %vizsgált mintaszám R=1; %referencia érték a=0.1; %AGC paraméter %gerjesztő jel definiálása x=zeros(N+1,1); for m=1:N/4 x(m)=0.1*sin(m/10); end for m=N/4:N/2 x(m)=0.8*sin(m/10); end for m=N/2:N x(m)=0.5*sin(m/10); end plot(x); grid;ylabel('amlitudó');xlabel('mintaszám'); %szimuláció csomóponti vektorok előállítása y1=zeros(N+1,1); y2=zeros(N+1,1); y3=zeros(N+1,1); y4=zeros(N+1,1); %szimuláció for n=1:N y(n)=y4(n)*x(n); y1(n)=y(n)*y(n); y2(n)=R-y1(n); y3(n)=a*y2(n); y4(n+1)=y4(n)+y3(n); end figure; plot(y); grid;ylabel('amlitudó');xlabel('mintaszám'); Az „m” forrásfájl Matlab® környezetben futtatásakor áll elő az „x” vektor, mely a gerjesztő jel mintáit tartalmazza.
46
5-3. ábra AGC vizsgálata az időtartományban (gerjesztő jel) A Matlab® forráskódban a gerjesztő jelet az N+1 elemű „x” vektorban hoztuk létre 0,1; 0,8; illetve 0,5 amplitúdójú harmonikus jel mintákból.
5-4. ábra AGC vizsgálata az időtartományban (kimenő jel) A kimenő jel amplitúdója közel állandónak mondható, annak ellenére, hogy jelentős amplitúdóváltozás volt a bemeneten. A bekapcsoláskor megfigyelhető, hogy az erősítés folyamatosan növekszik, míg el nem éri a kimenő jel a kívánt értéket. Érdemes megfigyelni a 2500. mintánál a tranzienst, ami akkor következik be, amikor a kis bemenő jelszintű jel amplitúdója a 47
nyolcszorosára növekszik. A nagy erősítésen álló áramkör kimenetén hatalmas tranziens impulzus jelenik meg (-11 értékű minta), ami fixpontos számábrázolási környezetben bizonyára túlcsordulást eredményez. Ez okból a túlcsordulás kezelés az AGC algoritmusban feltétlenül szükséges.
48
6. Szűrőkarakterisztika trükkös javítása Sokszor egy hatékony DSP szűrő megtervezése és annak hatékony leprogramozása sok időbe telik, annak ellenére, hogy munkánkat számos tervező program támogatja. Gondosan kialakított, jó dinamikatartományú, hatékony, hardver környezetben működő algoritmust a túlvezérelhetőségre és a granuláris nemlinearitásra (kvantálási zaj keletkezésre) is tesztelni és optimalizálni kell. Ha már egyszer van egy jól működő algoritmusunk, azt szeretnénk, ha több alkalmazásban is felhasználhatnánk, munkánkat újrahasznosíthatnánk. Szerencsés esetben a követelményeket kielégíti a már korábban realizált algoritmusunk, de ha például most nagyobb zárósávi csillapítás az előírás, mint amit a meglévő algoritmusunk tud, akkor azt a meglévő szűrőnk kaszkádosításával érhetjük el. A kaszkádosítással elért zárósávi csillapítás duplázás hatékony módszer, hiszen a „z” síkon a meglévő szűrőnk H(z) átviteli függvényei összeszorzódnak, vagyis az eredő átviteli függvény H(z)*H(z) vagyis
( ) lesz.
Kiindulási példának vegyünk egy FIR szűrőt, mely az áteresztő sávban 1dB ingadozást, míg a zárósávban 25dB csillapítást valósít meg1:
6-1. ábra Kiinduló átviteli függvény A szűrő szorzó konstansai, melyek egyben az impulzus válasz mintái is
1
:
Matlab® „filtdemo” grafikus interfészén tervezett FIR szűrő
49
-0.0394; 0.0034; 0.0293; -0.0173; -0.0365; 0.0402; 0.0441; -0.0916; -0.0479; 0.3127; 0.5503; 0.3127; -0.0479; -0.0916; 0.0441; 0.0402; -0.0365; -0.0173; 0.0293; 0.0034; -0.0394; Most nézzük meg. hogy viselkedik ez a szűrő, ha két egyforma blokkot kaszkádba kapcsolunk:
6-2. ábra Eredő átviteli függvény a kaszkádosítást követően A fenti ábrán látható kaszkádosítással a záró sávi csillapítás megduplázódott, a 25dB-es zárósávi csillapítás H(z)-nél most 50dB zárósávi csillapítást fog jelenteni, vagyis a célunkat látszólag elértük. Abban az esetben, ha szerencsénk van, akkor az új, eredő átviteli függvény tényleg kielégíti az elvárásokat, de most vizsgáljuk meg, hogy mi történt az áteresztő sávval!
6-3. ábra Áteresztő sávi csillapítás ingadozás a kaszkádosítást megelőzően
50
6-4. ábra Áteresztő sávi csillapítás ingadozás a kaszkádosítást követően Ha a meglévő algoritmusunk az áteresztő sávban 1dB csillapítás ingadozást mutatott, akkor a kaszkádosítást követően ez az ingadozás is pont a duplája lesz, vagyis 2dB! Ez a megduplázódott áteresztő sávi csillapítás ingadozás a hasznos, áteresztett jelben okoz amplitúdó torzítást a frekvencia függvényében. Sok esetben ez nem elfogadható. Ennek ellenére nem kell eldobnunk a jól működő szűrőnket, hanem az analóg szűrőtervezésből vehetünk elő egy régi trükköt, ami segíthet rajtunk [5].A trükk neve „Filter sharpening”.Az eljárást az előző FIR példával fogjuk megvizsgálni. Jelenítsük meg a
( ) -et a H(z) függvényében, valamint a H(z)-t a H(z) függvényében! Ez utóbbi
természetesen egy 45 fokos iránytangensű egyenes lesz, de viszonyításképp jól mutatja
( )
alakulását.
51
6-5. ábra H(z) és H(z)2 ábrázolása a H(z) függvényében A fenti ábrán jól látható a kaszkádosított
( ) zárósávi jótékony viselkedése, és ugyanakkor jól
látszik a nem előnyös viselkedés is az áteresztő sávban, hiszen itt is megnövekedett a csillapítás érték, illetve duplázódott az ingadozás mértéke. Ez utóbbit kellene kiküszöbölni! Mindez megoldható lenne egy „S” alakú átviteli függvénnyel, mely megtartja jótékony viselkedését a záró sávban, és kellemesebb viselkedést mutat az áteresztő sávban is.
6-6. ábra „S” alakú eredő átviteli függvény keresés
52
A
( )-t természetesen most is a H(z)-ből szeretnénk kialakítani és a megoldást egy harmadfokú
H(z)-ből képzett függvény képében keressük: ( )
( )
( )
( ) {6.-1}
Az előző ábrán jól látható, hogy ahol H(z)=0-val, ott elvárásunk, hogy egyenlő, valamint ahol H(z)=1-el, ott
( ) is nullával legyen
( ) szintén az egy értéket vegye fel!
A megfogalmazott elvárásokból következnek:
{6.-2} Vagyis a keresett
( ) kifejezésben
értéket veszi fel.
{6.-3} A
figyelembevételével kapjuk:
{6.-4} Az eredmény eléréséhez további elvárásokat kell megfogalmaznunk A
( ) –vel kapcsolatban!
( ) iránytangense a nulla és az egy helyen legyen nulla, vagyis, ha a
( )-hez érintőt
kívánunk húzni a nulla és az egy helyen, akkor ezen érintők vízszintes vonalak (0 meredekségűek) legyenek. Ehhez képezzük a
( ) függvény H(z) szerinti deriváltját: ( )
( )
( ) {6.-5}
A H(z)=0 helyen:
{6.-6} Ez alapján kapjuk:
{6.-7} A H(z)=1 helyen:
{6.-8} Ez alapján kapjuk a
figyelembevételével:
{6.-9}
53
A korábban kapott
, mivel
kapjuk:
{6.-10} Az eddigiekből egy kétismeretlenes egyenletrendszert kaptunk: { {6.-11} Az egyenletrendszer megoldása: és {6.-12} A kapott konstansok segítségével H(z)-ből származtathatjuk az „S” alakú ( )
( )
( ) függvényt:
( ) {6.-13}
Emeljük ki a
( ) -et: ( )
( )
(
( )) {6.-14}
A
( ) legyen egyenlő az
( ) ( )
–vel, ahol x(z) a bemenő mintasorozat Z transzformáltja, y(z) pedig
a kimenő mintasorozat Z transzformáltját jelöli. Ez alapján írhatjuk: ( )
( )
( )
(
( )) {6.-15}
Miután megkaptuk a kimenő-, és a bemenő jelsorozat Z transzformáltjai közötti összefüggést, felrajzolhatjuk a DSP jelfolyamdiagramot. 3 H(z)
H(z)
x(z)
y(z) H(z)
-1
2
6-7. ábra „Filter sharpening” algoritmus jelfolyamdiagramja a „z” síkon Matlab® időtartomány szimulációt a következő forrásfájllal tudjuk végrehajtani:
54
N=2000; %gerjesztő jel minták előállítása (Kronecker-delta) x=zeros(N,1); x(1)=1; %-----------------------%csomóponti vektorok: y11=zeros(N,1); y12=zeros(N,1); y13=zeros(N,1); y14=zeros(N,1); y15=zeros(N,1); y16=zeros(N,1); y17=zeros(N,1); y18=zeros(N,1); y19=zeros(N,1); y110=zeros(N,1); y111=zeros(N,1); y112=zeros(N,1); y113=zeros(N,1); y114=zeros(N,1); y115=zeros(N,1); y116=zeros(N,1); y117=zeros(N,1); y118=zeros(N,1); y119=zeros(N,1); y120=zeros(N,1); y1ki=zeros(N,1); for o=1:3 for n=1:N y1ki(n)=a(1)*x(n)+a(2)*y11(n)+a(3)*y12(n)+a(4)*y13(n)+a(5)*y14(n)+ a(6)*y15(n)+a(7)*y16(n)+a(8)*y17(n)+a(9)*y18(n)+a(10)*y19(n)+a(11) *y110(n)+a(12)*y111(n)+a(13)*y112(n)+a(14)*y113(n)+a(15)*y114(n)+a (16)*y115(n)+a(17)*y116(n)+a(18)*y117(n)+a(19)*y118(n)+a(20)*y119( n)+a(21)*y120(n); %tárolók frissítése y120(n+1)=y119(n); y119(n+1)=y118(n); y118(n+1)=y117(n); y117(n+1)=y116(n); y116(n+1)=y115(n); y115(n+1)=y114(n); y114(n+1)=y113(n); y113(n+1)=y112(n); y112(n+1)=y111(n); y111(n+1)=y110(n); y110(n+1)=y19(n); y19(n+1)=y18(n); y18(n+1)=y17(n); y17(n+1)=y16(n); 55
y16(n+1)=y15(n); y15(n+1)=y14(n); y14(n+1)=y13(n); y13(n+1)=y12(n); y12(n+1)=y11(n); y11(n+1)=x(n); end if o==1 x=y1ki; else if o==2 y2ki=y1ki; %y2ki tartalmazza a H(z)^2 impulzusválaszát y3ki=3*y2ki; y4ki=2*y2ki; x=y4ki; else
y5ki=y1ki; y6ki=y3ki-y5ki;
end end end plot(20*log10(abs(fft(y6ki)))); grid; ylabel('dB'); xlabel('Hz') A futtatást megelőzően készítsük el „a” vektort, mely tartalmazza a FIR szorzó együtthatókat! Írjuk a parancs sorba a következőket: >> filtdemo >> [a, b]=filtdemo('getfilt'); A „filtdemo” indítását követően a grafikus felületen végezzük el a következő beállításokat, csakis ezt követően állítsuk elő [a, b]-t: Válasszuk a FIRPM tervezési módot és adjuk meg a szűrőparamétereket! FSAMP = 2000 FPASS = 500 FSTOP = 600 RPASS = 1 RSTOP = 25 Order: Auto A futtatás során nyert impulzus válasz Fourier transzformáltja:
56
6-8. ábra „Filter sharpening” eredményeképp előállt impulzusválasz Fourier transzformáltja A kapott eredményt, ha megtekintjük, akkor az értékelést a mintavételi frekvencia feléig (jelen esetben 1000Hz-ig) tegyük! Ha így is teszünk, akkor sem azt az eredményt kaptuk, amit várnánk. Romlott a zárócsillapítás érték a kaszkádosított eredményhez viszonyítottan, de ez még elfogadható, ha
( ) –t vizsgáljuk a H(z) függvényében, de teljesen elfogadhatatlan, sőt ellentmondó az, hogy
az áteresztő sávi ingadozás jelentősen megnövekedett! Vajon mi lehet a probléma, hiszen ez a módszer már korábban jól bevált az analóg szűrők esetén? A probléma okát a minták szinkronizálásában kell keresni. A kompenzáló áramkörünk alsó ágában egy véges futási idejű, digitálisan megvalósított H(z) jelent meg, míg a felső ág egy késleltetés mentes szorzást tartalmaz mindössze, vagyis a két ág mintáit a futási időnek megfelelően össze kell szinkronoznunk. 3 H(z)
H(z)
delay
x(z)
y(z) H(z)
-1
2
6-9. ábra „Filter sharpening” algoritmus csoportfutási idővel korrigált jelfolyamdiagramja a „z” síkon A „delay” konstans fogja jelenteni a csoportfutási időt. delay=10; y6ki=zeros(N,1); for d=1:N-delay y6ki(d)=y3ki(d)-y5ki(d+delay); end 57
Az így kapott „y6ki” vektor már a helyes impulzus válasz eredményt tartalmazza, a szűrő átvitelt pedig a következőképp jeleníthetjük meg: plot(20*log10(abs(fft(y6ki)))); grid; ylabel('dB'); xlabel('Hz')
6-10. ábra A helyes „Filter sharpening” eredmény Az áteresztő sávunk ingadozása szépen megjavult, sajnos a zárósáv kis mértékben ugyan, de tovább romlott 650Hz környékén. Nincs más dolgunk, mint levonjuk a következtetéseket! Az elmélet működik, de be kell látnunk, hogy a kapott megoldás nem lesz processzor erőforrás takarékos, hiszen a példában szereplő FIR algoritmust háromszor kellett lefuttatni, ami „real-time” környezetben bizony nem mindig lehetséges. Az áteresztősáv ingadozást szépen kikompenzáltuk, ugyanakkor rosszabb záró csillapítást értünk el, mint az egyszerű kaszkádosításnál. A példa sok tanulságot nyújtott, hiszen ráébreszt arra, hogy a digitális minták szinkronizálására nagyon oda kell figyelni, mert a szinkronizálás hiánya siralmasan rossz működést eredményezhet a DSP áramkörökben. Plusz tapasztalatként könyvelhető el, hogy egy megoldás hasznossága és hatékonysága az adott alkalmazástól és az adott hardver környezettől jelentősen függ, vagyis az is egy szép mérnöki feladat, hogy gondosan meg kell választanunk a tervezési módszert és a tervezési eljárást! Még egy fontos dolog – és ezt már általánosságban – ki kell jelentenünk: Minden megtervezett DSP algoritmust szimulációval ellenőrizzünk, mielőtt megvalósítanánk!
58
7. Digitális hangeffektek Ebben a fejezetben olyan konkrét hangfrekvenciás tartományban működő effekt összegyűjtését és ismertetését céloztam meg, melyek elsősorban a Média-Informatikusok szívét dobogtatja meg és azokét, akik kedvelik az elektromos gitár zenét. A fejezet elején szeretnék köszönetet mondani volt Hallgatóimnak, Szálas Dánielnek, Hagymási Balázsnak és Vörös Balázsnak, akik szakdolgozat, vagy laborprojekt keretében dsPIC eszközön megvalósították az itt ismertetett effektek egy részét. A fejezet bevezetőjeként néhány szóban áttekintjük az elektromos gitárt, mint jelforrást. A gitár az úgynevezett „kordofon” hangszercsalád részhalmazába tartozó, húros, pengetős hangszer. A hang megszólaltatás többnyire pengetéssel történik. Egy szokásos gitár hat húros, normál hangolás esetén a húrok alaphelyzetben az E-A-D-G-H-E’ hangokat szólaltatják meg. A megpengetett húr hangmagassága a húr vastagságától, anyagától, hosszától és feszességétől függő paraméter. A húr által kiadott hang hangmagasságát a húr rövidítésével (nyak érintőjénél a húr leszorításával) vagy/és a feszességének változtatásával (érintőnél a húr oldalra tolásával, vagy tremoló kar segítségével) változtathatjuk.
7-1. ábra 24 érintős, kettő, kéttekercses hangszedős, 6 húros elektromos gitár Az elektromos gitáron a húr rezgését az úgynevezett „hangszedő” (pickup) alakítja elektromos jellé. A pickup az elektromos indukció elvét használja ki, általában egytekercses (single-coil), vagy kéttekercses (dual-coil vagy humbucking) kialakításúak. A hangszer analóg elektromos jelet szolgáltat, melynek jelszintje néhányszor száz mV nagyságrendbe eső érték. A pengetés
59
pillanatában a jel csúcstól-csúcsig vett értéke elérheti az 1 – 2 V feszültséget is, de ez természetesen hangszedő függő paraméter. Az elektronikus hangszerek hangerősség burkoló görbéjét általánosan az úgynevezett ADSR görbe szemlélteti az idő függvényében.
7-2. ábra Megszólaltatott hang amplitúdó értéke az idő függvényében A fenti ábra egyes mezőinek jelentése a következő:
A = Attack, felfutás;
D = Decay, visszaesés;
S = Sustain, hang kitartás;
R = Release, lecsengés.
Természetesen az egyes sávok nem minden esetben határolhatóak el élesen egymástól és időtartamuk is erősen hangszerfüggő. A következő ábrán az E húr megpengetés hatására egy dual-coil hangszedőn megjelenő jelalakot láthatunk az idő függvényében.
7-3. ábra Megpengetett E húr által gerjesztett jel az idő függvényében
60
Az elektromos gitár, mint analóg jelforrás jelének digitális jelfeldolgozásához a jelet digitalizálni kell. A jól ismert módszerek alkalmazásával, az analóg jelerősítést követően sávkorlátoznunk kell a jelet, A sávkorlátozott jelből egy jól megválasztott mintavételi frekvencia szerinti ütemezéssel mintát kell vennünk a jelből, majd a mintákhoz egy-egy „N” bites digitális kódot kell rendelnünk (kvantálás és kódolás). A mintavételi frekvencia meghatározásához ismernünk kell a feldolgozandó jel spektrumképét. A gitár úgynevezett „középfrekvenciás” hangszer („mid-frequency instrument”), az előállított jel jelenergiájának túlnyomó része a 100 Hz – 350 Hz frekvencia spektrumba esik. Alapharmonikus tekintetében a legmagasabb frekvenciát az E’ húr pengetésével tudunk előállítani akkor, ha a gitártesthez legközelebb eső érintőnél (bund) a húrt lefogjuk (általában a normál gitárok 21 vagy 24 érintővel rendelkeznek).
7-4. ábra Egy megpengetett szabad húr által gerjesztett alap- és felharmonikusainak szemléltetése, valamint a hangszedők jel érzékelése az elhelyezkedéstől függően2 Az előállított jel spektrumképét rengeteg tényező befolyásolja. A fenti ábrán látható, hogy a hangszedő elhelyezés is jelentősen befolyásolja a gerjesztett elektromos jel jellemzőit, de ezen felül anyagjellemzők és a gitár test és nyak rezgésátviteli képességei is hatással vannak a jelre.
2
kép forrása: www.frudua.com
61
A gyakorlatban az elektromos gitár jeleiből zajcsökkentési céllal a 70 – 80Hz alatti komponenseket kiszűrjük. Gyakorlatban 10 kHz feletti hasznos jelkomponens nem szerepel a gitár által gerjesztett jelben, ezért célszerű e határfrekvencián sávkorlátozni az analóg jelet. Ennek ismeretében a digitális gitár hangeffektek mintavételi frekvenciáját 20 kHz feletti frekvenciának szokás választani. Ténylegesen alkalmazott mintavételi frekvencia gyártótól függő, például a ZOOM606 effektnél 31,25 kHz. Az elektromos gitár jelének feldolgozásához, és így a végleges hangzás kialakításához több effekt összefűzése (kaszkádosítása) szokásos. A jó minőségű hang előállítás alapja a hatékony zajcsökkentés valamint a jelszint- és dinamika szabályozás is. Az egyes DSP effekteket külön-külön alfejezetekben tekintjük át.
7.1. Túlvezérlés - Overdrive Az „overdrive” túlvezérlést jelent és a legenda szerint egy véletlenül rosszul beállított gitár előerősítő eredményezte azt először. Az 1960-as évek elejétől ezt az érdekes hangzást adó egyszerű megoldást rendszeresen alkalmazták. Ekkor még analóg jelfeldolgozásról beszélhettünk csak, hiszen egy analóg, elektroncsövekből felépített előerősítőt vezéreltek túl. Az analóg erősítők esetén a kivezérlési korlát az erősítő építőelem (elektroncső, tranzisztor vagy FET) tápfeszültség korlátjából ered, az erősített jel egy bizonyos amplitúdó érték felett vágást szenved el.
7.1-1. ábra „Overdrive” jelalakok szemléltetése az idő függvényében3 3
kép forrása: http://en.wikipedia.org/wiki/Overdrive_(music)#mediaviewer/File:Clipping_waveform.svg
62
A túlvezérlés típusú effekteket két csoportra szoktuk bontani, úgynevezett „soft clipping” és „hard clipping” kategóriára. A „soft clipping” esetén a túlvezérlés limit elérése előtt elkezdődik a jeltorzulás, de a jel csúcs tekintetében jelentős vágás nincs. Ez tipikusan egy túlvezérlési határon működő elektroncső, vagy bipoláris tranzisztor esetén áll elő. A „hard clipping” esetén a túlvezérlés jelentős mértékű, ezért a jel trapézosodik, illetve négyszögesedik, és a túlvezérlési határon a jelcsúcs levágása történik meg. Digitális megoldás esetén az overdrive effekt kialakítás nem ilyen egyszerű, mint az előbb tárgyalt analóg áramköri megoldás. Abban az esetben, ha a digitális minta számértéke a számábrázolási tartományon kívül esik, akkor a modulo karakterisztika miatt nem az előbb látott túlvezérlést tapasztaljuk. Előjeles tört számábrázolásnál az áttekinthetőség kedvéért csak 3 biten mutatjuk be a reprezentált minta értékeket:
7.1-2. ábra Hárombites, előjeles tört számábrázolás minta értékei A fenti ábra a Matlab® Fixed point toolbox függvények felhasználásával készültek: >> q=quantizer('fixed',[3 2]); >> numbercircle(q); Ha az előjeles számábrázolást átgondoljuk, könnyen belátható, hogy a számábrázolási tartományból való kilépéskor szinuszos gerjesztő jel esetén nem „négyszögesedő” jelalakot kapunk. A hárombites előjeles számkörön jól látható, hogy a ’011’ kombinációt – ami a pozitív maximumnak felel meg – követi a negatív maximumot jelentő ’100’ kombináció.
63
7.1-3. ábra Moduló túlcsordulás esetén a harmonikus jelből származó jelalak A DSP algoritmusok megvalósításánál mindig ügyelni kell arra, hogy a minták a számábrázolási tartományon belül maradjanak. A digitális „overdrive” esetén sem szabad a számábrázolási tartományból kilépni, vagyis a kívánt túlvezérlési szintnek is ábrázolási tartományon belül kell lenni. Amint a bejövő digitális minták elérik, vagy meghaladják a kívánt „overdrive” értéket, akkor az adott mintákat le kell cserélni az „overdrive” limithez illeszkedő mintával. A DSP jelfolyamdiagram viszonylag egyszerű, egy frekvencia független erősítést (konstans szorzást), valamint egy összehasonlító műveletet, és szükség esetén minta cserélési lépést tartalmaz.
limit K
y(n)
x(n)
komparátor
7.1-4. ábra Egyszerű „overdrive” DSP algoritmus Az x(n) bejövő mintát a „K” konstanssal szorozzuk, ez frekvencia független erősítést jelent, majd a kapott értéket összehasonlítjuk a számábrázolási tartományon belül definiált „limit” értékkel. Ha az összehasonlítás eredménye azt mutatja, hogy az erősített minta kisebb, mint a „limit”, akkor ez kerül a kimenetre, ellenkező esetben a „limit” értékének megfelelő minta értéke.
64
1 0.5 0 -0.5 -1 0
0.2
0.4
0.6
0.8 1 1.2 Idotartomany(sec)
1.4
1.6
1.8
2 -3
x 10
600
400
200
0
0
0.2
0.4
0.6
0.8 1 1.2 1.4 Frekvenciatartomany(Hz)
1.6
1.8
2 4
x 10
7.1-5. ábra Overdrive algoritmus kimeneti mintáiból kapott jelalak és spektrumkép
7.2. Késleltetés - Delay Az effekt neve utal arra, hogy az algoritmus a jelkésleltetésen alapul. Lényege az, hogy a bejövő mintákat változatlanul lejátsszuk, de ugyanakkor egy, a késleltetés mértékétől függő méretű memóriába a mintákat eltároljuk. Az eltárolt mintákat késleltetetten játsszuk vissza, úgy, hogy azokat hozzáadjuk az aktuális mintákhoz. Ezzel az eljárással tulajdonképpen egy egyszeri visszhang jön létre. A késleltetés mértéke jelentősen befolyásolja a hangzást.
delay G
x(n)
y(n)
7.2-1. ábra Delay algoritmus Paraméterként megadhatjuk, hogy a késleltetett mintasorozat milyen hangerővel keveredjen az aktuális mintákhoz, ezt az algoritmust szemléltető ábrán „G” konstanssal jelöltük. A késleltető láncot hálózatelméleti tároló elemeknek adtuk meg, melyből 31,25 kHz mintavételi frekvencia esetén, ha 100 ms késleltetést kívánunk előállítani, akkor
tároló
elem szükséges. Természetesen ilyen nagyméretű tároló lánc esetén nem az eltárolt értékeket 65
mozgatjuk át minden mintavételi pillanatban, hanem egy író pointert és egy olvasó pointert definiálunk, melyek a memóriába írás és olvasás helyét adják meg.
7.3. Visszhang - Echo Az Echo effekt is késleltetésen alapul, ugyanúgy, mint az előző Delay effekt, de most a késleltetett jelet, többszöri késleltetéssel, és általában egyre kisebb amplitúdóval játsszuk vissza. Most is egy viszonylag nagy tároló láncot kell kialakítanunk, és természetesen az adatmozgatást a tároló elemek között most sem hajtjuk végre minden mintavételi ütemben, hanem pointereket célszerű alkalmazni.
G1
G2
Gn
x(n) y(n)
7.3-1. ábra Echo algoritmus Az Echo algoritmus megvalósításához egy írópointert és „n” darab olvasó pointert kell definiálni. A „delay” tároló lánc mérete most is a mintavételi frekvenciától és a maximális időzítés mértékéből határozható meg.
7.4. Zengetés - Reverb A Reverb is egy visszhangszerű, késleltetésen alapuló effekt. Az alapvető különbség a Reverb és az Echo között az, hogy a Reverb esetén 50 ms-on belül van az eredeti után az elsőnek lejátszott hang, és ezután is sokkal kevesebb késleltetéssel jelennek meg a késleltetett minták. A hang érzékelésekor az ember egy „zengő” és nem egy visszhangos jelenséget érzékel. Az érzékelt jelenség olyan, mint mikor egy nagy zengő teremben, például fedett sportpályán vagy templomokban halljuk valakinek a
66
beszédét, illetve egy hangszer hangját. Az effektprogramokban, általában előre eltárolt, beépített presetként4 megtalálhatók a következő módok: -
Hall
-
Small Room (kis szoba)
-
Large Room (nagyszoba)
-
Stadium (stadion)
-
Temple (templom)
Ezek az effektek valójában a felsorolt termek, helyiségek úgynevezett utánzengési idejét hivatottak modellezni. A termek utánzengésének modellezése viszonylag összetett folyamat, a pontos modellezéshez nem elegendő az Echo effektnél megismert DSP jelfolyamdiagram realizálása, további átmeneti minták tárolására kell kialakítani tároló láncokat. Ez könnyen belátható, hiszen egy teremben, melynek falai nem hangelnyelő anyaggal borítottak, jó reflexiós felületet adnak a hozzá érkező hanghullámoknak, melyek így viszonylag kis csillapítással pattannak vissza onnan és adódnak hozzá az épp generálódó újabb hanghullámokhoz. Az így előálló additív hullámok már együtt fognak visszaverődni a terem egy másik reflexiós pontjáról.
7.4-1. ábra Kisszoba reverb algoritmus5 A Reverb effektek, ha annak célja egy valós terem utánzengésének modellezése, akkor az szűrőket, és amplitúdó korrektor algoritmusokat is tartalmaz, hiszen a terem utánzengése frekvenciafüggő. Gitár effekt tekintetében a frekvenciafüggés figyelembevételét ritkán szoktuk megvalósítani.
4
Az effekt előre beállított értékeit tárolják különböző presetekben
5
kép forrása: http://freeverb3vst.sourceforge.jp/ref.shtml
67
7.5. Tremolo A Tremolo effekt a bemenő jel hangerősséget változtatja egy bizonyos frekvenciával. Az algoritmus valójában egy amplitúdó moduláció, ahol a jelforrás jele tekinthető „vivőnek” és ennek a jelnek az amplitúdó burkolóját fogja egy alacsony frekvenciás oszcillátor változtatni. Az algoritmus megvalósításához szükséges egy alacsony frekvenciás oszcillátor (LFO) melynek frekvenciáját pár tized Hertz-től néhány Hertz-ig állíthatjuk be. Az alacsony frekvenciás oszcillátor jelalakját gyakran háromszög jelnek választjuk, melyet könnyen tudunk programozni. Háromszög jel egyszerű előállításának módja az, ha a mintavételi időhöz szinkronizáltan (például annak leosztásával) egy számlálót egy előre meghatározott végértékig növelünk, majd csökkentünk és ismét növelünk a végtelenségig. Bonyolultabb burkolók kialakításához a program memóriában előre letárolt mintákat olvashatunk ki úgynevezett „look-up tábla” módszerrel.
x(n)
y(n)
LFO
7.5-1. ábra Tremolo algoritmus
0.8
0.3
0.6
0.2
0.4
0.1
0.2
0
0
-0.1
-0.2
-0.2
-0.4
-0.3
-0.6
0
0.2
0.4
0.6 0.8 Idotartomany(sec)
1
1.2
-0.4
0
0.2
0.4
0.6 0.8 Idotartomany(sec)
1
1.2
7.5-2. ábra Tremolo algoritmus hatása A fenti ábra bal oldalán a torzítatlan gitár jelet, míg a jobb oldali ábrán a Tremolo algoritmussal feldolgozott jel időfüggvényét láthatjuk. A burkoló görbét egy háromszögjel LFO adta.
68
Abban az esetben, ha az alacsony frekvenciás oszcillátort lecseréljük egy magasabb frekvenciájú oszcillátorra, akkor úgynevezett „Ring modulator” effekthez jutunk. A Ring modulator algoritmusok haranghangszerű hangzást kölcsönöznek a gitárnak.
7.6. Octaver A „Oktaver” effekt célja az, hogy a bejövő hangjel frekvenciájához képest egy oktávval magasabb („octave-up”) hang jelenjen meg a kimeneten. Létezhet az előzővel ellentétes igény is, miszerint egy oktávval alacsonyabb („octave-down”) frekvenciájú jel jöjjön létre a kimeneten, de ezt a gitáreffekteknél nem szoktuk alkalmazni A frekvencia többszörözésnél a frekvenciavizsgálat és a frekvencia megkétszerezése elég bonyolult algoritmust igényel, ezért gyakran alkalmazzuk a következő trükköt mely szerint, ha vesszük a bemenő jelünk abszolút érték függvényét, azaz a negatív tartományban levő mintákat tükrözzük az x-tengelyre, akkor hasonló érzet keletkezik bennünk, mintha ténylegesen kétszeres frekvenciával szólalna meg a hang.
7.6-1. ábra Szinusz jel és annak kétutas egyenirányított változata Ennél a megoldásnál a kimenő jel az „egyenirányítás” miatt DC komponenst is fog tartalmazni, ezért azt el kell távolítani. DC tartalom eltávolításra több DSP megoldás is rendelkezésünkre áll, lásd 4. fejezet.
69
7.6-2. ábra Szinusz jel és annak két utas egyenirányított és DC tartalom eltávolított változata
7.7. Wah-wah Az effekt neve egy hangutánzó szó, mely egy jellegzetes hangot ad „WAH” . A DSP algoritmus egy keskeny sávú, modulálható szűrővel rendelkezik. A gitáros leggyakrabban egy taposópedállal változtatja az effekt paraméterét, de létezik olyan fajtája is, amely megadott, előre beállított változó paraméterek alapján működik. Ezt az effektet „Auto wah”-nak nevezzük.
G1
x(n)
Hangolható fo
y(n)
G2
7.7-1. ábra Wah-wah algoritmus egyszerűsített vázlata Az eredeti, torzítatlan minták a „G1” erősítésfaktorral áthaladnak a DSP algoritmuson, valamint a torzítatlan minták által leírt jel megszűrt tartalma a „G2” erősítést (csillapítást) követően összegződik a torzítatlan jelet leíró mintákkal. Az „fo” áteresztő sávközépi frekvenciát szokás az effektezés
közben
hangolni.
A
sáváteresztő
szűrősávközépi
frekvenciáját
könnyen
átparaméterezhetőnek kell kialakítani.
70
8. Mellékletek A mellékletben a fontosabb rövidítések feloldását, valamint a felhasznált irodalmat rendszereztük.
8.1. Rövidítések jegyzéke A/D
Analog to Digital Converter
AGC
Automatic Gain Control
CMTS
Cable Modem Termination System
DC
Direct Current
DOCSIS
Data Over Cable Service Interface Specification
DSP
Digital Signal Processing
DSC
Digital Signal Controller
DTMF
Dual Tone Multi Frequency
EDS
Euro DOCSIS
FIR
Finite Impulse Response
IIR
Infinite Impulse Response
ISI
Inter Symbol Interference
LFO
Low Frequency Oscillator
LWDF
Lattice WDF
LSB
Least Significant Bit
MER
Modulation Error Ratio
PAM
Pulse Amplitude Modulation
PCM
Pulse Code Modulation
PSK
Phase Shift Keying
QAM
Quadrature Amplitude Modulation
WDF
Wave Digital Filter
71
8.2. Irodalom [1]
Richard G. Lyons: Understanding Digital Signal Processing (third edition), 2011 PEARSON
[2]
Gazsi Lajos: Explicit Formulas for Lattice Wave Digital Filters, IEEE 1985
[3]
Alfred Fettweis: Wave Digital Filters: Theory and Practice, IEEE Vol74.No2 Februrary 1986
[4]
Richard G. Lyons: Streamlining Digital Signal Processing, Wiley, IEEE Second Edition, ISBN 978-1-118-27838-3
[5]
J. Kaiser & Hamming: Sharpening the responseof a symmetric nonrecursive filter by multiply use ofthe same filter, IEEE Trans. Acoustic Speech Signal Proc. Vol.ASSP-25no5. 1977 pp 415 – 422.
[6]
Wührl Tibor: Hullámdigitális jelfeldolgozás alapjai OK KVK 2073 Egyetemi jegyzet, Budapest 2010
[8] [9]
Claude E.Shannon: Communication in the Presence of Noise Data-Over-Cable Service Interface Specifications DOCSIS® 3.1 Physical Layer Specification CM-SP-PHYv3.1-I03-140610
[10]
Ing.H.J. Lincklaen Arriens: WDF Toolbox for MATLAB, Delft University of Technology, Faculty of Electrical Engineering, 2006, http://ens.ewi.tudelft.nl/~huib/mtbx/index.php
72