You are on page 1of 75

OSK Mladen Vučić

11 Obrada signala u programski izvedenim prijemnicima

11.1 Primjer prijemnika s uzorkovanjem u osnovnom


frekvencijskom području
• blokovska shema cijelog sustava

• LPF - niskopropusni analogni antialiasing filtar


• ATT - digitalno programabilan atenuator
- služi da bi se postigla optimalna razina signala na ulazu u A/D
pretvarač
• ANALOG PROC. - analogna predobrada koja obuhvaća
- pojačalo fiksnog pojačanja
- sklopovlje za dodavanje šuma koji služi za smanjivanje utjecaja
nelinearnosti pretvarača
• OSC - izvor takta
• FPGA sklop
- sadrži cjelokupno digitalno sklopovlje
- digitalni prijemnik
- izlazni interpolator
- generator šuma za ulazne krugove
- mikrokontroler za komunikaciju i upravljanje

201
OSK Mladen Vučić

• blokovska shema digitalnog prijemnika

• uočiti
- koristi se kompleksno miješanje i obrada kompleksne ovojnice
- izvor kvadraturnog signala je numerički upravljan digitalni sintezator
frekvencije (Numerically Controlled Oscilator, NCO)
- koristi se višetaktna obrada signala
- broj bitova signala raste kako prema izlazu sklopa

• u daljnjem tekstu bit će objašnjeni ključni momenti dizajna pojedinih sklopova

202
OSK Mladen Vučić

11.2 Takt uzorkovanja


• takt uzorkovanja određuje trenutke "očitavanja" vremenski kontinuiranog
signala
• u idealnom slučaju
- vremenski trenuci su ekvidistantni
⇒ bridovi takta pojavljuju se u trenucima kTs
• u praksi
- postoji podrhtavanje bridova takta (clock jitter)
⇒ bridovi takta pojavljuju se u trenucima kTs +tj(kTs)

• uočiti
- podrhtavanje bridova je fazna modulacija signala takta

• uzmimo kao primjer sinusni signal


u (t ) = U m sin(2πft )

- pogreška u amplitudi uzrokovana pomakom trenutka uzorkovanja


proporcionalna je derivaciji signala

du (t )
∆u j (t ) = ∆t j
dt
∆u j (t ) = U m 2πf cos(2πft ) ⋅ ∆t j
- najgori slučaj
∆u j max (t ) = U m 2πf ⋅ ∆t j

203
OSK Mladen Vučić

- ukoliko je poznata efektivna vrijednost (RMS) podrhtavanja brida takta,


efektivna vrijednost pogreške iznosi
U jRMS max = U m 2πf ⋅ t jRMS

- dobiveni izraz predstavlja efektivnu vrijednost šuma koji je posljedica


podrhtavanja brida takta
- najnepovoljniji odnos signal/šum u ovom slučaju je
Um / 2
SNR = 20 log10 = −20 log10 (2 2πf ⋅ t jRMS )
U m 2πf ⋅ t jRMS

• uočiti
- dobiveni šum nema veze s kvantizacijom amplitude
- šum je veći za višu frekvenciju ulaznog signala
⇒ prijemnici s poduzorkovanjem su osjetljivi na "clock jitter"
• opisani model temeljen je na najgorem slučaju, ali (nažalost !) pokazuje se
dobrim za procjenu utjecaja podrhtavanja brida takta
• u literaturi se mogu naći i točniji (čitaj složeniji) modeli koji uzimaju u obzir
spektralna svojstva signala i dr.

Primjer 11.1
Sinusni signal frekvencije 225MHz uzorkovan je frekvencijom uzorkovanja
od 50MHz. Koliko smije najviše iznositi apsolutno i relativno podrhtavanje brida
takta da dobiveni odnos signal/šum ne bude lošiji od 60dB?

Rješenje
• absolutno podrhtavanje
- polazimo od izvedenog izraza za SNR
SNR > −20 log10 (2 2πf ⋅ t jRMS )

- podrhtavanje se dobiva kao


SNR
1 −
t jRMS < 10 20
2 2πf
- u zadanom slučaju
60
1 −
t jRMS < 10 20 = 5e − 13 s = 0.5 ps !!!
2 2π 225e6Hz
204
OSK Mladen Vučić

• relativno podrhtavanje
t jRMS
= t jRMS f s
Ts

- u zadanom slučaju
t jRMS f s = 5e − 13 s ⋅ 50e6Hz = 2.5e − 5 !!!

• uočiti
- period uzorkovanja iznosi Ts=20ns
- podrhtavanje (RMS) mora biti 5 redova veličine manje od Ts

• podrhtavanje bridova takta ne nastaje samo u oscilatoru, već i u sklopovima


kroz koje signal prolazi
⇒pažljivo projektirati sklopovlje za distribuciju takta
- takt se na A/D pretvarač često dovodi diferencijalno
- digitalno sklopovlje unosi veliko podrhtavanje

• primjer podrhtavanja koje unosi digitalno sklopovlje

Logički sklop Podrhtavanje


FPGA 33ps do 50ps
74LS00 4.94ps
74HCT00 2.2ps
74ACT 0.99ps
MC100EL16 (PECL) 0.70ps
AD9510
0.22ps
(namjenski sklop za distribuciju takta)
NBSG16
0.20ps
(ECL sa smanjenim hodom signala)

- usporediti vrijednosti tablice s gornjim primjerom


- uočiti
- sklopovi bržih familija unose manje podrhtavanje
⇒noviji FPGA sklopovi unose manje podrhtavanje

205
OSK Mladen Vučić

11.3 A/D pretvarač


• AD pretvarač kao komponenta obično objedinjuje
- ulazni krug
- npr. pojačalo
- sklop za uzimanje i zadržavanje uzoraka (Sample and Hold, S&H)
- kvantizacija vremena
- kvantizator amplitude
- u prijemnicima se koristi uniformna kvantizacija
• svaki od ovih podsustava unosi pogreške

11.3.1 Izvori pogrešaka kod A/D pretvarača

• šum ulaznih krugova


• A/D pretvarači često se koriste za poduzorkovanje
⇒frekvencijsko područje u kojem rade ulazni krugovi je široko
ω3dB >> ω s max
⇒uzorkovanjem će se šum svih aliasa preklopiti u željeno frekvencijsko
područje

206
OSK Mladen Vučić

Primjer 11.2
A/D pretvarač radi na frekvenciji uzorkovanja od fs=50MHz. Granična
frekvencija ulaznog kruga iznosi fg=600MHz. Šum ulaznog kruga može se
reprezentirati naponskim izvorom čiji efektivni napon Un= 5nV / Hz . Koliko iznosi
ekvivalentna snaga šuma na ulazu A/D pretvarača? Koliko iznosi efektivni napon
šuma na ulazu AD pretvarača?

Rješenje
• frekvencijsko područje 0<f<600MHz sadrži 24 područja širine fs/2
fg 600MHz
Na = = = 24
fs / 2 50MHz/2

• snaga šuma u jednom području na ulazu pretvarača (na 1Ω)


f 50e6
Pn1 = U n2 s = (5e − 9)2 ⋅ W = 6.25e − 10W
2 2

• svi ovi bandovi sadrže nekorelirani šum čije se snage zbrajaju

• snaga šuma na ulazu pretvarača iznosi


Pn = N a Pn1 = 24 ⋅ 6.25e − 10W = 1.5e − 8W

• efektivni napon šuma koji će se vidjeti na ulazu pretvarača (kao posljedica A/D
pretvorbe) iznosi
U nIN = Pn = 1.22e − 4V

• ova vrijednost odgovara šumu u frekvencijskom podučju [0,fs/2] od


Pn 1.5e − 8
= nV / Hz = 24.5nV / Hz
fs / 2 50e6/2

• uočiti
- snaga izlaznog šuma jednaka je snazi "cijelog" ulaznog šuma
- napon kojim se opisuje šum pretvarača ima veću spektralnu gustoću
snage od napona kojim se opisuje samo ulazni krug

207
OSK Mladen Vučić

• na isti ovaj način šumu doprinose i sve komponente koje se nalaze "ispred"
A/D pretvarača
⇒posebno treba paziti na ulazni NPF jer on uklanja aliase koji dolaze na
ulaz prijemnika (npr. iz antene)

• u praksi se ulazni šum normira na efektivnu vrijednost šuma jednog LSB-a


- efektivna vrijednost jednog LSB-a je
U LSB
U LSB,rms =
2
- jedan LSB izražen preko maksimalnog napona na ulazu pretvarača
2U m Um
U LSB = =
2N 2 N −1
- normirana vrijednost šuma
U nIN U nIN U nIN N
U nIN , LSB = = = 2
U LSB,rms U LSB Um
2

• šum uslijed podrhtavanja takta uzorkovanja


• ovaj šum je posljedica
- podrhtavanja brida takta (clock jitter), tcRMS
- vidi poglavlje "11.2 Takt uzorkovanja"
- pogreške trenutka uzorkovanja S&H sklopa (apperture jitter), taRMS
- obično daje proizvođač A/D pretvarača
• vrijednosti tcRMS i taRMS su efektivne vrijednosti pa ukupno podrhtavanje iznosi
2 2
t jRMS = t cRMS + t aRMS

• šum kvantizacije
• pretpostavimo
- uniformnu kvantizaciju
- broj bitova A/D pretvarača, N
⇒2N razina
- broj bitova je dovoljno velik
⇒pogreška kvantizacije ima približno jednoliku raspodjelu
vjerojatnosti

208
OSK Mladen Vučić

• snaga šuma kvantizacije (vidi SPUS)


2
2 U LSB
σQ =
12

• pretpostavimo da je na ulazu u pretvarač sinusni signal maksimalne moguće


amplitude
u (t ) = U m sin(2πft )

• jedan LSB odgovara naponu od


2U m Um
U LSB = =
2N 2 N −1

• odnos signal/šum u ovom slučaju je


2
Um /2
SNR = 10 log10
σ Q2

2
- uvrštavanjem izraza za σ Q i ULSB
2 2
Um /2 Um /2
SNR = 10 log10 = 10 log10
2 2
U LSB  Um 
 
12  2 N −1 
12
- sređivanjem se dobiva (poznato iz SPUS-a)
3   3
SNR = 10 log10  2 2 N  = 10 log10   + N ⋅ 20 log10 (2 )
2   2

SNR = 1.76 + 6.02 ⋅ N , dB

Primjer 11.3
Koliko iznosi SNR na izlazu 12 bitnog i 14 bitnog A/D pretvarača?

Rješenje
• primjena gornje formule
SNR12 = 1.76 + 6.02 ⋅ 12 = 74dB

SNR14 = 1.76 + 6.02 ⋅14 = 86dB

209
OSK Mladen Vučić

• nelinearnost
• idealan A/D pretvarač
- susjedni kodovi na izlazu dobivaju se za promjenu ulaznog napona od
∆uul = U LSB

• stvarni A/D pretvarač


- susjedni kodovi na izlazu dobivaju se za promjenu ulaznog napona od
∆uul = U LSB + u DNL
- vrijednost uDNL naziva se diferencijalna nelinearnost
(differential nonlinearity, DNL)
- u praksi se za A/D pretvarač specificira srednja DNL, UDNL, koja se
često izražava u broju LSB-ova, tj. kao
U DNL
ε= , LSB
U LSB

• očito je da DNL povećava efektivnu kvantizacijsku razinu koja odgovara


jednom bitu
⇒šum koji je rezultat ovakve (neuniformne) kvantizacije ima snagu

2
2
(U LSB + U DNL )2 U LSB (1 + ε )2
σQ = =
12 12
⇒odnos signal/šum u ovom slučaju je
2
Um /2
SNR = 10 log10
σ Q2
2 2
Um /2 Um /2
SNR = 10 log10 = 10 log10
2
U LSB (1 + ε )2  Um 
2
  (1 + ε )2
12  2 N −1 
12
- sređivanjem se dobiva
3 1 
SNR = 10 log10  ⋅ 2 2 N ⋅
2 (1 + ε ) 2 

SNR = 1.76 + 6.02 ⋅ N − 20 log10 (1 + ε ) , dB

210
OSK Mladen Vučić

Primjer 11.4
Koliko iznosi smanjenje SNR kod A/D pretvarača koji imaju diferencijalnu
nelinearnost od 0.5 LSB i 1 LSB u odnosu na pretvarač koji nema nelinearnosti?

Rješenje
• primjena gornje formule
SNR = 1.76 + 6.02 ⋅ N − 20 log10 (1 + ε )

• SNR se smanjio (pogoršao) za


∆SNR = 20 log10 (1 + ε ) dB = 20 log10 (1 + 0.5) dB = 3.52 dB

∆SNR = 20 log10 (1 + ε ) dB = 20 log10 (1 + 1) dB = 6.02 dB

• manji SNR nije jedini problem koji proizlazi iz nelinearnosti A/D pretvarača
- za druge probleme vidi poglavlje koje obrađuje "dither"

• uočiti:
- dosad smo analizirali pojedinačne izvore šuma
• Koliko iznosi ukupan SNR A/D pretvarača?

• ukupni SNR A/D pretvarača

• neka je na ulazu u pretvarač sinusni napon najveće moguće amplitude


u (t ) = U m sin(2πft )

⇒njegova efektivna vrijednst


Um
U rms, sin =
2

• opisani izvori šuma su nekorelirani ⇒ snage se zbrajaju


- efektivna vrijednost pojedinih komponenata šuma
- podrhtavanje trenutka uzorkovanja
U jRMS max (t ) = U m 2πf ⋅ t jRMS

- kvantizacija i DNL

σ Q = U LSB
(1 + ε ) = U m (1 + ε )
=
Um
(1 + ε )
2 3 N −1 2 3 N
2 2 3
211
OSK Mladen Vučić

- šum ulaznog kruga


U nIN

- ukupna efektivna vrijednost napona šuma


2
 U 
U nAD = (U m 2πf ⋅ t jRMS ) 2
+  m (1 + ε ) + (U nIN )2
N
2 3 

• SNR
U nAD
SNRsin = −20 log10
U rms,sin

2
 U 
(U m 2πf ⋅ t jRMS ) 2
+  m (1 + ε ) + (U nIN )2
N
2 3 
SNRsin = −20 log10
Um
2

2 2
 2 (1 + ε )   2U nIN 
SNRsin = −20 log10 (2 2πf ⋅ t jRMS )
2
+ 
N
 +
  U


 2 3   m 

• ako je UnIN normiran


U nIN N U nIN , LSB ⋅ U m
U nIN , LSB = 2 → U nIN =
Um 2N

2 2
 2 (1 + ε )   2U nIN , LSB 
SNRsin = −20 log10 (2 2πf ⋅ t jRMS )
2
+ 
N
 +
 


 2 3   2N 

• neka je na ulazu u pretvarač pravokutni napon (približno) najveće moguće


amplitude
u (t ) = U m square(2πft )

⇒njegova efektivna vrijednst


U rms,square = U m

⇒efektivna vrijednost najveća pogreška kvantizacije


U
σ Q = U LSB (1 + ε ) = m (1 + ε )
2 N −1
212
OSK Mladen Vučić

• SNR
U nAD
SNRsquare = −20 log10
U rms,square

2
(U m 2πf ⋅ t jRMS ) 2 U 
+  m (1 + ε ) + (U nIN )2
 2N 
SNRsquare = −20 log10
Um

2 2
SNRsquare = −20 log10 (2πf ⋅ t jRMS ) 2  1 + ε   U nIN
+ 
N 
 + 


 2   Um 

• ako je UnIN normiran


2 2
 1 + ε   U nIN , LSB 
SNRsquare = −20 log10 (2πf ⋅ t jRMS )
2
+ 
N 
 + 
N

2   2 

• Posljednji izraz najčešće koriste proizvođači A/D pretvarača


• Razmisliti zašto proizvođači koriste model temeljen na pravokutnom, a ne na
sinusnom ulaznom signalu !

213
OSK Mladen Vučić

Primjer 11.5
Zadan je A/D pretvarač ADS5542. Pronaći u podacima proizvođača
parametre koji govore o šumu i komentirati ih.

Rješenje
• podaci is dokumentacije koju daje proizvođač
- broj bitova: N=14
- najveća frekvencija uzorkovanja: fs=80MHz
- tipična vrijednost srednje DNL: ε=0.5LSB
- efektivna vrijednost izlaznog šuma: UnIN,LSB=1.1LSB
- odnos signal/šum: SNR=70.7dB za f=220MHz
- podrhtavanje trenutka uzorkovanja: taPP=0.3ps (PP a ne RMS !)
• uočiti:
- SNR koji bi bio posljedica samo kvantizacije iznosi
SNR = 1.76 + 6.02 ⋅ N = 86dB > 70.7dB
⇒dominiraju drugi šumovi !!!
- SNR koji bi bio posljedica samo podrhtavanja trenutka uzorkovanja
(samo A/D bez oscilatora), taRMS= taPP/3 do taPP/6
- uz tjRMS=taPP/4 dobivamo
SNRsin = −20 log10 (2 2πf ⋅ t jRMS ) = 76.7dB

SNRsquare = −20 log10 (2πf ⋅ t jRMS ) = 79.7dB

• ukupan SNR, uz tjRMS=taPP/4


2 2
 2 (1 + ε )   2U nIN , LSB 
SNRsin = −20 log10 (2 2πf ⋅ t jRMS )
2
+ 
N
 +
  N 
= 74.4dB
 2 3   2 

2 2
 1 + ε   U nIN , LSB 
SNRsquare = −20 log10 (2πf ⋅ t jRMS ) 2
+   +   = 76.3dB
 2N   2N 

• uočiti:
- izraz predstavlja procjenu SNR-a
- mjerenje koje daje proizvođač od 70.7dB uključivalo je i clock jitter
- postoji i niz drugih izvora šumova koji ovdje nisu obrađeni

214
OSK Mladen Vučić

11.3.2 Processing gain


• kod A/D pretvarača snaga (vlastitog) šuma je jednoliko raspodijeljena u spektru
između frekvencija -fs/2 i fs/2
• pretpostavimo da nas zanima signal koji se nalazi u pojasu širine B oko
frekvencije f0

⇒željeno područje mogli bismo izdvojiti filtrom

• pretpostavimo da je na izlazu pretvarača signal čiji odnos signal/šum iznosi


SNRAD
• Koliko iznosi odnos signal/šum na izlazu filtra ako on ne unosi šum?
- pretpostavimo da spektralna gustoća snage na ulazu filtra iznosi
N /2
- snaga šuma na ulazu filtra (tj. u području -fs/2 i fs/2) iznosi
N f f
PnAD = ⋅2⋅ s = N s
2 2 2
- snaga šuma na izlazu filtra (tj. u području širine B) iznosi
N
PnF = ⋅ 2 ⋅ B = NB
2
- omjer snage šuma na izlazu i na ulazu filtra
f
N s
P 2 = fs
PG = nF =
PnAD NB 2B

- ovaj omjer predstavlja dobitak u odnosu signal/šum i naziva se


processing gain
- processing gain se često izražava u decibelima
 f 
PG = 10 log10  s , dB
 2B 

215
OSK Mladen Vučić

Primjer 11.6
Prijemnik koristi A/D pretvarač čiji SNRAD iznosi 70dB uz sinusni model
ulaznog signala, a ulazna dinamika ±Um=±1V. Pretvarač radi s frekvencijom
uzorkovanja fs=50MHz. Koliko mora iznositi snaga ulaznog signala koji se još
uvijek može detektirati, pod pretpostavkom da on zauzima frekvencijsko područje
širine B=3kHz.

Rješenje
• processing gain iznosi
 f   50e6 
PG = 10 log10  s  = 10 log10   = 39.2dB
 2B   2 ⋅ 3e3 

• SNR u željenom kanalu iznosi


SNR = SNR AD + PG = 70dB + 39.2dB = 109.2dB

• ova vrijednost često se u literaturi naziva "noise floor"


• pretpostavlja se da se signal može detektirati ukoliko je njegova snaga veća ili
jednaka snazi šuma
U min = U n

• pretpostavimo sinusni signal maksimalne moguće amplitude na ulazu u A/D


U2 
U 2   m 
SNR = 10 log10  s  = 10 log10  2 
U 2   U2 
 n  n 
 

• efektivna vrijednost šuma u željenom kanalu iznosi


SNR 109.2
Um − 1 −
Un = ⋅10 20 = ⋅10 20 = 2.5µV !!!
2 2

216
OSK Mladen Vučić

11.4 Reprezentacija brojeva u cjelobrojnoj aritmetici

• za reprezentaciju brojeva vidi "Digitalnu logiku" i slične predmete


• mnogi digitalni sustavi koriste implementaciju temeljenu na cjelobrojnoj
aritmetici (vidi DOS i PPDOS)
• zapisi binarnih brojeva koji se najčešće susreću su
- binarni s pomakom (Straight Offset Binary, SOB)
- ovaj format često daju A/D pretvarači
- dvojni komplement (Two's Complement, TC)
- na ovom formatu najčešće se temelji sva aritmetika
• prikaz ovih zapisa u 4-bitnoj aritmetici

Opis vrijednosti Binarni s pomakom Dvojni komplement


najveća vrijednost 1111(2) → 15(10) 0111(2) → 7(10)
1110(2) → 14(10) 0110(2) → 6(10)
1101(2) → 13(10) 0101(2) → 5(10)
1100(2) → 12(10) 0100(2) → 4(10)
1011(2) → 11(10) 0011(2) → 3(10)
1010(2) → 10(10) 0010(2) → 2(10)
1001(2) → 9(10) 0001(2) → 1(10)
0 1000(2) → 8(10) 0000(2) → 0(10)
0111(2) → 7(10) 1111(2) → -1(10)
0110(2) → 6(10) 1110(2) → -2(10)
0101(2) → 5(10) 1101(2) → -3(10)
0100(2) → 4(10) 1100(2) → -4(10)
0011(2) → 3(10) 1011(2) → -5(10)
0010(2) → 2(10) 1010(2) → -6(10)
0001(2) → 1(10) 1001(2) → -7(10)
najmanja vrijednost 0000(2) → 0(10) 1000(2) → -8(10)

• pretvorba SOB→TC
- invertiranje najznačajnijeg bita

• uočiti
- SOB i TC predstavljaju cjelobrojne vrijednosti
- ove vrijednosti po iznosu ne odgovaraju naponu koji se nalazi na ulazu
u A/D
⇒ možemo ih interpretirati na različite načine

217
OSK Mladen Vučić

• cjelobrojna interpretacija
- decimalna točka (radix point) podrazumijeva se iza zadnje znamenke
- npr., kod dvojnog komplementa
0111(2) → 7(10)
M
1000(2) → -8(10)

• fakcionalna interpretacija binarnih brojeva


- format zapisa označava se kao
broj_cjelobrojnih_bitova . broj_bitova_frakcije
- cjelobrojna interpretacija predstavljena je formatom 4.0

0111.(2) → 7.(10) /20 = 7.(10)


M
1000.(2) → -8.(10) /20 = -8.(10)

- decimalna točka može stajati i na drugim mjestima, npr. format 3.1

011.1(2) → 7.(10) /21 = 3.5(10)


M
100.0(2) → -8.(10) /21 = -4.0(10)

- najčešće se koristi format kod kojeg je točka odmah iza predznaka


⇒ u ovom slučaju to je format 1.3

0.111(2) → 7.(10) /23 = 0.875(10)


M
1.000(2) → -8.(10) /23 = -1.000(10)

⇒ za N bitova, dvojni komplement se prikazuje u zapisu


1.(N-1)

• u formatu 1.(N-1)
- brojevi su prikazani u normiranom obliku
⇒najmanji negativni broj je -1
⇒najveći pozitivni broj je 1-2-(N-1) (ne postoji broj +1 !!!)
- množenje uvijek daje broj u intervalu [-1, 1-2-(N-1)] osim za slučaj
(-1(10))×(-1(10))=1(10)
• uočiti
- točka se ne piše već se podrazumijeva
- točka zapravo uopće ne postoji (točka je zamišljena !!!)
218
OSK Mladen Vučić

11.5 Digitalno množilo

11.5.1 Ulazni i izlazni format


• množenje dvaju N-bitnih brojeva daje broj širine 2N

• pretpostavimo da su na ulazu množila dvojni komplementi u formatu 1.(N-1)


• primjer
- format ulaznih podataka je 1.17
⇒ format izlaznih podataka bit će 2.34
• uočiti
- izlaz ima mnooogo bitova
⇒ sklopovlje koje slijedi iza množila je složeno
⇒ neke bitove treba odbaciti
• Pitanje
- Koliko bitova sa izlaza množila uzeti u daljnju obradu?
- Koje bitove uzeti?

11.5.2 Podešavanje položaja frakcije


• podsjetimo se:
- u formatu 1.(N-1) množenje uvijek daje broj u intervalu [-1, 1-2-(N-1)]
osim za slučaj množenja dvaju najnegativnijih brojeva
(-1(10))×(-1(10))=1(10)
• ovaj slučaj se ne pojavljuje u praksi
- ako se ovaj slučaj pojavi, nešto nije u redu (zasićenje !!!)
• u svim ostalim slučajevima mantisa je manja od 1
⇒bitovi lijevo od decimalne točke predstavljaju proširenje predznaka
(sign extension), tj.
S=X

• zaključak
⇒možemo zanemariti MSB na izlazu množila
219
OSK Mladen Vučić

• Implementacija množila na FPGA sklopovima

• današnji FPGA sklopovi imaju ugrađena množila oblika


(primjer: Xilinx Spartan i Virtex familije)

• dizajner mora sam zanemariti MSB rezultata množenje


⇒pripadajući signal (bit 35) se jednostavno ne koristi

• ukoliko je potrebno paziti na zasićenje, slučaj (-1(10))×(-1(10)) treba presresti


dodatnim sklopovljem
⇒ukoliko je S≠X, izlaz množila mora dati 0111111...

• Implementacija množila na DSP procesorima

• kod DSP procesora množilo se može konfigurirati po želji da automatski


- zanemari MSB rezultata, tj. pomakne rezultat za jedno mjesto ulijevo
i/ili
- presreće slučaj (-1(10))×(-1(10)) i kao rezultat umjesto 1(10) daje najveći
pozitivan broj, 1-2-(N-1)

220
OSK Mladen Vučić

11.5.3 Odsijecanje rezultata množenje

• Koliko bitova sa izlaza množila uzeti u daljnju obradu?


⇒Gdje odsjeći rezultat množenja?

• podsjetimo se (SPUS)
- pretpostavimo da su x i y nezavisni procesi
⇒ u tom slučaju vrijedi
E [x ⋅ y ] = E [x ]⋅ E [ y ]

[
- Koliko iznosi E x 2 ⋅ y 2 ? ]
- možemo pisati
[ ]
x 2 = x 2 + xost = E x 2 + xost

y 2 = y 2 + yost = E [y 2 ]+ yost
- uvrštavanje daje

[ ] 
[ ][ 
E x 2 ⋅ y 2 = E  E ( x 2 ) + xost ⋅ E ( y 2 ) + yost 
 
]

[ ] [
E x 2 ⋅ y 2 = E E ( x 2 ) ⋅ E ( y 2 ) + E ( x 2 ) ⋅ yost + E ( y 2 ) ⋅ xost + xost ⋅ yost ]
E [x 2 ⋅ y 2 ] = E [E ( x 2 ) ⋅ E ( y 2 )] + E [E ( x 2 ) ⋅ yost ]+ E [E ( y 2 ) ⋅ xost ]+ E [xost ⋅ yost ]

= E(x2 ) ⋅ E( y 2 ) =0 =0 =0
⇒1. pribrojnik: očekivanje produkta konstanti je produkt
konstanti
⇒2. i 3. pribrojnik: očekivanje produkta konstante i šuma bez
srednje vrijednosti daje 0
⇒ukoliko su xost i yost nekorelirani (što je u praksi razumna
pretpostavka), očekivanje njihovog produkta je 0

- konačan rezultat

[
E x2 ⋅ y2 ] = E( x2 ) ⋅ E( y 2 )
221
OSK Mladen Vučić

• pretpostavimo da su na ulazima množila signali kvantizirani po amplitudi


- prvi ulaz
- signal
xq1[n] = x1[n] + q1[n]

- snaga signala (tj. snaga komponente x1[n]) neka iznosi


Px1
- snaga kvantizacijskog šuma
2
2 U LSB1
Pq1 = σ Q1 =
12
- odnos signala i šuma
P
SNRx1 = 10 log10 x1
Pq1

- drugi ulaz
- signal
xq 2 [n] = x2 [n] + q2 [n]

- snaga signala (tj. snaga komponente x2[n])


Px 2
- snaga kvantizacijskog šuma
2
2 U LSB 2
Pq 2 = σ Q 2 =
12
- odnos signala i šuma
P
SNRx 2 = 10 log10 x 2
Pq 2

• pretpostavka
- šumovi q1[n] i q2[n] su statistički nezavisni

222
OSK Mladen Vučić

• na izlazu množila dobit ćemo signal


y[n] = xq1[n] ⋅ xq 2 [n]

y[n] = {x1[n] + q1[n]}⋅ {x2 [n] + q2 [n]}

y[n] = x1[n] ⋅ x2 [n] + x2 [n] ⋅ q1[n] + x1[n] ⋅ q2 [n] + q1[n] ⋅ q2 [n]


↑ ↑ ↑ ↑
Px12 = Px1Px 2 Pn1 = Px 2 Pq1 Pn2 = Px1Pq 2 Pn3 = Pq1Pq 2

• pretpostavimo da su razine ulaznih signala puno veće od LSB razine, tj.


Px1 >> Pq1 i Px 2 >> Pq 2

⇒u tom slučaju možemo zanemariti Pn3 jer


Pn3 << Pn1 i Pn3 << Pn 2

• odnos signala i šuma na izlazu množila


Px12
SNR y = 10 log10
Pn1 + Pn 2

Px1Px 2
SNR y = 10 log10
Px 2 Pq1 + Px1Pq 2

• pretpostavimo da su snage signala, Px1 i Px2, te broj kvantizacijskih razina, N,


jednaki na oba ulaza množila
Pq1 = Pq 2
Px1 = Px 2
Px1 P
SNR y = 10 log10 = 10 log10 x1 − 3dB
2 Pq1 Pq1

• uočiti
- usporediti SNRy s SNRx1 i SNRx2
⇒ SNR nakon množenja je lošiji za 3dB !!!
- na izlazu množila još nismo napravili odsijecanje !!!
⇒ odsijecanje unosi dodatni šum kvantizacije
2
2 U LSB 3
Pq3 = σ Q3 =
12
223
OSK Mladen Vučić

• pretpostavimo da na izlazu iz množila odsiječemo riječ na N bitova


- npr. množilo sa širinama riječi 12 bitova × 12 bitova → 12 bitova
⇒ na izlazu ćemo dodati novi šum kvantizacije iznosa
Pq3 = Pq1 = Pq 2

⇒ odnos signala i šuma iznosi


Px1Px 2
SNR y1 = 10 log10
Px 2 Pq1 + Px1Pq 2 + Pq3
Pq1 = Pq 2 = Pq3
Px1 = Px 2

Px21 Px21
SNR y1 = 10 log10 = 10 log10
2 Px1Pq1 + Pq1 Pq1( 2 Px1 + 1)

P Px1
SNR y1 = 10 log10 x1 + 10 log10
Pq1 2 Px1 + 1

• uočiti
- drugi pribrojnik je uvijek negativan
⇒ dodatno smanjenje SNR
- npr.
⇒ x1 s vrijednostima u intervalu [-1,1) redovito ima snagu manju od
1/2 (tu snagu bi imao sinusni signal)
1 Px1
Px1 = ⇒ 10 log10 = −6dB
2 2 Px1 + 1

- odsijecanje na istu širinu kao i ulazne riječi smanjuje SNR barem za


dodatna 3dB
- u praksi se na izlazu množila uzima riječ koja je dva do tri bita šira od
uže od dviju ulaznih riječi

224
OSK Mladen Vučić

11.5.4 Zaokruživanje rezultata množenja


• gornja analiza bavila se šumom koji nastaje kod odsijecanja
• postoje i drugi problemi koji se javljaju kod odsijecanja

• odsijecanje dvojnog komplementa predstavlja zaokruživanje "prema dolje"


- primjer

0.1101101(2) = 0.85156250(10) → 0.1101(2) = 0.8125000(10)

1.1101101(2) = -0.14843750(10) → 1.1101(2) = -0.1875000(10)


- problem koji nastaje zbog zaokruživanja prema dolje
- srednja vrijednost pogreške odsijecanja iznosi polovinu LSB-a
⇒ pojava DC komponente
- primjer
- odsijecanje na 5 bitova
S.XXXXYYY(2) → S.XXXX(2)
⇒ DC vrijednost iznosi 2-5
- rješenje
- treba napraviti zaokruživanje a ne odsijecanje

• Implementacija zaokruživanja na FPGA sklopovima


• pretpostavimo da se želi napraviti zaokruživanje na ukupno 5 bitova
S.ABCDEFG(2) → S.ABCD(2)

- ako je EFG<0.5D zaokružuje se prema dolje


- ako je EFG≥0.5D zaokružuje se prema gore
• na primjer
0.1010000(2) → 0.1010(2)
0.1010001(2) → 0.1010(2)
0.1010010(2) → 0.1010(2)
0.1010011(2) → 0.1010(2)
0.1010100(2) → 0.1011(2)
0.1010101(2) → 0.1011(2)
0.1010110(2) → 0.1011(2)
0.1010111(2) → 0.1011(2)
• uočiti
- smjer zaokruživanja ovisi samo o bitu E
225
OSK Mladen Vučić

• Kako ovo izvesti sklopovski?


- nakon odsijecanja pribrojiti broju S.ABCD broj 0.000E

• uočiti
- i dalje ostaje mala DC vrijednost jer se 0.5 uvijek zaokružuje
"prema gore"
- ovo je u praksi uglavnom zanemarivo

• Implemetacija zaokruživanja na DSP procesorima

• DSP procesori imaju urađeno sklopovlje za zaokruživanje


• množila se mogu konfigurirati da
- odsijecaju rezultat
- zaokružuju rezultat
- obrađuju slučaj kad je dio koji se odsijeca jednak točno 0.5
⇒ zaokružuje neki put na gore a neki put na dolje (upravljano
generatorom slučajnih brojeva)

226
OSK Mladen Vučić

11.5.5 Pojačanje miješala

• tipična primjena množila je transpozicija frekvencije


• pretpostavimo da su ulazi u miješalo
- sinusni signali najveće moguće amplitude
- format 1.(N-1)
• transpozicija frekvencije
- lokalni oscilator
1
xl (t ) = cos(2πf0t ) t = nTs = n
fs
 f 
xl [n] = cos  2π 0 n  = cos[ω0n ]
 fs 

- ulazni signal
xul [n ] = cos[ωul n]

- izlaz iz miješala
y[n ] = cos[ω0n] ⋅ cos[ωul n]

1
y[n] = {cos[(ω0 − ωul )n] + cos[(ω0 + ωul )n]}
2
- filtrom se uklanja npr. gornja komponenta i dobiva se
1
ytransp.[n] = cos[(ω0 − ωul )n]
2

• uočiti
1
- pojačanje amplitude miješala iznosi
2
- ovo pojačanje može se kompenzirati filtrom ili drugim sklopom koji
slijedi iza množila

227
OSK Mladen Vučić

11.6 Decimacija
• kod kompleksnog miješanja kompleksna ovojnica nalazi se na frekvencijama
oko 0
• kompleksna ovojnica zauzima mali dio Nyquistovog frekvencijskog područja tj.
f s >> B

• obrada signala na visokim frekvencijama uzorkovanja traži veliku procesnu


moć
• primjer
- pretpostavimo
fs=50MHz
- uzmimo DSP čija je frekvencija takta fclk=500MHz
- neka trajanje MAC instrukcije iznosi 1 period takta
⇒cijela procesna moć bit će potrošena za realizaciju FIR filtra 9. reda
⇒prije daljnje obrade potrebno je napraviti decimaciju

• ovakva obrada naziva se višetaktna obrada signala


(multirate signal processing)

11.6.1 Princip decimacije


• Kako smanjiti frekvenciju uzorkovanja za proizvoljan faktor?
⇒decimacija - smanjivanje frekvencije uzorkovanja (vidi DOS)
• idealan decimator

• primjer
- faktor decimacije
R=3
- uzima se svaki treći uzorak
⇒ nova frekvencija uzorkovanja
f f
f s 2 = s1 = s1
R 3
228
OSK Mladen Vučić

⇒da ne bi došlo do aliasinga, potrebno je ukloniti komponente na


frekvencijama f>fs/3
⇒ amplitudna karakteristika filtra

• razlikujemo decimatore
- visokog stupnja (R>10)
- niskog stupnja
• problemi u dizajnu decimatora
- gušenje filtra u području gušenja mora biti veliko
- za veliki R je područje propuštanja filtra jako usko
- ako je fs velika potrebna je velika procesna moć sklopovlja
- ovo "potroši" velik dio procesne moći procesora
⇒ kod velikih fs, decimatori se često izvode sklopovski
(a ne pomoću DSP procesora)
• Problem: Kako napraviti strm i uzak filtar na velikom fs?
- filtar mora imati visok red
⇒ traži mnogo množenja po uzorku
• Rješenje
⇒CIC decimator

11.6.2 CIC decimator


• Cascaded Integrator Comb, CIC
• pogodan za veliki R
• ne sadrži množila

229
OSK Mladen Vučić

• CIC decimator prvog reda


• uzmimo FIR filtar čiji je impulsni odziv

1
h[n] = {δ [n] + δ [n − 1] + L + δ [n − R + 1]}
R

• Što radi ovakav filtar?


- izlazni signal

y[n] = x[n] ∗ h[n] = ∑ x[k ]h[n − k ]
k = −∞

1 ∞
y[n] = ∑ x[k ]{δ [n − k ] + δ [n − k − 1] + L + δ [n − k − R + 1]}
R k = −∞

1
y[n ] = {x[n] + x[n − 1] + L x[n − R + 1]}
R
⇒filtar usrednjava R uzoraka signala

• prijenosna funkcija filtra

H ( z ) = Z {h[n]} =
1
R
[ ]
1 R −1
1 + z −1 + L z −( R −1) = ∑ z − k
R k =0

- dobiveni izraz predstavlja sumu R članova geometrijskog niza


- izraz za sumu prvih R članova geometrijskog niza

[
a1 1, q, q1,L q R −1 ] → S R = a1
1− qR
1− q

- u našem slučaju
1 1 1− z−R
a1 = , q = z −1 ⇒ S R = H ( z) =
R R 1 − z −1

230
OSK Mladen Vučić

• uočiti
- impulsni odziv ima konačno trajanje
⇒ radi se o FIR filtru
- dobivena prijenosna funkcija je racionalna funkcija
⇒ implementacija je rekurzivna

• implementacija filtra i decimatora


1 1 − z −R 1 1
H ( z) = = ⋅ ⋅ (1 − z − R )
R 1 − z −1 R 1 − z −1

• implementacija rekurzivnog dijela


- direktna realizacija (vidi SIS)
1
Y ( z) = ⋅ X ( z)
−1
1− z

- množenje s (1 − z −1 )

Y ( z ) − z −1Y ( z ) = X ( z )

- izraz iz kojeg možemo "pročitati" implementaciju


Y ( z ) = X ( z ) + z −1Y ( z )

y[n] = x[n] + y[n − 1]

- uočiti
- ovaj sklop kumulativno zbraja ⇒ digitalni integrator

231
OSK Mladen Vučić

• implementacija nerekurzivnog dijela i sklopa za izbacivanje uzoraka


Y ( z ) = (1 − z − R ) X ( z )

y[n] = x[n] − x[n − R ]

- primjer za R=3
y[n] = x[n] − x[n − 3]

- može li se ovaj sklop pojednostavniti

- uočiti
- uzorci između onih koje uzima ↓R ne trebaju
⇒ ne treba ih niti računati
⇒cijeli sklop se može napraviti ovako za bilo koji R

232
OSK Mladen Vučić

• implementacija cijelog sustava za proizvoljan R

• ovaj sustav zove se CIC decimator prvog reda

• Zašto je ovaj sustav dobar?


• ne sadrži množila
• izbacivanje uzoraka izvodi se u sredini, pa velik dio sklopa radi s nižom
frekvencijom uzorkovanja
⇒jednostavniji dizajn sklopovlja
• promotrimo opet sustav

- u našem slučaju, frekvencijska karakteristika filtra


1 1 − z −R 1 1 − e − jωR 1 1 − cos(ωR) + j sin(ωR)
H ( e jω ) = = =
R 1 − z −1 R 1 − z − jω R 1 − cos(ω ) + j sin(ω )
z =e jω

- amplitudna karakteristika

H (e jω
)=
1 [1 − cos(ωR)]2 + sin 2 (ωR) = 1 1 − 2 cos(ωR) + cos 2 (ωR) + sin 2 (ωR)
R [1 − cos(ω )]2 + sin 2 (ω ) R 1 − 2 cos(ω ) + cos 2 (ω ) + sin 2 (ω )

1 1
− cos(ωR)
1 2 − 2 cos(ωR) 1
H (e jω ) = = 2 2
R 2 − 2 cos(ω ) R 1 1
− cos(ω )
2 2
 x  1 − cos( x)
sin 2   =
 x 2
 ωR 
sin  
jω 1  2 
H (e ) =
R ω 
sin  
2
233
OSK Mladen Vučić

- prikaz amplitudne karakteristike


- primjer R=8

• uočiti
- filtar ima nultočke
- nakon decimacije, nultočke se nalaze na frekvencijama 2kπ
- do aliasa u željenom kanalu dolazi zbog komponenata oko nultočki
- izvan željenog kanala dolazi do mnogo većeg aliasinga nego u kanalu
- područje oko prve latice dominira u aliasingu
- aliasing je najveći na frekvenciji ωa

ωa = − ωc
R
- u području propuštanja filtra amplituda nije konstantna već pada s
porastom frekvencije
⇒ ovo odstupanje može se jednostavno kompenzirati u narednim
stupnjevima (filtar koj ito radi zove se CIC kompenzator)
• problem
- aliasing u željenom kanalu je unatoč nultočkama prevelik
• rješenje
- povećati red filtra
⇒ CIC decimator višeg reda

234
OSK Mladen Vučić

• CIC decimator N-tog reda


• prijenosna funkcija
N
 1 1 − z −R 
H ( z) =  
 R 1 − z −1 
 

• implementacija

• amplitudna karakteristika
N
 ωR 
sin  
jω 1  2 
H (e ) =
R N sin  ω 
2
- primjer za R=8 i N=10

235
OSK Mladen Vučić

• u praksi se ponekad (rijetko) koristi i izvedba koja u comb sekciji radi MR, a ne
s R uzoraka
N
 1 1 − z − RM 
H ( z) =  
 R 1 − z −1 
 
- parametar M se naziva diferencijalno kašnjenje "comb" filtra
- decimatori opisani u prethodnom tekstu odgovaraju slučaju M=1

Primjer 11.7
CIC decimator koristi se za smanjivanje frekvencije uzorkovanja 2048 puta.
Frekvencija uzorkovanja ulaznog signala iznosi 50MHz, a širina kanala 3kHz.
Odrediti parametre decimatora tako da prigušenje neželjenih aliasa bude barem
120dB. Koliko za taj slučaj iznosi najveće gušenje u području željenog kanala.
Pretpostaviti da je diferencijalno kašnjenje "comb" sekcije jednako 1.

Rješenje
• zadani su slijedeći parametri
f s = 50MHz
f c = 3kHz
Aa ≥ 120dB
M =1
• faktor decimacije iznosi
R = 2048

• širina kanala u digitalnoj domeni iznosi


f 3kHz
ωc = 2π c = 2π = 3.77e − 4
fs 50MHz

• najmanje gušenje alias signala je na frekvenciji


2π 2π
ωa = − ωc = − 3.77e − 4 = 2.69e − 3
R 2048

236
OSK Mladen Vučić

• gušenje na frekvenciji ωa
( )ω =ω
20 log10 H e jω
a
≤ − Aa

• iz izraza za amplitudno frekvencijsku karakteristiku može se odrediti N


N
ω R 
sin  a 
1  2  ⇒ − Aa
20 log10 ≤ − Aa N≥
R ω  ω R 
sin  a  sin  a 
 2  1  2 
20 log10
R ω 
sin  a 
 2 

− 120
N≥ = 6.95
 2.69e - 3 ⋅ 2048 
sin  
1  2 
20 log10
2048  2.69e - 3 
sin 
 2 

N =7

• najveće gušenje u područu kanala


N
ω R 
sin c 
H ( e jω ) =
1  2 
ω =ωc R N ω 
sin c 
 2 

7
 3.77e − 4 ⋅ 2048 
sin 
jω 1  2 
H (e ) = = 0.84 ⇒ 1.5dB
ω =3.77e−4 2048 7  3.77e − 4 
sin  
 2 

• nacrtati za vježbu amplitudno frekvencijsku karakteristiku za ovaj slučaj

237
OSK Mladen Vučić

• Propagacija signala kroz decimator

• razmotrimo opet implementaciju CIC decimatora N-tog reda

• uočiti
- kašnjenja se implementiraju pomoću registara
- u integratorskoj sekciji signal propagira kroz N zbrajala
⇒ s povećanjem N pada maksimalna frekvencija takta na kojem
CIC decimator može raditi
- "comb" sekcija radi s niskom frekvencijom uzorkovanja, fs/R
⇒ ovdje problem s propagacijom ne postoji

• maksimalna frekvencija takta postiže se ako se signal iz svakog stupnja vodi


sa izlaza registra

• uočiti
- ovim je u svakoj integratorskoj sekciji dodano kašnjenje za 1 uzorak
⇒ prijenosna funkcija u tom slučaju ima oblik
N
 1 1 − z −R 
H ( z) = z −N  
 R 1 − z −1 
 
- faktor z-N unosi fazni pomak, ali ne utječe na amplitudu

238
OSK Mladen Vučić

• stabilnost
• promotrimo opet sklop digitalnog integratora

• prijenosna funkcija
1 z
H ( z) = =
1 − z −1 z −1

- polovi prijenosne funkcije


z1 = 1

- pol se nalazi na jediničnoj kružnici


⇒ sustav je nestabilan
• odziv na jediničnu stepenicu
- pobuda
1 , n ≥ 0
x[n ] = 
0 , n < 0
- odziv kumulativna suma pobude
n , n ≥ 0
y[n ] = 
0 , n < 0
⇒ odziv raste u beskonačnost !!!
• u praksi je dinamika signala konačna i ograničena širinom registra
• Kako CIC decimator uopće radi !?

239
OSK Mladen Vučić

Primjer 11.8
Na primjeru CIC decimatora s N=1, M=1 i R=3 pokazati što se događa kad
CIC decimator ode u zasićenje.

Rješenje
• decimator

1 1 − z −3
H ( z) =
3 1 − z −1

• pretpostavimo zbog jednostavnosti da su brojevi prikazani dvojnim


komplementom u formatu 4.0
• pobudimo decimator stepenicom
x [n](2) = 0010, 0010, 0010, 0010, ...
x[n](10) = 2, 2, 2, 2, ...
• izlaz integratora ima oblik
yi[n](2) = 0010, 0100, 0110, 1000, 1010, ...
yi[n](10) = 2, 4, 6, -8, -6, -4, -2, 0, 2, 4, 6, -8, -6, -4, -2, 0, ...
• izlaz izbacivača uzoraka ima oblik
yd[n](10) = 2, -8, -2, 4, -6, 0, ...

• izlaz "comb" sekcije


y[n](10) = 2-0, -8-2, -2-(-8), 4-(-2), -6-4, 0-(-6), ...
y[n](10) = 2, 6, 6, 6, 6, 6,...
• uočiti
- zbrajanje i oduzimanje se izvode na kružnici a ne na pravcu
- prvi uzorak predstavlja utitravanje (prijelaznu pojavu filtra) filtra
- vrijednost u stacionarnom stanju je 6
⇒ to je u redu jer još treba uračunati pojačanje filtra od 1/R
1
⋅6= 2
3

• premotavanje ne smeta sve dok između dva uzorka razmaknuta za R


integrator nije "premotao" više od jednom

240
OSK Mladen Vučić

• širine registara decimatora


• zadan je CIC decimator s N,M i R
• zadana je ulazna riječ širine Bin bitova
⇒(po modulu) najveći broj na ulazu u decimator iznosi
− 2 Bin −1
• prijenosna funkcija filtra
N
 1 MR −1 − k 
H ( z ) =  ∑ z 
 MR k =0 
• uočiti
- najveći broj koji se može dobiti na izlazu filtra je
(ne računajući faktor 1/(RM))
− 2 Bin −1 ⋅ ( RM ) N

⇒takav broj može se smjestiti u registar širine

 ( ) 
Bout , max = log 2 2 Bin −1 ⋅ ( RM ) N + 1

↑ ↑
najveći broj po modulu predznak
Bout , max = N log 2 ( RM ) + Bin 

• implementacija obzirom na širine registara ima oblik

241
OSK Mladen Vučić

Primjer 11.9
Kolike su potrebne širine registara CIC decimatora iz primjera 11.8, ako
širina riječi ulaznog signala iznosi 17 bitova?

Rješenje
• u primjeru 11.8 dobiveni su parametri decimatora
N =7

R = 2048

M =1

• širina riječi ulaznog signala


Bin = 17

• potrebne širine registara mogu se odrediti kao


Bout , max = N log 2 ( RM ) + Bin 

Bout , max = 7 log 2 (2048 ⋅ 1) + 17  = 94

• uočiti
- ovo je sklopovski zahtjevna implementacija

• Mogu li se duljine registara smanjiti?


⇒DA, odsijecanjem odozdo
⇒ tako se kvari SNR

242
OSK Mladen Vučić

• blokovska shema

• Koliko pojedini registri moraju imati bitova da SNR ostane u željenim


granicama?
- potrebna je analiza šuma
- postoji više različitih proračuna koji daju odgovor na ovo pitanja
- najpoznatiji model predložio je Eugene B. Hogenauer

• Hogenauer-ov model
• zadano je
- parametri decimatora, N, R i M
- širina ulazne riječi, Bin
- širina izlazne riječi, Bout
• potrebno je odrediti
- broj bitova koji treba odbaciti u pojedinom stupnju
B1, B2, ..., BN, BN+1, ..., B2N, B2N+1
↑ ↑ ↑
integratori "comb-ovi" izlazni registar

243
OSK Mladen Vučić

• snaga šuma odbacivanja na izlazu decimatora


- postoji 2N+1 odbacivanja bitova
⇒ postoji 2N+1 izvora šuma
- snage šuma
2
σ12 , σ 22 , ..., σ N , 2 , ..., 2 ,
σN +1 σ 2N σ 22N +1
↑ ↑ ↑
integratori "comb-ovi" izlazni registar
- normirana snaga šuma odbacivanja u pojedinom stupnju
(na snagu šuma kvantizacije u Bout,max)

2
σk =
( )
2 Bk
2
=
22 Bk
, k = 1,L,2 N + 1
12 12
- od svakog izvora do izlaza decimatora možemo odrediti prijenosnu
funkciju odnosno impulsni odziv
hk [n] , k = 1,L,2 N + 1

- doprinos k-tog izvora na izlazu decimatora


- uz pretpostavku da je šum odbacivanja bijeli, vrijedi (vidi SPUS)
σ k2,out = σ k2 ⋅ Phk = σ k2 ⋅ ∑ hk2 [n] , k = 1,L,2 N + 1
n

- ukupna snaga šuma odbacivanja, na izlazu


2
σ out = σ12,out + σ 22,out + L + σ 22N ,out + σ 22N +1,out

• širine registara moraju biti takve da doprinos šuma zbog odsijecanja koji se vidi
na izlazu bude manji od onog koji izaziva odsijecanje izlaznog registra
σ12,out + σ 22,out + L + σ 22N ,out ≤ σ 22N +1,out

• ideja
- "natjerati" σ12,out ,L,σ 22N ,out da budu podjednake
⇒ u tom slučaju vrijedi
1 2
σ k2,out ≤ σ 2 N +1,out
2N

244
OSK Mladen Vučić

• uvrštavanje gornje formule za σ k2,out daje


1 2
σ k2 ⋅ ∑ hk2 [n] ≤ σ 2 N +1,out
n 2N

• uvrštavanje gornje formule za σ k2 daje

22 Bk 1 2
⋅ ∑ hk2 [n] ≤ σ 2 N +1,out
12 n 2N

- odavde je broj bitova koje treba odbaciti u pojedinom stupnju

 
1  6σ 22N +1,out 
Bk ≤ log 2   , k = 1,L,2 N
2  N ∑ h 2
k [n ] 
 n 

• za primjenu ove formule potrebno je poznavati σ 22N +1,out i hk [n]


- snaga šuma odbacivanja izlaznog regristra
B2 N +1 = Bout,max − Bout

2 B2 N +1
2
σ 22N +1,out =
12
- impulsni odzivi se mogu dobiti iz prijenosnih funkcija
 1 − z − RM
H1( z ) = 


N
=
(
1 − z − RM )
N

 1 − z −1


 (1 − z−1)N
H 2 ( z) =
(
1 − z − RM )
N
 1 − z − RM 
=
N
 (1 − z −1)
(1 − z−1)  1 − z 
N −1  −1

itd. (iz Hk(z) se ukloni "lijevi" dio sklopa)

• Koliki mora biti Bout?


⇒Vidi "processing gain" u slijedećim poglavljima

• implementacija CIC decimatora u cjelobrojnoj aritmetici u MATLAB-u


- vidi mfilt i mfilt.cicdecim

245
OSK Mladen Vučić

11.7 Filtri
• prvo filtriranje kompleksne ovojnice izvedeno je već u CIC decimatoru
- ovo filtriranje je vrlo blago
- pazi se samo na uklanjanje aliasinga
• nakon decimacije frekvencija je občno dovoljno niska da se daljnje filtriranje
može izvesti klasičnim FIR filtrom
- ovi filtri igraju ulogu filtara kanala
- strmi su i time definiraju selektivnost
- određivanje prijenosnih funkcija ovih filtara
- vidi ranija poglavlja o dizajnu kompleksnih filtara
- implementacija
- vidi DOS, PPDOS i slične predmete

• Koliko bitova moraju imati pojedini filtri?


• sva odsijecanja u filtrima moraju biti takva da unesena pogreška kvantizacije
bude zanemariva
- odsijecanje je kritično kod množila
⇒ vidi analizu šumova kod množila
• sa svakim sužavanjem kanala pada šum kvantizacije koji je "došao" iz
prethodnih stupnjeva
- procesing gain (vidi poglavlje 11.3.2 Processing gain)
 f 
PG = 10 log10  s , dB
 2B 
- primjer
- filtriranje filtrom koji propušta pola Nyquistovog područja
f /2 f
B= s = s
2 4

 
 f 
PG = 10 log10  s  = 10 log10 (2 ) = 3dB
 2 fs 
 
 4 

• uočiti
- filtriranje koje smanjuje frekvencijsko područje na pola traži filtar koji
radi s 0.5 bitova širom riječi

246
OSK Mladen Vučić

11.8 Interpolacija

• interpolacija
- rekonstrukcija signala između vrijednosti koje su poznate u diskretnim
trenucima

• s praktičnog aspekta razlikovat ćemo interpolaciju koja se koristi kod


- rekonstrukcije signala kod pretvorbe vremenski diskretnih signala u
vremenski kontinuirane signale
- npr. D/A pretvorba
- povećavanja frekvencije uzorkovanja koja se izvodi u diskretnoj domeni
• teorija koja stoji iza ovih operacija je ista, ali se razlikuju praktični aspekti
implementacije

247
OSK Mladen Vučić

11.8.1 Rekonstrukcija signala kod D/A pretvorbe

• vidi SIS

• prijelaz iz vremenski kontinuirane u vremenski diskretnu domenu


- uzorkovanje

u d [n ] = u c (nT s )

- interpretacija uzorkovanja u vremenski diskretnoj domeni


ud [n] = ∑ ud [k ]δ [n − k ]
k = −∞


ud [n] = ∑ uc (kTs )δ [n − k ]
k = −∞

- interpretacija uzorkovanja u vremenski kontinuiranoj domeni


uδ (t ) = ∑ uc (kTs )δ (t − kTs )
k = −∞

248
OSK Mladen Vučić

• prijelaz iz vremenski diskretne u vremenski kontinuiranu domenu


- potrebno je rekonstruirati vrijednost signala između uzoraka
⇒ interpolacija
- u idealnom slučaju, interpolacija ima oblik
 π (t − kTs ) 
sin  
∞ Ts ∞  t − kTs 
ud (t ) = ∑ ud [k ]  = ud [k ]sinc 
π (t − kT ) ∑
k = −∞ s k = −∞  Ts 
Ts

- ovaj interpolator se ne može implementirati,a i teško se


aproksimira
- u praksi susrećemo jednostavnije oblike interpolacije
interpolacija nultog reda
interpolacija prvog reda (linearna interpolacija)
- interpolacija nultog reda (zeroth order interpolation, zeroth order hold)

- ovakvu interpolaciju koristi "klasični" D/A pretvarač


- interpolacija prvog reda (first order interpolation)

249
OSK Mladen Vučić

11.8.2 Utjecaj frekvencije uzorkovanja na D/A pretvorbu

• promotrimo "klasični" D/A pretvarač


- koristi interpolaciju nultog reda
- vrijednost signala je konstantna za vrijeme cijelog trajanja uzorka

• Kako izgleda spektar signala na izlazu D/A pretvarača?


• signal na izlazu pretvarača možemo prikazati kao konvoluciju

||

- dokaz

u DA (t ) = uδ (t ) ∗ g (t ) = ∫ uδ (τ ) g (t − τ )dτ
−∞

uδ (t ) = ∑ uc (kTs )δ (t − kTs )
k = −∞
∞ ∞
u DA (t ) = ∑ uc (kTs ) ∫ δ (τ − kTs ) g (t − τ )dτ
k = −∞ −∞


u DA (t ) = ∑ uc (kTs )g (t − kTs )
k = −∞

250
OSK Mladen Vučić

• spektar izlaznog signala možemo "pročitati" iz konvolucije


u DA (t ) = uδ (t ) ∗ g (t )

F [u DA (t )] = F [uδ (t )] ⋅ F [g (t )]

vidi SIS vidi Primjer 2.1

 f 
G ( f ) = Ts sinc 
 fs 

• uočiti
- amplitudni dio spektra je izobličen
- komponente željenog signala blizu Nyquistove frekvencije su prigušene
za za iznos od
20log10(sinc(0.5))≈4dB
- postoje značajne neželjene komponente, izvan područja |f|>fs/2
⇒ potrebno je filtriranje niskopropusnim filtrom granične frekvencije
fs/2

• tokom obrade digitalnih signala poželjno je da signali zauzimaju što veći dio
Nyquistovog frekvencijskog područja
⇒Shannonov teorem treba biti zadovoljen što "tjesnije"
• kod prijelaza iz digitalne u analognu domenu ovaj slučaj nije povoljan
- kod korištenja klasičnog D/A pretvarača potrebno je
⇒ povećati frekvenciju uzorkovanja prije D/A pretvorbe
ili
⇒ napraviti korekciju amplitude nakon D/A pretvorbe

• uočiti
- nakon interpolacije s faktorom L željeni signal zauzima frekvencijsko
područje |f|≤(fs/2)/L, a ne područje |f|≤fs/2
- interpolacija nultog reda koju radi D/A pretvarač tada manje utječe

251
OSK Mladen Vučić

11.8.3 Princip interpolacije vremenski diskretnog signala


• interpolacija
⇒koristi se za povećavanje frekvencije uzorkovanja
• Kako povećati frekvenciju uzorkovanja za cjelobrojni faktor L?
⇒ubaciti L-1 uzoraka između svaka dva postojeća uzorka
- Kako odrediti ovih L-1 uzoraka?
- ideja
- za početak ubacimo L-1 nula
⇒ovako dobiven signal ima L puta veću frekvenciju
uzorkovanja od polaznog signala
• primjer
N=40; % broj uzoraka polaznog signala
L=3; % faktor interpolacije
w0=0.6; % frekvencija polaznog signala (0 do pi)

n=0:N-1;
x=cos(w0*n); % polazni signal

y=zeros(1,L*length(x));
y(1:L:length(y))=x; % signal s ubacenim nulama

figure;
stem(n,x,'r');
title('Polazni signal');
xlabel('n');

figure;
stem(n,y(1:length(x)),'r');
title('Signal s ubacenim nulama');
xlabel('n');

252
OSK Mladen Vučić

• uočiti
- nule nisu "pravi" uzorci
- Kako popraviti stvar?
- došlo je do pomaka frekvencije
⇒ pogledajmo ponašanje signala x[n] i y[n] u frekvencijskoj domeni

• ubacivanje nula daje signal oblika


 x[n / L] za n = 0,± L,±2 L,L
y[n] = 
 0 za n ≠ 0,± L,±2 L,L

• Z-transformacija

Y ( z ) = ∑ y[n ]z − n = ∑ y[n]z −n
n = −∞ n =0, ±1, ±2,L

Y ( z) = ∑ x[n / L ]z −n
n =0,± L, ±2 L,L

- uvedimo supstituciju
n/ L = m ⇒ n = Lm
- supstitucija daje
Y ( z) = ∑ x[m]z − Lm
m =0,±1, ±2,L

Y (z ) = X z L( )
• frekvencijska karakteristika
( ) ( )
Y e jω = X e jωL
- primjer za L=4

253
OSK Mladen Vučić

⇒ potrebno je filtrirati signal y[n] filtrom čija je amplitudna


karakteristika

• blokovska shema interpolatora


- sklop za ubacivanje nula i niskopropusni filtar granične frekvencije
ωg=π/L

• uočiti
- cijeli postupak vrijedi za realne i za kompleksne signale
- filtar radi s frekvencijom uzorkovanja L⋅fs
- za visoke iznose L⋅fs javlja se problem implementacije filtra
⇒ CIC interpolator

• Kako povećati frekvenciju uzorkovanja za racionalni faktor L/R?


• ideja
- napraviti decimaciju s faktorom R, a onda interpolaciju s faktorom L

- ili obrnuto

- kaskada filtara može se nadomjestiti jednim filtrom

π π 
ω g = min , 
R L
254
OSK Mladen Vučić

11.8.4 CIC interpolator

• pogodan za veliki L (L>10)

• CIC interpolator prvog reda


• podsjetimo se rekurzivne implementacije usrednjivača uzoraka
1 L −1 − k 1 1 − z − L
H F ( z) = ∑z =
L k =0 L 1 − z −1

• ovakav filtar možemo iskoristiti u interpolatoru

• slijedeći isto razmatranje kao i kod CIC decimatora, sklop možemo


implementirati kao

• ovaj sustav zove se CIC interpolator prvog reda

255
OSK Mladen Vučić

• CIC interpolator N-tog reda


• prijenosna funkcija filtra N-tog reda
N
 1 1 − z−R 
H F ( z) =  
 R 1 − z −1 
 

• implementacija

• uočiti
- integratori rade s visokom frekvencijom uzorkovanja pa je kritično
vrijeme propagacije
- maksimalna frekvencija takta postiže se ako se signal iz svakog
stupnja vodi s izlaza, a ne s ulaza registra (vidi CIC decimator)

• primjer, L=8

• uočiti
- zrcalne komponente nalaze se oko nultočaka prijenosne funkcije filtra
- pogreška uzrokovana zrcalnim komponentama je manja ako signal
zauzima manji dio Nyquistovog banda

256
OSK Mladen Vučić

Primjer 11.10
Koje funkcije za promjenu frekvencije uzorkovanja postoje u programskom
paketu MATLAB?

Rješenje
• funkcije za interpolaciju i decimaciju koriste se u višetaktnoj obradi signal
• višetaktna obrada signala nalazi se u sklopu alata Signal Processing Toolbox

• Smanjivanja frekvencije uzorkovanja za cjelobrojni faktor


• podsjetimo se decimacije

- nova frekvencija uzorkovanja


f
f s 2 = s1
R
- filtar uklanja komponente na frekvencijama f>(fs1/2)/R=fs2/2
- izbacivač uzoraka zadržava svaki R-ti uzorak
• u MATLAB-u se za decimaciju koristi funkcija decimate
- osnovni poziv
y=decimate(x,R);

- Što radi ova funkcija?


- filtrira vektor x pomoću Chebishevljevog filtra 8 reda, granične
frekvencije 0.8(fs1/2)/R
- iz rezultata filtriranja zadržava svaki R-ti uzorak, a izbacuje ostale
⇒y je R puta kraći od x
• uočiti
- za ispravno korištenje funkcije potrebno je poznavati amplitudnu
karakteristiku filtra
- dio frekvencijskog područja između 0.8π i π "nije za upotrebu"

257
OSK Mladen Vučić

• primjer korištenja ove funkcije


f1=input('Frekvencija prvog sinusa, Hz, f1 = ');
f2=input('Frekvencija drugog sinusa, Hz, f2 = ');
R=input('Faktor decimacije, R = ');
fs1=50;
Nx=50;
nx=0:Nx-1;
x=sin(2*pi*f1/fs1*nx)+sin(2*pi*f2/fs1*nx);
y=decimate(x,R);
ny=0:length(y)-1;
figure;
stem(nx,x,'r');
xlabel('n');
ylabel('x[n]');
title(['f_1=',num2str(f1),', f_2=',num2str(f2),...
', f_s_1=',num2str(fs1)]);
figure;
stem(ny,y,'r'); shg;
xlabel('n');
ylabel('y[n]');
title(['f_1=',num2str(f1),', f_2=',num2str(f2),...
', R=',num2str(R)]);

258
OSK Mladen Vučić

• funkcija decimate može koristiti i FIR filtar


- poziv funkcije
y=decimate(x,R,N_FIR,'FIR');
- filtar
- FIR filtar reda N_FIR, projektiran metodom vremenskih otvora
(vidi funkciju fir1)
⇒ako otvor bije zadan, funkcija koristi Hammingov otvor
- npr., za N_FIR=20 i R=4, ovaj filtar ima pojačanje

b=fir1(20,1/4);
w=linspace(-pi,pi,1000);
H=freqz(b,1,w);
plot(w,20*log10(abs(H)));
axis([min(w),max(w),-60,0]);
xlabel('Frekvencija, rad')
ylabel('Pojacanje, dB')

- uočiti - područje propuštanja je |ω|≤π/R

• bez obzira koji filtar se koristi, funkcija decimate ima određen najmanji broj
ulaznih uzoraka
⇒najmanji broj uzoraka je određen utitravanjem filtra
⇒U gornjem primjeru je korišten FIR filtar niskog reda da bi se mogao
prikazati mali broj uzoraka. U praksi se koristi viši red.

259
OSK Mladen Vučić

• primjer poziva funkcije decimate koja koristi gornji FIR filtar


- programski odsječak jednak je prethodnom osim samog poziva
.
.
y=decimate(x,R,20,'FIR');
.
.

- ulaz (isti kao u prethodnom slučaju) i izlaz

• uočiti
- odziv se razlikuje od prethodnog slučaja
⇒ posljedica amplitudne i fazne karakteristike decimacijskog filtra

• Povećavanje frekvencije uzorkovanja za cjelobrojni faktor


• u MATLAB-u se za interpolaciju koristi funkcija interp
- osnovni poziv
y=interp(x,L);

• Promjena frekvencije uzorkovanja za racionalni faktor

• u MATLAB-u se za interpolaciju koristi funkcija resample


- osnovni poziv
y=resample(x,R,L);

• Za funkcije interp i resample vrijede slična razmatranja o filtrima kao i za


funkciju decimate.
• Uvijek je potrebno poznavati algoritam koji je implementiran u nekoj funkciji !

260
OSK Mladen Vučić

11.9 Numerički upravljan oscilator


• oscilator generira sinusni i/ili kosinusni signal odgovarajuće frekvencije
- realni signal
u 0 (t ) = A cos(ω 0 t )
1 2π
t = nTs = n =n
fs ωs
 f0   ω 
u0 [n ] = A cos 2π n  = A cos 2π 0 n  = A cos[Ω 0 n]
 fs   ωs 

- kompleksni signal
u 0 [n ] = A{cos[Ω 0 n] + j sin[Ω 0 n]} = Ae jΩ0n

• uočiti
- iznos frekvencije u diskretnoj domeni
− π ≤ Ω0 < π

• primjer - generiranje realnog signala u MATLAB-u (Ω0=0.66π, Ω0=0.94π)


Omega0=input('Frekvencija, Omega0 = ');
A=1;
N=50;
n=0:N-1;
u0=A*cos(Omega0*n);
stem(n,u0,'r');
title(['\Omega_0=',num2str(Omega0),'rad']);
xlabel('n');
ylabel('u_0(n)');

261
OSK Mladen Vučić

• za vježbu
- "Provući" u mislima kroz ove uzorke odgovarajući kontinuirani signal?
⇒ interpolacija
- Koliko perioda signala se nalazi na svakoj slici?
• primjer - generiranje kompleksnog signala u MATLAB-u
Omega0=0.66*pi;
A=1;
N=50;
n=0:N-1;
u0=A*exp(j*Omega0*n);

• uočiti
- pokazan postupak koristi arimetiku u pomičnom zarezu

• Kako opisani postupak preoblikovati da bude pogodan za učinkovitu


implementaciju u cjelobrojnoj aritmetici?
⇒direktna digitalna sinteza frekvencije (Direct Digital Synthesis, DDS)

11.9.1 Princip direktne digitalne sinteze frekvencije


• sintezu sinusnog signala možemo izvesti u dva koraka
- određivanje faze
f ω
φ [n] = 2π 0 n = 2π 0 n = Ω 0n
fs ωs
- pretvorba faze u amplitudu sinusnog signala (pretpostavimo A=1)
u0 [n] = cos{φ [n]}

- blokovska shema

262
OSK Mladen Vučić

• određivanje faze
- faza linearno raste
∆φ [n]
= Ω0
∆n
- jednadžba diferencija generatora faze
φ [n] = φ [n − 1] + Ω 0
- implementacija generatora faze

• uočiti
- u gornjem slučaju faza raste u beskonačnost
- sinus (kosinus) je periodičan s periodom 2π
⇒ faza može biti implementirana na kružnici, tj.
0 ≤ φ [n] < 2π
⇒ ovaj slučaj je pogodan za implementaciju u cjelobrojnoj aritmetici
• implementacija u cjelobrojnoj aritmetici
- uzmimo akumulator širine N bitova

- veza između Φ[n] i φ[n]


φ [n] 2N
Φ [n] = = φ [n]
2π / 2 N 2π

- korak, ∆, iznosi
2N
∆ = Ω0

f ω
Ω0 = 2π 0 = 2π 0
fs ωs
f ω
∆ = 0 2N = 0 2N
fs ωs
263
OSK Mladen Vučić

- korak ∆ je cijeli broj pa se za željeni f0 on u praksi dobiva


zaokruživanjem
f  ω 
∆ =  0 2 N + 0.5 =  0 2 N + 0.5
 fs   ωs 

• uočiti
- nije moguće generirati signal bilo koje frekvencije

f0 = f0 (∆ ) = f s
2N
- željena frekvencija može se postići u koracima
∆f0 min = f0 (∆ + 1) − f0 (∆)

∆ +1 ∆
∆f0 min = f s N
− fs
2 2N

f
∆f0 min = Ns
2
- vrijednost ∆f0min predstavlja rezoluciju frekvencije

- odavde se može odrediti N koji je potreban za zadanu rezoluciju


 f 
N = log 2  s 
 f0 max 
- najviša frekvencija određena je Shannon-ovim teoremom i iznosi
f
f0 max = s
2
- najniža frekvencija dobiva se za ∆=1 i iznosi
f
f0 min = s
2N

264
OSK Mladen Vučić

• pretvorba faze u sinus


• Phase to Sine Convertor, PSC
• klasična rješenja temelje se na prozivnoj tablici (Look-up Table, LUT)
- izlaz iz generatora faze, Φ[n] je cijeli broj iz intervala [0,2N-1]
- ideja:
Φ[n] se koristi kao adresa za LUT koji sadrži uzorke sinusa
- u idealnom slučaju, LUT ima 2N riječi

11.9.2 Pogreške kod direktne digitalne sinteze frekvencije


• Pogreška uslijed odsijecanja faze
• rezolucija frekvencije
• primjer
- pretpostavimo da je fs=50MHz

N ∆ f0 2N
12 12.2 kHz 4096=4k
14 3.05 kHz 16k
16 763 Hz 64k
18 191 Hz 256k
20 47.7 Hz 1M
24 2.98 Hz 8M
32 0.0116 Hz 6G

- rezolucija frekvencije i veličina LUT-a su kontradiktorni zahtjevi


• problem
- LUT koji ima adresu širu od 18 bitova nije praktičan
- rezolucija bolja od 191 Hz je često potrebna
• rješenje
- za adresiranje LUT-a uzeti samo gornji dio faze

• uočiti
- odsijecanje faze uzrokuje faznu pogrešku
265
OSK Mladen Vučić

Primjer 11.11
Korištenjem MATLAB programskog okruženja potrebno je napraviti model
generatora faze. Korištenjem tog modela ilustrirati pogrešku koju izaziva
odsijecanje faze pod pretpostavkom da pretvorba faze u sinus unosi zanemarivu
pogrešku.

Rješenje
• za rad s cjelobrojnim vrijednostima koristit ćemo skup funkcija koje se nalaze u
skupu alat Fixed-Point Toolbox
• funkcije iz ovog skupa alata rade s klasom cjelobrojnih objekata
(Fixed-Point Numeric Object) koji se nazivaju fi objekti
• fi objekti su opisani pomoću 3 tipa svojstava (Properties)
- Data Properties
- fimat Properties
- numerictype Properties
• primjer kreiranja objekta s predefiniranim (default) svojstvima
- kreiranje cijelog broja s predznakom, vrijednošću 2, duljinom riječi od
16 bitova i širinom frakcije od 13 bitova
fi(2) % fi je konstruktor
ans =
2
DataTypeMode: Fixed-point: binary point scaling
Signed: true
WordLength: 16
FractionLength: 13
RoundMode: nearest
OverflowMode: saturate
ProductMode: FullPrecision
MaxProductWordLength: 128
SumMode: FullPrecision
MaxSumWordLength: 128
CastBeforeSum: true

• Toolbox sadrži često korištene funkcije (i operacije) koje koriste fi objekte


- npr. +, -, *, /, >, <, length, ...
- vidi: help fixedpoint
• sva pojedina svojstva objekta mogu se eksplicitno zadati
- za primjer vidi slijedeću funkciju
266
OSK Mladen Vučić

• funkcija za računanje faze

function ACCfi=dds_faza(f0,fs,N,BrojUzoraka)

% INICIJALIZACIJA

TipAcc=numerictype('WordLength',N,...
'FractionLength',0,...
'Signed',0,...
'Scaling','BinaryPoint',...
'DataTypeMode', 'Fixed-point: binary point
scaling'...
);
PravilaAcc=fimath(... % zbrajanje
'CastBeforeSum',1,...
'OverflowMode','wrap',...
'SumMode','SpecifyPrecision',...
'SumWordLength',N,...
'SumFractionLength',0,...
'MaxSumWordLength',128,...
... % mnozenje
'RoundMode','convergent',...
'ProductMode','SpecifyPrecision',...
'ProductWordLength',N,...
'ProductFractionLength',0,...
'MaxProductWordLength',128);

% RACUNANJE KORAKA

DELTA=f0/fs;
DELTAfi=fi(DELTA*2^N,TipAcc,PravilaAcc);

% RACUNANJE FAZE
ACCfi=fi(zeros(BrojUzoraka,1),TipAcc,PravilaAcc);
for k=2:BrojUzoraka
ACCfi(k)=ACCfi(k-1)+DELTAfi;
end

267
OSK Mladen Vučić

• prikaz faze
- parametri fs=50e6, f0=5/124* fs, N=32 bita

- ako se gore prikazana faza odsiječe na P=14 bitova, dobiva se


pogreška

• uočiti
- faza više nije linearna već je na nju superponirana pogreška
⇒ fazna modulacija
(vidi poglavlje 8.3.2 Fazna i frekvencijska modulacija)
⇒očekuju se neželjene komponente u spektru
- pogreška je periodična
⇒ u spektru se očekuju diskretne neželjene komponente
- osnovni harmonik fazne pogreške ima visoku frekvenciju
⇒ očekuje se širok spektar
• Kolike su amplitude neželjenih komponenata?
⇒napravimo analizu u spektralnoj domeni
268
OSK Mladen Vučić

• analiza izobličenja u spektralnoj domeni


- pretpostavit ćemo da je pretvarač faze u sinus blizu idealnog
⇒ uzet ćemo funkciju sin koja radi s double argumentima

• programski odsječak
N=input('Sirina rijeci akumulatora, N = ');
P=input('Sirina faze nakon odsijecanja, P = ');
fs=50e6;
f0=5/124*fs;
BrojUzoraka=10000;
ACCfi=dds_faza(f0,fs,N,BrojUzoraka);
FazaInteger=ACCfi.data;
FazaInteger=floor(FazaInteger/2^(N-P))*2^(N-P);
Faza=FazaInteger*2*pi/2^N;
u0=sin(Faza);
% Ovo nije funkcija iz MATLAB-a.
% Napisati samostalno za vjezbu.
[H,f]=aspec01(u0,fs,'Blackman');
plot(f,20*log10(abs(H)),'r');
axis([min(f),max(f),-120,0]);
title(['N=',num2str(N),', P=',num2str(P)]);
xlabel('f,Hz');
ylabel('Amplituda');

• primjeri spektara

269
OSK Mladen Vučić

• uočiti
- postoje neželjeni šiljci u spektru
⇒ postoje nelinearna izobličenja
- energija neželjenih komponenata je koncentrirana na pojedinim
mjestima u spektru
- ovakva izobličenja izražavamo "dinamičkim rasponom signala bez
neželjenih komponenata" (Spurious Free Dynamic Range, SFDR)
⇒ vidi poglavlje 6.6.2 Nelinearna izobličenja
- u ovom slučaju SFDR iznosi
SFDR=84dBc

• dobiveni SFDR ovisi o izboru P i o iznosu ∆


• izobličenja nastala zbog odsijecanja faze u najgorem slučaju, mogu se ugrubo
procijeniti pomoću izraza
SFDR = 6.02 P − 3.92dB

• Je li dobiveni spektar (desna slika) upotrebljiv?


⇒ovisi o aplikaciji
- vidi slijedeći primjer

Primjer 11.12
Dan je digitalni prijemnik s uzorkovanjem u osnovnom frekvencijkom
području. Ulazna dinamika prijemnika iznosi ±Um=±1V, a efektivna vrijednost
signala kojeg je još moguće detektirati iznosi Umin=2.5µV (ovakav prijemnik
analiziran je u primjeru 11.6). Koliko mora iznositi SFDR numerički upravljanog
oscilatora koji se koristi u ovakvom prijemniku?

270
OSK Mladen Vučić

Rješenje
• dinamičko područje prijemnika iznosi

 Um   1 
   
20 log10  2  = 20 log10  2  = 109dB
 min,rms 
U  2 . 5e − 6 
   
   

• pretpostavimo da se negdje izvan željenog kanala nalazi komponenta


maksimalne amplitude, a da je željeni signal na granici detektabilnosti

• nakon miješanja, komponente oko frekvencije f1 i f2 pasti će u isto frekvencijsko


područje (oko nule)
- signal s ulaza prijemnika i signal iz oscilatora ponašaju se dualno
- signal koji je rezultat miješanja komponente na frekvenciji f2 mora biti
manji od najmanjeg signala koji se još može detektirati
• zaključak
SFDRNCO ≥ 109dBc

• Kako osigurati ovako čist spektar?


- prvi način
- potrebno je imati široku fazu (veliki P)
⇒veliki LUT ⇒ nepraktično
- drugi način
- "razmazati" diskretne komponente u spektru NCO-a
271
OSK Mladen Vučić

• diskretne komponente u spektru signala neće postojati ako fazna pogreška


nema diskretnih komponenata, tj. ako nije periodična
⇒u faznu pogrešku treba dodati šum
- primjer implementacije

• ovakva tehnika ubacivanja šuma izvorno se naziva dithering


• uočiti
- generator šuma daje riječ širine 5 bitova
- povećanje širine preko 5 bitova ne poboljšava svojstva sustava

• primjer spektra
- prethodni slučaj s N=32 i P=14
- bez dithera - s dodanim "ditherom" od 5 bitova

• uočiti
- diskretne komponente su se preraspodijelile u spektru
- SFDR je veći

272
OSK Mladen Vučić

• izvedba generatora šuma


- posmačni registar s povratnom vezom (Linear Feedback Shift Register)

• dobar pregled FPGA izvedbi generatora šuma dan je u


Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random
Sequence Generators, Xilinx Aplication Notes, XAPP 052, July 7,1996
• paziti kod izvedbe generatora šuma
- dobivena pseudorendom sekvenca je periodična
- period ovisi o širini posmačnog registra

• Pogreška uslijed odsijecanja amplitude

• uočiti
- LUT ima konačnu širinu riječi
⇒ pogreška uslijed kvantizacije amplitude
• kvantizacijski šum može se izraziti pomoću odnosa signala i šuma kao
SNR = (6.02M + 1.76)dB

• kvantizacijski šum nije jedini efekt koji je posljedica kvantizacije


- zbog periodičnog prozivanja LUT-a
⇒ pogreška kvantizacije nije jednolika
⇒ kvantizacijski šum više nije bijel
⇒ pojavljuju se diskretne komponente u spektru

273
OSK Mladen Vučić

• primjer
- faza nema odsijecanja, N=P=24
- kvantizacija amplitude M=14
- frekvencija f0=fs/32, fs=50MHz

• rješenje ovog problema


- dithering amplitude
ili
- povećanje broja bitova u amplitudi

• često LUT sadrži uzorke u dvojnom komplementu


- paziti, vrijednost 1 ne postoji u dvojnom komplementu
⇒ amplituda sinusa se tada uzima nešto manja od 1
• u praksi se često koristi LUT koji sadrži 1/4 periode, tj. samo 1. kvadrant
⇒time se troši 4 puta manje memorije
- da bi se isti segment sinusa mogao koristiti za sva 4 kvadranta, sadržaj
LUT-a ne počinje od nule već od vrijednosti u Ts/2

- na ovaj način očuvana je simetrija uzoraka po kvadrantima


274
OSK Mladen Vučić

• osim LUT-a, postoje i mnogi drugi načini pretvorbe faze u sinus


- postupci temeljeni na Taylorovoj aproksimaciji
- postupci temeljeni na trigonometrijskim transformacijama
- itd.

• smjernice za dizajn DDS-a


- broj bitova akumulatora, N, određen je potrebnom rezolucijom
frekvencije
- širina riječi generatora šuma koji se dodaje fazi obično iznosi 5 bitova
- faza se odsijeca na P bitova koji su određeni zahtjevom na SFDR
- širina riječi LUT-a se uzima kao M=P+2

• modeli koji se u MATLAB-u izvode pomoću cjelobrojne aritmetike često se


koriste kao referentni modeli kad se sklop implementira pomoću jezika za opis
sklopovlja (HDL)
- MATLAB okruženje je pogodno jer se u njemu jednostavno radi obrada
signala
- HDL su pogodni jer se pomoću njih jednostavno radi implementacija

275

You might also like