УНИВЕРЗИТЕТ У НОВОМ САДУ
ФАКУЛТЕТ ТЕХНИЧКИХ НАУКА
УНИВЕРЗИТЕТ У НОВОМ САДУ
ФАКУЛТЕТ ТЕХНИЧКИХ НАУКА
НОВИ САД
Департман за рачунарство и аутоматику
Одсек за рачунарску технику и рачунарске комуникације
ЗАВРШНИ (BACHELOR) РАД
Кандидат: Саша Талоши
Број индекса: РА77/2012
Тема рада: Израда блока аудио обраде за интелигентну еквализацију на ДСП платформи
Ментор рада: Доц. др Јелена Ковачевић
Нови Сад, септембар, 2017
УНИВЕРЗИТЕТ У НОВОМ САДУ ФАКУЛТЕТ ТЕХНИЧКИХ НАУКА
21000 НОВИ САД, Трг Доситеја Обрадовића 6
КЉУЧНА ДОКУМЕНТАЦИЈСКА ИНФОРМАЦИЈА
Редни број, РБР:
Идентификациони број, ИБР:
Тип документације, ТД: Монографска документација
Тип записа, ТЗ: Текстуални штампани материјал
Врста рада, ВР: Завршни (Bachelor) рад
Аутор, АУ: Саша Талоши
Ментор, МН: Доц. др Јелена Ковачевић
Наслов рада, НР: Израда блока аудио обраде за интелигентну еквализацију на ДСП платформи
Језик публикације, ЈП: Српски / латиница
Језик извода, ЈИ: Српски
Земља публиковања, ЗП: Република Србија
Уже географско подручје, УГП: Војводина
Година, ГО: 2017
Издавач, ИЗ: Ауторски репринт
Место и адреса, МА: Нови Сад; трг Доситеја Обрадовића 6
Физички опис рада, ФО: (поглавља/страна/ цитата/табела/слика/графика/прилога)
Научна област, НО: Електротехника и рачунарство
Научна дисциплина, НД: Рачунарска техника
Предметна одредница/Кqучне речи, ПО: Сложене аудио технологије, дигитална обрада сигнала, интелигентна еквализација звука
УДК
Чува се, ЧУ: У библиотеци Факултета техничких наука, Нови Сад
Важна напомена, ВН:
Извод, ИЗ: У оквиру рада је имплементирано једно решење модула за интелигентну еквализацију звука на процесору за дигиталну обраду сигнала.
Датум прихватања теме, ДП:
Датум одбране, ДО:
Чланови комисије, КО: Председник: Доц. др Миодраг Ђукић
Члан: Доц. др Иван Каштелан Потпис ментора
Члан, ментор: Доц. др Јелена Ковачевић
UNIVERSITY OF NOVI SAD FACULTY OF TECHNICAL SCIENCES
21000 NOVI SAD, Trg Dositeja Obradovića 6
KEY WORDS DOCUMENTATION
Accession number, ANO:
Identification number, INO:
Document type, DT: Monographic publication
Type of record, TR: Textual printed material
Contents code, CC: Bachelor Thesis
Author, AU: Saša Taloši
Mentor, MN: Doc. dr Jelena Kovačević
Title, TI: DSP implementation of intelligent audio equalization
Language of text, LT: Serbian
Language of abstract, LA: Serbian
Country of publication, CP: Republic of Serbia
Locality of publication, LP: Vojvodina
Publication year, PY: 2017
Publisher, PB: Author’s reprint
Publication place, PP: Novi Sad, Dositeja Obradovica sq. 6
Physical description, PD: (chapters/pages/ref./tables/pictures/graphs/appendixes)
Scientific field, SF: Electrical Engineering
Scientific discipline, SD: Computer Engineering, Engineering of Computer Based Systems
Subject/Key words, S/KW: Complex audio technologies, digital signal processing, intelligent audio equalization
UC
Holding data, HD: The Library of Faculty of Technical Sciences, Novi Sad, Serbia
Note, N:
Abstract, AB: This thesis describes one realisation of an intelligent equalization module on a digital signal porcessor.
Accepted by the Scientific Board on, ASB:
Defended on, DE:
Defended Board, DB: President: Doc. dr Miodrag Đukić
Member: Doc. dr Ivan Kaštelan Menthor's sign
Member, Mentor: Doc. dr Jelena Kovačević
УНИВЕРЗИТЕТ У НОВОМ САДУ
ФАКУЛТЕТ ТЕХНИЧКИХ НАУКА
Zahvalnost
Zahvaljujem se mentoru, profesorki Jeleni Kovačević i saradnicima - Robertu Pečkaji
Kovač, Goranu Babić, Aleksi Stojanović i Nenadu Pekez na razumevanju i stručnoj pomoći
prilikom izrade rada.
Takođe, zahvaljujem se svojoj porodici, prijateljima i kolegama na stalnoj i ogromnoj
podršci tokom izrade ovog rada i celokupnog vremena provedenog na studijama.
III
SADRŽAJ
1. Uvod ............................................................................................................................... 1
2. Teorijske osnove ............................................................................................................. 2
2.1 Sistem prijemnika audio-video signala CRD49844 ............................................ 2
2.2 Procesor za digitalnu obradu signala (DSP) ....................................................... 4
2.2.1 Digitalna obrada signala ................................................................................. 4
2.2.2 Karakteristike DSP procesira ......................................................................... 6
2.2.3 DSP procesor CS49844 .................................................................................. 8
2.3 Ekvalizacija ......................................................................................................... 9
2.4 Krive jednake glasnoće ..................................................................................... 10
2.5 Inteligentni ekvalajzer ....................................................................................... 11
3. Koncept rešenja ............................................................................................................ 13
3.1 Razvojno okruženje .......................................................................................... 13
3.2 Tok izrade projekta ........................................................................................... 13
3.2.1 Model 0 (Referentni kod) ............................................................................. 14
3.2.2 Model 1 ......................................................................................................... 14
3.2.3 Model 2 ......................................................................................................... 15
3.2.4 Model 3 ......................................................................................................... 15
3.2.5 Finalni kod .................................................................................................... 15
3.3 Opis algoritma ................................................................................................... 16
3.3.1 Obrada pre inteligentnog ekvalajzera ........................................................... 16
3.3.2 Obrada inteligentnog ekvalajzera ................................................................. 16
3.3.3 Obrada nakon inteligentnog ekvalajzera ...................................................... 16
4. Programsko rešenje....................................................................................................... 17
4.1 X_S_intelligent_eq_process ............................................................................. 17
5. Rezultati ........................................................................................................................ 20
5.1 Utrošak memorije .............................................................................................. 20
5.2 Potrošnja procesorskog vremena ...................................................................... 21
6. Zaključak ...................................................................................................................... 24
7. Literatura ...................................................................................................................... 25
Spisak slika
IV
SPISAK SLIKA
Slika 2.1 Razvojna ploča CRD49844 ............................................................................... 2
Slika 2.2 Blok dijagram razvojne ploče CRD49844 ......................................................... 3
Slika 2.3 Ilustracija opšteg funkcionisanja sistema .......................................................... 4
Slika 2.4 Blok dijagram digitalne obrade signala ............................................................. 5
Slika 2.5 Šum prisutan u analognom (levo) i digitalnom(desno) signalu ......................... 5
Slika 2.6 Originalni signal (crveni) i signal koji je registrovan (plavi) ............................ 6
Slika 2.7 Gornja slika – originalni (plavi) i kvantizovani signal (crveni) Donja slika –
greška u konverziji iz analognog u digitalni domen .................................................................. 6
Slika 2.8 Harvard i Von Nojman arhitektura .................................................................... 7
Slika 2.9 Blok dijagram DSP čipa CS49844 .................................................................... 8
Slika 2.10 Desetopojasni EQ .......................................................................................... 10
Slika 2.13 Krive jednake glasnoće .................................................................................. 10
Slika 2.11 Prvi pimer IEQ ............................................................................................... 12
Slika 2.12 Drugi primer IEQ ........................................................................................... 12
Slika 3.1 Tok izrade DSP aplikacije ............................................................................... 14
Spisak tabela
V
SPISAK TABELA
Tabela 1 Utrošak memorije ............................................................................................. 21
Tabela 2 Utrošak ciklusa za 32k ..................................................................................... 21
Tabela 3 Utrošak ciklusa za 44k1 ................................................................................... 22
Tabela 4 Utrošak ciklusa za 48k ..................................................................................... 22
Skraćenice
VI
SKRAĆENICE
DSP – Procesor za digitalnu obradu signala (Digital Signal Processor)
EQ – Ekvalajzer (Equalizer)
IEQ – Inteligentan ekvalajzer (Intelligent equalizer)
DTS – Audio tehnologija (Dedicated To Sound)
LCD – Ekran zasnovan na tehnologiji tečnih kristala (Liquid Crystal Display)
ADC – Analogno-digitalni konverter (Analog-to-Digital Converter)
DAC – Digitalno-analogni konverter (Digital-to-Analog Converter)
DAI – Digitalni audio ulaz (Digital Audio Input)
DAO – Digitalni audio izlaz (Digital Audio Output)
MAC – Pomnoži i saberi (Multiply And Accumulate)
ROM – Memorija iz koje se podaci mogu samo čitati (Read Only Memory)
VS – Razvojno okruženje Visual Studio
CLIDE – Razvojno okruženje Cirrus Logic IDE
CQMF – Kompleksan filter (Complex Quadratic Mirror Filter)
ERB – Ekvivalentan pravougaoni pojas (Equivalent Rectangular Bandwidth)
Uvod
1
1. Uvod
Predmet analize ovog rada predstavlja implementacija blok obrade za inteligentnu
ekvalizaciju zvuka na DSP procesoru.
Rad obuhvata upoznavanje sa osnovama digitalne audio obrade i ciljanom platformom.
Implementacija obuhvata prilagođavanje referentnog C koda aritmetici željene DSP platforme
i realizaciju u asemblerskom jeziku.
Cilj rada je upoznavanje sa pisanjem programske podrške u realnom vremenu za audio
DSP aplikacije na ciljanoj platformi. Takođe, u radu je predstavljeno i upoznavanje sa opštim
postupcima ispitivanja, verifikacije audio DSP aplikacija i izradom tehničke dokumentacije.
Obrada je napravljena u okviru programskih jezika C i Coyote32 asembleru.
Verifikacija implementacije se vršila pomoću vektora testnih slučajeva, koji su
generisani pomoću referentnog koda za date testne slučajeve. Isti testni slučajevi su
predstavljeni implementaciji u asembleru, koja je generisala svoje izlazne vektore.
Upoređivanjem izlaznih vektora vršila se verifikacija implementacije.
Teorijske osnove
2
2. Teorijske osnove
Ovo poglavlje pruža osnovne karakteristike razvojne ploče CRD49844 kao i njenih
najvažnijih komponenti i interakciji među njima. Takođe, upoređuju se prednosti i mane
digitalne i analogne obrade signala i zašto je danas više upotrebljena digitalna obrada signala
u audio i video sistemima. Konačno, ovo poglavlje pruža teorijske osnove o digitalnoj obradi
signala, ekvalizaciji, i inteligentnoj ekvalizaciji.
2.1 Sistem prijemnika audio-video signala CRD49844
Na slici 2.1 dat je prikaz razvojne ploče Cirrus Logic CRD49844 koja je korišćena
prilikom izrade rada. Na slici 2.1, takođe je obeležena komponenta koja je bila od najvećeg
interesa, a to je DSP.
Slika 2.1 Razvojna ploča CRD49844
Kontrolu nad DSP procesorom CS49844 moguće je ostvariti na dva načina. Prvi način
je putem računara i pomoću sprežne kartice CDB-MCU-DEBUG-B, koja omogućava tu
spregu (na slici 2.1 vidi se ta kartica na levoj strani slike), a drugi preko mikrokontrolera, koji
Teorijske osnove
3
se nalazi na ploči i bez ikakvih spoljnih i dodantih komponenti. Prvi način rada je poznat kao
JP2, dok je drugi samostalni ili standalone. U oba slučaja mikrokontroler kontroliše sve
periferije ploče, kao što su kodek, DAC/ADC, HDMI primopredajnik i mnoge druge. Razlika
u ovim načinima pristupa ogleda se u tome što sama komunikacija sa DSP procesorom u
prvom pristupu obavlja se putem računara, a u drugom putem mikrokontrolera. JP2 je, pre
svega, namenjen za razvoj i testiranje DSP programske podrške (dekodera, post-procesora,…)
i menjanje celokupne programske podrške, odnosno, programiranje flash memorije u koju se
programska podrška smešta.
Sprega sa korisnicima, tj. korisnički interfejs, se u oba načina rada ostvaruje putem LCD
ekrana, četiri tastera i rotacionog enkodera koji se nalaze na ploči.
Na slici 2.2 predstavljen je blok dijagram ploče CRD49844. Glavne komponente
sistema su:
• DSP procesor CS49844;
• 16-bitni mikrokontroler R5F100LL;
• flash memorija SST25VF032;
• osmokanalni DAC CS4385;
• stereo ADC CS53L21;
• HDMI primopredajnik Sil9573.
Slika 2.2 Blok dijagram razvojne ploče CRD49844
Teorijske osnove
4
Od audio ulaza/izlaza sistem poseduje:
• analogne ulaze/izlaze;
• ulaz za mikrofon;
• optičke digitalne ulaze/izlaze;
• koaksijalne digitalne ulaze;
• digitalne audio ulaze/izlaze (DAI/DAО);
• HDMI ulaze/izlaze.
U najopštijem slučaju, sistem funkcioniše na sledeći način: nakon što ulazni audio
signal dođe do DSP procesora, DSP prepoznaje o kom je tipu signala reč i iz flash memorije
učitava odgovarajuće komponente za obradu datog audio signala. Svake dalje promene u
lancu obrade koje korisnik može zahtevati putem korisničke sprege, promene u konfiguraciji
sistema ili promene ulaznog toka, moraju se izvršavati preko mikrokontrolera. Odnosno,
mikrokontroler registruje zahteve korisnika i šalje odgovarajuće instrukcije DSP procesoru,
kako bi procesor učitao iz memorije komponente programske podrške i izvršio tražene
izmene.
Slika 2.3 Ilustracija opšteg funkcionisanja sistema
2.2 Procesor za digitalnu obradu signala (DSP)
2.2.1 Digitalna obrada signala
Digitalna obrada signala predstavlja numeričku manipulaciju nad signalima i sastoji se
iz tri osnovna stepena: konverzije analognih signala u digitalni oblik, obrade digitalnih signala
i konverzije obrađenih signala nazad u analogni oblik.
Teorijske osnove
5
Slika 2.4 Blok dijagram digitalne obrade signala
Binarna prezentacija informacija omogućava prevođenje problema iz domena složenog
hardvera u domen složenih algoritama, koji se mogu razvijati i lako menjati i izvršavati na
procesoru. To nudi mnoge prednosti u odnosu na klasičnu analognu obradu signala.
Digitalna obrada signala daje veću fleksibilnost i iskorišćenost resursa. To znači da je
skup mogućih obrada, takođe, veći, pa digitalna implementacija dozvoljava jednostavnu
realizaciju filtera, kao što su adaptivni ili frekventno selektivni, kao i realizaciju banke filtera i
mnogih drugih naprednijih algoritama. Realizacija sistema linerane faze i obrada signala sa
promenljivom periodom odabiranja, takođe, su mogući u digitalnoj formi, dok u analognoj
nisu. Bitno je napomenuti da se u binarnoj formi lakše postiže željena tačnost jednostavnim
povećavanjem dužine binarne reči [1].
Digitalni signali su otporniji na šumove, jer je odluka o vrednosti jedinice informacije
svedena na samo dve vrednosti, uključeno ili isključeno (1 ili 0). Kod analognih signala
postoji čitav opseg kontinualnih vrednosti, koje su glavni nosioci informacije, što znači da i
najmanji šum utiče na promenu vrednosti, pa samim tim i na informacije. To znači da će šum
prisutan u analognom signalu čovek moći lakše da primeti nego u digitalnom signalu.
Slika 2.5 Šum prisutan u analognom (levo) i digitalnom(desno) signalu
Kao što digitalni sistemi sa sobom donose mnoge vrline, takođe donose i mane. Jedan
od glavnih nedostataka digitalne obrade signala je ograničen opseg frekvencija signala koji se
mogu obrađivati. Naime, prilikom konverzije analognih signala u digitalne, potrebno je
izvršiti odabiranje, i to sa periodom koja je dva puta viša od najviše frekvencije prisutne u
Teorijske osnove
6
analognom signalu, u suprotnom će doći do pogrešne interpretacije signala - aliasing. Drugim
rečima, ako su signali brži od onoga što sistem može da primi, sistem će registrovati signale
kao sporije nego što to oni zaista jesu [1]. Primer ove pojave dat je na slici 2.6.
Slika 2.6 Originalni signal (crveni) i signal koji je registrovan (plavi)
Prilikom konverzije signala iz analognog u digitalni domen, potrebno je izvršiti i
kvantizaciju prethodno odabranih vrednosti, odnosno, kontinualne vrednosti kovertovati u
diskretne. Time se uvodi neizbežna greška, i digitalni signal se odmah, u samoj konverziji,
pomera u spektru, u odnosu na originalni signal.
Slika 2.7 Gornja slika – originalni (plavi) i kvantizovani signal (crveni)
Donja slika – greška u konverziji iz analognog u digitalni domen
Potreba za dodatnim komponentama kao što su digitalno-analogni i analogno-digitalni
konvertori, filteri i neka druga dodatna kola, takođe, predstavljaju dodatnu vrstu nedostatka.
Međutim, prednosti digitalne obrade signala su znatno izraženije od nedostataka, pa se samim
tim broj aplikacija ove vrste obrade povećava velikom brzinom.
2.2.2 Karakteristike DSP procesora
Algoritmi za digitalnu obradu signala najčešće se sastoje od velikog broja kompleksnih
matematičkih operacija, koje se izvršavaju nad određenim blokom podataka. Mnogi
mikrokontroleri i mikroprocesori za opštu upotrebu mogu vršiti obradu signala, ali njihove
performanse prilikom izvršavanja ovih kompleksnih algoritama mogu biti veoma loše i
praktično neupotrebljive (pre svega za rad u realnom vremenu), jer su oni namenjeni za
Teorijske osnove
7
izvršavanje različitih korisničkih programa. Prilikom rada u realnom vremenu, gde je
potrebno da se primljeni signal obradi unapred i u precizno definisanom vremenskom
intervalu, potrebni su procesori koji su direktno namenjeni za digitalnu obradu signala.
Specifična arhitektura ovih procesora razlikuje ih od procesora za opštu upotrebu.
Procesori za digitalnu obradu signala imaju višestruke magistrale za program i podatke,
odnosno Harvard arhitekturu, što im omogućuje, istovremeni pristup instrukcijama i
podacima iz memorije, čime se znatno ubrzava celokupni rad ovih sistema. Kako bi DSP
procesori bili efikasniji, često imaju Harvard arhitekturu sa tri magistrale, jednu za program, a
dve za podatke, čime je moguće istovremeno čitati instrukciju i dva operanda. Mikroprocesori
sa Fon Nojmanovom arhitekturom, sa druge strane, kada izvršavaju instrukciju, moraju je
prvo pročitati iz memorije, dekodirati je, a zatim iz memorije pročitati operand, i tek onda
izvrčiti operaciju, što sve oduzima mnogo vremena.
Slika 2.8 Harvard i Von Nojman arhitektura
Osnovna i glavna operacija u algoritmima za obradu digitalnih signala jeste množenje.
Poznato je da je to jedan od najzahtevnijih operacija u procesorima opšte namene.
Mikroprocesoru 8086 za sabiranje je potrebno tri ciklusa, dok je za množenje potrebno
između 134-160 ciklusa. Zato u DSP procesorima postoji hardverska jedinica koja je
zadužena samo za množenje. Takvo rešenje omogućuje da se množenje dva broja izvrši u
samo jednom ciklusu. U aritmetičko logičnim jedinicama ovih procesora često je omogućeno
i direktno sabiranje sa trećim brojem u istom ciklusu, kada se izvrši i množenje tzv. MAC
instrukcije.
U cilju dodatnog povećanja nivoa paralelizma, DSP procesori imaju i tzv. protočnu (
pipeline) strukturu koja instrukcije deli u više manjih opracija koje se izvršavaju paralelno,
ako je to moguće.
Teorijske osnove
8
Prilikom digitalne obrade signala, često se radi nad velikim količinama podataka, koji se
nalaze u nizovima. S obzirom da je kod mikroprocesora opšte namene vreme potrebno za
izračunavanje adrese veće od vremena potrebnog za samu obradu tog podatka, DSP procesori
imaju specijalizovane jedinice – adresne generatore. Ove komponente im omogućuju izuzetno
brzo izračunavanje adrese podataka koji se obrađuju i često imaju i dodatne mogućnosti, kao
što su binarno inverzno adresiranje ili adresiranje sa modulo aritmetikom.
DSP procesori često poseduju i ROM, koji najčešće služi za smeštanje konstanti koje se
koriste prilikom rada programa.
2.2.3 DSP procesor CS49844
Na razvojnoj ploči Cirrus Logic CRD49844 nalazi se DSP procesor CS49844, koji u
sebi ima četiri 32-bitna DSP jezgra. Svako jezgro poseduje unapređenu hardvardsku
arhitekturu sa po tri memorije, dve za podatke i jednu za program [1].
Veličina memorije za podatke svakog jezgra je 120 000 reči (32 bita), dok je
programska memorija velika 60 000 reči. Svako jezgro omogućuje izvršenje šest aritmetičkih
operacija u jednom ciklusu. Ovaj tip poseduje i ROM veličine 32 000 reči.
Slika 2.9 Blok dijagram DSP čipa CS49844
Programska podrška ovog procesora se sastoji od operativnog sistema i biblioteke tzv.
prekrivača (overlays), odnosno, komponenti koje se učitavaju iz spoljne memorije u
zavisnosti od ulaznog toka. Operativni sistem/kernel obavlja sve zadatke koje se ne odnose na
audio obradu, kao što su obrade poruka od domaćina, pozivanje rutina za audio obradu,
obrada grešaka itd.
Komponente programske podrške se dele u pet grupa:
Teorijske osnove
9
• Dekoderi – moduli koji inicijalno upisuju podatke u audio ulatno-izlazni bafer i
u kojima se nalaze algoritmi za dekodovanje i obradu svih mogućih ulaznih
signala.
• Matrični procesori – moduli koji menjaju broj validnih izlaznih kanala u toku
pomoću procesa kao što su virtualizacija ili matrično dekodovanje.
• Procesori za virtualizaciju – moduli koji vrše virtualizaciju i smanjivanje
broja izlaznih kanala (dowmixing).
• Procesori za podešavanje jačine zvuka – moduli koji služe za podešavanje
jačine zvuka audio sistema prema željenim očekivanjima korisnika.
• Post-procesori – moduli koji vrše bilo kakvu dodatnu obradu podataka nakon
matričnih dekodera ili procesora za virtualizaciju.
Prekrivačka struktura smanjuje vreme potrebno DSP procesoru da izvrši
rekonfiguraciju, odnosno, izmenu komponenti programske podrške. Bilo koja komponenta
može biti potpuno nezavisno učitana iz memorije, bez bilo kakvih uticaja na druge
komponente. Na primer, kada je odabran novi dekoder, ostale komponente, oprativni sistem,
matrični dekoder, procesori za virtualizaciju, podešavanje jačine zvuka i post-procesiranje, ne
moraju biti učitani. Samo će dekoder biti zamenjen. Ovo pravilo važi i za ostale komponente.
2.3 Ekvalizacija
Ekvalizacija (EQ) je proces podešavanja balansa između frekvencijskih komponenti u
jednom signalu. Ekvalizacija se najviše koristi pri snimanju i reproduciranju zvuka. Hardver
ili softver koji se koristi za ekvalizaciju se zove ekvalajzer.
U opštem slučaju EQ ne služi samo za podešavanje balansa frekvencijskih komponenti
u signalu, već nudi i mogućnost da korisnik podesi koje frekvencijske komponente pojačava
ili smanjuje.
EQ radi tako što signal podeli na više frekvencijskih pojasa ili opsega i na svaki od tih
pojasa dodaje pojačanje ili smanjenje u zavisnosti od podešavanja. Kompleksnost EQ najviše
zavisi od toga na koliko pojasa može da podeli jedan signal i koliko detaljno može da ga
pojača ili smanji. Najčešće viđeni EQ deli signal na visoke, srednje i niske pojaseve, ali mogu
se naći i ekvalajzeri koji dele na 2 pojasa, a i mnogo više.
Na slici 2.10 se može videti primer jednog EQ, koji signal deli na 10 pojasa, i svaki od
pojasa može da pojačava ili smanjuje za 12 dB.
Teorijske osnove
10
Slika 2.10 Desetopojasni EQ [3]
EQ se često koristi za neutralisanje neželjenih frekvencijskih komponenti iz signala kao
što su šumovi, visoko ili nisko zujanje, žamor u pozadini telefonskog razgovora itd.
2.4 Krive jednake glasnoće
Ljudsko uho, zbog fizičkih karakteristika, ne razlikuje glasnoću zvuka linearno sa
povećanjem intenziteta, već glasnoće razlikuje na logaritamskoj skali. Zato se za
kvantifikaciju intenziteta zvuka koristi decibel (dB), logaritamska jedinica kojom se prikazuje
odnos između dve veličine. Dodatno, ljudsko uho, zbog anatomije ušne školjke, nije jednako
osetljivo na različite frekvencije [4]. Na slici 2.13 je prikazan dijagram na kom su vidljive
krive jednake glasnoće.
Slika 2.11 Krive jednake glasnoće [4]
Teorijske osnove
11
Za prikaz glasnoće zvuka se upotrebljava jedinica fon. Frekvencija na kojoj decibel i
fon imaju jednake vrednosti je 1000 Hz. Sa kriva jednakih glasnoća možemo da zaključimo
koliki je potreban intenzitet zvuka na određenoj frekvenciji da bi se postigla jednaka glasnoća
na drugoj frekvenciji i intenzitetu. Na primer, zvuk intenziteta 80 dB na 1000 Hz znači je
glasan 80 fona, a zvuk inteziteta 80 dB na 100 Hz se vidi na dijagramu da se nalazi ispod
krive od 80 fona što znači da je njegova glasnoća manja.
2.5 Inteligentni ekvalajzer
Inteligentni ekvalajzer (IEQ) je novi koncept u obradi audio signala koji obezbeđuje
konzistentnost spektralnog balansa. Konzistentnost se postiže neprestanim posmatranjem
spektralnog balansa audio signala, poređenjem istog sa željenim podešavanjima i dinamičkim
podešavanjima filtera kojima se originalni zvuk transformiše u željeni.
Na postojećim audio sistemima, većinom, su ugrađena statička podešavanja koja se ne
menjaju u toku rada sistema. Ovi sistemi vrše identične promene na svakoj frekvenciji ne
obraćajući pažnju na sadržaj i ovo može dovesti do nekvalitetne reprodukcije zvuka. Na
primer, ako je EQ podešen tako da pojačava niske komponente, a određeni signal originalno
ima pojačane niske komponente, može se desiti da se ove komponente toliko pojačaju da dođe
do distorzije zvuka.
Sa druge strane, sistem koji sadrži IEQ je dinamičan. Ako audio signal ima pojačane
niske komponente u poređenju sa prvobitnim podešavanjima, IEQ će registrovati to i neće
vršiti dodatna pojačavanja koja ugrožavaju spektralni balans i izazivaju distrozije signala.
Rezultat ovoga je željeni signal bez preterane prerade signala i bez distorzije.
Na slikama 2.11 i 2.12 može se videti kako IEQ ubacuje svoje pojačanje, koje podešava
signal, tako da pojačanje po opsezima bude mnogo bliže željenoj vrednosti nego što bi stvarno
bilo.
Teorijske osnove
12
Slika 2.12 Prvi pimer IEQ
Slika 2.13 Drugi primer IEQ
Koncept rešenja
13
3. Koncept rešenja
U ovom poglavlju je predstavljeno razvojno okruženje u kom je razvijan projekat i
objašnjena je metodologija koja se pratila u izradi projekta. Konačno, opisan je i algoritam
koji je implementiran u okviru projekta.
3.1 Razvojno okruženje
Razvojna okruženja koja su upotrebljena tokom izrade ovog projekta su Microsoft
Visual Studio (VS) i Cirrus Logic IDE (CLIDE). U početnoj fazi projekta se upotrebljavao
VS zato što je pogodan za razvoj aplikacija za procesore opšte namene, a u kasnijim fazama
se prešlo na razvojno okruženje CLIDE koje je namenjeno za rad sa DSP procesorima
proizvođača Cirrus Logic.
CLIDE je zasnovan na Eclipse platformi. Eclipse platforma je široko upotrebljivana kao
osnova za mnoga razvojna okruženja, jer je otvorenog koda i nudi mnoštvo alata za razvoj
programske podrške. CLIDE, kao i mnoga druga razvojna okruženja, omogućava menjanje
koda i pomaže pri pisanju novog, koristi prevodilac za Cirrus Logic DSP procesore i prevodi
kod. Najbitnije je što omogućava kontrolisano izvršavanje koda koje pomaže pri brzom
uočavanju i uklanjanju grešaka.
3.2 Tok izrade projekta
Izrada DSP aplikacije predstavlja proces od 5 koraka. Početak ovog procesa predstavlja
kod koji je lako razumljiv i pokreće se na procesorima opšte namene, a kraj procesa
predstavlja kod koji je, najčešće, malo razumljiv i optimizovan za pokretanje na ciljanom DSP
procesoru. Posle svakog koraka se vrši verifikacija očuvanosti kvaliteta obrade, a često se
kvalitet poboljša jer je DSP procesor precizniji od procesora opšte namene, kada je u pitanju
obrada digitalnog signala.
Koncept rešenja
14
Na slici 3.1 se mogu videti svih 5 koraka kroz koje se prolazi u izradi jedne DSP
aplikacije, a u nastavku će svaki korak biti objašnjen.
Slika 3.1 Tok izrade DSP aplikacije [5]
3.2.1 Model 0 (Referentni kod)
Prvi korak predstavlja izradu referentnog koda koji za treba da realizuje ciljani
algoritam. Ovo se radi isključivo zbog toga što je u ovom koraku najlakše napraviti
programsko rešenje algoritma i najjednostavnije je pronaći i ukloniti grešku u kodu, ako je
ona nastala. Za izradu referentnog koda, najčešćce je potrebno mnogo vremena i zatim se
prelazi na Model 1.
3.2.2 Model 1
Drugi korak izrade DSP aplikacije predstavlja optimizaciju referentnog koda, da bi se
lakše u njega ubacila emulacija rada DSP procesora. U referentnom kodu je primarni zadatak
da proradi algoritam i tada se ne vodi računa o optimizaciji koda. U Modelu 1 se tipovi
zamenjuju predprocesorskim direktivama, da bi se u kasnijim koracima lakše zamenili tipovi
koji su prilagođeni za DSP procesore. Takođe, petlje unutar koda se prilagođavaju i
optimizuju da bi se kasnije lako mogle zameniti hardverskim petljama, koje su mnogo brže od
onih korišćenih u referentnom kodu. Izbacuje se indeksiranje nizova i, najčešće se, zamenjuje
pokazivačem koji se adekvatno menja tokom petlje. Broj argumenata funkcija se smanjuje i
od večine argumenata se prave globalne promenljive. Kada se završi izrada Modela 1,
proverava se da li su izlazne datoteke identične, jer do promene između ova dva modela ne
sme da dođe. Ovaj korak izrade aplikacije se brzo završava i ubrzo se prelazi na Model 2.
Koncept rešenja
15
3.2.3 Model 2
Treći korak predstavlja izrada Modela 2 DSP aplikacije. Referentni kod se, najčešće,
služi aritmetikom sa pokretnim zarezom, koja je po svojoj prirodi sporija, manje precizna i
ima veći opseg od aritmetike sa nepokretnim zarezom. S obzirom da u izradi DSP aplikacije
nije toliko bitan opseg, već preciznost, zbog kvaliteta zvuka ili slika, u Modelu 2 se prelazi na
aritmetiku sa nepokretnim zarezom. Takođe, brzina obrade je isto bitan faktor, da ne bi došlo
do kašnjenja zvuka ili slike.
Većina C prevodilaca u sebi ne sadrži opracije sa nepokretnim zarezom pa se u ovom
koraku ubacuju nove biblioteke, koje služe da emuliraju rad fiksnog zareza na procesorima
opšte namene. Te biblioteke, takođe, sadrže i druge funkcije koje služe da DSP aplikaciju
približe izvršavanju na DSP procesoru. Pored dodatnih funkcija, u bibliotekama se nalaze i
tipovi koji ne koriste pokretni zarez.
U ovom koraku može doći do malih promena u izlaznim datotekama DSP aplikacije.
Takve promene se prihvataju ako je došlo do promene u jednom bitu u nekim odbircima.
Promena od jednog bita se, u većini slučajeva, ne može čuti ljudskim uhom i zato je
prihvatljiva. Ako je došlo do promene više bita, proverava se kod i menja se tako da bi se
postigla manja promena u bitovima. Izrada Modela 2 je dosta duža od prva dva koraka i sa
njegovim završetkom se prelazi na Model 3.
Cilj ovog diplomskog rada je izrada Modela 3, na osnovu dobijenog Modela 2.
3.2.4 Model 3
Četvrti korak izrade DSP aplikacije je pomeranje koda za procesor opšte namene na
DSP procesor. Kod se otvara u razvojnom okruženju za rad sa DSP procesorom i vrše se
prepravke, koje će omogućiti da se kod pokrene i da se proveri izlaz Modela 3 i Modela 2.
Pod prepravkama smatra se:
• zamena tipova iz Modela 2 sa tipovima DSP procesora;
• zamena funkcija koje emuliraju aritmetiku nepokretnog zareza sa instrukcijama
DSP procesora;
• prelazak u asemblerski jezik.
Izrada Modela 3 traje duže od izrade Modela 2.
3.2.5 Finalni kod
Finalni kod predstavlja poslednji korak u razvoju DSP aplikacije. U ovom koraku se
kod optimizuje radi bržeg izvršavanja i manjeg utroška resursa. Ovaj kod predstavlja finalnu
verziju koja će biti korišćena na DSP procesorima. S obzirom da se kodovi stalno mogu
Koncept rešenja
16
optimizovati, ovaj proces traje neodređeno dokle god kod ne zadovoljava zahteve koji su mu
postavljeni.
3.3 Opis algoritma
Algoritam se bavi obradom nad blokom od 64 odbirka. Pre nego što IEQ može da
obradi odbirke, oni moraju proći kroz niz transformacija iz vremenskog u frekventni domen i
sortiraju se u Equivalent rectangular bandwidth (ERB) opsege.
3.3.1 Obrada pre inteligentnog ekvalajzera
Kada se u sistem primi 64 odbirka, oni se prvo transformišu pomoću Complex
Quadratic Mirror Filter (CQMF) u 64 jednako raspoređena frekvencijska pojasa. Nakon
ovoga se pojasi grupišu u ERB opsege. Naime, kada se dva zvuka jednake glasnoće i blizu u
frekvencijama reprodukuju zajedno, njihova zajednička glasnoća će biti zanemarljivo glasnija
nego kada bi se reprodukovali pojedinačno. Ovo omogućava da se računa srednji intenzitet na
svim frekvencijama unutar jedne grupe. Grupisanjem se smanjuje količina obrade i
omogućava da se obrada vrši, u ovom slučaju, na nizu od 19 ili 20 članova koji predstavljaju
srednje intenzitete na frekvencijskim opsezima. Intenzitet signala u frekvencijskom pojasu se
izražava u decibelima.
3.3.2 Obrada inteligentnog ekvalajzera
Sam inteligentni ekvalajzer upoređuje željene glasnoće sa trenutnim glasnoćama unutar
signala i na njih dodaje pozitivno ili negativno pojačanje, koje oblikuje signal približno
željenim vrednostima. Algoritam prati ponašanje signala i promene glasnoća po pojasevima
čak i kada je modul za inteligentnu ekvalizaciju isključen. Ovo se vrši da bi se izbegli
nepoželjni efekti, zato što je IEQ imao premalo uzoraka nad kojima je zaključio pogrešne
trenutne intenzitete u signalu. Detaljna analiza algoritma je izložena u sledećem poglavlju u
kom se posmatra programsko rešenje inteligentnog ekvalajzera.
3.3.3 Obrada nakon inteligentnog ekvalajzera
Nakon što je izvršena obrada inteligentnog ekvalajzera i ostalih dodatnih modula u
sistemu, vrši se transformacija odbiraka iz frekventnog domena u vremenski domen.
Rezultati
17
4. Programsko rešenje
U ovom poglavlju prikazana je programska struktura inteligentnog ekvalajzera. Glavna
funkcija za inteligentnu ekvalizaciju je X_S_intelligent_eq_process koja u sebi poziva
funkcije:
• X_S_ieq_reset, koja je resetovala bafere koje koristi IEQ;
• X_S_ieq_calc_loudness, koja je računala glasnoću na pojasevima;
• X_S_scale_band, koja je skalirala pojaseve.
Sem ovih funkcija korišćene su još neke koje nisu bile deo ovog projekta pa će se one
samo spominjati u daljem opisu.
4.1 X_S_intelligent_eq_process
U ovom delu poglavlja biće ukratko opisano šta radi funkcija
X_S_intelligent_eq_process.
Naime, X_S_intelligent_eq_process prvo proverava da li treba da izvrši resetovanje
svojih glavnih bafera kroz koje prati glasnoće na ERB pojasevima i ako treba resetuje ih na 0.
Zatim, pripremi pokazivače na nizove p_lvl_ldn, p_ref_ld. Ove nizove možemo posmatrati
kao ulazne, a nizove a_sl_inst i a_ldn_capture možemo posmatrati kao izlazne. Zatim se
vrednosti iz ulaznih nizova p_lvl_ldn, p_ref_ldn podese i vrši se saturacija sa konstantama
X_CX_IEQ_LDN_MIN i X_CX_IEQ_LDN_MAX. Dobijene vrednosti se upisuju u izlazne
nizove.
Nakon saturacije, nizovi a_sl_inst i a_ldn_capture se prosleđuju u funkciju
hdr_vec_P2powPLPU koja vektorski računa 2x i ona vraća kao rezultat nizove a_sl_inst_pow
i a_ldn_capture_pow. Vrši se, ponovo, saturacija nad novo dobijenim nizovima i rezultat se
iznova upisuje u a_sl_inst i a_ldn_capture.
Rezultati
18
U narednoj petlji se proverava da li je su glasnoće iz niza a_sl_inst manje nego u nizu
p_ieq->p_ldn_state. Ako jesu onda se u niz a_content_louder_than_pgm upisuje 0, a u
suprotnom se upisuje 1 i prelazi se na obradu niza p_ieq->p_ldn_state. Ako glasnoće nisu
manje, pravi se upit da li su glasnoće u a_ldn_capture veće od vrednosti u p_ieq->p_ldn_state.
Ako je uslov zadovoljen, prelazi se na obradu niza p_ieq->p_ldn_state. Ako ni jedan upit nije
zadovoljen, u niz p_ieq->p_ldn_state se samo kopiraju vrednosti iz a_ldn_capture. U slučaju
da se ispostavilo da su a_sl_inst vrednosti manje od p_ieq->p_ldn_state, množi se sa
f_attack_alpha i čuva se rezultat. U isto vreme se od konstante DLB_L10 oduzima
f_attack_alpha i rezultat se pomnoži sa a_sl_inst. Ovaj rezultat se sabere sa rezulatom koji je
sačuvan i konačan rezultat se pamti u a_sl_inst.
Sa druge strane, ako se ispostavilo da je a_ldn_capture veći od p_ieq->p_ldn_state,
obavlja se računski proces objašnjen u prošlom pasusus, ali se umesto f_attack_alpha koristi
f_release_alpha.
Posle ovoga se poziva funkcija X_S_ieq_calc_loudness sa ulaznim parametrom niz
p_ieq->p_ldn_state i izlaznim parametrima nizovi f_sl_weighted_sum i p_f_sl_correct.
Sledi glavni upit funkcije gde se postavlja pitanje da li su vrednosti f_sl_weighted_sum
i p_preset->total_target_ldn manji od 0, gde je p_preset->total_target_ldn niz u kom su
sadržane željene glasnoće. Ako uslov nije zadovoljen, završava se funkcija. U suprotnom se
od 4 oduzima p_preset->ldn_sft i čuva se u preset_shift, a onda se proverava da li je
postavljen update_preset_now i ako jeste poziva se funkcija X_S_scale_band gde su ulazni
parametri preset_shift, p_f_sl_correct i rezultat množenja f_sl_weighted_sum i p_preset-
>p_target_ldn. Povratna vrednost ove funkcije je niz f_sl_scale. Zatim se taj rezulat pomnoži
sa pre_smooth_scaling i čuva se u nizu p_ieq->p_sl_scale_smooth. Nakon ovoga se skače na
proveru da li je uključen modul za inteligentnu ekvalizaciju.
U slučaju da nije bio postavljen update_preset_now poziva se funkcija X_S_scale_band
sa ulaznim parametrima preset_shift, p_f_sl_correct i rezultat množenja f_sl_weighted_sum i
p_preset->p_target_ldn. Povratna vrednost je f_sl_scale koja se množi sa pre_smooth_scaling
i pomera se dva puta u levo i ponovo se rezultat smešta u f_sl_scale.
Sada se pravi upit da li je f_sl_scale veći od p_ieq->p_sl_scale_smooth i da li je u
a_content_louder_than_pgm upisana 1. Ako jeste u f_alpha se upisuje 0. Ako nije proverava
se da li je p_ieq->p_sl_scale_smooth veći od f_sl_scale i da li je u
a_content_louder_than_pgm upisana 0. Ako nije u f_alpha se upisuje smooth_alpha_scale. U
suprotnom se od 10 oduzima release_alpha_scale i množi se p_coefs->p_tc_mult_pow1 sa
release_alpha_scale. Rezultat oduzimanja i množenja se saberu i ovo se čuva u f_alpha. Zatim
se množe f_alpha i smooth_alpha_scale i ponovo se čuva u f_alpha.
Rezultati
19
Nakon što je postavljen f_alpha, množi se sa p_ieq->p_sl_scale_smooth i isto se
oduzima od 10. Rezultat oduzimanja se pomnoži sa f_sl_scale. Sada se rezultati množenja
saberu i rezultat se čuva u p_ieq->p_sl_scale_smooth nizu.
Sada se vrši provera da li je uključen modul za inteligentnu ekvalizaciju i vrši se
njegova glavna petlja. Poziva se funkcija X_S_dap_band_smoother_process sa ulaznim
parametrima a_loudness_gains, p_sl_scale_smooth i p_band_smooth_coefs. Povratna
vrednost funkcije jeste a_loudness_gains niz. Potom se na a_loudness_gains dodaje konstanta
IEQ_SCALE_BOOST i rezultat se dodaje na promenljivu amount i ponovo se čuva u
a_loudness_gains.
Poslednji korak jeste da se glasnoće iz niza a_loudness_gains dodaju na sve kanale
unutar matrice p_loudness_buffer->pp_gains.
Rezultati
20
5. Rezultati
Ovo poglavlje sadrži rezultate testova koji su izvršeni nad gotovim modulom
inteligentnog ekvalajzera. Rezultati testova nam prikazuju utrošak resursa DSP procesora i
govore nam da li je potrebno modul dodatno optimizovati. Najvažniji resursi su utrošak
memorije i vreme potrebno da procesor obradi jedan blok odbiraka. Utrošak memorije je
prikazan kroz broj zauzetih memorijski lokacija dužine 32 bita i u kojoj zoni je memorija
zauzeta. Vreme potrebno za obradu jednog bloka odbiraka prikazano je u broju ciklusa
potrebnih da procesor izvrši funkciju X_S_intelligent_eq_processonima.
5.1 Način testiranja
Testiranje se vršilo u više etapa. Kako bi se testiranje vršilo potrebno je izolovati
pojedinačne funkcije u referentnom kodu i, pomoću direktiva za korišćenje datoteka, uneti u
dve različite datoteke ulazne i izlazne vektore za datu funkciju. Potom se ista funkcija
implementira u asemblerskom jeziku i ulazni vektori se učitavaju iz prethodno kreirane
datoteke. Nakon što se izvrši simuliranje rada procesora izlazni vektori u asembleru se unose
u treću datoteku. Zatim se poređenjem izlaznih datoteka utvrđuje tačnost implementacije.
Postizanje jednakosti izlaznih datoteka predstavlja uspešno implementiranu funkciju.
5.2 Utrošak memorije
U Tabeli 1 je prikazan utrošak memorije modula za inteligentnu ekvalizaciju. Prva tri
reda predstavljaju potrošnju X, Y i L memorije koja se koristi za skladištenje podataka, koji se
obrađuju ili se koriste u raznim obradama. Poslednja četiri reda predstavljaju utrošak
programske memorije za pojedine funkcije koje su deo modula. Utrošak memorije je prikazan
u količini reči dužine 32 bita.
Rezultati
21
Količina potrošenih
reči u memoriji
YDATA 858
XDATA 761
LDATA 104
X_S_intelligent_eq_process 347
X_S_ieq_reset 7
X_S_ieq_calc_loudness 143
X_S_scale_band 49
Tabela 1 Utrošak memorije
5.3 Potrošnja procesorskog vremena
Pored utroška memorije postoji i potrošnja procesorkog vremena. Potrošnja
procesorskog vremena se merila u količini ciklusa potrebnih da procesor izvrši funkcije
modula za inteligentnu ekvalizaciju.
U tabelama koje slede će prikazane su količine potrebnih ciklusa da se izvrši
inteligentna ekvalizacija zvuka za devet različitih testnih slučajeva, koji svi koriste modul za
inteligentnu ekvalizaciju.
sys_alg_volume_and_ieq_ieq_io5ch1_io32k Broj ciklusa
X_S_intelligent_eq_process 14995
X_S_ieq_reset 49
X_S_ieq_calc_loudness 1883
X_S_scale_band 326
sys_uc_complex_music_ext_symphony_i2ch_o7ch1_io32k Broj ciklusa
X_S_intelligent_eq_process 14933
X_S_ieq_reset 49
X_S_ieq_calc_loudness 1901
X_S_scale_band 323
sys_uc_complex_music_ext_symphony_io7ch1_io32k Broj ciklusa
X_S_intelligent_eq_process 14934
X_S_ieq_reset 49
X_S_ieq_calc_loudness 1825
X_S_scale_band 323
Tabela 2 Utrošak ciklusa za 32k
U Tabeli 2 se nalaze podaci o količini ciklusa za signale koji su odbirkovani sa 32kHz.
Rezultati
22
sys_alg_volume_and_ieq_ieq_io2ch_io44k1 Broj ciklusa
X_S_intelligent_eq_process 15589
X_S_ieq_reset 49
X_S_ieq_calc_loudness 1757
X_S_scale_band 322
sys_uc_complex_music_ext_symphony_i2ch_o7ch1_io44k1 Broj ciklusa
X_S_intelligent_eq_process 15917
X_S_ieq_reset 49
X_S_ieq_calc_loudness 2064
X_S_scale_band 321
sys_uc_complex_music_ext_symphony_io7ch1_io44k1 Broj ciklusa
X_S_intelligent_eq_process 15925
X_S_ieq_reset 49
X_S_ieq_calc_loudness 2065
X_S_scale_band 322
Tabela 3 Utrošak ciklusa za 44k1
U Tabeli 3 se nalaze podaci o količini ciklusa za signale koji su odbirkovani sa 44.1
kHz.
sys_alg_volume_and_ieq_ieq_io2ch_io48k Broj ciklusa
X_S_intelligent_eq_process 15813
X_S_ieq_reset 49
X_S_ieq_calc_loudness 1944
X_S_scale_band 324
sys_uc_complex_music_ext_symphony_i2ch_o7ch1_io48k Broj ciklusa
X_S_intelligent_eq_process 15916
X_S_ieq_reset 49
X_S_ieq_calc_loudness 2064
X_S_scale_band 325
sys_uc_complex_music_ext_symphony_io7ch1_io48k Broj ciklusa
X_S_intelligent_eq_process 15917
X_S_ieq_reset 49
X_S_ieq_calc_loudness 2062
X_S_scale_band 323
Tabela 4 Utrošak ciklusa za 48k
Rezultati
23
U Tabeli 4 se nalaze podaci o količini ciklusa za signale koji su odabirani sa
frekvencijom od 48 kHz.
Iz datih tabela se može dedukovati da IEQ modul ima slično ponašanje u svim testnim
slučajevima. Najveća promena se uočava između signala koji su odbirkovani sa 32 kHz i 44.1
kHz u glavnoj funkciji modula. Kroz detaljnu analizu modula, zapaženo je da signali koji su
odbirkovani sa 32 kHz obrađuju niz koji je kraći za jedan element od niza koji se obrađuje u
ostalim testnim slučajevima.
Zaključak
24
6. Zaključak
U ovom radu je implementiran DSP modul za inteligentnu ekvalizaciju zvuka na
procesoru CS49844 kompanije Cirrus Logic.
Projekat se sastojao iz tri dela. Prvi deo projekta je zahtevao upoznavanje sa čitavim
sistemom za obradu zvuka i razumevanje algoritma. Ovaj deo projekta se vršio u razvojnom
okruženju Visual Studio 2010.
Drugi deo projekta je bila implementacija svih funkcija modula za inteligentnu
ekvalizaciju u asemblerskom jeziku. Ovaj proces je vršen u okviru razvojnog okruženja
CLIDE. Pored CLIDE, korišćeno je i razvojno okruženje UltraEdit koje je pomagalo za
navigaciju kroz projekat. CLIDE, sa druge strane, ne nudi toliko dobru navigaciju kroz
projekat ali omogućava kontrolisano izvršavanje i stalan uvid u to šta se dešava u procesoru.
Nakon implementacije svih funkcija, preostalo je istestirati modul, zabeležiti utroške
resursa i integrisati ga u glavni projekat, zajedno sa ostalim modulima.
Rešenje za inteligentan ekvalajzer, prikazano u okviru ovog rada, koristi neke od
najnovijih i najefikasnijih metoda za računanje potrebnih glasnoća.
Ovo rešenje je moguće poboljšati sa dodatnim optimizacijama napisanog koda. U
projektu su se ubacivale mnoge instrukcije koje su smanjivale preciznost računa na nivo
procesora opšte namene da bi bilo moguće proveriti da li je modul pravilno napisan.
Izbacivanjem ovih instrukcija bi se potencijalno dobio kvalitetniji zvuk i brža obrada. Takođe,
u ovom projektu je korišćeno mnogo unutrašnjih nizova koje se koriste samo jednom i oni u
sebi ne sadrže podatke koji su relevantni u nastavku projekta. Ove nizove bi trebalo uočiti i
preklopiti tako da svi koriste istu memoriju što bi dovelo do velike uštede memorije na
platformi.
Literatura
25
7. Literatura
[
[1]
V. Kovačević, M. Temerinac i M. Popović, Arhitekture i algoritmi DSP 1, Novi
Sad: FTN izdavaštvo, 2004.
[
[2]
Cirrus Logic, Inc., CS498xx_Datasheet, 2013.
[
[3]
„120 Studio,“ 20 Septembar 2017. [Na mreži]. Available:
http://120studio.com/audio/eq-2005-05-900.jpg. [Poslednji pristup 15 Septembar 2016].
[
[4]
C. R. (. Nave, „Hyper Physics,“ 20 Septembar 2017. [Na mreži]. Available:
http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html. [Poslednji pristup 15 Septembar
2016].
[
[5]
N. C. J. K. M. P. Miodrag Djukic, A C compiler based methodology for
implementing audio DSP applications on a class of embedded systems, Vilamoura: IEEE,
2008.
[
[6]
M. Temerinac, S. Berber i Ž. Lukač, Osnovi algoritama i struktura DSP 1, Novi
Sad: FTN izdavaštvo, 2014.
[
[7]
RTRK, Arhitekture i algoritmi DSP II-praktikum za laboratorijske vežbe, Novi Sad,
2016.
[
[8]
M. P. Vladimir Kovačević, Sistemska programska podrška u realnom vremenu 1:
Programski alati i paralelno programiranje, Novi Sad: FTN Izdavaštvo, 2013.