I&Q separacija, slozenost algoritma, paralelizacija...
Cao.
Nasao sam jedan interesantan rad koji se bavi problematikom koja je interesantna za nas. Radi se o razdvajanju I & Q komponente primljenog signala (u nasem slucaju dalja obrada zahteva kompleksno predstavljanje signala). Za sada je koriscena Hilbertova transformacija, koja je "prava stvar", ali posto mi ocekujemo samo sinusoidu+sum, moze da posluzi i obicno mnozenje sa (kompleksnom) sinusoidom.
Nedostatak (nase implementacije) Hilbertove transformacije je u tome sto je blokovskog tipa. Ako ste pokretali simulaciju u Matlabu, uocili ste da se pri pojavljivanju (i iscezavanju) signala na uglu theta pojavljuje (doduse kratko) i signal detektovan na -theta. Ovo se desava zbog toga sto je u blok "upao" samo deo sinusoide. Kada ceo blok sadrzi samo sinusoide, nema ovog problema. Hilbertova transformacija nam je bila potrebna samo za razdvajanje I i Q komponente (u fazi i kvadraturi, tj. arctan(Q/I) je dolazni ugao) signala.
Na Plone sam okacio 2 dokumenta: undersampling.pdf i undersampling2.pdf. Prvi je deo rada koji se bavi I&Q separacijom, a drugi sam napisao kao podsetnik o diskretizaciji signala.
Procitajte undersampling2.pdf pa ce vam biti jasno sta sledi. Ako se izabere ucestanost odabiranja tako da za vreme trajanja pinga (150us) dobiju 2 periode po 4 odbirka dobija se da je potrebna ucestanost odabiranja oko 54KHz po kanalu. Za 4 kanala ovo bi bilo nesto preko 213 KHz :)
Razdvajanje I i Q komponente u ovom slucaju je trivijalno (undersampling.pdf) i ne zahteva nikakve dodatne operacije (sem smestanja u memoriju). Pored jednostavnog razdvajanja I&Q komponenti smanjen je i broj podataka koji se obradjuje.
Naravno, potrebno je isprobati ovo i u simulaciji.
Slozenost algoritma nisam stigao da izracunam, ali evo procene:
Za nmik mikrofona formira se matrica nmik*nmik, za koju je potrebno nmik^2 mnozenja i sabiranja (prvo se sve izmnozi pa sabira, tj. ne moze se iskoristiti MAC dsp-a). Inverzija matrice zahteva oko 4*nmik^3 operacija. Izracunavanje odziva po uglovima zahteva oko nth*nmik^2 operacija, gde je nth broj uglova po kojima sve meri. Sve u svemu:
N=4*nmik^3+nmik^2*(nth+2) operacija
Ovo je dosta gruba procena, ali "ubada" red velicine. Ovaj broj operacija treba izvrsiti na svaka 2 sempla. Za 4 mikrofona i rezolucijom od 1 stepen (nth=180) broj operacija je grubo oko 3000 (kazem operacija jer je DSP-u svejedno da li je u pitanju mnozenje ili sabiranje). Neka je ovaj broj i 6000. Vreme za koje treba izvrsiti obradu je tping/4=37.5 us (sa vrednostima iz pasusa o I&Q separaciji) sto je oko 270 000 izracunavanja u sekundi * 6000 operacija = 160MHz - taman koliko i imamo :) Ovo znaci da bi sa 4 mikrofona mogli da izvrsavamo obradu real-time.
Razmisljao sam o paralelizaciji i strasno mi lici na foru sa FFT-om, na razbijanje na podnizove, mada nisam imao vremena da razmislim.
Pozdrav,
Gruja
PS Nisam ni polagao ispit, jer je profesor zauzet. Nadam se da cu ove nedelje to da otkacim.
--___________________________________________________________
Sign-up for Ads Free at Mail.com
http://www.mail.com/?sr=signup
Previous by thread: Simulacija Next by thread: Simulacija...