Procesori - University of Belgradetelekomunikacije.etf.bg.ac.rs/lab54/os2/cas_05_05.pdf · • Zbog...

Preview:

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;

Recommended