Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Procesori
Princip ekvivalentnosti
hardvera i softvera
• Moguće je isti algoritam implementirati na različitim platformama (procesor računara, signal procesor, digitalna logička kola, programabilni FPGA čipovi)
• Sve što može da se uradi hardverommože da se uradi i softverom
• Sve što može da se uradi softverom može da se uradi i hardverom
• Poznavanje arhitekture procesora ili FPGA čipova pomaže da se napravi bolji algoritamkoji radi brže, tačnije i pouzdanije
Implementacija
hardverom ili softverom?
• Softverska implementacija odlikuje se
velikom fleksibilnošću, malom brzinom rada,
nije pogodna za primene u realnom vremenu
• Hardverska implementacija se
odlikuje vrlo velikom brzinom rada i malom
fleksibilnošću realizacije,
jer se za svaku izmenu u algoritmu
zahteva izmena hardvera
• Savremeni sistemi za obradu signala najčešće
kombinuju i jedan i drugi način
I hardver i softver
FPGA ili DSP?
Fon Nojmanova (John Von
Neumann) arhitektura
• Arhitektura “klasičnih” procesora opšte namene
Procesor
Adresna magistrala
Magistrala podataka
Memorija
Arhitektura DSP procesora –
organizacija memorije• Harvard arhitektura
• Različiti proizvođačina različite načinerealizuju Harvardkoncept
• Višefunkcionalnenaredbe
• Integrisani množač
• Množenje i akumuliranje
tipična instrukcija
Procesor
Adresna magistrala 1
Magistrala podataka 1
Magistrala podataka 2
Adresna magistrala 2
Memorija 1 Memorija 2
XYRR
Arhitektura memorije
Pristup eksternoj memoriji
• Ako bi se na savremenom
mikroprocesoru striktno primenila
Harvard arhitektura, broj
magistrala, a time i kontakata
DSP mikroprocesora, postao bi
jako veliki
• Zbog toga se izvestan deo
memorije integriše u okviru
samog procesorskog čipa, a
ostatak memorije je organizovan
kao spoljašnja (eksterna)
memorija
• Potrebna je dodatna kontrolna
jedinica koja reguliše prenos
podataka do eksterne memorije
kontrolna
logika
eksterne
memorije
Adresna magistrala 1
Magistrala podataka 2
Magistrala podataka 1
Adresna magistrala 2 ekesterna
adresna
magistrala
ekesterna
magistrala
podataka
readwrite
programdata
ready
Pristup eksternoj memoriji
• Algoritmi obrade signala su najčešće takvi da podrazumevaju da se niz istih instrukcija ponavlja na velikom broju ulaznih podataka.
• Zbog toga se osnovna Harvard arhitektura dalje proširuje u cilju još boljeg iskorišćenja procesora.
• Da bi se izbeglo često učitavanje iz memorije jedne iste instrukcije ili bloka instrukcija, u procesor se uvodi keš (cache) memorija u koju se smešta tekući segment programa pri njegovom prvom učitavanju.
• Broj i tip instrukcija koje će biti smeštene u ovu memoriju prilagođen je arhitekturi samog procesora.
Pristup eksternoj memoriji
• Na primer, kod određenog broja procesora koji se baziraju na modifikovanoj Harvard arhitekturi u kojoj je jedan od dva memorijska bloka zajednički za instrukcije i podatke, u keš se po pravilu upisuju samo instrukcije koje zahtevaju pristup podacima koji se nalaze u programskom bloku. Na taj način se prevazilazi potreba da se tom memorijskom bloku pristupa dva puta u toku jednog instrukcionog intervala.
Adresiranje
• Različiti procesori podržavaju razne tipove
adresiranja. Direktno adresiranje podrazumeva
da je adresa operanda kome se želi pristupiti
upisana u samu instrukciju
• direktno adresiranje zahteva nepraktično
dugačke zapise pojedinih instrukcija.
• Zbog toga se u DSP procesorima češće koriste
razne vrste indirektnog adresiranja.
Adresiranje
• Na primer, ADSP-2181 ima dva adresna
generatora, DAG1 i DAG2.
• Adresni generatori su međusobno nezavisni,
mogu da generišu adrese simultano i na taj
način se omogućava istovremeni pristup i
programskoj memoriji i memoriji za smeštanje
podataka.
• DAG1 podržava bit-inverzno adresiranje, koje
se koristi u pregrupisavanju podataka u FFT
(Fast Furier Transform) algoritmu.
Adresiranje
• Oba adresna generatora imaju po četiri seta registara.
Svaki set se sastoji od I registra, L registra i M registra.
• U I registar se smešta izračunata adresa operanda
kome treba pristupiti.
• U M registru se čuva vrednost kojom se ažurira I
registar.
• L registar obezbeđuje pravilno pomeranje kroz bafer.
• Baferi mogu biti linearni i kružni.
• Postavljanjem odgovarajuće vrednosti u L registar
omogućava se jednostavna manipulacija sa nizovima
podataka kojima treba pristupati u sukcesivnim
instrukcijama.
Adresiranje
• Na primer, kod implementacije FIR filtra,
• Pogodno je definisati dva kružna bafera, u
svakom memorijskom bloku po jedan, od kojih
bi jedan sadržao koeficijente impulsnog odziva
filtra a drugi bi predstavljao liniju za kašnjenje.
• Kružnom baferu u kome se čuvaju odbirci
ulaznog signala se pridružuju dva pokazivača
od kojih se jedan koristi u fazi upisivanja
trenutnog odbirka a drugi u fazi računanja
izlaznog odbirka.
Adresiranje
• Prvi pokazivač se pomera za jedno mesto kada se noviodbirak upisuje u bafer pa se odbirak x(n) upisuje nmesto odbirka x(n-N-1) koji više ne figuriše u izrazu zaračunanje izlaznog odbirka.
• Drugi pokazivač se, za svaki odbirak ulaznog signalapomera, član po član, kroz ceo bafer počevši od mestakoje odgovara odbirku x(n).
b0 b1 bi-1 bi bi+1 bN-2 bN-1
pokazivač za upis
pokazivač za čitanje
Sekcija za kontrolu toka
programa
• Ova sekcija se sastoji od instrukcijskog registra
(Instruction Register) i kontrolne jedinice (Program
Sequencer) koja računa adresu sledeće instrukcije koju
treba učitati iz programske memorije u instrukcijski
registar.
• Program sequencer je složeno logičko kolo koje
omogućava korektno izvršavanje programskih celina a
da se pri tome ne gubi dodatno vreme na računanje
adrese sledeće instrukcije koju treba izvršiti.
Instrukcije
• računske instrukcije (aritmetičke ili logičke)
• instrukcije koje premeštaju podatke
• instrukcije za kontrolu toka
• višefunkcionalne instrukcije
Protočnost instrukcija
• Protočnost instrukcija (pipelining) je kada se simultano izvršavaju faze- učitavanja instrukcije- dekodovanje instrukcije- učitavanja operanda - izvršavanja instrukcije
• Moguće je ako se ne odnose na istu instrukciju jer angažuju različite funkcionalne blokove
Metode rešavanja konflikta
protočnosti
• Konflikti nastaju usled simultanog
izvršavanja delova više instrukcija
• Rešenja:
1. Blokiranje
2. Vremenski stacionarno kodovanje
3. Kodovanje sa stacionarnim podacima
Vremenski stacionarno
kodovanje• Time stationary coding
• Eksplicitno se specificiraju sve operacije koje treba da se simultano izvrše tokom jednog instrukcijskog ciklusa
• Instrukcija specificira simultane a ne sekvencijalne operacije učitavanja operanda i izvršenja instrukcije
• Protočnost je u stvari paralelizam
MAC X0,Y0,A X:(R0)+,X0 Y:(R4)-,Y0
P MEM
X MEM
Y MEM
ARITHM
ciklusInstrukcijskiaritmetička
instrukcija operandi za sledeću instrukciju
Kodovanje sa stacionarnim
podacima
• U jednoj instrukciji se specificiraju sve operacije koje treba uraditi sa operandima iz memorije
• Instrukcija specificira šta se događa sa podacima, a ne šta se dešava u određenom vremenskom trenutku
1. Kada se akumulator koristi kao operand množača, vrednost akumulatora mora biti poznata tri instrukcije ranije
2. Kada se rezultat upisuje u memoriju, nova vrednost memorijske lokacije ne sme se koristiti naredna četiri instrukcijska ciklusa
Višefunkcijske instrukcije
• ALU/MAC/SHIFT sa učitavanjem iz memorije
• ALU/MAC/SHIFT sa premeštanjem operanda iz
registra u registar
• ALU/MAC/SHIFT sa upisivanjem u memoriju
• učitavanje iz programske memorije i memorije
za podatke
• ALU/MAC sa učitavanjem iz programske
memorije i memorije za podatke
ADSP-2181(1)
• 33 MIPS
• Aritmetika fiksne tačke, 16-to bitni podaci
• U procesoru su integrisani:
– aritmetičko-logička jedinica,
– množač/akumulator,
– šifter.
• Memorija
– 80 K bita -16 K reči (24-bit) programskog
RAM-a
– 16 K reči (16-bit) RAM-a data RAM-a.
ADSP-2181(2)
DAG1 DAG2
INSTRUCTION
REGISTER
PROGRAM
SEQUENCER
BUS
exchangeMUX
MUX
PROGRAM
SRAM
16k x 24
DATA
SRAM
16K x 16
internal
DMA
port
companding
circuitry
FLAGS
programmable
I/OBYTE
DMA
CONTROLLER
TIMER
power
down
control
logic
INTERRUPTS
ALU
output regs
SHIFTMAC
input regs
output regs output regs
input regsinput regs
transmit reg
SERIAL
PORT 1
receive reg
transmit reg
SERIAL
PORT 0
receive reg
14
14
24
16
16
2
8
3
14
16
455
24
PMA
BUS
DMA
BUS
PMD
BUS
DMD
BUS
PMA
BUS
DMA
BUS
PMD
BUS
DMD
BUS
EXTERNAL
ADDRESS
BUS
EXTERNAL
DATA
BUS
ADSP-2181(3)
• U svakom ciklusu procesor može da:
– generiše sledeću programsku adresu,
– “dovuče” sledeću instrukciju,
– premesti jedan ili dva podatka,
– ažurira jedan ili dva adresna pokazivača,
– izvrši jednu od računskih operacija.
MAC ALU ŠIFTER
PMD
DMD
R
16
24
1616
1616 16
16 16 16
16
MAC
MUX
MXREGISTERS 2x16
MYREGISTERS 2x16
MUX
MUX
MUX
MULTIPLIER
1616 (upper)
16 16
16 R-BUS
24PMD BUS
DMD BUS
MFREGISTER
ADD/SUBTRACT
MUX MUX
MR0REGISTER
MR1REGISTER
MR2REGISTER
M
U
X
X Y
P
R2 R1 R0MV
16 16
16
8
3240
ALU
MUX
AXREGISTERS 2x16
AFREGISTER
ARREGISTER
AYREGISTERS 2x16
MUX
MUX
MUX
ALU
AZAN
ACAV
ASAQ
CI
R
X Y
1616 (upper)
16 16
1616
16 R-BUS
24PMD BUS
DMD BUS
Pomerač
MUX
MUX
MUX
MUX
MUX
MUX MUX
SBREGISTER
SR1REGISTER
SIREGISTER
SEREGISTER
SR0REGISTER
COMPARE
NEGATE
EXPONENT
DETECTOR
SHIFTER
ARRAY
OR/PASS
HI/LO
SS
From
INSTRUCTION
I XR
CO
DMD BUS
R - BUS 16
16 16
16 16
16
3232
8
X
8
TMS320C25
TMS320C30
TMS320C30
Blackfin
Blackfin
Programiranje ADSP-2181
procesora
• računske instrukcije (aritmetičke ili logičke)
• instrukcije koje premeštaju podatke
• instrukcije za kontrolu toka
• višefunkcionalne instrukcije
Višefunkcijske instrukcije
• ALU/MAC/SHIFT sa učitavanjem iz memorije
• ALU/MAC/SHIFT sa premeštanjem operanda iz
registra u registar
• ALU/MAC/SHIFT sa upisivanjem u memoriju
• učitavanje iz programske memorije i memorije
za podatke
• ALU/MAC sa učitavanjem iz programske
memorije i memorije za podatke
Razvoj softvera i hardvera
Razvoj softvera i hardvera
• Svi proizvođači procesora za obradu signala u
većoj ili manjoj meri obezbeđuju alate koji
olakšavaju razvoj softvera i hardvera koji se
zasniva na nekom konkretnom procesoru.
• Pored podrške za programiranje u višim
programskim jezicima, koja podrazumeva i
postojanje biblioteka sa gotovim programima za
tipične algoritme obrade signala, razvoj
ozbiljnijih sistema baziranih na procesoru za
obradu signala zahteva čitav niz pomoćnih alata.
Simulator
• Simulator je programski paket koji omogućava da se korisnički program koji je asembliran i linkovan testira pre puštanja na konkretnom sistemu.
• Simulator omogućava da se program izvršava korak po korak, da se prate i menjaju stanja svih registara i sadržaja memorije i ostale informacije koje bi ukazale na neregularnosti u programu.
• Bolji simulatori imaju i dobro urađene grafičke interfejse koji omogućavaju bolji uvid u sadržaj memorije i registara. Pomoću simulatora je ipak teško sagledati probleme do kojih bi moglo da dođe u sistemima koji rade u realnom vremenu.
Evaluacioni modul
• Evaluacioni moduli su dizajnirani od strane proizvođača prema zahtevima tipičnih algoritama obrade signala.
• Prave se kao nezavisne jedinice koje se mogu povezati sa računarom opšte namene ili nekim drugim uređajem.
• Pomoću jednostavnog monitorskog programa kontroliše se rad jednog ovakvog modula.
• Iz tog koncepta su se razvili razni moduli za razvoj softvera. To su ploče koje na sebi najčešće pored procesora, imaju integrisane standardne periferijske jedinice. Na taj način se dobija jednostavan kompletan sistem koji se lako povezuje sa računarom opšte namene. Takav pristup omogućava da se program testira u uslovima rada u realnom vremenu a da se pri tome ne vodi računa o dizajnu hardvera.
Emulator
• Emulator omogućava potpuno testiranje
kompletnog dizajniranog hardvera i
odgovarajućeg softvera.
• Slično kao kod simulatora moguć je uvid u
sadržaj memorije i registar i unošenje novih
vrednosti. Program se izvršava iz memorije
projektovanog sistema, testiranje se obavlja u
uslovima rada u realnom vremenu. Kod
savremenih procesora emulacija se obavlja tako
što se rad procesora kontroliše i prati preko za to
predviđenih spoljašnjih kontakata.
Real-time spektralna analiza
signala
ADSP-2181
DFT i FFT1
Diskretna Furijeova transformacija DFT definiše se kao
gde su:
x(n) odbirci signala,
rotacioni faktori.
Ovako definisana DFT zapravo predstavlja diskretizaciju Furijeove transformacije, pri čemu su dobijeni ekvidistantni odbirci X(k).
1...,1,0,1
0
NkWnxkXN
n
nk
N
Nj
N eW 2
DFT i FFT2
Odgovarajuća inverzna transformacija je:
i računa se praktično po istom algoritmu kao i DFT.
1...,1,0,1
1
0
NnWkxN
nx
N
k
nkN
DFT i FFT3
Ako se DFT računa direktno po definiciji, ukupan broj računskih operacija u opštem slučaju je:
N2 kompleksnih množenja i
N2 kompleksnih sabiranja
za ulazni niz dužine N.
Za off-line obrade ovako veliki broj računskih operacija ne predstavlja problem, ali ako se DFT koristi za analizu signala u realnom vremenu onda je potrebno na neki način povećati efikasnost algoritma.
DFT i FFT4
Zbog izuzetno velikog značaja DFT algoritma u digitalnoj obradi signala razvijali su se i dalje se razvijaju algoritmi za efikasno računanje, sa smanjenim brojem množenja i sabiranja.
Familija algoritama za efikasno računanje DFT-a naziva se brza Furijeova transformacija FFT.
Na osnovu načina na koji se vrši grupisanje elemenata niza u cilju veće efikasnosti, FFT algoritmi se dele na algoritme se decimacijom u vremenu (Decimation in Time FFT – DIT FFT) i decimacijom po frekvenciji (Decimation in Frequency FFT – DIF FFT).
Spektralna analiza1
Diskretna Furijeova transformacija implementirana je kao radix-2 DIT FFT algoritam.
Real-time spektralna analiza signala, zapravo se bazira na algoritmu kratkotrajne Furijeove transformacije (Short Time Fourier Transform STFT) koja je definisana formulom:
gde je:
x ulazni signal,
w prozorska funkcija,
frekvencija za koju se računa Furijeova transformacija,
n mera pomeraja ulaznog signala.
m
m
mjj emwmnxenX ,
Spektralna analiza2
Kratkotrajna Furijeova transformacija (prema definiciji) je kontinualna funkcija učestanosti.
DSP program, zapravo računa DFT (diskretan niz) segmenta signala pomnoženog sa izabranom prozorskom funkcijom.
U ulaznom baferu čuva se poslednjih N odbiraka signala (N– dužina prozora), i posle svakih M prihvaćenih odbiraka ulaznog signala startuje se FFT procedura. N je dužina prozora a M zavisi od izbaranog preklapanja dva sukcesivna prozora. (recimo M=N/2).
M N M NNM
STFT implementacija1
Izbor dužine prozora je kompromis između željene rezolucije u frekvencijskom domenu i rezolucije u vremenskom domenu.
Što je N veće, rezolucija u frekvencijskom domenu je bolja, ali je utoliko manje moguće izdvojiti kratkotrajnu promenu signala.
Maksimalna dužina prozora Nmax je ograničena raspoloživom memorijom DSP procesora, kao i složenošću samog algoritma u odnosu na takt procesora.
STFT implementacija2
Parametri od interesa:
•dužina prozora,
•dužina preklapanja dva
sukcesivna prozora,
•vrsta prozorske
funkcije.?
Inicijalizacija
memorijskih
lokacija
RADIX-2 DIT FFT
da
ne
STFT implementacija3
DFT sam po sebi na izlazu daje odbirke koji u opštem slučaju nisu ograničeni na opseg
[-1,1).
Pravilno skaliranje je uslov da se dobije korektan rezultat.
Pitanje je na kom mestu treba vršiti skaliranje i kojim faktorom da bi se dobio korektan rezultat a da bi se u što je moguće većoj meri sačuvao raspoloživi dinamički opseg.
Skaliranje1
Moguće strategije skaliranja su:
•skaliranje ulaznog signala,
•bezuslovno skaliranje na kraju svake etape
algoritma,
•skaliranje u slučajevima kada se registruje
prekoračenje.
Skaliranje2
U slučaju skaliranja ulaznog signala, pre samog FFT-a, signal se deli s N+1, gde je N dužina prozora u odnosu na koji se računa FFT.
Ovo rešenje je najjednostavnije i ne produžava se vreme računanja FFT-a. Skaliranjem ulaznog signala se već u startu ograničava dinamički opseg ulaznog signala.
S jedne strane, zbog bolje rezolucije u frekvencijskom domenu poželjno je da N bude što veće, dok je s druge strane, sa stanovišta dinamičkog opsega poželjno da Nbude što manje.
N 128 256 1024 2048
Dinamički
opseg [dB]42 36 30 24
Skaliranje3
U slučaju bezuslovnog skaliranja, na kraju svake etape FFT algoritma vrši se skaliranje s određenim, uvek istim faktorom.
Ako se kao faktor skaliranja izabere 2 može se doći do prekoračenja u nekoj tački algoritma, pa se dobija nekorektan rezultat.
Skaliranje s faktorom 4 je, najčešće, nepotrebno strogo.
Skaliranje4
U slučaju uslovnog skaliranja, na kraju svake etape proverava se da li je došlo do prekoračenja i ukoliko jeste skaliraju se svi izlazi te etape.
Skaliranje se vrši sa 2 ili 4, prema potrebi.
Ovo je najsloženiji način skaliranja.
Prednost je što je za svaki prozor pojedinačno postignut maksimalna dinamički opseg.
Skaliranje5
Nedostatak je, pored povećane složenosti algoritma, činjenica da je konačan rezultat, u opštem slučaju, skaliran nepoznatim faktorom.
Dodatno, ako se radi o analizi u realnom vremenu, gde se signal posmatra prozor po prozor, ukupan faktor skaliranja se razlikuje od prozora do prozora.
Ovo praktično znači da se uslovno skaliranje može koristiti kada je bitan samo relativan odnos spektralnih komponenti u okviru istog prozora.
FFT implementacija –
struktura1
FFT implementacija –
struktura2
FFT implementacija –
struktura3
FFT implementacija – primer1
1024,0,80
2sin*05.032
2cos*4.0
NNnn
Nn
Nnx
0 100 200 300 400 500
-0.05
0.00
0.05
0.10
0.15
0.20
0.25
0.30
0.35
0.40
skaliranje ulaznog signala
skaliranje sa 2 posle svakog stepena
skaliranje sa 4 posle svakog stepena
uslovno skaliranje sa 2 ili 4
Re [X
(k)]
k
30 31 32 33 34 35 36
-0.05
0.00
0.05
0.10
0.15
0.20
0.25
0.30
0.35
0.40
skaliranje ulaznog signala
skaliranje sa 2 posle svakog stepena
skaliranje sa 4 posle svakog stepena
uslovno skaliranje sa 2 ili 4
Re [X
(k)]
k
FFT implementacija – primer2
1024,0,80
2sin*05.032
2cos*4.0
NNnn
Nn
Nnx
0 100 200 300 400 500
-0.050
-0.045
-0.040
-0.035
-0.030
-0.025
-0.020
-0.015
-0.010
-0.005
0.000
0.005
skaliranje ulaznog signala
skaliranje sa 2 posle svakog stepena
skaliranje sa 4 posle svakog stepena
uslovno skaliranje sa 2 ili 4
Im [X
(k)]
k 78 79 80 81 82 83 84 85
-0.050
-0.045
-0.040
-0.035
-0.030
-0.025
-0.020
-0.015
-0.010
-0.005
0.000
0.005
skaliranje ulaznog signala
skaliranje sa 2 posle svakog stepena
skaliranje sa 4 posle svakog stepena
uslovno skaliranje sa 2 ili 4
Im [X
(k)]
k
Vreme1
FFT je, sam po sebi relativno složen algoritam (recimo, u odnosu na filtriranje).
Za dužinu prozora N=1024 mogu se odrediti približne vrednosti trajanja računanja FFT-a jednog prozora za ADSP-2181.
Način skaliranja Broj ciklusa trajanje
Skaliranje ulaznog signala 120000 3.6 ms
Uslovno skaliranje 200000 6 ms
FFT implementacija
Ako se analiza sprovodi brzom Furijeovom transformacijom prozori ulaznog signala mogu i ne moraju da se međusobno preklapaju.
U uslovima rada u realnom vremenu bitan je i odnos dužine prozora i frekvencije odabiranja ulaznog signala jer on određuje Vreme između dva pokretanja FFT algoritma.
U zavisnosti od stepena preklapanja, na raspolaganju je manje ili veće vreme za proračuna FFT-a svakog prozora.
Frekvencija odabiranjaN=1024, bez
preklapanja
N=1024, preklapanje
N/4
5.5125 kHz 186 ms 46.5 ms
8 kHz 128 ms 32 ms
48 kHz 21 ms 5.25 ms
STFT - primer(1)
• Diskretizovan signal govora (fs=44100 Hz),
• 20 sukcesivnih prozora, bez preklapanja,
• širina prozora 1024.
0 4x1024 8x1024 12x1024 16x1024 20x1024
-1.0
-0.5
0.0
0.5
1.0
x(n
)
n
STFT – primer(2)
0t 2t 4t 6t 8t 10t 12t 14t 16t 18t
0.5000
0.4375
0.3750
0.3125
0.2500
0.1875
0.1250
0.0625
0
t, t=N/44100 s, N=1024
/(2)
0t 2t 4t 6t 8t 10t 12t 14t 16t 18t
0.5000
0.4375
0.3750
0.3125
0.2500
0.1875
0.1250
0.0625
0
t, t=N/44100 s, N=1024
/(2)
Uslovno skaliranje
Bezuslovno skaliranje
Obrada signala II
DSP implementacija
Filtri
“Resursi ok?” zapravo
znači da je potrebno
proveriti da li
projektovan filtar
može da zadovolji
zahteve rada u
realnom vremenu na
izabranom procesoru
Ok?
Projektivanje filtra (u
MATLAB-u)
Specifikacija
filtra
Analiza efekata
konačne dužine reči
Korekcija
Implementacija
Resursi
Ok?
Da
Da
Ne
Ne
FIR
• Primer
– Projektovanje metodom prozora, red filtra se bira na osnovu zahteva za širinu prelazne zone, prozorska funkcija se bira na osnovu zahtevanog slabljenja u nepropusnom opsegu.
– Najjednostavnija za implementaciju je direktna realizacija.
N
k
k knxhny
0
nxz-1 z-1z-1z-1
ny
0h 1h 2h 1Nh Nh
FIR - primer
h=fir1(32,0.2);
n=[0:32];
figure,stem(n,h),xlabel('n'),ylabel('h(n)'),title('Impulsni odziv, MATLAB');
[H,w]=freqz(h,1,1000);
figure,plot(w,20*log10(abs(H))),xlabel('\omega'),...
ylabel('|H(e^j^\omega)|'), title('Amplitudska karakteristika, MATLAB');
figure,plot(w,unwrap(angle(H))),xlabel('\omega'),...
ylabel('arg(H(e^j^\omega))'),title('Fazna karakteristika, MATLAB');
FIR - primer
0 5 10 15 20 25 30 35-0.05
0
0.05
0.1
0.15
0.2
n
h(n
)
Impulsni odziv, MATLAB
0 0.5 1 1.5 2 2.5 3 3.5-120
-100
-80
-60
-40
-20
0
20
|H(e
j )|
Amplitudska karakteristika, MATLAB
FIR - primer
• U MATLAB-u mogu da se razviju
procedure koje simuliraju efekte
kvantizacije, tj. računaju impulsni i
frekvencijski odziv pod pretpostavkom da
su koeficijenti filtra svedeni na određenu
dužinu kodne reči.
FIR - primerfiltar:
ena sec_reg;
i4=^coeff;
l4=%coeff;
m4=1;
m3=1;
mr=0, mx0=dm(i3,m3), my0=pm(i4,m4);
cntr=koef_duzina-1;
do suma until ce;
suma: mr=mr+mx0*my0(ss), mx0=dm(i3,m3), my0=pm(i4,m4);
mr=mr+mx0*my0(rnd);
dm(ulaz)=mr1;
dis sec_reg;
rts;
FIR - primer
0 0.5 1 1.5 2 2.5 3 3.5-140
-120
-100
-80
-60
-40
-20
0
20
|H(e
j )|
Amplitudska karakteristika
bez kv.
16 bita - MATLAB
procesor
FIR - primer
• N+k
• (N+k)*33 ns < 45 * 33 ns = 1.485 s
• dt = 1/fs = 20.83 s
• za fs = 48 kHz max N ~ 600
Trigonometrijske funkcije
• Primer sin(x) – razvoj u red
• sin(x)=3.140625x+0.02026367x2-
5.325196x3+0.5446778x4+1.800293x5
• Važi pod uslovom da je x skalirano tako da
je -180o “preslikano” u -1
Trigonometrijske funkcije
Primer – sin(x).const sampling=0xc850;
.include <pocetak.dsp>; {initializations and DSP macros}
.var/dm sin_coeff[5];
.var/dm/ram/abs=0x2000 izlaz[1024];
.var/dm/ram/abs=0x2400 ulaz[1024];
.init sin_coeff: 0x3240, 0x0053, 0xAACC, 0x08B7, 0x1CCE;
.init ulaz:<za_sinus.hex>;
Primer – sin(x)sinus:
ena sec_reg;
{toggle fl1;}
AX0=DM(i3,m3);
I5=^sin_coeff;
m5=1;
l5=0;
AY0=0x4000;
AR=AX0, AF=AX0 AND AY0;
IF NE AR=-AX0;
AY0=0x7FFF;
AR=AR AND AY0;
MY1=AR;
MF=AR*MY1 (RND), MX1=DM(I5,M5);
MR=MX1*MY1 (SS), MX1=DM(I5,M5);
CNTR=3;
DO approx UNTIL CE;
MR=MR+MX1*MF (SS);
approx: MF=AR*MF (RND), MX1=DM(I5,M5);
MR=MR+MX1*MF (SS);
sr1=0;
sr0=0;
SR=ASHIFT MR1 BY 2 (HI);
SR=SR OR LSHIFT MR0 BY 2 (LO);
AR=PASS SR1;
IF LT AR=PASS AY0;
AF=PASS AX0;
IF LT AR=-AR;
dm(tx_buf+1)=ar;
dm(tx_buf+2)=ar;
dm(i7,m7)=ar;
RTI;