Aktiivisen melunhallintaprosessorin suunnittelu SystemC-kieltä ja korkean tason synteesiä käyttämällä

Samankaltaiset tiedostot
ASIC-suunnitteluvuo SystemC:stä piirikuviointiin

TL5503 DSK, laboraatiot (1.5 op) Suodatus 2 (ver 1.0) Jyrki Laitinen

Signaalien generointi

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

Successive approximation AD-muunnin

Mediaanisuodattimet. Tähän asti käsitellyt suodattimet ovat olleet lineaarisia. Niille on tyypillistä, että. niiden ominaisuudet tunnetaan hyvin

LABORATORIOTYÖ 3 VAIHELUKITTU VAHVISTIN

6. Tietokoneharjoitukset

TL5503 DSK, laboraatiot (1.5 op) Suodatus 1 (ver 1.0) Jyrki Laitinen

Puheenkoodaus. Olivatpa kerran iloiset serkukset. PCM, DPCM ja ADPCM

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

AKTIIVINEN MELUNVAIMENNUS ILMASTOINTIPUTKESSA. TKK, Akustiikan ja äänenkäsittelytekniikan laboratorio, PL 3000, TKK (Espoo)

Aktiivinen meluntorjunta

Toinen harjoitustyö. ASCII-grafiikkaa

811120P Diskreetit rakenteet

4.0.2 Kuinka hyvä ennuste on?

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

SGN-1251 Signaalinkäsittelyn sovellukset Välikoe Heikki Huttunen

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

ELEC-C3240 Elektroniikka 2

S Signaalit ja järjestelmät

Varauspumppu-PLL. Taulukko 1: ulostulot sisääntulojen funktiona

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

1 Olkoon suodattimen vaatimusmäärittely seuraava:

ELEC-C7230 Tietoliikenteen siirtomenetelmät

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

5 Differentiaaliyhtälöryhmät

I2S-VÄYLÄLIITYNNÄN TOTEUTUS FPGA- PIIRILLE. Joel Junttila. Ohjaaja: Jukka Lahti

Matemaattinen Analyysi

Helsinki University of Technology

SPI-VÄYLÄN TOTEUTUS FPGA-PIIRILLE

58131 Tietorakenteet ja algoritmit (syksy 2015)

c) loogiset funktiot tulojen summana B 1 = d) AND- ja EXOR-porteille sopivat yhtälöt

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

1 Vastaa seuraaviin. b) Taajuusvasteen

Helsinki University of Technology

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

SÄÄTÖJÄRJESTELMIEN SUUNNITTELU

Synteesi-analyysi koodaus

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

ACKERMANNIN ALGORITMI. Olkoon järjestelmä. x(k+1) = Ax(k) + Bu(k)

2 Konekieli, aliohjelmat, keskeytykset

Dynamiikan hallinta Lähde: Zölzer. Digital audio signal processing. Wiley & Sons, Zölzer (ed.) DAFX Digital Audio Effects. Wiley & Sons, 2002.

1 Määrittele seuraavat langattoman tiedonsiirron käsitteet.

MS-A0107 Differentiaali- ja integraalilaskenta 1 (CHEM)

ELEKTRONISET TOIMINNOT

Datatähti 2019 loppu

Supply jännite: Ei kuormaa Tuuletin Vastus Molemmat DC AC Taajuus/taajuudet

Tuntematon järjestelmä. Adaptiivinen suodatin

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

BM20A5840 Usean muuttujan funktiot ja sarjat Harjoitus 7, Kevät 2018

Dynaamisten systeemien teoriaa. Systeemianalyysilaboratorio II

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Digitaalitekniikan matematiikka Luku 8 Sivu 1 (23) Kombinaatiopiirielimet MUX X/Y 2 EN

805324A (805679S) Aikasarja-analyysi Harjoitus 3 (2016)

Flash AD-muunnin. suurin kaistanleveys muista muuntimista (gigahertsejä) pieni resoluutio (max 8) kalliita

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

PERUSASIOITA ALGEBRASTA

4 Korkeamman kertaluvun lineaariset differentiaaliyhtälöt

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ

Verilogvs. VHDL. Janne Koljonen University of Vaasa

IIR-suodattimissa ongelmat korostuvat, koska takaisinkytkennästä seuraa virheiden kertautuminen ja joissakin tapauksissa myös vahvistuminen.

10. Painotetut graafit

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Helsinki University of Technology Laboratory of Telecommunications Technology

Batch means -menetelmä

Tilayhtälötekniikasta

Harjoitus 4 -- Ratkaisut

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

Esimerkkitentin ratkaisut ja arvostelu

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

A/D-muuntimia. Flash ADC

Säätötekniikan ja signaalinkäsittelyn työkurssi

Excelin käyttö mallintamisessa. Regressiosuoran määrittäminen. Käsitellään tehtävän 267 ratkaisu.

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmistoradio tehtävät 4. P1: Ekvalisointi ja demodulaatio. OFDM-symbolien generoiminen

TL5503 DSK, laboraatiot (1.5 op) Audiosignaalit (ver 1.0) Jyrki Laitinen

Satelliittipaikannus

Harjoitukset 4 : Paneelidata (Palautus )

Python-ohjelmointi Harjoitus 2

VHDL/Verilog/SystemC. Jukka Jokelainen

MATLAB harjoituksia RST-säädöstä (5h)

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Lisää pysähtymisaiheisia ongelmia

5. HelloWorld-ohjelma 5.1

LABORATORIOTYÖ 2 A/D-MUUNNOS

AKTIIVISEN ÄÄNENHALLINNAN PSYKOAKUSTINEN ARVIOINTI

AU Automaatiotekniikka. Toimilohko FB

Hammastankohissin modernisointi. Heikki Laitasalmi

Ennustaminen ARMA malleilla ja Kalmanin suodin

Mittaustekniikka (3 op)

811120P Diskreetit rakenteet

TIE Ohjelmistojen testaus 2016 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Dynaamiset regressiomallit

Transkriptio:

Oulun yliopisto Elektroniikan piirit ja järjestelmät 2017 Aktiivisen melunhallintaprosessorin suunnittelu SystemC-kieltä ja korkean tason synteesiä käyttämällä Tässä artikkelissa kuvataan digitaalisen aktiivisen melunhallintapiirin suunnittelu ja toteutus SystemC-kieltä ja korkean tason synteesityökaluja käyttämällä. Toimintaperiaate Aktiivista melunpoistoa (active noise control, ANC) käytetään kapeakaistaisen- ja matalataajuisen akustisen häiriön vaimentamiseen tuottamalla vastamelua, jolla on sama aaltomuoto ja amplitudi, mutta vastakkainen vaihe kuin alkuperäisellä häiriölähteellä. ANC-järjestelmä koostuu seuraavista osista: referenssimikrofoni, joka kaappaa melulähteen lähettämän signaalin, virhemikrofoni, joka mittaa melun ja vastamelun summan tietyssä paikassa, kompensoiva kaiutin, joka tuottaa vastamelun, ja digitaalinen signaalinkäsittelypiiri, joka tuottaa häiriönpoistosignaalin. Kompensoiva vastamelusignaali generoidaan adaptiivisella suodattimella, joka muodostaa häiriölähteen ja virhemikrofonin välisen primääripolun siirtofunktion P(z) mallin P'(z).

Edellä esitetty perusperiaate ei toimi käytännössä. Äänisignaalin lisääminen primääripolun muuntamaan häiriöön tapahtuu akustisessa tilassa, mikä tarkoittaa sitä, että adaptiivisen suodattimen ulostulon ja virhe-mikrofonin tulon välillä on siirtofunktio S(z). Tämä siirtofunktio koostuu digitaali-analogiamuuntimen muunnosviiveestä ja kaiuttimen siirtofunktiosta. Voidaan osoittaa, että tämän sekundääripolun siirtofunktion vaikutusta voidaan kompensoida suodattamalla referenssimikrofonisignaali x(k) samalla siirtofunktiolla. Koska S (z) on tavallisesti tiedossa, sitä voidaan mallintaa kiinteällä suodattimella S '(z). Sekundääripolun malli voidaan luoda käyttämällä offline- ja online-menetelmiä. Offline-mallinnuksessa S'(z) lasketaan ennen ANC-suodattimen kytkemistä toimintaan lähettämällä testisignaali kaiuttimesta ja mittaamalla sen vaste. Online-mallinnuksessa S'(z) lasketaan ANC-suodattimen normaalin toiminnan aikana. Tässä esiteltävässä suunnitelmassa käytetään offline-menetelmää. Tämä tuottaa seuraavan arkkitehtuurin ANC-suodatusratkaisulle:

ANC-prosessori koostuu kahdesta adaptiivisesta suodattimesta. PZ FILTER-suodatin on FIR-suodatin, jota käytetään primääripolun P(z) mallintamiseen. Sen kertoimia päivitetään pienimmän neliösumman (LMS) sovitusalgoritmilla. SZ FILTER-suodatinta käytetään sekundääripolun S(z) mallintamiseen. Myös se on adaptiivinen LMS-suodatin. PNGEN-lohko on valekohinageneraattori, joka muodostaa testisignaalin, jota käytetään offline-moodissa sekundäärinpolun mallinnuksen aikana. Alla oleva kuva esittää aktiivisen melunvaimennuspiirin simuloitua toimintaa. x_in on häiriösignaali, joka on tarkoitus kumota, ja e_in on virhe-mikrofonin syöttö. SZ PATH ESTIMATION -jakson aikana piiri synnyttää valusatunnaista kohinaa kaiuttimen lähtöön d_out ja kaappaa sen tulon e_in kautta. Tämän jälkeen piiri kytketään aktiiviseen melunvaimennustilaan (ANC ON), jossa se luo kumoavan signaalin d_out:iin, mikä pakottaa e_in:in pian nollaan. ANC-prosessorissa on kaksi toimintatilaa: sekundääripolun mallinnustila ja ANC-tila. Lohkokaaviosta tulee helpommin ymmärrettävä, jos siinä näkyvät vain osat, jotka toimivat kussakin tilassa. Toiminta sekundääripolun mallinnustilassa Alla oleva kuva esittää ANC-prosessoria sekundääripolun mallinnustilassa. Tässä PNGEN ohjaa kaiutinta valkoisen kohinan kaltaisella signaalilla n(t) lähdön d_out kautta. Kohina vastaanotetaan virhemikrofonin tulossa e_in, jonka signaali e(t) syötetään LMS-suodattimeen, joka mallintaa S(z):taa. Sovitusalgoritmi yrittää muuttaa SZ FILTER -kertoimia siten, että SZ FILTER-suodattimen lähtösignaali tulee identtiseksi signaalin e_in kanssa. Piiri pidetään tässä tilassa lyhyen ajan.

Sekundääripolun suodatin on FIR-suodatin, jonka ulostulo s(t) määritellään seuraavasti: SZ_LENGT H 1 s (t) = n(t i ) U i i=0 U i :t ovat suodattimen kertoimia, ja SZ_LENGTH on sekundääripolun ja suodattimen pituus. Sekundääripolun mallinnusmoodissa suodattimen kertoimia U i päivitetään LMS-algoritmilla suodatusalgoritmin jokaisen iteroinnin jälkeen. Kertoimen päivityskaava on: U i (t + 1 ) = U i (t) + μ 0 n i (t) e 0 (t) missä μ 0 on kiinteä (mutta ohjelmoitava) askeleen koon määräävä parametri, n(t) on valekohinageneraattorin ulostulosignaali ja e 0 (t) on ero virhemikrofonin tulon (signaali n(t), joka on kulkenut toissijaisen polun läpi) ja sekundääripolun mallinnussuodattimen lähdön s(t) välillä. PNGEN-lohko muodostaa signaalin n(t) käyttämällä lineaarista takaisinkytkettyä siirtorekisteriä (linear feedback shift-register, LFSR), jonka karakteristinen polynomi on x 18 + x 11 + 1. Toiminta ANC-moodissa ANC-tilassa kytkimet käännetään siten, että valekohinageneraattori PNGEN kytkeytyy irti kaiuttimesta, joka nyt saa tulonsa PZ FILTER-suodattimen lähdöstä.

SZ FILTER saa nyt tulonsa n(t):n sijasta x(t):stä, ja toimii kiinteäkertoimisena FIR-suodattimena käyttämällä kertoimien arvoja, jotka saatiin käyttämällä järjestelmää ensin sekundääripolun estimointitilassa. Tästä syystä sen kertoimien päivitystoiminta ei ole aktiivisena. Piiri toimii nyt lähes kuten tavanomainen virhesignaalia vaimentava LMS-suodatin. Ainoa ero on siinä, että vertailusignaali x(t) suodatetaan S':(z):n avulla ja että tätä suodatettua versiota x(k) käytetään suodattimen PZ FILTER kertoimien päivittämiseen LMS-sovitusalgoritmilla. Tämä antaa algoritmille nimen suodatetun x:n LMS-algoritmi. PZ FILTER on FIR-suodatin, jonka lähtö on määritelty seuraavalla kaavalla: P Z_LENGT H 1 p (t) = x(t i ) W i i=0 missä x(t) edustaa referenssimikrofonin tulonäytteitä, W i :t ovat suodattimen kertoimia, ja PZ_LENGTH on suodattimen pituus. Suodattimen kertoimia W i päivitetään normalisoidulla LMS-algoritmilla suodatinalgoritmin jokaisen iteraation jälkeen. Kertoimen päivityskaava on: W i (t + 1 ) = W i (t) + μ(t) s i (t) e (t) missä μ (t) on päivitysaskeleen koko, s(t) on suodatettu x-tulo ja e(t) on virhemikrofonin tulo. Audiotulosignaalien suuren dynaamisen alueen vuoksi käytetään vaihtelevan askelkoon LMS-algoritmia. Tällöin askelparametri μ (t) päivitetään ennen jokaista suodattimen iteraatiota kaavalla

μ (t) = α s 2 +σ missä α on ohjelmoitava vakio, s 2 edustaa suodatetun x-signaalin tehoa, ja σ on pieni vakio joka estää nollalla jakamisen silloin, kun tehotermin arvo menee nollaksi. Tehotermille s 2 lasketaan estimaatti (P e ) kaavalla: P e (t) = β s(t) 2 + ( 1 β)p e(t 1 ) missä β on pieni positiivinen luku (<< 1). anc_core-piirin SystemC-malli anc_core-malli toteuttaa seuraavat toiminnot LMS-suodatin, joka toteuttaa sekundääripolun mallintamisen ("SZ FILTER") Normalisoitu LMS-suodatin, joka toteuttaa vastamelun generoinnin primääripolun mallin perusteella ("PZ FILTER") Valesatunnaisen kohinan generointi ("PNGEN") anc_core on toteutettu yhtenä SystemC-moduulina, jonka esittely on esitetty alla.

Huomaa, että datatulot ja -lähdöt on määritelty etumerkillisiksi kokonaisluvuiksi, kun taas useimmat sisäiset muuttujat ovat kiinteän pisteen etumerkillisiä tai etumerkittömiä kokonaislukuja. Alla on tilakone-esitys algoritmista, joka toteutetaan SC_CTHREAD-prosessina. Kaavion numerot viittaavat lähdekoodin kommentteihin. Punaiset kaaret näyttävät alueet, joille asetetaan latenssirajoituksia synteesissä.

Seuraava esimerkki näyttää SZ FILTER-osan lähdekoodin. Nimiöitä (esitetty punaisella) käytetään koodilohkojen ja silmukoiden merkitsemiseen, jotta direktiivejä voidaan soveltaa koodin osiin synteesityökaluissa. Cadence Stratus -ohjelmaa varten joitakin direktiivejä on

sisällytettävä C-makroina koodiin (esitetty sinisellä alla). Näiden makrojen todellinen koodi määritellään tiedostossa hls_directives.h, jossa ne on määritelty tyhjiksi muille työkaluille. Huomaa, että FIR-suodattimen algoritmi perustuu dataan siirtämiseen taulukossa sz_data_array kuten siirtorekisterissä. Tästä syystä taulukkoa ei voida tehokkaasti sijoittaa synteesissä RAM-muistiin, joten se on toteutettava rekistereillä. Algoritmi tulisi kirjoittaa uudelleen käyttämällä osoitelaskurimuuttujaa, jotta RAM:ia voitaisiin käyttää tehokkaasti. Seuraava koodinäyte esittää tehoestimaatin arvon ja normalisoidun LMS:n askeleen koon laskennan. Huomaa, että tässä tapauksessa tarvitaan 64-bittinen kiinteän pisteen jakolasku, jos halutaan tukea suodatetun referenssimikrofonisignaalin koko teoreettista 24-bitin dynaaminen aluetta.

Viimeinen näyte esittää koodin PZ FILTER-suodattimen laskemiseen ja sen kertoimien päivittämiseen. Simulointi ja synteesi Tässä kappaleessa kerrotaan, kuinka voit simuloida ja syntetisoida suunnitelman itse. Ympäristöasetukset Suorita seuraava komento EDA-työkaluympäristön alustamiseksi. Jos sisäänkirjautumisen yhteydessä asetettu komentotulkkisi on bash, suorita ensin komento bash. source /elsoft1/linux/digital_flow_setup.txt Kaikkien työkalujen asetukset annetaan tiedostossa input/0_setup_design.tcl.

SystemC-simulointi Voit simuloida mallia Mentor Graphics QuestaSim -ohjelmassa suorittamalla seuraavan komennon: vsim -do scripts/1_vsim_systemc_simulation.tcl SystemC-synteesi Cadence Stratus -synteesi Syntetisoi suunnitelma Cadence Stratus -ohjelmalla suorittamalla alla näkyvä komentotiedosto. Tiedosto input/0_setup_design.tcl määrittää kolme synteesikonfiguraatiota, joilla on eri latenssirajoitukset. Komentotiedosto luo Stratus-projektitiedoston input/anc_core_stratus_project.tcl. scripts/2_stratus_hls.csh Tulosten analysoimiseksi voit avata projektin Stratus-ohjelman käyttöliittymässä suorittamalla komennon: stratus_ide input/anc_core_stratus_project.tcl. Voit nyt nähdä tulokset graafisessa käyttöliitymässä. Huomautus! SystemC-simulointia Stratuksesta ei tällä hetkellä tueta, vaikka simulointikonfiguraatiot luodaankin.

Xilinx Vivado HLS -synteesi Voit syntetisoida suunnitelman Xilinx Vivado HLS:llä suorittamalla alla näkyvän komennon. Voit määritellä kohde-fpga-piirin tiedostossa input/0_setup_design.tcl. vivado_hsl -f scripts/2_vivado_hls.tcl Tulosten analysoimiseksi voit avata projektin Vivado HLS:ssä suorittamalla komennon: vivado_hls -p output/anc_core_vivado_hls_project Voit nyt nähdä tulokset graafisessa käyttöliitymässä. Huomautus! SystemC-simulointia Vivado HLS:ssä ei tällä hetkellä tueta. RTL-simulointi SystemC-testipenkissä Voit simuloida synteesin tuottamaa Verilog-kielistä RTL-mallia alkuperäisessä SystemC-testipenkissä suorittamalla seuraavan komennon: vsim -do scripts/3_vsim_systemc_rtl_simulation.tcl

Aaltomuotoikkunasta voit nyt nähdä, että algoritmin suoritus kestää useita kellojaksoja. Synteesiohjelma käyttää kaikki latenssirajoitusten sallimat kellojaksot laskentaan, koska se tekee mahdolliseksi resurssien jakamisen eri kellojaksoille sijoitettujen operaatioiden kesken. Huom! Stratus synteesin jälkeen simuloidaan ensimmäisen synteesikonfiguraation synteesin tuottamaa RTL-mallia.