ELE610 Prosjekter i robotteknikk, vår 2016.



Like dokumenter
MIK 200 Anvendt signalbehandling, Lab. 5, brytere, lysdioder og logikk.

MIK 200 Anvendt signalbehandling, 2012.

ELE610 Prosjekter i robotteknikk, vår 2016.

Generell informasjon om faget er tilgjengelig fra It s learning.

UNIVERSITETET I OSLO

Generell informasjon om faget er tilgjengelig fra It s learning.

Uke 4: z-transformasjonen

Løsningsforslag til 1. del av Del - EKSAMEN

UNIVERSITETET I OSLO

4 kombinatorisk logikk, løsning

Hva gikk vi gjennom forrige uke? Omid Mirmotahari 3

ITPE2400/DATS2400: Datamaskinarkitektur

Generell informasjon om faget er tilgjengelig fra fagets nettside, og for øvinger brukes canvas. 1 Øving med systemidentifikasjon.

Uke 4: z-transformasjonen

pdf

UNIVERSITETET I OSLO

Repetisjon digital-teknikk. teknikk,, INF2270

Rapport. Lab 1. Absoluttverdikrets - portkretser

EKSAMEN Emnekode: ITD13012

Generell informasjon om faget er tilgjengelig fra It s learning. 1 En kort oppsummering Adaptiv filtrering 2. 3 Prediksjon 4

Generell informasjon om faget er tilgjengelig fra It s learning.

INF1411 Obligatorisk oppgave nr. 4

Ferdighetsmål: Kunne forenkle boolske uttrykk Kunne implementere flerinputs-porter med bare 2-inputs porter

Dato: Tirsdag 28. november 2006 Lengde på eksamen: 4 timer Tillatte hjelpemidler: Kun standard enkel kalkulator, HP 30S

UNIVERSITETET I OSLO

NY EKSAMEN Emnekode: ITD13012

6DPSOLQJ DY NRQWLQXHUOLJH VLJQDOHU

Generell informasjon om faget er tilgjengelig fra fagets nettside, og for øvinger brukes It s learning. med Kalman-filter og RLS.

EKSAMEN (Del 1, høsten 2015)

Uke 4: z-transformasjonen

Øving 1 ITD Industriell IT

Generell informasjon om faget er tilgjengelig fra fagets nettside, og for øvinger brukes It s learning. systemidentifikasjon fra sprangrespons.

Fasit, Eksamen. INF3440/4440 Signalbehandling 9. desember c 0 + c 1z 1 + c 2z 2. G(z) = 1/d 0 + d 1z 1 + d 2z 2

7. Hvilket alternativ (A, B eller C) representerer hexadesimaltallet B737 (16) på oktal form?

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and. ! Kort repetisjon fra forrige gang

UNIVERSITETET I OSLO


FIE Signalprosessering i instrumentering

UNIVERSITETET I OSLO

Høgskoleni østfold EKSAMEN. Dato: Eksamenstid: kl til kl. 1200

STE 6219 Digital signalbehandling Løsning til kontinuasjonseksamen

IN1020. Logiske porter om forenkling til ALU

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

INF1400. Karnaughdiagram

Generell informasjon om faget er tilgjengelig fra It s learning. 7.1 Stokastisk prosess Lineær prediktor AR-3 prosess...

Løsningsforslag til 1. del av Del - EKSAMEN

LAB 7: Operasjonsforsterkere

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

UNIVERSITETET I OSLO

Generell informasjon om faget er tilgjengelig fra fagets nettside, og for øvinger brukes canvas.

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

Forelesning nr.14 INF 1410

Dagens temaer. 3 domener. Tema. Time 4: z-transformasjonen. z-dometet; ett av tre domener. Andreas Austeng@ifi.uio.no, INF3470

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærer: Robert Roppestad. består av 5 sider inklusiv denne forsiden, samt 1 vedleggside.

INF1400 Kap 02 Boolsk Algebra og Logiske Porter

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

RAPPORT LAB 3 TERNING

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Kort repetisjon fra forrige gang. Kombinatorisk logikk

Kapittel 3: Litt om representasjon av tall

En mengde andre typer som DVD, CD, FPGA, Flash, (E)PROM etc. (Kommer. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til:

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Repetisjon: LTI-systemer

y(t) t

Tabellen viser en serie med verdier for den uavhengige variabelen, og viser den tilhørende verdien til den avhengige variabelen.

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Rapport laboratorieøving 2 RC-krets. Thomas L Falch, Jørgen Faret Gruppe 225

Løsningsforslag til regneøving 6. a) Bruk boolsk algebra til å forkorte følgende uttrykk [1] Fjerner 0 uttrykk, og får: [4]

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD13012 Datateknikk (deleksamen 1, høstsemesteret) Dato: Eksamenstid: kl til kl.

FYS1210 Løsningsforslag Eksamen V2015

Lær å bruke Microsoft Mathematics, Matematikk-tillegget i Word og WordMat. Av Sigbjørn Hals

Enkle logiske kretser Vi ser på DTL (Diode Transistor Logikk) og 74LSxx (Low Power Schottky logikk)

Høgskolen i Oslo og Akershus. sin 2 x cos 2 x = 0, x [0, 2π) 1 cos 2 x cos 2 x = 0 2 cos 2 x = 1 cos 2 x =

EKSAMEN Løsningsforslag Emne: Fysikk og datateknikk

IN1020. Sekvensiell Logikk

UNIVERSITETET I OSLO

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

KAPITTEL 3 Litt logikk og noen andre småting

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Forelesning 2. Boolsk algebra og logiske porter

INF1400. Tilstandsmaskin

UNIVERSITETET I OSLO

Kanter, kanter, mange mangekanter

Tidsdomene analyse (kap 3 del 2)

Lab 6 Klokkegenerator, tellerkretser og digital-analog omformer

2-Port transmisjons målinger for Anritsu RF og mikrobølge håndholdte instrumenter

UNIVERSITETET I OSLO.

«OPERASJONSFORSTERKERE»

EKSAMEN I FAG TFE4101 KRETS- OG DIGITALTEKNIKK

Bokmål / Nynorsk / English NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR FYSIKK. Eksamen TFY4185 Måleteknikk

Lab 2 Praktiske målinger med oscilloskop og signalgenerator

Forelesning 3. Karnaughdiagram

LABORATORIEOPPGAVE NR 6. Logiske kretser - DTL (Diode-Transistor Logic) Læringsmål: Oppbygning

1 C z I G + + = + + 2) Multiplikasjon av et tall med en parentes foregår ved å multiplisere tallet med alle leddene i parentesen, slik at

Eksamen i MIK130, Systemidentifikasjon

Transformanalyse. Jan Egil Kirkebø. Universitetet i Oslo 17./23. september 2019

Posisjonsystemet FRA A TIL Å

Funksjoner og andregradsuttrykk

UNIVERSITETET I OSLO

Praktiske målinger med oscilloskop og signalgenerator Vi ser på likerettere og frekvensfilter

Transkript:

Stavanger, 1. desember 2015 Det teknisknaturvitenskapelige fakultet ELE610 Prosjekter i robotteknikk, vår 2016. Lab. 2, Logikk og Notch-filter. Innhold 0 Introduksjon 3 2 Oppgaver 4 2.1 Logisk funksjon........................... 4 2.2 Logisk bryter............................ 4 2.3 Trykknapper og LED-lamper.................... 4 2.4 Teller med LED-lamper, lab02b.................. 5 2.5 Teller med LED-display, lab02c.................. 5 2.6 Teller trykk ned, lab02d...................... 5 2.7 Logikk, to enige trykknapper, lab02e............... 6 2.8 Logikk, tre enige trykknapper, lab02f.............. 6 2.9 Anti-prell, lab02g.......................... 7 2.10 Notch-filter som stopper DC.................... 7 2.11 Spesielt Notch-filter......................... 7 2.12 Generelt Notch-filter........................ 8 2.13 Notch-filter med radius gitt med parameter k.......... 9 2.14 Subsystemene Ned1000 og Opp1000................ 9 2.15 lab02i................................ 9 2.16 lab02j................................ 10 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.

2.17 lab02k................................ 13 9 Sannhetstabeller og logiske funksjoner. 17 10 Litt teori om IIR-filter med mer. 18 10.1 IIR-filter............................... 18 10.2 Polplassering for IIR-filter...................... 19 10.3 Notch-filter.............................. 19 10.4 Eksempel.............................. 20 2

0 Introduksjon Vi skal i denne øvinga se litt på logikk og på brytere, lysdioder og LED-display på utviklingskortet. Vi skal også se på IIR-filter i form av noen enkle Notchfilter. Notch-filter, på norsk ofte kalla sugefilter, er en spesiell type IIR-filter. Kort oppsummmert består notch-filteret av et nullpunkt på enhetssirkelen for den frekvensen en ønsker å stanse, og for å oppheve virkningen av nullpunktet for andre frekvenser er det plassert en pol like innenfor nullpunktet. I del 9 er det litt om sannhetstabeller og logiske funksjoner, dette er egentlig altfor lite, og antakelig kun nyttig hvis dere kan det fra før. I denne øvinga må dere forstå godt hvordan et notch-filter virker. For de fleste av dere betyr det å bruke en del tid på å gjenoppfriske teorien om IIR-filter og notch-filter og å besvare teorioppgavene grundig og godt. Se gjerne ei lærebok, og teoridelen i del 10 her. Før dere begynner på øvinga vil jeg også anbefale dere å gjenoppfriske kunnskap om grunnleggende logiske kretser, så som AND, OR, NOT. Dere bør vite hvordan de tegnes og hva de gjør. Finn gjerne fram og bla litt i lærebøker om (digitale) eletriske kretser, for eksempel Tony R. Kuphaldt: Lessons in Eletric Circuits som er tilgjengelig fra nettsida. Det er alltid lurt å starte med å lese innholdslista. Senere vil dere ha spesiell nytte av å lese (og forstå) avsnittet Converting truth tables into Boolean expressions i kapittel 7. Når det gjelder notasjon så vil jeg her skrive slik en ofte gjør i tekst. En logisk variabel skrives med stor bokstav, A. Den negerte (ikke) skrives med strek over Ā. AND skrives som produkt, A B er altså A og ikke B. OR skrives som sum, A + B betyr altså A eller B. System Generator blokkene som det er aktuelt å bruke i denne øvinga er noe i UiS blokksettet og noen i Xilinx blokksettene. Let og finn og studer dokumentasjon og hjelpetekst, så finner dere nok utav det. Det er med hensikt i denne øvinga at ikke alle oppgavene like detaljert forteller dere hva dere skal gjøre, dere skal også bruke litt tid til å få bedre oversikt over dokumentasjon og hjelpetekst ved å finne fram til svar selv. 3

2 Oppgaver 2.1 Logisk funksjon Vi ønsker nå en logisk funksjon som er slik at hvis x(k) = x(k 1) så har vi y(k) = x(k), men hvis x(k) x(k 1) så ønsker vi å ha samme utgangsverdi som før, altså y(k) = y(k 1). I utgangspunktet har vi altså bare en inngang og en utgang, men den logiske funksjonen må ha tre logiske innvariabler: en logisk variabel for innverdi ved dette tidssteget x(k) som vi kaller A, en logisk variabel for innverdi ved forrige tidssteg x(k 1) som vi kaller B, og en logisk variabel for utgangen ved forrige tidssteg y(k 1) som vi kaller C. Utgangen ved dette steget y(k) er output av funksjonen som vi kaller Y. Den logiske funksjonen dere skal bruke i denne oppgaven blir da: Hvis A = B så skal en ha Y = A, ellers skal en ha Y = C. a. Lag en sannhetstabell for denne funksjonen. b. Finn nå et logisk uttrykk for funksjonen. c. Prøv å forenkle denne logiske funksjonen. 2.2 Logisk bryter En enkel logisk bryter, switch, kan implementeres med noen få (fire) grunnleggende logiske kretser. En har tre innganger A, B og C og en utgang, verdien på A velger om det er B eller C som skal gå gjennom til utgangen. Reglene kan være at hvis A er sann (1) så skal C settes til utgangen, hvis A ikke er sann (0) så skal B settes til utgangen. a. Skriv sannhetstabellen for denne funksjonen. b. Forenkle så det logiske uttrykket så mye som mulig. c. Tegn så opp hvordan det kan implementeres med noen få (fire) grunnleggende logiske kretser. 2.3 Trykknapper og LED-lamper Se på modellen med direkte kobling fra trykknapper til LED, lab02a tilgjengelig fra nettsida. I System Generator (SG) blokka kan dere sette Simulink System Period (SSP) til 1/2, altså en klokkefrekvens på 50 MHz. Jeg mener at verdien på trykknapper og DIP-brytere da vil leses av 50 ganger hvert mikrosekund, og utgang til LED skrives like ofte. 4

a. Finn ut hvilken verdi som trykknappen leverer når den er trykket ned, er det 1 eller 0? b. Finn ut om det er 1 eller 0 som får en LED til å lyse? c. Sett riktig verdi inn i kolonnene 2 og 3 i tabellen nedenfor. trykknapp1 logisk verdi LED-lampe1 oppe 0 / 1 lyser (ikke) nede 0 / 1 lyser (ikke) 2.4 Teller med LED-lamper, lab02b Med utgangspunkt i lab02a skal dere nå lage lab02b. Her skal det også være en teller counter som teller klokkepulser når en trykknapp holdes nede. Videre skal to av utgangsbitene for telleren (bruk SG-blokka slice) kobles til hver sin LED-lampe (for eksemple lampe 3 og 4) slik at den ene skifter tilstand hvert sekund og den andre hvert andre sekund. De skal altså telle 0, 1, 2, og 3 i løpet av 4 sekunder og så begynne på nytt, men kun når trykknappen holdes nede. Det kan være lurt å nedsample (bruk SG-blokka Down Sample) utgangen fra trykknappen med faktor 50, slik at mesteparten av systemet opererer med samplerate på 1 MHz. 2.5 Teller med LED-display, lab02c Med utgangspunkt i lab02b skal dere nå lage lab02c. Vi ønsker at telleren nå kun skal økes 1000 (eller 2 10 = 1024), eventuelt ca en million (2 20 ), ganger i løpet av et sekund, men også nå kun når trykknappen holdes nede. Det vil da være hensiktsmessig med enda mer nedsampling i forhold til i lab02b. Telleren styres fortsatt av klokkefrekvensen for inngangssignalet i stedet for systemets klokkefrekvens. Verdien i telleren skal nå vise på LED-display (hexadesimalt). Hvis dere ikke finner ut av hvordan LED-display skal brukes kan dere se på lab02d tilgjengelig fra nettsida. 2.6 Teller trykk ned, lab02d Se på modellen der det er en teller for trykknapp 1, lab02d tilgjengelig fra nettsida. Telleren skal ideelt sett øke med 1 hver gang bryteren trykkes ned (ikke når den slippes opp). Resultatet viser på LED displayet, se egen dokumentasjon tilgjengelig fra nettsida, de to siste bit kan eventuelt også vises på LED-lamper. Selv om en nå tenker riktig og bruker teller-blokka riktig så vil en se at telleren gjerne hopper flere steg fram hver gang. Det er ikke så lett å 5

unngå det siden det skyldes prelling i trykknappen, det vil si den går ikke fra oppe til nede på en klar måte, men vil i overgangen gå litt att og fram. Da telles flere overganger. 2.7 Logikk, to enige trykknapper, lab02e Dere skal nå lage en modell med noe logikk mellom trykknapper og LED lampene. Her skal dere bruke to trykknapper og LED1 og LED2, de to LED skal alltid være motsatt av hverandre. LED1 skal lyse hvis begge trykknappene holdes nede, LED2 skal lyse hvis begge trykknappene er oppe. Hvis de to trykknappene er i ulik posisjon så skal begge LED lyse slik som før. Altså, sett at en starter med begge trykknappene oppe og LED1 av og LED2 på. Da skal en kunne trykke en av knappene ned (og opp og ned igjen) uten at noe skal skje med LED-lampene. Dette kan en også gjøre med den andre trykknappen. Holder en begge trykknappene nede og LED1 er da på og LED2 av. Da skal en også kunne slippe en av knappene opp (og trykke ned igjen) uten at noe skal skje med LED-lampene. Prøv å lag en god og enkel modell som gjør dette. Kall gjerne modellen lab02e. 2.8 Logikk, tre enige trykknapper, lab02f Utvid så den logiske funksjonen fra forrige punkt slik at nå må alle tre trykknapper være enige for at LED-lampene skal skifte tilstand. Kall gjerne modellen lab02f. Et forslag til hvordan det kan løses viser i figur 1. Figur 1: Forslag til hvordan oppgave 2.8 lab02f kan løses. 6

2.9 Anti-prell, lab02g Nå er dere klar til å prøve å løse problemet med prelling fra spørsmål 6. Dere skal nå utvide lab02d til å unngå prelling. Kall gjerne den nye modellen lab02g. Løsningen kan ha med to elementer, først nedsampling av frekvensen for trykkknappen til en mer hensiktsmessig frekvens, for eksempel 10 khz. Så kan en bruke løsningen fra spørsmål 8 til å gjøre at inngangen til telleren blir mer stabil, det vil si kun skifter verdi hvis det er enighet blant flere av de foregånde sampleme om at trykknappen virkelig har blitt trykket ned. 2.10 Notch-filter som stopper DC Et førsteordens IIR-filter (Notch-filter) som stopper DC-komponenten kan implementeres med å plassere et nullpunkt i 1 og en pol like innenfor. Anta at samplingsraten er 50 khz. a. Skriv opp transferfunksjonen for et slik filter når radius for pol er r p = 31/32. b. Skriv så differanseligningen for filteret. Skriv denne på en form som viser at filteret kan implementeres uten multiplikasjoner. c. Plott frekvensresponsen. Bruk gjerne lineær skala og plott både hele frekvensområde fra 0 Hz til Nyquist-frekvensen, og de lave frekvenser fra 0 Hz til 500 Hz. d. For hvilket frekvensområde dempes amplituden for et sinussignal til mindre enn halvparten? La nå radius for polen være r p = 63/64. e. Skriv differanseligningen for filteret. f. Plott frekvensresponsen for dette Notch-filteret. g. For hvilket frekvensområde dempes nå amplituden for et sinussignal til mindre enn halvparten? 2.11 Spesielt Notch-filter Vi har nå følgende notch-filter H(z) = 63 102z 1 + 63z 2. (1) 64 102z 1 + 62z 2 7

Anta at samplingsraten er 50 khz. a. Plott frekvensresponsen. Bruk gjerne lineær skala og plott hele frekvensområdet fra 0 Hz til Nyquist-frekvensen. b. Plott et nullpunkt-pol diagram for filteret. c. Hva er radius for polen? d. Hva er vinkel, frekvens, for nullpunktet? e. Skriv ligningen som viser hvordan filteret kan implementeres med to multiplikasjoner, 5 addisjoner/subtraksjoner og en skalering, (differanseligningen). Den ene multiplikasjonen kan i tillegg erstattes med en skalering og en subtraksjon om ønskelig. 2.12 Generelt Notch-filter Vi har nå et andre-ordens notch-filter med ei bestemt form. Vi setter her a 0 = 1, b 0 = 1 og b 2 = 1. Vi har da H(z) = 1 + b 1z 1 + z 2. (2) 1 + a 1 z 1 + a 2 z 2 Vi får for vinkel for nullpunkt (som er på enhetssirkelen) cos θ n = 0.5b 1. Også her antar vi at samplingsraten er 50 khz. a. Vis at radius for polen er r p = a 2. b. Vis at en for vinkel for pol (som er innenfor enhetssirkelen) har at cos θ p = a 1 /2r p. c. Finn filterkoeffisientene, her b 1, a 1 og a 2, for filteret her når en ønsker stoppfrekvens på 5 khz og radius for pol på 0.99. d. Skriv differanseligningen for filteret med stoppfrekvens på 5 khz og radius for pol på 0.99. e. Plott frekvensresponsen for filteret med stoppfrekvens på 5 khz og radius for pol på 0.99. f. For hvilket frekvensområde dempes amplituden for et sinussignal til mindre enn halvparten? 8

2.13 Notch-filter med radius gitt med parameter k Vi har et Notch-filter som i ligning 2. Vi antar nå at radius for pol er nesten 1 og at den kan skrives som r p = 1 k/1024, der k er et lite positivt heltall. a. Vis at a 2 nå kan tilnærmes med a 2 1 k/512. b. Hvor stor kan k være for at denne tilnærmelsen gir samme resultat for a 2 som når det nøyatige uttrykket brukes, og a 2 representeres som Fix_12_10 (signed 2-er komplement). Et tall med format Fix_12_10 kan representere alle tall fra og med -2 til (men ikke inkludert) 2 i steg på 2 10 = 1/1024. c. En ønsker vinkelen for pol lik vinkel for nullpunkt, θ p = θ n eller cos θ p = cos θ n. Vis at en da får a 1 = b 1 kb 1 /1024. d. Skriv filteret på form som i ligning 2, men bruk kun k og b 1, en har som før cos θ n = 0.5b 1, som parametere. e. Skriv differanseligningen som viser hvordan filteret kan implementeres. 2.14 Subsystemene Ned1000 og Opp1000 Se på modellen der subsystemene Ned1000 og Opp1000 er med, lab02h tilgjengelig fra nettsida. Disse systemene er nedsampling og oppsampling i kombinasjon med ganske smale og bratte lavpassfilter. Vi skal se mer på hvordan disse subsystemene er laget i neste øving. Samplerate for systemet er 50 MHz, etter nedsampling i Ned1000 subsytemet blir sampleraten 50 khz. Lag bit-fil for systemet og kommenter hvordan det virker. Sjekk frekvensresponsen for noen frekvenser, fra ca 100 Hz og opp til 30 khz. Se spesielt på resultatet av et innsignal med firkantpulser på frekvens 1 khz, merk resultatet av utganssignalet her både nå trykknappen er nede og når den er oppe. Hva blir obeservert (målt) knekkfrekvensen for systemet (signalet d1 inn til Mux-blokk)? 2.15 lab02i Nå skal vi sette to notch-filter inn i systemet i forrige punkt. Disse skal gå på 50 khz. En skal kunne velge hvilket notch-filter som skal være aktivt med trykknapp 1. Systemet kan implementeres som vist i figur 5. Det ene filteret er et førsteordens notch-filter med stoppfrekvens 0.0, altså stoppes DC. Radius for pol skal være 63/64. Dette filteret kan implementeres uten multiplikasjoner som i figur 6. Fordelen med dette er at en ikke får for 9

Figur 2: Systemet lab02h i spørsmål 2.14. Figur 3: Systemet Ned1000 som er med i mange modeller. stor forsinkelse i løkka (i simulink modellen) som bruker forrige utgangsverdi til å beregne denne utgangsverdien, denne løkka må nemlig gjøres på en sampleperiode. Det andre filteret er et andreordens notch-filter som i spørsmål 2, ligning 1. Her bruker en Cmult-blokker, disse kan implementeres uten forsinkelse, men vi har her valgt å legge forsinkelsen vi skal ha inn i disse blokkene. Implementasjon av dette notch-filteret vist i figur 7. Selve systemet lab02i viser i figur 5. Lag systemet og sjekk at det kjører som forventet. Hvilke frekvenser kan dempes, og hva vil bredden for stoppbåndet være? Vi regner stoppbåndet som de frekvenser som dempes til under halvparten. Se spesielt på resultatet av et innsignal med firkantpulser på frekvens 1 khz, merk resultatet av utganssignalet her både nå trykknappen er nede og når den er oppe. 2.16 lab02j Den generelle multiplikasjonsblokka, Mult, krever en forsinkelse på minst 3 tidssteg slik den er implementert i System Generator, dette selv om sampleraten for signalet i denne blokka er adskillig lavere enn maksimal samplerate. 10

Figur 4: Systemet Opp1000 som er med i mange modeller. Figur 5: Systemet lab02i i spørsmål 15. Dette er litt merkelig, men jeg har ikke funnet ut hvorfor. Dette skaper problem når en vil implementere et notch-filter der koeffisientene kan gis inn med parametre, for eksempel b 1 som angir posisjon for nullpunktet, og radius for pol, r p. En måte å løse dette på er å oppsample signalet (innen en del av notch-filteret), for eksempel med en faktor på 4. Da må en huske på at z 1 blir z 4 og z 2 blir z 8, og nå har en fått tilstrekkelig med tidssteg til å kunne utføre den kritiske stien. Til slutt, før signalet går videre så nedsampler en med en faktor 4 igjen. Dette er gjort i modellen med fleksibelt Notch-filter, lab02j tilgjengelig fra nettsida. Notch-filteret viser også i figur 10. Det har et eget lite subsystem som multipliserer et signalsample y med et lite heltall k uten ekstra forsinkelse, figur 12. NotchD-subsystemet skal kunne brukes for å stoppe ulike frekvenser, stoppfrekvensen angis med å gi tilhørende b 1 parameter. Også radius for pol, r p, skal kunne gis inn enkelt. Se grundig på figuren og merk dere spesielt godt hvilke signal som går inn til og ut av de ulike boksene. Prøv å forstå at dette er en implementasjon av notch-filteret i spørsmål 12. Lag bit-fil for systemet og sjekk at det kjører som forventet. Hvilke frekvenser kan dempes, og hva vil bredden for stoppbåndet være. Vi regner stoppbåndet som de frekvenser som dempes til under halvparten. 11

Figur 6: Systemet Notch00 i lab02i, figur 5. Figur 7: Systemet Notch02 i lab02i, figur 5. 12

Figur 8: Systemet Teller1til0 for systemet lab02k i figur 9. Se spesielt på resultatet av et innsignal med firkantpulser på frekvens 1 khz, merk resultatet av utganssignalet her både nå trykknappen er nede og når den er oppe. Forklar hvorfor utsignalet med trykknappen nede her blir ulikt utsignalet med trykknappen nede i systemet lab02i. 2.17 lab02k Nå skal vi utvide systemet omkrong notch-filteret slik at vi kan endre både stoppfrekvens og bredde for stoppbåndet. Dette gjøres med å bygge litt logikk omkring notch-filteret. Først vil vi koble bryter 1 til en fire-bits teller, slik at utgangen her blir de fire mest signifikante bit i k, de to minst signifikante bit er faste 01. Da kan en la k variere mellom verdiene 1, 5, 9,, 61, med å trykke på bryter 1. Telleren skal øke (telle) hvergang krykknappen trykkes ned. Implementasjon av denne telleren viser i figur 8. Dernest ønsker en å ha det slik at når trykknapp 2 trykkes ned så øker variabelen b1 med en fast verdi som her kalles b1_inc. Når trykknapp 3 trykkes ned så reduseres variabelen b1 med b1_inc. Startverdi for b1_init kan gjerne være 0. Hva er stoppfrekvensen for Notch-filteret da? Som ekstra funksjonalitet kan en ha at hvis begge bryterne holdes nede så settes b1 til startverdien. Denne logikkblokka (subsystemet TellerOppNed) er ikke helt enkel å lage. Prøv å lage denne selv, men dere kan gjerne se på en mulig implementasjonen i figur 11. Selve systemet lab02k viser i figur 9. Lag systemet og sjekk at det kjører som forventet. 13

Figur 9: Systemet lab02k i spørsmål. Figur 10: Systemet NotchD for systemet lab02k i figur 9. 14

Figur 11: Systemet TellerOppNed for systemet lab02k i figur 9. 15

Figur 12: Systemet k Mult y i systemet NotchD i figur 10. 16

9 Sannhetstabeller og logiske funksjoner. I denne sammenheng har en logisk funksjon et gitt antall, N, logiske innganger og en logisk utgang. Resultatet er altså usann, 0, eller sann, 1. En sannhetstabell er en tabell som viser resultatet av en logisk funksjon for alle mulige inngangskombinasjoner. Sett at vi har kun 2 innvariabler, A og B, da er antall mulige inngangskombinasjoner 4. Generelt har en at med N innvariabler er antall mulige inngangskombinasjoner 2 N. Eksempel: For en eksklusiv eller, XOR A eller B men ikke begge, kan en da sette opp følgende sannhetstabell: A B output, Y logisk uttrykk 0 0 0 0 1 1 Ā B ĀB 1 0 1 A B 1 1 0 AB En kan også gå andre veien, ut fra sannhetstabellen kan en finne den logiske funksjonen. Hver linje i sannhetstabellen tilsvarer et logisk uttrykk som er en AND kombinasjon av alle innganger, hver inngang er enten med direkte eller så er den negerte med. Så kan en lage den logiske funksjonen med å ta med de logiske uttrykkene der utgangsverdien skal være sann, Y = 1, i en (ofte ganske stor) OR kombinasjon. Fra sannhetstabellen for XOR-funksjonen får vi da at den logiske funksjonen som helhet blir Y = ĀB + A B. Men å ta utgangspunkt i forma fra sannhetstabellen kan dermed enhver logisk funksjon implementers som med en logisk krets med to lag. I første lag en rekke uavhengige AND porter, hver med N innganger der hver inngang svarer til en inngang for funsjonen enten direkte eller negert. I andre lag en OR port med utgangene fra alle AND portene som innganger. Utgangen fra OR porten er da resultatet av funksjonen. De logiske funksjonene som en får direkte fra en sannhetstabell kan, selv om de er kun to lag, bli ganske store og inneholde svært mange logiske kretser hvis de implementeres direkte. De kan imidlertid ofte forenkles en hel del ved hjelp av grunnleggende algebraiske operasjoner på funksjonsuttrykkene. Hvordan dette best kan gjøres er ikke alltid helt enkelt å finne ut av, men det er en del hint hos Kuphaldt, kapittel 7 og 8 (Karnaugh diagram). Målet med forenklingen er ofte å få et uttrykk for den logiske funksjonen som enkelt kan implementeres med så få logiske kretser som mulig. 17

10 Litt teori om IIR-filter med mer. Dette er et noe stikkordspreget og kladdepreget notat over litt teorien fra signalbehandlingen. Det er det en bør kunne for å få til denne øvinga. 10.1 IIR-filter Et IIR-filter er et filter med (teoretisk) uendelig impulsrespons. I praksis er det implementert nesten like enklet som et FIR-filter. Utgangen av et FIR-filter er vekta sum av inngangssignal ved dette og noen foregående tidspunkt. y(k) = N 1 n=0 For eksempel for et boxcar-filter med lengde 4 b(n)x(k n). (3) y(k) = x(k) + x(k 1) + x(k 2) + x(k 3) (4) For et IIR-filter har en med ledd av foregående utganger også. y(k) = N 1 n=0 b(n)x(k n) M 1 m=1 a(m)y(k m) (5) Merk at andre sum begynner med m = 1. Et eksempel på et IIR-filter er et AR(1)-filter (her med ρ = 0.95) y(k) = x(k) + 0.95y(k 1) (6) Vi ser ganske enkelt at dette filteret vil få uendlig lang impulsrespons, selv om utgangsverdiene går mot null så vil de aldri bli helt like null. Dere stusser gjerne på minustegnet framfor det siste summetegnet i ligning 5. Ved å flytte summen over på venstre siden, og la a(0) = 1 kan en skrive M 1 m=0 a(m)y(k m) = y(k) + M 1 m=1 a(m)y(k m) = Nå kan en ta z-transform på begge sider og får som gir transferfunksjonen H(z). N 1 n=0 b(n)x(k n) (7) A(z)Y (z) = B(z)X(z) (8) Y (z) = B(z) X(z) = H(z)X(z) (9) A(z) H(z) = Y (z) X(z) = B(z) A(z) (10) 18

En har dermed at H(z) er en brøk med et polynom i telleren B(z) og et polynom i nevneren A(z). Røttene i tellerpolynomet gir nullpunkt og røttene i nevnerpolynomet gir poler. Implementering av IIR-filter står beskrevet i Proakis lærebok i signalbehandling. Også IIR-filter kan ofte (med fordel) implementeres som en kaskade av andreordensfaktorer. Da har en gjerne god kontroll over plassering av nullpunkt og poler. Nullpunkt og poler nær hverandre kan gjerne plasseres i samme blokk, og en får da ofte også ganske god kontroll over numeriske effekter (avrunding). 10.2 Polplassering for IIR-filter. Et enkelt andreordens IIR-filter har form H(z) = b 0. (11) a 0 + a 1 z 1 + a 2 z 2 En kan multipisere med z 2 over og under brøkstreken og får ekvivalent form H(z) = b 0 z 2 a 0 z 2 + a 1 z + a 2. (12) Polene til denne ligningen finnes tilsvarende som når vi fant nullpunkt for andreordens FIR-filter. Poler er z 1,2 = 1 ( ) a 1 ± a 21 4a 0 a 2 (13) 2a 0 og radius og vinkelen er (når a 2 1 4a 0 a 2 ) r = a0 a 2 a 0, cos θ = a 1 2 a 0 a 2. (14) For å få stabilt filter må polene være innenfor enhetssirkelen, og det betyr at r < 1 og følgelig a 2 < a 0, når a 0 og a 2 er positive. r < 1 0 a 2 < a 0. (15) For et IIR-filter vil frekvensene nær polene forsterkes. 10.3 Notch-filter. Et generelt andreordens IIR-filter har form H(z) = b 0 + b 1 z 1 + b 2 z 2 a 0 + a 1 z 1 + a 2 z 2 = b 0z 2 + b 1 z + b 2 a 0 z 2 + a 1 z + a 2. (16) 19

Dette kan ganske direkte implementeres med heltallsaritmetikk når koeffisientene er heltall og a 0 = 2 k der k er et heltall. Hvis en ønsker at en skal ha verken dempning eller forsterkning ved en bestemt frekvens, ω 0, må en justere størrelsen på koeffisientene slik at en får H(e jω 0 ) = 1. Hvis ω 0 = 0 så får en da for filteret i ligning 16 at H(e jω 0 ) = H(1) = b 0 + b 1 + b 2 a 0 + a 1 + a 2. (17) Notch-filter er et smalt båndstoppfilter. Det har plassert et nullpunkt på enhetssirkelen ved frekvens som en ønsker å stoppe, og en pol like innenfor. Effekten er at for frekvenser et stykke fra nullpunkt (og pol) så vil nullpunkt og pol oppveie hverandre og en får tilnærmet ingen forsterkning eller demping for disse frekvenser. Med heltallskoeffisienter har en ikke full frihet, men kan likevel som regel få plassert nullpunkt og poler ganske nær ønskede posisjoner. En kan velge koeffisienter på ulike måter. Et eksempel kan være at en setter a 0 = 2 k, og så velger a 2 = a 0 2, b 0 = b 2 = a 0 1, og b 1 2b 0 cos ω 0. b 1 er da et heltall som gjør at nullpunktet kommer nær ønsket vinkel. Videre settes a 1 = b 1 og polen kommer da nokså nær nullpunktet, men innenfor. Eksempel med ω 0 = 10 grader og a 0 = 64 gir a 1 = 124, a 2 = 62, b 0 = 63, b 1 = 124, og b 2 = 63. Dette gir vinkel for nullpunkt 10.2222 grader, radius for nullpunkt 1, vinkel for pol 10.1821 grader og radius for pol 0.98425. Jeg har laget ei Matlab-fil, notchfilter.m, som kan brukes for å finne et notch-filter med heltalls koeffisienter. En kan velge ulike måter å velge nullpunkt nær en pol. Det er ei ganske stor m-fil med flere muligheter, jeg tror det går greitt å bruke den ut fra hjelpeteksten (help notchfilter). Men for å forstå det som gjøres må dere forstå teorien her, og også se i koden i m-fila. 10.4 Eksempel Avstanden polen til enhetssirkelen styrer hvor smalt (spisst) notch-filteret er. Vi skal nå vise frekvensresponsen for noen ulike avstander mellom pol og enhetssirkel. Vi regner nå med flyttall, og setter r til radius for pol, og vinkel er 162 grader. Matlab-kommandoene er: desibelplot=0; vinkel = 0.9*180; % gis i grader her figure(1);clf; hold on; colors= bgrcmyk ;colorindex=1; 20

a0=1; b0=1; b2=1; b1=-2*cos(pi*vinkel/180); b=[b0,b1,b2]; for r=[0.995 0.98 0.95 0.9 0.8,0.5,0] a1=r*b1; a2=r*r; a=[a0,a1,a2]; [H,F]=freqz(b,a,2048, whole ); Ha=abs(H); if desibelplot Hl=20*log10(Ha+1e-8); plot(f/pi,hl,[colors(colorindex), - ]); else plot(f/pi,ha,[colors(colorindex), - ]); hand=plot(0.05,0.12*colorindex,[colors(colorindex), o ]); set(hand, MarkerFaceColor,get(hand, Color )); text(0.08,0.12*colorindex,[ : r =,num2str(r)]); end colorindex = rem(colorindex,length(colors))+1; end grid on; xlabel( Normalisert frekvens, 1 er f_n og 2 er f_s. ); title([ Frekvensrespons for Notch-filter, vinkel er,... num2str(vinkel), grader. ]); if desibelplot ylabel( Amplitudeforsterkning i desibel. ); print( -f1, -dpng, lab02des ); V = [0.8, 1.2, -18, 2]; axis(v); print( -f1, -dpng, lab02desz ); else V = [0, 2, 0, 2.5]; axis(v); ylabel( Amplitudeforsterkning med lineær skala. ); print( -f1, -dpng, lab02lin ); V = [0.8, 1.2, 0, 1.25]; axis(v); print( -f1, -dpng, lab02linz ); end Les grunding gjennom Matlab-koden og prøv å forstå alle kommandoer. Kjør gjerne kommandoene selv, med andre vinkler og se resultatet. I figurene 13 til 16 er resultatet når Matlab-kommandoene over kjøres. 21

Figur 13: Frekvensrespons for et notch-filter. Figur 14: Frekvensrespons for et notch-filter. Her er det zoom av det sentrale område i figur 13 22

Figur 15: Frekvensrespons for et notch-filter. Figur 16: Frekvensrespons for et notch-filter. Her er det zoom av det sentrale område i figur 15 23