13.07.2015 Views

MIK 200 Anvendt signalbehandling, 2012. Lab. 9, ikke-lineære filter.

MIK 200 Anvendt signalbehandling, 2012. Lab. 9, ikke-lineære filter.

MIK 200 Anvendt signalbehandling, 2012. Lab. 9, ikke-lineære filter.

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Stavanger, 28. februar 2012Det teknisknaturvitenskapeligefakultet<strong>MIK</strong> <strong>200</strong> <strong>Anvendt</strong> <strong>signalbehandling</strong>, <strong>2012.</strong><strong>Lab</strong>. 9, <strong>ikke</strong>-<strong>lineære</strong> <strong>filter</strong>.I denne øvinga skal vi se litt på hvordan noen <strong>ikke</strong>-<strong>lineære</strong> <strong>filter</strong> kan implementeresi en FPGA. Viktige byggeklosser som komperatorer og små sorteringsnettverk,median<strong>filter</strong>, kvadrering og absuluttverdi vil bli laget og brukt.Se gjerne på nettet om sorteringsnettverk, for eksempel:• Sariel Har-Peled, notat om Sorting Networks• Cormen, Leirerson og Rivest, fra ei anerkjent lærebok kapittel 28.• Wikipedia Sorting networkI tillegg skal vi i denne oppgaven også se mer på binær representasjon, noevi såvidt også var innom i øving 1, del 5.3. Når en jobber med signaler medtanke på implementeing i hardware, FPGA, så trenger en å vite hvordan verdieneer representert gjennom hele prosessen. En trenger også å vite om dennerepresentasjonen er hensiktsmessig (riktig) med tanke på hvor store verdiersignalene kan ha gjennom prosessen. System Generator (SG) gir god oversiktover representasjon, men det er ofte vanskelig å vite om denne representasjonener hensiktsmessig. I denne øvinga skal vi se litt på noen enkle metoder forå kontrollere at verdiene befinner seg innenfor det området vi ønsker, og at deer hensiktsmessig representert. Derfor er det i denne øvinga en del detaljer ogterping av disse. Dere bør starte med å gjenoppfriske hvordan tall representeresmed bit, se del 2.Siste side i oppgaven her er et skjema for egenevaluering av arbeidet.Den siste sida her skal være første side i deres innlevering.Karl Skretting, Institutt for data- og elektroteknikk (IDE), Universitetet i Stavanger (UiS), 4036 Stavanger.Sentralbord 51 83 10 00. Direkte 51 83 20 16. E-post: karl.skretting@uis.no.


1 Selve oppgaven.1. Anta at tallet x er representert som UFix_6_4. Hva er x, helt nøyaktig,når bitmønsteret er (MSB er til venstre)(a) 001010(b) 011010(c) 111010(d) 1000002. Anta at tallet x er representert som Fix_6_4. Hva er x, helt nøyaktig,når bitmønsteret er de samme som i forrige punkt.3. Anta at tallet x er representert som Fix_6_4. Vi setter y = −x, Negateblokki SG.(a) Hva er da nødvendig format for y?(b) Finn y og bitrepresentasjonen til y for de fire x-verdiene i forrigespørsmål.4. Anta at tallet x i er representert som Fix_12_12. Hva er x i , helt nøyaktig,når bitmønsteret er(a) x 1 : 000001110011(b) x 2 : 000101000101(c) x 3 : 111010111010Hint: Matlab funksjonen bin2dec kan være nyttig.Hva er minste og største tall Fix_12_12 kan representerer?5. I SG har en blokka Slice som kan brukes til å trekke ut gitte bit. En kannummerere bit på flere ulike måter her, så det er viktig å være nøyaktigfor å trekke ut de riktige bit. Resultatet vil alltid være UFix_W_0 der Wer antall bit en trekker ut (width), men hvis en bare tar et bit kan enogså ha ut bool. La bit nummereres fra 0 (LSB) til 11 (MSB). Hva blirresultatet hvis en trekker ut fra og med bit 3 til og med bit 7 fra tallenei forrige punkt.6. Vi skal nå ta utgangspunkt i system fra tidligere øvinger, for eksempellab08c. Derfra skal vi steg for steg bygge opp et system lab09a slik somdet vises i figur 1. Vi kan legge merke til at nesten hele systemet herkjører på maksimal frekvens, f s = 50 MHz.(a) Mux-boksen fra lab08c beholdes og blir den som er til høyre ilab09a. Oppsamlingsboksen, Opp1000 flyttes foran Mux-boksen,notch-<strong>filter</strong>et fjernes, og signalet på port d1 tas fra like foran Ned1000.2


SSP = 1/2fs=50 MHz<strong>MIK</strong><strong>200</strong> lab9 (lab09a)SystemGeneratorPUSH1_SWOut1In1Teller1til0Out1selPUSH2_SWDigitald0Out1selADC1 LC1Absx yAbs1x yAbs2x yMaxAv4xyMedian5xyd1d2d3innutNed1000innOpp1000Totaleffekt av Ned1000 og Opp1000 erlavpass<strong>filter</strong> med knekkfrekvens ca 20 kHzutd0d1In1DAC1 LCFigur 1: Systemet lab09a.Trykknapp 2 kan brukes for å velge gjennomgang her, og siden Muxboksengår på 50 MHz her så nedsamples <strong>ikke</strong> signal fra trykknappen.Når trykknappen er oppe så er det d1 signalet som sendesgjennom Mux-boksen, men trykkes knappen ned så går signaletgjennom de to boksene som samlet gir et svært smalt lavpass<strong>filter</strong>.Vi starter med å la inngangssignalet gå direkte til Ned1000-boksenog d1-porten på Mux-boksen. Sjekk at systemet nå virker som forventet.(b) Videre skal vi nå legge til en ny Mux-boks, denne settes opp medfire innganger, alle innganger kan i første omgang få signal rettfra AD-boksen. For å velge inngang på Mux-boksen så bruker ensubsystemet Teller1til0, som i øving 8 figur 9 men her med kunto bits bredde på utgang, og trykknapp 1. Kompiler og sjekk atsystemet nå virker som forventet.(c) Nå skal en for inngang d1 på venstre Mux-boks legge til et subsystemsom gir absoluttverdi av inngangssignalet. I dette subsystemetsammelignes inngangsverdien med 0, og hvis den da er mindre enn 0så sendes den negative verdien ut, Negate-blokka, ellers sendes inngangsverdienuforandrert ut, valget må gjøres med en Mux-boks.Prøv å lage systemet slik at det nå virker ok. Send for eksempelgjennom en sinus på 10 kHz, resultatet skal bli noenlunde som ifigur 8. Hvis <strong>ikke</strong> buene er like høye så er det fordi offset på signalgeneratoren<strong>ikke</strong> er slik at nullverdi treffer midt mellom toppene påsinussignalet. Legg også merka til at når trykknapp 2 nå trykkes nedså vil spissene avrundes en god del, avhengig av inngangsfrekvens.(d) Sender en firkantpulser gjennom absoluttverdi-subsystemet ville enforventet å få et flatt signal ut. Slik blir det imidlertid <strong>ikke</strong>, signaletblir som i figur 9. Dette skyldes at signalgeneratoren <strong>ikke</strong> klarer gihelt momentan (loddrett) overgang mellom høy og lav, men at deter et kort transisjonsområde der signalet gradvis skifter verdi. Nåren så tar absoluttverdier så vil denne overgangen gi som resultat3


Komperatorseld0z −11mind11a2baa>bz −0bselMuxd0z −12maxd1Mux1Figur 2: En komperatorboks som er bruk for sortering og median<strong>filter</strong>.Maksimum av de 4 siste sampler med to tidssteg forsinkelse.Relational1xz −1aa>bz −0bselRelational2z −1Relational1d0 z −1d1Muxaa>bz −0bseld0 z −1d11yz −1aa>bz −0bselMux2d0 z −1d1Mux1Figur 3: Systemet MaxAv4 i lab09a.en liten spiker mot null for hver gang firkantpulsen skifter verdi.Dette skal vi nå unngå med å legge et subsystem etter absoluttverdiboksen.Her legger vi til subsystemet MaxAv4 foran d2-inngangen påMux-boksen, i tillegg til at vi har kopiert absoluttverdi-subsystemet.MaxAv4-systemet gir ut maksimum av de fire siste inngangsverdier,det kan lages med tre komperatorbokser, eller med et system som ifigur 7. Komperatorboksen viser i figur 2.(e) MaxAv4-systemet fungerer godt her for å fjerne spikere, men ei forutsetninger at spikerne alltid går nedover. Hvis spiker også kangå oppover så kan median-<strong>filter</strong> brukes. Det er <strong>ikke</strong> helt enkelt ålage det i hardware men for beskjedne lengder så kan det greitt lagesmed å bruke små sorteringsnettverk og komperatorer. Dette ergjort i Median5 i figur 4. Legg nå dette median<strong>filter</strong>et til foran d3-inngangen på Mux-boksen, absoluttverdi-systemet skal også væremed her. Nå skal systemet lab09a være ferdig slik som det vises ifigur 1. Sjekk at det virker.7. Systemet lab09b tas ut fra denne øvinga i år.8. Vi skal nå lage et system der vi kan velge mellom fire ulike signaler somsendes til utgangen. Det er systemet lab09c som viser i figur 5. De firesignalene er• inngangssignalet x(n),• signalet etter Ned1000-boksen v(m) som her oppsamples til v(n),4


Median av de 5 siste sampler med 4 tidssteg forsinkelse.1xx(k−2)Sort4abminmaxay1Comp1z −1z −1bcy2y3z −1a minb max1yz −1Comp2dy4Sort4 har tre tidsteg forsinkelse. Inngangene er x(k), x(k−1), x(k−2) og x(k−3).Når de er sortert har en da den sorterte sekvensen tre tidssteg forsinket,altså y−ene er sortert x(k−3), x(k−4), x(k−5) og x(k−6)Så tar en også med x(k−2) og har ytterlige 2 steg forsinkelse, ett steg i hver komperator.Dermed blir utgangen ved steg k, median av x(k−4), x(k−5), x(k−6), x(k−7) og x(k−8)Figur 4: En implementasjon av et median<strong>filter</strong> med lengde 5. SubsystemetSort4 er her et sorteringsnettverk med 5 komperatorer og total forsinkelse påtre tidssteg, det viser i figur 6.• signalet v(m) kvadrert, forsterket og oppsamplet, og• signalet etter Opp1000-boksen y(n).Det er en Mux-boks som velger hvilket signal som skal sendes ut til DAboksen.En velger med bryter 2, der et trykk skifter til neste signal, påsamme måte som i lab09a men her her en <strong>ikke</strong> et subsystem for dette.Log<strong>ikke</strong>n er med i midtre del i figur 5. LED-displayet viser hvilket signalsom er aktivt på utgangen.For å finne maksimumsverdi har vi et lite subsystem som i tillegg tilsignalet har en reset-inngang, utgang er da maksimum av inngangenesiden forrige reset. Denne vil etter kort tid bli ganske stabil og vi harda mulighet til å vise verdien. Subsystemet vises i figur 7, og bør væreselvforklarende. Maksimumsverdien vises så i LCD-displayet som et hextall.(a) I første omgang lages systemet uten den nederste delen i figur 5.Kompiler og sjekk at det virker som forventet.(b) Nå skal systemet lab09c i figur 5 lages ferdig. Vi ønsker å vise verdieneinne i systemet på andre måter enn å sende de ut til DA-boksen.Utgangssignalet, et av de fire signalene i forrige oppgave, sendes nåogså til en FinnMax-boks. Lag systemet, som vist i 5, og sjekk at detkjører som forventet. Vær oppmerksomme på hva offset-verdiener på signalet, prøv å ha denne slik at midten på signalet kommermed verdi 0 i FPGA. Dere skal måle maks-verdier for signalene forulik amplitude på inngangssignalet. Lag en figur med plott av dissemaksverdiene for de fire signalene. Bruk gjerne tabellen nedenfor for5


å presentere reultatet. HUSK nullstilling mellom hver avlesning ogat signalet er sentrert om null.Observert maksimumverdi for noen ulike signaler i FPGA, 1 kHz sinus inn.inn x(m) v(m) 4v 2 (m) y(m)mV p-p hex dec hex dec hex dec hex dec<strong>200</strong>3004005006007008009001000Verdien på innsignalet er peak-to-peak som gitt på signalgeneratoren. Detlegges til en offset på ca 2.5 V, og signalet er da odt innenfor grensene påAD-konverteren, de er som kjent fra 1.5 til 3.5 V. Første signal x(m) er daverdiene rett ut fra AD-konverteren, merk at siden formatet for de 12 bither tolkes som en Fix_12_12 verdi så er det internt representert som et tallmellom -0.5 og 0.5. Maksimum verdien for signalet (12 bit) vises hexadesimaltpå LCD-displayet og skrives direkte inn i tabellen over, desimalt blirdette et tall mellom 0 og 0.5 (siden maksimalverdiene er større enn null, enønsker offset slik at signalet blir “symmetrisk” om null internt). Mappingener altså 0x0000 -> 0.0000 og 0x07ff -> 0.4998, der siste tall uten avrundinger 2047/4096 (0x7ff/0x10000). Negative tall er <strong>ikke</strong> aktuelle siden dethele tiden er maksverdier som vises, men om de skulle blitt vist ville en fått0x0800 -> -0.5000 og 0x0FFF -> -0.0002. Første hex-siffer er alltid 0 datallet bare er 12 bit. Tilsvarende har en for de andre signalene.6


Digitalx(n)Fix_12_12innutFix_12_12v(m)innuty(n)Fix_12_12ADC1 LC1SystemGeneratorSSP = 1/2Her er fs = 50 MHz, mens etter nedsampling ermesteparten av systemet med fs = 50 kHz.Oppe til høyre også med fs = 50 MHz.Trykknapp 2 forskifte av signalDelayNed1000Opp1000v(m)*v(m)aFix_14_142 2 Fix_14_12 Fix_14_12(ab)↑1000bScaleMultx(n)Fix_12_12v(n)↑1000Fix_12_12 4*v(n)*v(n)castConvert1y(n)UFix _2_0z −3 Logical 1seld0d1d2d3Mux2Fix_12_12In1DAC1 LCOut1PUSH2_SWGir 0 når brytertrykkes nedellers 1Trykknapp 1 fornullstilling av FinnMaxOut1PUSH1_SWBool ↓1000 Boolz −1z −1 BoolBool↓1000z −1notAntall skifte fra1 (forrige) til 0 (denne)på inngangen telles .BoolnotBoolBoolandz −0LogicalBoolz −2BoolnotInverter3Skal ta Resetpå FinnMaxlike etter at enhar skiftet signal .orz −0BoolBoolCounterloaddin↓1000z −1outFix_12_12UFix _4_0In1ResetFinnMaxDe 2 LSB brukesOut1[a:b]SliceUFix _2_0Scale 1castConvert2Constant0↑1000UFix _16_0UFix _16_0Fix_12_122 12 Fix_12_0 UFix _16_0castConvert3V1V2V3V4LCD ControllerFigur 5: Systemet lab09c for oppgave 8Sorteringsblokk med 5 komperatorer og 3 tidssteg forsinkelsea12abminmaxabminmaxz −11y1bc3Comp1a minComp2a mina minb maxComp52y23y34db maxComp3b maxComp4z −14y4Figur 6: Systemet Sort4.In112ResetFix_12_12BoolFinnMax, Reset sender inngang til utgang uansett,ellers sendes max av inngang og utgang til utganga a>bb z −0Boolorz −0Boolseld0 z −1Fix_12_12Out11d1Figur 7: Systemet FinnMax.7


2 Bitrepresentasjon av tall.Her kommer hovedpunkt som en må ha klart for seg.• Tall (signal) representeres på tre ulike måter i FPGA, i System Genrator(SG). Den første er bool som er et enkelt bit som er 1 (sann eller true)eller 0 (usann eller false). Dette må <strong>ikke</strong> forveksles med UFix_1_0 somogså er en bit men da er 1 (+1) eller 0 (0, null).• Den andre er uten fortegn (unsigned), og her kan antall bit variere. I SGskrives dette UFix_N_M, der N er antall bit i tallet. Føreløpig lar vi M være0. For eksempel med UFix_3_0 har en tre bit og 000 er 0, 001 er 1, 010 er2 og så videre til 111 som er 7. En ser da at bit til høyre, least significantbit (LSB), representerer 2 0 = 1, det midterste bit representerer 2 1 =, ogdet venstre bit, most significant bit (MSB) representerer 2 2 = 4 og talleter summen av de delene der bit er 1. Nummererer en bit fra n = 0 (LSB)til n = N − 1 (MSB) har en at bit n representerer 2 n . Største tall en kanrepresentere er da x max = ∑ N−1n=0 2n = 2 N − 1.En kan også angi en posisjon for desimaltegn, M, der 0 ≤ M ≤ N. Ipraksis betyr det at heltallet en ville hatt hvis M = 0 skal divideres med2 M . For eksempel med UFix_3_3 har en tre bit og 000 er 0/8=0, 001 er1/8, 010 er 2/8=1/4 og så videre til 111 som er 7/8. En kan si at bitn representerer 2 n /2 M = 2 n−M . Største tall en kan representere er dax max = 2 N−M − 2 −M .• Den tredje er tall med fortegn (signed), de representeres med 2-er komplementog skrives i SG som Fix_N_M. Det er som UFix over bare at bitN − 1 (MSB) representerer negativ verdi. Føreløpig lar vi M være 0. Foreksempel med Fix_3_0 har en tre bit og 000 er 0, 001 er 1, 010 er 2, 011er 3, men når en nå kommer til neste har en MSB og det har negativverdi altså har en 100 er -4, 101 er -3, 110 er -2 og så til slutt 111 somer -1.Som for UFix kan en også for Fix angi posisjon for desimaltegn, M, der0 ≤ M ≤ N. Og på samme måte betyr det at heltallet en ville hatt hvisM = 0 skal divideres med 2 M . En har da at bit n = [0, 1, . . . , N − 2]r epresenterer 2 n /2 M = 2 n−M og bit n = N − 1 (MSB) representerer−2 N−1−M . Største tall en kan representere er da x max = 2 N−1−M − 2 −M ,mens minste tall en kan representere er x min = −2 N−1−M .9


<strong>MIK</strong> <strong>200</strong> <strong>Anvendt</strong> <strong>signalbehandling</strong>.<strong>Lab</strong>. 9, <strong>ikke</strong>-<strong>lineære</strong> <strong>filter</strong>.Student 1Student 2Resultat:(fylles ut av faglærer) godkjent / <strong>ikke</strong> godkjentEgenvurdering:Mål for læringsutbytte er: Forstå teorien som er presentert som bakgrunn foroppgaven. Bruke og forstå de relevante Matlab-kommandoer. Lage, laste ned,kjøre og teste de systemene som skal lages i oppgaven.Dere skal også selv vurdere resultatet av det arbeidet dere har gjort i denneøvinga, ved selv å gi karakter på deres besvarelse. Karakterskala er den vanligefra A (best) til E (dårligst) og F (stryk).Egenvurderingstabell Student 1 Student 2Læringsutbytte for teoridel, spørsmål 1-5.Læringsutbytte for FPGA-del, spørsmål 6 og 8.Resultat teoridel, spørsmål 1-5.Resultat FPGA-del, spørsmål 6.Resultat FPGA-del, spørsmål 8.Kommentarer:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!