VIZSGADOLGOZAT
PÁZMÁNY PÉTER KATOLIKUS EGYETEM INFORMÁCIÓS TECHNOLÓGIAI KAR DIGITÁLIS JELFELDOLGOZÁS 2004. MÁJUS Konzulens: Oláh András
Csercsa Richárd
Magony Andor
A/D átalakítás
©Csercsa Richárd & Magony Andor
TARTALOM
1.Bevezetés................................................................................................. 3 2.Folytonos jelek diszkrét idejű feldolgozása................................................... 5 2.1. Az analóg jel előszűrése...................................................................... 6 2.2. Analóg – digitális átalakítás................................................................. 7 2.2.1. Mintavétel és tartás (Sample-and-Hold)......................................... 7 2.2.2. A mintavételezés karakterisztikája; matematikai alapozás................ 8 2.2.3. A mintavételezés matematikai modellje.......................................... 8 2.2.4. Kvantálás................................................................................... 10 2.2.5. A kvantálás matematikai modellje:............................................... 11 2.2.6. Egyenletes kvantálás.................................................................. 11 2.2.7. Logaritmikus kvantálás............................................................... 12 2.2.8. Kvantálási hibák......................................................................... 13 2.3. Oversampling A/D átalakítók.......................................................... 14 2.4. D/A Konverzió............................................................................... 15 2.5. Oversampling D/A Konverterek...................................................... 17 FÜGGELÉK.............................................................................................. 19 1. ábra - Mintavételezés....................................................................... 19 2. ábra - Lineáris kvantálás és annak karakterisztikája............................ 19 3. ábra - Logaritmikus kvantáló és karakterisztikája................................ 20 4. ábra - D/A átalakítás kis pontossággal............................................... 20
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
1. Bevezetés A digitális jelfeldolgozás legelső és legfontosabb állomása a természetes karakterisztikájú, folytonos analóg jelek valamilyen formájú diszkretizálása, alkalmassá tétele digitális számítógépeken való további feldolgozásra. Ezen folyamat során az időben folytonos jelalakból (pl. hanghullám, mérőátalakítók kimenetei: hőmérséklet, nyomás, sebesség, páratartalom, elmozdulás, erő, stb.) meghatározott eljárások során diszkretizált jelsorozatot nyerünk, mely digitális jelfolyamként realizálódik a számítógépben. Ez a folyamat az analóg-digitális átalakítás, mely vívmányt – tudva-tudatlanul, de – szinte mindannyian használunk hétköznapjainkban. Használjuk a mára már oly megszokottá vált mobiltelefóniában, használjuk, amikor rögzítünk egy előadást az egyetemen, amikor régi bakelit lemezeink tartalmának CD-re írva próbálunk meg új életet adni, és még számos más esetben, amikor talán nem is tudunk róla.
Leggyakrabban pedig valószínűleg úgy találkozunk vele, hogy a feldolgozás
nem
számítógépen,
hanem
-
kimondottan
jelfeldolgozásra
A/D átalakítás
„kihegyezett”
©Csercsa Richárd & Magony Andor
DSP-ken
(Digital
Signal
Processor)
történik,
mely
specializáltsának köszönhetően sokkalta gyorsabb, mint az univerzális feladatokra használatos számítógépes processzorok.
Maga a folyamat, melynek során az analóg jelből digitális eredményt kapunk, jól elkülöníthető, egyszerűen algoritmizálható lépésekből áll. Először is biztosítanunk kell, hogy a bejövő jel sávkorlátozott legyen, amit egy aluláteresztő szűrővel érhetünk el. Ezután következik a mintavételezés, melynek során adott időközönként méréseket végzünk az analóg jelen, s azokat mintákként értelmezzük. Itt általában ekvidisztáns mérési időpontokat alkalmazunk, a mérés után a mért jelet egy ideig megtartjuk (Sample & Hold). A következő lépés a mért minták „osztályozása”, azaz diszkrét értékekhez való hozzárendelése, ez az ún. kvantálás. Ennek paramétere az „osztályozás finomsága”, tehát az a jellemző, amely meghatározza, hogy a mintákat milyen felbontással tudjuk diszkretizálni. Ennek mérőszáma bitben, általában 2 hatványaként adott. A végső digitális jel előállításához már csak kódolásra van szükség, amely a leggyakrabban egy adott típusú bináris kód. A teljes folyamat blokkdiagramja:
Áramköri
elemekkel
leírva,
nagyon
egyszerű
megközelítésben
a
mintavételhez csupán kapcsolóra és kondenzátorra, a kvantáláshoz pedig komparátorra van szükségünk. Ez a szint az A/D átalakító fizikai megvalósulása.
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
1.1. Motiváció: De miért is jobb nekünk a jeleket digitálisan feldolgozni az analóg megoldásokkal szemben? A digitális rendszereknek kétségtelenül nagy előnyei vannak,
melyek,
főleg
napjaink
hihetetlen
méretű
adatmennyiségéből
kifolyólag alapvető jelentőségűek. Ezek (a teljesség igénye nélkül): megbízhatóság – a digitális jelek minden olvasás alkalmával ugyanazon értékeket garantálják, nemúgy mint analóg megfelelőik, melyek minden hozzáféréssel egyre gyengülnek; rugalmasság – a feldolgozás, sőt maga a jelátalakítás is gyorsan, egyszerűen programozható, ill. paraméterezhető, és a kívánt igények szerint módosítható anélkül, hogy áramköröket kellene újratervezni, átépíteni, esetleg teljesen újakat alkotni; programozhatóság – a digitális jelek feldolgozását végző DSP-n futó program(ok) remek hatásfokkal dolgoznak, hiszen maga a DSP egy adott célfeladatra van kihegyezve, optimalizált, minimális programkóddal, amely tetszés szerint programozható, az egyedi igényeknek megfelelően; továbbfejleszthetőség – a digitális rendszerek szinte korlátlanul bővíthetőek, s ahogy egyre jobb eljárások, ill. megoldások születnek, egyre kevesebb befektetéssel egyre jobb hatásfokot tudunk elérni; robusztusság – az adataink egyszerűbben és biztonságosabban, ráadásul romlásmentesen tárolhatók, gyakorlatilag érzéketlenek a környezeti hatásokra, vagy legalábbis könnyebben javíthatók, avagy védhetők meg ezen jelenségektől (sok, egyszerűbb jelet könnyebb javítani, mint egy komplexet – pl. analóg hanghullám);
2. Folytonos jelek diszkrét idejű feldolgozása Számos alkalmazás esetén kimondottan előnyös a folytonos idejű analóg jeleket DSP-ken feldolgozni. Ennek folyamatát a következő ábra illusztrálja: analóg jel
Előszűrő X(t)
X(n) DSP y(n) y(t) Utószűrő y’(t) A/D D/A átalakító átalakító
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
A feldolgozás megtervezésének első fázisában meg kell határoznunk a jel sávszélességét, az ugyanis meghatározza szükséges minimális mintavételi frekvenciát.
Példaképpen
felhozható
az
emberi
beszédhang,
melynek
digitalizálása során elegendő az ún. érthetőségi tartomány lefedése, amely a 3000 Hz-ig tartó frekvenciákat tartalmazza. Az ezen érték feletti komponensek az érthetőséget kevéssé, inkább a hang kvalitatív jellemzőit javítják, ezért kis rendelkezésre álló sávszélesség esetén ezen tartományok feleslegesnek tekinthetők.
2.1. Az analóg jel előszűrése Két okból szükséges analóg szűrő alkalmazása a folytonos jelen. Elsősorban azért, mert ez biztosítja, hogy a mintavételezni kívánt jel sávszélessége korlátos legyen, s így az adott tartomány feletti frekvenciák „kioltásával” az átfedés (aliasing) által okozott zajtényező is kizárható. A másik oka az előszűrésnek, hogy limitáljuk a járulékos zaj spektrumát és más interferenciákat, melyek a kívánt jel jelentős romlásához vezethetnek. Az
additív
zaj
általában
szélessávú,
azaz
meghaladja
a
kívánt
jel
frekvenciatartományát. Előszűréssel redukálhatjuk a zaj energiáját arra a szintre, amely a hasznos jeltartományba esik, kizárva ezzel a tartományon kívül eső zajokat. Az előszűrés
paramétereinek
megadása
után a
mintavételi ráta
meghatározása következik. Ennek értéke: Fs = 1/T, ahol T a mintavételezési időintervallum. Ezen mintavételi frekvencia nem csupán a mintavételezhető legnagyobb frekvenciát adja meg (Fs/2), hanem a későbbiekben alapul szolgál bármiféle diszkrét-idejű jelen történő feldolgozáshoz is (pl. digitális szűrők alkalmazása). A mintavételezés részletes bemutatását később tárgyaljuk.
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
2.2. Analóg – digitális átalakítás Megfelelő előszűrés és a mintavételi frekvencia meghatározása után a következő lépcső a mintavételezés (mintavétel és mintatartás), majd pedig a kvantálás. Az eszköz, mely e folyamatot hivatott elvégezni, az analóg-digitális (A/D) átalakító, vagy A/D konverter (ADC). Amikor pedig elvégeztük a kívánt feldolgozó eljárásokat a digitalizált jelsorozaton, szükséges lehet a jelet újra folytonos, analóg jellé alakítani. Ezt a digitális-analóg (D/A) átalakító (DAC) teszi lehetővé úgy, hogy a kimeneten digitális jelhez arányos feszültséget vagy áramot állít elő. A következőkben részleteiben is kitérünk az A/D és D/A konverziók lépéseire, illetve jellemzőire.
2.2.1. Mintavétel és tartás (Sample-and-Hold)
A mintavételezést a gyakorlatban egy mintavételező-és-tartó (S/H) áramkör valósítja meg. A mintavett jel ez után kerül kvantálásra és digitális formára történő konvertálásra. Az S/H áramkört általában közvetlenül az A/D átalakítóba integrálják. Ez a digitálisan vezérelt egység mintegy „méri” az analóg bemenetet mintavételi módban, majd megtartja azt a pillanatnyi mért szinten mintatartási módban. Ennek jelentősége az analóg jel folytonos mintavétele, majd konstans állapotban való megtartása annyi ideig, amennyire az A/D átalakítónak szüksége van ahhoz, hogy megállapítsa annak digitális értékű megfelelőjét. Az áramkör segítségével az átalakító lassabban üzemelhet, mint a mintavételezés tényleges időigénye, míg annak hiányában a bejövő jel nem változhatna többet, mint egy kvantálási lépcső fele, ami egy igen célszerűtlen megszorítás lenne. Következésképp az S/H folyamatnak döntő szerepe van a nagyfelbontású (12 bit/minta vagy a feletti) digitális jelkonverzióban nagy sávszélesség esetén (azaz, amikor a jel gyors váltásokra képes, „hajlamos”). Az ideális mintavételezés során nem lép fel torzítás a jelkonverzióban, mindazonáltal
bizonyos időfüggő hatások, mint például a mintavételezési
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
folyamat periodicitásának hibái („jitter”), nemlineáris váltások a mintavétel időtartamában,vagy a tartott jel feszültségének változása konverzió közben („droop”), előfordulnak a gyakorlati megvalósulásokban.
2.2.2. A mintavételezés karakterisztikája; matematikai alapozás Az elsődleges szempont minden átalakító esetében, hogy van-e a folyamat során adatveszteség, és ha igen, akkor mekkora, és tolerálható mértékű-e? Garantálható-e továbbá az előírt minőség az adott paraméterekkel? Mintavételezésnél az elsőszámú követelmény eleget tenni a mintavételi tételnek: T
MINTAVÉTELI TÉTEL: ha a jel sávkorlátozott : x(f) tartója [-B;B], akkor fm = 1/T B esetén xk x(t), azaz nincs információveszteség. Példaként
felhozhatjuk
a
már
említett
emberi
beszédhang
digitalizálásának folyamatát, amely esetben, ha csak az érthetőségre törekszünk elegendő 3 kHz-ig venni a frekvenciatartományt. Ez azt jelenti, hogy ennek valamivel több, mint kétszeresével kell mintavételeznünk ahhoz, hogy a jel ne szenvedjen
információveszteséget,
amelyet
konkrétan
8
kHz-es
mintavételezéssel oldanak meg. Ha ehhez 8 bites kvantálási felbontást veszünk kiszámítható, hogy az érthető beszéd átviteléhez 64 kbps sávszélességre van szükség. T
Shannon-féle
mintavételi
törvény:
egy
véges
energiatartalmú
sávkorlátozott jel egyértelműen visszaállítható az x(nT) mintáiból, ha a mintavételi frekvencia a sávkorlát kétszerese, és az interpoláló szűrő karakterisztikája sin(x)/x alakú.
2.2.3. A mintavételezés matematikai modellje Feltételezhetjük, hogy a spektrum egy W körfrekvencia fölött már gyakorlatilag nulla. A sávkorlátot az fB = T/2 frekvenciával vagy az fN = T/
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
HLâ ŕ HL
Nyquist-frekvenciával jellemezhetjük. A sávkorlátozott jel spektrumát a -T < t < T tartományban felírhatjuk a Fourier-sorával: Ą
Ź
Xk ă jtk
2p T
X t, T ă - jtk
2p T
x t, T =
k=- Ą
ahol az együtthatók értéke:
xk =
1
T 2
T
-T
ât
2
Az időtartományban végzett analízis során azt tapasztaljuk, hogy ha egy folytonos f(t) függvényt t0 pillanatban megszorzunk egy Dirac-impulzussal és ezt integráljuk, akkor megkapjuk az f(t) függvény t0 időpontbeli értékét (mintavételezzük). A Dirac-impulzussorozatot szokás fésű (comb) függvénynek is nevezni, definíciója és függvényképe az alábbi:
âHL Ą
comb =
d
t - nT
-Ą
H L
A mintavételezett jel időfüggvénye:
. Az időtartományban
végzett szorzás ekvivalens a frekvenciatartományban végzett konvolúcióval,
t n T ám a d -el való konvolúció T-vel történő eltolást jelent, tehát a mintavett jel spektruma nem más, mint a folytonos jel spektrumáról készült
HL8HL<ŕ HL ŕâHLHL H LâH LHL
másolatok összege:
Ą
Xm
f
=F
x
=
t
-Ą
xm
t
ă
- j2p ft
Ą
ât =
Ą
- Ą n=- Ą
x
n
d
t - nT
ă
- j2p ft
ât
Ą
ahol:
x n d n - nT =
Xm t =
Ą
F x t
Így:
...+x(-3)δ(t+3T)+x(-2) δ(t+2T)+...+x(3) δ(t-3T)
8H L <âH Lŕ HL âHL n =- Ą
=
Ą
x n
n=- Ą
- Ą
d t - nT ă
- j2pft
Ą
x n T ă-
ât=
n=- Ą
-
j2pfnT
.
A/D átalakítás
©Csercsa Richárd & Magony Andor
2.2.4. Kvantálás A kvantálás a minták amplitúdójának folytonos értékkészletét diszkrétté alakítja. Az eredeti értékkészletet kvantálási lépcsőkkel intervallumokra osztja. Mindegyik intervallumban kijelöl egy referencia értéket, a kvantálási szintet. Az eredeti pillanatnyi amplitúdóhoz azt a kvantálási szintet rendeli, amelyik a pillanatnyi amplitúdóval egy kvantálási lépcsőben van. A kvantálási folyamat egyértelműen leírható egy olyan lépcsős függvénnyel, amelynek független változója a kvantálandó függvény, függő változója pedig a kvantált mennyiség. Így tehát a kvantálás egy memóriamentes nemlineáris transzformáció. Ha a kvantálást egy ekvidisztáns szintkülönbségű lépcsős függvény ír le, akkor lineáris kvantálásról beszélünk. A kvantálási lépcsőknek nem kell sem azonosnak sem a nullára szimmetrikusnak lenniük, és az sem szükséges, hogy a kvantálási szintek a kvantálási lépcsők közepére essenek. Ha a kvantálás a nulla ponthoz és környezetéhez a 0 kvantálási szintet rendeli, akkor a kvantálás nulltartó, ha nincs zérus értékű kvantálási szint, akkor nullkitérő. A kettő között az alapvető különbség az, hogy a jelszünethez a nulltartó kvantálás jelszünetet, a nullkitérő kvantálás pedig hamis jelet rendel. Alkalmazható továbbá nemlineáris, például logaritmikus kvantáló is, amely nem egyenletes kvantálási szinteket tartalmaz. Bizonyos esetekben ezzel a megoldással jobb, pontosabb eredményt érhetünk el, ez azonban a bejövő jel és a kívánt felhasználás függvénye.
A pillanatnyi amplitúdó és a kvantálási szint különbsége a kvantálási hiba. A kvantált jel tehát az eredeti jel és a kvantálási hiba összegéből áll.
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
2.2.5. A kvantálás matematikai modellje: c
-c
Kvantálás előtti mintavett jel:
Xn R,
Kvantálás utáni diszkrét jel:
X^n Q = {1... 2} – szimbólumkészlet,
Kvantálási szintek száma:
N = 2n, (n = bitszám)
Kvantálási szint nagysága:
= 2c/N,
Jelenergia:
c2/2
Jel-zaj arány (SNR):
jelenergia
/kvantálási hiba energia
Mivel a kvantálás = kerekítés, ezért mindenképpen adódik valamekkora mértékű információveszteség. Ez a veszteség a kvantálási hiba, amelynek jelenlétét bele kell kalkulálni a feldolgozás folyamatába. Információveszteség: = x – x^, melynek mértéke:
–/2 < < /2, ahol
egyenletes eloszlású valószínűségi változó: P(u) = 1/.
H Lŕ
A kvantálási hiba energiáját az információveszteség várható értékével adhatjuk meg:
D
E e2 =
2
-D
u2
2
1 D
âu=
D
2
12
c2 2
SNR =
D2
, ezért:
=6
12
c2 D2
.
Mivel N = 2c/ SNR = 3/2N2 = 3/2 22n , n bites kvantáló esetén.
2.2.6. Egyenletes kvantálás Nullkitérő (mid-tread) karakterisztika kis jelszintek mellett mindent nullára kvantál. Nulltartó (mid-riser) karakterisztika kis jelszintek esetén nulla körül ingadozik; nagy kvantálási zaj képződik. A kvantálási jel/zaj viszony:
2 s x
d B S N R 1 0 lg Q =
2 s e
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
jel amplitútó
2.2.7. Logaritmikus kvantálás
kvantálási érték
Ezt
a
fajta
kvantálási
karakterisztikát
leggyakrabban
hangjelek
digitalizálásánál alkalmazzák, ugyanis tapasztalati ill. kísérleti úton bizonyított,
H L H L HLŕ HL
hogy az emberi fül nagyobb jelszintek mellett nagyobb zajszintet tolerál, amely tulajdonságot ez a kvantáló jelentősen kihasznál. A törekvés ezek alapján jelszint független jel/zaj viszony biztosítása. Ennek matematikai alapjai:
E x2 SNR = E e2
H L
, ahol
E x
2
c
=
u2 p u â u
-c
l(x)
Bevezetve l(x) kompresszorfüggvényt:
kvantáló
H LâHČ LH L ăHLHL ă HLHL ŕ HLHL
Dy
D xi
= l' xi
E e2 =
2
, s ekkor értelmezve E( )-et:
E e2 e Î Dx i p x i Dxi =
i
=
, p(u) a minta sűrűsége.
a teljes valószínűség tétele miatt:
Dx i 2
i
Azaz:
l' xi
2
p x i Dx i =
4 c2
12 N2
1
c
p xi Dxi = áll.
1
H L Ů : ŮHLH L> i
l' xi
SNRopt = max áll.
-
2
c 2 x - c
c 1 - c l'2 x
-c
p x âx
p x âx
.
l' xi
2
p xi â x
A/D átalakítás
©Csercsa Richárd & Magony Andor
Ezt pedig akkor tudjuk maximalizálni, ha l(x) helyére logaritmus függvényt választunk.
2.2.8. Kvantálási hibák
Hogy
meghatározhassuk
a
kvantálás
hatásait
az
A/D
átalakító
teljesítményén, statisztikai megközelítést alkalmazunk. A kvantálási hiba bemeneti jeltől, valamint a kvantáló nemlineáris természetétől való függése nehézkessé teszi a determinisztikus vizsgálódást, kivéve egészen egyszerű esetekben. Statisztikai közelítésben feltételezzük, hogy a kvantálási hiba véletlen természetű. Ezen hibát zajként modellezzük, mely az eredeti (kvantálatlan) jelhez adódik. Amennyiben a bemenő analóg jel a kvantáló tartományában mozog, akkor a kvantálási hiba nagysága korlátozott (azaz ||</2), s ekkor szemcsés zajról beszélünk (granular noise). Ha viszont a bemeneti jel kiesik a kvantálási tartományból (clipping), nem lesz korlátolt, s ez túlterhelési zajhoz vezet (overload noise). Az ilyen tipusú hiba igen komoly torzulásokat képes okozni a jelfolyamban. Az egyetlen megoldás, hogy úgy méretezzük a bemeneti jelünket,
hogy
annak
dinamika tartománya
„beleférjen” a
kvantálási
tartományba. Feltesszük továbbá a következő állításokat statisztikai tulajdonságairól:
egyenletes eloszlású a –/2 < < /2 tartományban.
stacionárius fehér zaj folyamat (azaz két különböző állapotbéli hiba korrelálatlan).
korrelálatlan az x(n) jelfolyammal.
Az x(n) jelfolyam nulla várható értékű, stacionárius folyamat.
Ezen feltételezések általában nem állnak fenn, kivéve kis kvantálási lépcsőknél, ill. ha x(n) jelfolyam több kvantálási szintet vált két egymást követő minta között. Ilyen esetekben közelíthetjük a jel/zaj viszonyt a 2.2.7. pont képletei alapján. További hibatípusok: offset hiba
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
gain hiba nemlinearitás kódkihagyás
2.3. Oversampling A/D átalakítók
Az oversampling (túl-mintavételező) A/D átalakítók lényege, hogy a mintavételi frekvenciát addig növeljük, amíg alacsonyabb felbontású kvantáló használata is elég. Ahogy már láthattuk, a kvantálási hiba szórása: e2 = 2/12, ahol = 2c/2n. A jel dinamikus tartománya (a legnagyobb amplitúdó pozitív és negatív irányban egyaránt, vagyis 2c) arányos x-el, így is arányos x-el. Tehát adott bitszám esetén a kvantálási hiba energiája arányos a jel szórásával. Ebből következően adott SQNR esetén a jel szórásának csökkentése a kvantáló bitszáma csökkenthető. A dinamikus tartomány alapötlete vezetett el a differential quantizationhöz. Nézzük meg a jel két egymást követő mintája különbségének szórását: d2 = E{[x(n)-x(n-1)]2} = 2x2 [1-xx(1)], ahol xx(1) az x(n) autokorrelációs sorozatának (xx(m)) m = 1 helyen vett értéke. Megfigyelhetjük, hogy xx(1) > 0.5 esetén d2 < x2, így érdemesebb a különbséget kvantálni és x(n) a különbségek kvantált értékeiből visszaállítani. Az egymást követő minták magasabb korreláltságának érdekében a mintavételi frekvenciának szignifikánsan magasabbnak kell lennie a Nyquist határfrekvenciánál. Egy még jobb megközelítés, ha d(n) = x(n)-ax(n-1) különbséget kvantáljuk, ahol az a paraméter optimális értékére a következő összefüggés adható: a = xx (1)/ xx(0) = xx(1)/ x2. Ebből d2 = x2[1-a2]. Ebben az esetben d2 < x2, mivel a 0 és 1 közé esik. Az x^(n) = ax(n-1) mennyiséget x(n) első-rendű becslésének hívjuk (first-order predictor). Ebből következően x(n) p-rendű becslése: x^(n) = k=1p akx(n-k). Ilyen differential predictive jelkvantáló rendszereket, amik x(n) becslését x(n) korábbi értékeinek lineáris kombinációjából állítják elő a különbség dinamikus tartománya csökkentésének érdekében, használnak a beszéd kódolására és telefoncsatornákon való továbbítására. Ezt hívják differential pulse code modulation-nek (DCPM). -
A/D átalakítás
©Csercsa Richárd & Magony Andor
Az ábrán látható elrendezés esetén az xq(n) visszaállított kvantált jel hibája megegyezik a d(n) különbség kvantálási hibájával. A differential predictive kvantálás legegyszerűbb fajtája a delta moduláció (DM). Itt egy kétszintes kvantálót és első-rendű becslést alkalmaznak. A DM a bemenő jel lépcsőzetes alakú közelítését adja. Minden mintavételi pillanatban meghatározzák a bemenő jel és a lépcső különbségét, ezután a lépcső-jelet a megfelelő irányban módosítják egy lépéssel. A DM két legjellemzőbb hibája a meredekségi torzítás (slope-overload distortion) és a granuláris zaj (granular noise). Meredekségi torzítás esetén a jel gyorsabban nő, mint ahogy azt a lépcső követni tudná, „lemarad” a jelhez képest, hiszen a lépcső-jel csak egy szintet ugorhat. Ez megszüntethető túlmintavételezéssel, de kérdéses, hogy meddig előnyös ez az eljárás az eredetihez képest. A granuláris zaj azt jelenti, hogy konstans jel esetén (ha a jel a lépcső-jel egy szintjén belül mozog) a lépcső-jel két szint között fog váltakozni. A lépcső szintjeinek mérete () alapvető befolyással van mindkét zajra. Növelése csökkenti a meredekségi torzítást, de megnöveli a granuláris zajt és fordítva. Ezen két fajta torzítás csökkentésének egyik lehetséges módja egy integrátor alkalmazása a DM előtt. Ez elsimítja az alacsony frekvenciákat és megnöveli a DM-be bemenő jel korrelációját. Ezen kívül egyszerűsíti a DM dekódert, ami ezáltal egyszerűen egy aluláteresztő szűrőből fog állni. A kódolóban lévő két integrátor helyettesíthető eggyel a komparátor előtt. Ezt a rendszert hívják sigma-delta modulációnak (SDM). Leginkább nagy felbontású (12 bit feletti) hagyományos A/D konverterek helyettesítésére alkalmazzák. 1-bites kvantálót használ és nagyon magas mintavételi frekvenciát (akár a Nyquist-frekvencia 64szeresét (pl. Motorola DSP56ADC16)).
2.4. D/A Konverzió A mintavételi tétel értelmében egy sávkorlátozott analóg jel visszaállítható mintáiból információveszteség és torzulás nélkül az alábbi összefüggéssel: x(t) = ∑n=-∞∞.x(nT) h(t-nT). Ez a folyamat egy interpolációs probléma, amire az ideális
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
interpolációs függvény: h(t) = sin(2Bt)/ 2Bt. Tulajdonképpen ez az interpolációs formula h(t) időbeli eltolásainak lineáris szuperpozíciója a megfelelő x(nT) mintákkal súlyozva. Ezt a folyamatot tekinthetjük lineáris szűrésnek is, aminek bemenetén rövid impulzusok diszkrét idejű sorozata található, a mintákkal megegyező amplitúdóval. Az analóg szűrő frekvencia-válasz függvénye: H(F) = T, ha |F| <= 1/2T és 0, ha |F| > 1/2T, ami egyszerűen a h(t) interpoláló függvény Fourier-transzformáltja (ami a szűrő impulzusválasz-függvénye lesz). Az ideális visszaalakító szűrő egy ideális aluláteresztő szűrő lesz, aminek impulzusválasza nem véges. Tehát a szűrő nem kauzális és fizikailag nem megvalósítható. A gyakorlati D/A konverzió során a tulajdonképpeni D/A átalakítást egy Sample-and-hold és egy aluláteresztő szűrő követi. A D/A konverter egy bináris szónak megfelelő elektromos jeleket kap a bemenetén és a szónak megfelelő feszültséget vagy áramot állít elő a kimenetén. A D/A átalakító egyik fontos paramétere a settling time, ami a kódszó betáplálása és a kimeneten megjelenő végső érték (korlátolt mértékű (általában +- ½ LSB) ingadozással) megjelenése között eltelt időt jelenti. A kimenet gyakran egy nagy impedanciájú állapot. Ez abban az esetben fordul elő, ha két egymást követő kódszó néhány bitben különbözik. Ezen probléma kiküszöbölésére használnak a D/A konverter után egy mintavételező és –tartó egységet (S/H). Feladata a konverter előző értékének tartása, amíg az új minta a konverter kimenetén eléri a steady-state állapotot. Ekkor ezt mintavételezi és tartja a következő mintavételi időintervallumban. Így a S/H az analóg jelet téglalap alakú impulzusok sorozataként közelíti, amik magassága megegyezik a megfelelő jel értékével. Mivel a S/H frekvencia-karakterisztikájának nincs egy éles levágása, sok átfedő (Fm/2-nél nagyobb frekvenciájú) komponens jelenik meg a kimenetén. Ennek kiküszöbölésére általában egy aluláteresztő szűrőn megszűrik a jelet, ami jelentősen csillapítja az Fm/2-nél magasabb frekvenciájú komponenseket. Ezen kívül simítja is a jelet az éles diszkontinuitások eltávolításával.
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
Az előbb tárgyalt S/H-on kívül a jel visszaállításának egy másik lehetséges módja az első-rendű tartó alkalmazása. Az első-rendű tartó az x(t) jelet a jelenlegi x(nT) minta és a megelőző x(nT-T) minta alapján közelíti: x^(t) = x(nT) + ((x(nT) - x(nT-T))/T) * (t-nT), ahol nT <= t < (n+1)T. Lineáris szűrőként nézve az első-rendű tartó impulzusválasza: h(t) = 1+ t/T, ha 0<=t<=T, 1- t/T, ha T<=t<2T és 0 egyébként. Mivel ez a visszaállítási technika is torzít az Fm/2-nél nagyobb frekvenciájú komponensek átengedése által, itt is szükséges aluláteresztő szűrő használata. Az első-rendű tartó a jelenlegi és egy múltbeli mintát használ a jel visszaállítására. Ezekből megpróbálja lineárisan becsülni a következő mintát. Ennek eredményeképpen a becsült jel hullámformájában a mintavételi pontoknál ugrások vannak. Ezek az ugrások elkerülhetők egy egy-mintás késleltetés alkalmazásával. Így az interpolált jel: x^(t) = x(nT-T) + ((x(nT) - x(nTT))/T) * (t-nT), ahol nT <= t < (n+1)T. Megfigyelhetjük, hogy a jel visszaállításában T idejű késleltetés van. Lineáris szűrőként tekintve az impulzusválasz: h(t) = t/T, ha 0<=t<=T, 2- t/T, ha T<=t<2T és 0 egyébként. A frekvenciaválaszból látszik, hogy a nagysága gyorsan leesik és csak kis „hullámokat” tartalmaz az Fm mintavételi frekvencián túl. Egy aluláteresztő szűrő alkalmazásával a magas frekvenciás komponensek tovább csökkenthetők.
2.5. Oversampling D/A Konverterek A túlmintavételező D/A konverter két részre osztható: egy digitális és egy azt követő analóg részre. A digitális rész egy interpoláló szűrőből és egy sigmadelta modulátorból áll. Az interpolátor megnöveli a digitális mintavétel gyakoriságát az egymást követő ritka minták közé nullákat illesztve. Ezt a jelet egy B/Fm levágási frekvenciájú digitális szűrőn megszűrik, hogy elkerüljék a bemeneti jelspektrum ismétlődéseit. Ezt a „gyakoribb” jelet táplálják az SDMbe, ami 1-bites mintákat generál. Minden 1-bites mintát az analóg részben található 1-bites D/A konverterbe táplálnak, aminek kimenetén megjelenő jelet átengedik az analóg részt alkotó másik egységen, az analóg antialiasing és
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
simító szűrőn. Ezek a szűrők a nulla és B közötti frekvencián sáváteresztőként működnek, viszont a B és Fm/2 közötti frekvenciákon simítják a jelet és eltávolítják a kvantálási hibát. Gyakrolatban az oversampling D/A és A/D átalakítóknak sok előnye van a hagyományosabb D/A és A/D konverterekkel szemben. Először is, a magas mintavételi frekvencia és a digitális szűrés mellett nincs szükség bonyolult és drága analóg antialiasing szűrőkre. Továbbá a konverzió során fellépő analóg zajok kiszűrődnek. Ezen kívül nincsen szükség S/H áramkörökre. Az oversampling SDM A/D és D/A átalakítók nagyon szilárdak az analóg áramköri paraméterek változásaira, természetüknél fogva lineárisak és olcsók.
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
FÜGGELÉK
1. ábra - Mintavételezés
2. ábra - Lineáris kvantálás és annak karakterisztikája
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
3. ábra - Logaritmikus kvantáló és karakterisztikája
4. ábra - D/A átalakítás kis pontossággal
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
Függvények MatLab forráskódja function f = sampler(x_in,sf) % SAMPLER Sampler function % % Usage: sampler(x,Sf) % where x = input vector % Sf = sampling frequency % error(nargchk(2,2,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end ii=1; for iv=1:sf:dim, f(ii)=x_in(iv); ii=ii+1; end subplot(2,1,1), plot(x_in), title('Original analog signal'), xlabel('time'), ylabel ('amplitude'); subplot(2,1,2), plot(f), title('Digitized signal'), xlabel('time'), ylabel('amplitude'); %EOF SAMPLER.M function f = spectrum(x_in) % SPECTRUM 512-point spectrum function % % Usage: spectrum(x) % where x = input vector % error(nargchk(1,1,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end N=512; Y=fft(x_in,N); Pyy=Y.*conj(Y)/N; f=1000*(0:N/2)/N; subplot(2,1,1), plot(x_in), title('Original ('amplitude'); subplot(2,1,2), plot(f,Pyy(1:257)), title('The ('frequency (Hz)');
signal'), spectrum
xlabel('time'), of
the
%EOF SPECTRUM.M
function max = quantizer(x_in,bn) % QUANTIZER Quantizer function % % Usage: quantizer(x,bn) % where x = input vector % bn = bit number (quantization resolution) % error(nargchk(2,2,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end
-
signal'),
ylabel xlabel
A/D átalakítás
©Csercsa Richárd & Magony Andor
% maximális amplitúdó keresése max=0; for iv=1:dim, if abs(x_in(iv)) > max max = abs(x_in(iv)); end end N=2^bn; delta=(2*max)/(N-1); for iv=1:dim, diff=max; for ii=0:N, if abs(x_in(iv)-(max-ii*delta)) < diff diff=abs(x_in(iv)-(max-ii*delta)); e(iv)=diff; f(iv)=max-ii*delta; end end end for ik=0:N-1, k(ik+1)=max-ik*delta; end subplot(321), plot(x_in), title('Original sampled signal'), xlabel('time'), ylabel ('amplitude'); subplot(322), plot(f,'r'), title('Quantized signal'), xlabel('time'), ylabel ('amplitude'); subplot(323), stem(f), title('Quantized signal'), xlabel('time'), ylabel('amplitude'); subplot(324), stem(k), title('Quantization characteristic'), xlabel('time'), ylabel ('amplitude'); subplot(325), plot(x_in), title('Quantization error characteristic'), xlabel('time'), ylabel('amplitude'); hold on; plot(f,'r'); hold off; subplot(326), stem(e), title('Quantization error'), xlabel('time'), ylabel('amplitude'); %EOF QUANTIZER.M
function f = logquantizer(x_in,bn) % LOGQUANTIZER Logquantizer function % % Usage: logquantizer(x,bn) % where x = input vector % bn = bit number (quantization resolution) % error(nargchk(2,2,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end % maximalis amplitudo keresese max=0; for iv=1:dim, if abs(x_in(iv)) > max max = x_in(iv); end end for ii=0:2^(bn-1)-1, level(ii+1)=max*(1/(2^ii)); end for ii=0:2^(bn-1)-1, level(2^bn-ii)=-max*(1/(2^ii)); end for iv=1:dim, diff=max; if x_in(iv)>0, for ii=1:2^(bn-1), if abs(x_in(iv)-level(ii)) < diff,
-
A/D átalakítás
else
end
end
end
end
©Csercsa Richárd & Magony Andor diff=abs(x_in(iv)-level(ii)); e(iv)=diff; f(iv)=level(ii);
for ii=0:2^(bn-1)-1, if abs(x_in(iv)-level(2^bn-ii)) < diff, diff=abs(x_in(iv)-level(2^bn-ii)); e(iv)=diff; f(iv)=level(2^bn-ii); end end
subplot(321), plot(x_in), title('Original sampled signal'), xlabel('time'), ylabel ('amplitude'); subplot(322), plot(f,'r'), title('Quantized signal'), xlabel('time'), ylabel ('amplitude'); subplot(323), stem(f), title('Quantized signal'), xlabel('time'), ylabel('amplitude'); subplot(324), stem(level), title('Quantization characteristic'), xlabel('time'), ylabel ('amplitude'); subplot(325), plot(x_in), title('Quantization error characteristic'), xlabel('time'), ylabel('amplitude'); hold on; plot(f,'r'); hold off; subplot(326), stem(e), title('Quantization error'), xlabel('time'), ylabel('amplitude'); %EOF LOGQUANTIZER.M
function f = zoh(x_in,t) % ZOH Zero-order hold function % % Usage: zoh(x,t) % where x = input vector % t = period time % error(nargchk(2,2,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end for ii=1:dim, summa=0; for in=1:dim, if in>=ii, h=0; else h=sin((pi/t)*(ii-in))/((pi/t)*(ii-in)); end G=x_in(in)*h; summa=summa+G; end f(ii)=summa; end %for iv=1:sf:dim, % f(ii)=x_in(iv); % ii=ii+1; %end subplot(211), plot(x_in), title('Original analog signal'), xlabel('time'), ylabel ('amplitude'); subplot(212), plot(f), title('Digitized signal'), xlabel('time'), ylabel('amplitude'); %EOF ZOH.M function f = lpf(x_in,lk,Fs) % LPF Lowpass filter function % % Usage: lpf(x,Fs) % where x = input vector % lk = lépésköz % Fs = period time %
-
A/D átalakítás
©Csercsa Richárd & Magony Andor
error(nargchk(3,3,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end X=fft(x_in,dim); v=(1:dim)/dim*(dim*lk); w=(1:dim/2)/(dim/2)*(1/(2*lk)); u=(1:Fs); for ii=1:dim, if ii>Fs/2, h(ii)=0; else h(ii)=1/Fs; end end F=h.*abs(X); f=ifft(F); subplot(321), plot(v,x_in), title('Original analog signal'), xlabel('time'), ylabel ('amplitude'); subplot(322), plot(w,abs(X(1:floor(dim/2)))), title('Original signal in frequency domain'), xlabel('frequency'), ylabel('amplitude'); subplot(323), plot(u,abs(h(1:floor(Fs)))), title('Lowpass filter'), xlabel('frequency'), ylabel('amplitude'); subplot(324), plot(w,abs(F(1:floor(dim/2)))), title('Filtered signal'), xlabel('frequency'), ylabel('amplitude'); subplot(325), plot(v,f), title('Reconstructed analog signal'), xlabel('time'), ylabel ('amplitude'); %EOF LPF.M function f = lpf2(x_in,lk,Fs) % LPF2 Lowpass filter function % % Usage: lpf2(x,Fs) % where x = input vector % lk = lépésköz % Fs = period time % error(nargchk(3,3,nargin)); if size(x_in,1) > size(x_in,2), dim=size(x_in,1); else dim=size(x_in,2); end X=fft(x_in,dim); v=(1:dim)/dim*(dim*lk); w=(1:dim/2)/(dim/2)*(1/(2*lk)); u=(1:Fs); [b,a]=ellip(1,0.5,20,0.99); [H,r]=freqz(b/Fs,a,512); f=filter(b/Fs,a,x_in); F=fft(f,dim); subplot(321), plot(v,x_in), title('Original analog signal'), xlabel('time'), ylabel ('amplitude'); subplot(322), plot(w,abs(X(1:floor(dim/2)))), title('Original signal in frequency domain'), xlabel('frequency'), ylabel('amplitude'); subplot(323), plot(r*Fs/(2*pi),abs(H)), title('Lowpass filter'), xlabel('frequency'), ylabel ('amplitude'); subplot(324), plot(w,abs(F(1:floor(dim/2)))), title('Filtered signal'), xlabel('frequency'), ylabel('amplitude'); subplot(325), plot(v,f), title('Reconstructed analog signal'), xlabel('time'), ylabel ('amplitude'); %EOF LPF2.M
Felhasznált irodalom Levendovszky János: Digitális jelfeldolgozás, órai jegyzetek Gyimesi E: Mintavételezés, kvantálás, kódolás Kalotay Béla: Audio jelek digitalizálása és tömörítő kódolása -
A/D átalakítás
©Csercsa Richárd & Magony Andor
Sampling and Reconstruction of Signals – jegyzet
-