Effektenhed til guitar

Størrelse: px
Starte visningen fra side:

Download "Effektenhed til guitar"

Transkript

1 AALBORG UNIVERSITET Institut for elektroniske systemer Fredrik Bajers Vej Aalborg Øst - Telefon TITEL: Effektenhed til guitar PROJEKTPERIODE: Februar - maj 2004 TEMA: Signalbehandlingssystemer PROJEKTGRUPPE: 640 GRUPPEMEDLEMMER: Martin Skovgaard Andersen Jakob Dyreby Frederik Holmelund Kjærskov Ole Lodahl Mikkelsen Daniel Rasmussen VEJLEDER: Sofus Birkedal Nielsen ANTAL: 8 SIDER I HOVEDRAPPORT: 88 SIDER I ALT: 170 SYNOPSIS: Denne projektrapport omhandler analyse, design, konstruktion og test af en guitareffektenhed. Der implementeres både analoge og digitale effekter. De analoge effekter er wahwah, distortion og tremolo, mens de digitale effekter er reverb, echo, flanger og equalizer. De enkelte moduler er opbygget på selvstændige indstikskort til et rack. De digitale effekter er blevet implementeret vha. en TMS320C26 signalprocessor. Systemets software er udviklet i assembler, og der er benyttet en debugger/monitor som udviklingsværktøj. De digitale effekter styres vha. en brugergrænseflade, der inkluderer knapper, et jog-hjul og et display, hvor de analoge effekter justeres vha. potentiometre. Det konkluderes, at effekterne fungerer og lyder som forventet, mens brugerfladen giver mulighed for justering. Der opstår dog støj i systemet, hvilket gør sig gældende i såvel analoge som digitale effekter. Den digitalt introducerede støj skyldes afrunding efter multiplikation, mens den analoge støj til dels kan skyldes implementeringsformen.

2

3 Forord Denne projektrapport er udarbejdet af gruppe 640 på 6. semester signalbehandling ved Aalborg Universitet. Rapporten er udarbejdet i foråret 2004 i perioden fra 2. februar til 27. maj. Det overordnede tema for projektperioden har været signalbehandlingssystemer. Projektet er udarbejdet med henblik på at opnå forståelse for de principper, der gælder i forbindelse med design og konstruktion af både analoge og digitale signalbehandlingssystemer. Da projektet er et studieprojekt, er der under flere af projektets faser foretaget valg, så flest forskellige teorier og teknikker benyttes. Bl.a. benyttes der både analoge og digitale realiseringer. Alle henvisninger til eksterne kilder er vist på formen: [Orfanidis 1996, s. 10] Vedlagt rapporten er en cd-rom indeholdende rapporten i PDF-format, kildekode til det udviklede programmel samt relevante kilder i PDF-format. Martin Skovgaard Andersen Jakob Dyreby Frederik Holmelund Kjærskov Ole Lodahl Mikkelsen Daniel Rasmussen III

4

5 Indhold I Analyse 1 1 Indledning 3 2 Effekter Amplitudebaserede effekter Frekvensbaserede effekter Tidsbaserede effekter Valg af effekter Grænseflader Guitarmodel Valg af samplingsfrekvens Kravspecifikation 19 II Design 23 5 Analoge effekter Ind- og udgangstrin Wahwah Tremolo Distortion DSP-systemet DSP-system A/D- og D/A-konverter Adressering Brugergrænseflade Digitale effekter Softwareopbygning Rumklang Ekko og delay Flanger Equalizer V

6 INDHOLD III Vurdering 81 8 Systemtest 83 9 Konklusion Perspektivering 87 Litteratur 88 IV Appendiks 89 A Målejournaler 90 A.1 Måling af guitarudgang A.2 Måling af forstærkerindgang A.3 Test af wahwah A.4 Test af tremolo A.5 Test af distortion A.6 Test af equalizer B Beregninger 108 B.1 Wahwah-beregninger B.2 Timingsanalyse B.3 Lavfrekvent oscillator B.4 Kvantiseringsstøj i equalizer C Kildekode 121 C.1 Adressedekoder C.2 Hovedrutinen C.3 Brugerinterface C.4 Ekko- og delay C.5 Flanger C.6 Rumklang C.7 Equalizer C.8 Matlabprogrammer D Eldiagrammer 162 D.1 Indgangs- og udgangstrin D.2 Wahwah D.3 Tremolo D.4 Distortion D.5 Brugerflade D.6 DSP-system D.7 A/D- og D/A-konvertermodul VI

7 Del I Analyse I det følgende analyseres effekter og grænseflader for på baggrund heraf at kunne opstille en kravspecifikation til guitareffektenheden. 1

8

9 Indledning 1 Den elektriske guitar opstod udfra ønsket om at opnå større lydniveau fra en guitar. Derfor monteredes en mikrofon på en akustisk guitar for herefter elektronisk at forstærke signalet. Denne form for elektrisk guitar gav imidlertid et problem med hensyn til akustisk feedback fra højttaleren til guitarens resonanskasse. For at undgå akustisk feedback konstrueredes en guitar uden resonanskasse af massivt træ. Herved opstod den moderne elektriske guitar. Grundet den manglende resonanskasse giver den elektriske guitar en spinkel lyd i forhold til den akustiske guitar. For at give elguitaren en mere fyldig lyd manipuleres lyden ofte elektronisk før den forstærkes og sendes til højttalerne. Muligheden for at modificere lyden elektronisk medførte et ønske om at kunne modificere guitarens lyd yderligere og derved opnå en individuel lyd. En tidlig effekt opstod, da guitarister fandt på at skrue så højt op for forstærkeren, at denne overstyrede. Herved opstod effekten distortion, der tilførte forvrængning til guitarens lydbillede. Efterhånden som musikken udvikledes, opstod flere effekter, der kulminerede med nutidens digitale teknologi og har gjort implementering af effekter billigere og åbnet yderligere muligheder. I dette projekt beskrives og dokumenteres realisationen af en række af de guitareffekter, der benyttes. For at afgøre hvilke effekter, der er hensigtsmæssige at konstruere, indledes med en analyse af forskellige effekter. 3

10 Effekter 2 Kapitlets indhold: 2.1 Amplitudebaserede effekter Distortion Compressor/expander Tremolo Frekvensbaserede effekter Equalizer Wahwah Phasing Pitch shifter Tidsbaserede effekter Delay Chorus Flanger Reverb (rumklang) Valg af effekter Effektrækkefølge I dette kapitel undersøges en række af de mest anvendte guitareffekter. Med undersøgelsen sigtes der mod at kunne foretage valg af hvilke effekter, der ønskes implementeret under projektforløbet. Det er valgt at dele kapitlet op i tre områder. Denne opdeling forekommer naturlig i forhold til det effekterne baseres på. Herunder tids-, frekvens- og amplitudebaserede effekter. 2.1 Amplitudebaserede effekter I det følgende vil de effekter, der direkte relaterer sig til ændringer i signalets amplitude undersøges. 4

11 2.1. AMPLITUDEBASEREDE EFFEKTER Distortion En af de mest udbredte effekter er distortion (forvrængning). En typisk form for forvrængning opnås ved at klippe signalet fra guitaren i top og bund, hvorved signalets form i tid gøres mere eller mindre firkantet. Derved opstår harmonisk forvrængning af signalet. Variationen af distortion består i måden signalet forvrænges eller klippes på. Herunder kan nævnes former som blød-, hård-, symmetrisk-, asymmetrisk-, ulineær- og frekvensafhængig forvrængning. På figur 2.1 ses to grader af forvrængning. En distortion-enhed har normalt en eller flere variable parametre. Typisk vil der være mulighed at variere graden af forvrængningen samt at variere det frekvensbånd, der ønskes mest forvrænget. Herved kan samme effekt anvendes til mange forskellige formål. På figur 2.2 ses et principdiagram for en simpel distortion-enhed. Styring kan bestemme størrelsen af A og styrer derfor hvor meget signalet forvrænges. (a) (b) Figur 2.1: To grader af forvrængning af et signal. I n put A Output S ty r i n g Figur 2.2: Blokdiagram over princippet bag distortion-effekten. Blokken styring fastlægger størrelsen af A. Distortion kan både implementeres analogt og digitalt, hvor den digitale giver mulighed for efterligning af kendte forstærkerforvrængninger, mens den analoge implementering lettere giver mulighed for flere brugerindstillinger. 5

12 M KAPITEL 2. EFFEKTER Compressor/expander En compressor er en enhed med en variabel forstærkning, som er afhængig af en midling af indgangssignalet. Svage signaler bliver ikke forstærket, men passerer direkte gennem, mens kraftige signaler dæmpes. Derved bliver signalet presset sammen og dets dynamikområde reduceres. Et eksempel er vist på figur 2.3, hvor et sinussignal er sendt gennem en compressor. På figur 2.4 ses et blokdiagram for en compressor. Blokken Tærskel måler amplituden af indgangssignalet, midler dette og ændrer forstærkningen A, afhængig af indgangssignalets middelværdi. På figur 2.5 ses I/O-karakteristikken for en compressor ved forskellige kompressioner. Den viste effekt har kun to forskellige forstærkninger, der ændres ved værdien Tærskel. Kompressionen angives i et forhold, som angivet på figur 2.5, og specificerer dæmpningen af signaler når amplituden er større end tærsklen. Er kompressionen stor, betegnes compressoren som en limiter. Amplitude Tid Amplitude Figur 2.3: Eksempel på komprimering af et sinussignal. Tid I n put A Output i d l i n g S ty r i n g Figur 2.4: Blokdiagram over princippet bag en compressor/expander. En compressor høres lydmæssigt ved, at lyden fremstår mere kompakt og forskellen mellem 6

13 2.1. AMPLITUDEBASEREDE EFFEKTER V O 1:1 2 :1 4 :1 8 :1 16 :1 L i m i t e r T æ r s k e l V I Figur 2.5: Output som funktion af input for en compressor ved forskellige kompressioner. hårde og bløde anslag på strengene mindskes. Dertil kommer også, at det lyder som om guitarens strenge svinger i længere tid, idet signalniveauet ikke falder. Modsat en compressor, der reducerer dynamikken, øger expanderen dynamikken ved at dæmpe signaler med en amplitude under en tærskel. Kraftige signaler dæmpes ikke, så forskellen mellem kraftige og svage signaler øges. Denne funktionalitet er anvendelig til at fjerne støj, når der ikke spilles på guitaren. Denne effekt benævnes også noise gate. Blokdiagrammet for expanderen ses på figur 2.4, mens I/O-forholdet ses på figur 2.6. V O 1:1 T æ r s k e l 2 :1 4 :1 8 :1 N o i s e g a t e V I Figur 2.6: Output som funktion af input for en expander ved forskellige udvidelsesforhold. Der findes imidlertid en variation til compressoren og expanderen, der på samme vis dæmper signaler større end en øvre tærskel, mens svage signaler mindre end en nedre tærskel forstærkes. Derved vil toner, der klinger ud forlænges, hvilket kan være anvendeligt i forbindelse med solo-riffs. Denne funktion medfører naturligvis kraftig støjforstærkning ved små signaler, hvorfor denne funktion ofte ses som supplement til compressoren og aktiveres ved at holde fodpedalen aktiveret. Denne type betegnes som Compander. 7

14 KAPITEL 2. EFFEKTER Compressor og expander kan implementeres i en samlet effekt. En analog implementering kræver en form for automatisk gain-kontrol (AGC), hvorimod den digitale implementering anvender en form for midling af signalet til styring af forstærkningen Tremolo Tremolo tilfører guitaren en pulserende lyd ved at variere guitarsignalets amplitude med en periodisk funktion. Oftest ses dette udført vha. en multiplier og en funktionsgenerator, som det ses af figur 2.7. Ved at variere frekvensen af det modulerende signal, er det muligt at opnå flere forskellige effekter. Modulationsfrekvensen kan typisk varieres mellem 0.1 Hz og 10 Hz. Det modulerende signal skal forskydes med et offset for at undgå faseskift, når det modulerende signal skifter fortegn. På figur 2.8 ses et sinussignal, modulereret med et sinussignal med 1/10 frekvens. Det ses, at indhyldningskurven for signalet er sinusformet. Input O utput F unk ti o ns - g e ne r a to r Figur 2.7: Principdiagram over en tremolo-enhed. Amplitude Tid Figur 2.8: Et sinussignal med tremolo-effekt. En digital implementering af tremolo er ligefrem, idet der i en signalprocessor er en multiplier. Dog kan den lavfrekvente modulationsfrekvens give nogle udfordringer. Den ana- 8

15 2.2. FREKVENSBASEREDE EFFEKTER loge implementering kræver en analog multiplier, som enten kan realiseres vha. transistorer eller vha. en integreret kreds. Desuden skal der til den analoge implementering designes en lavfrekvens oscillator. 2.2 Frekvensbaserede effekter I det følgende beskrives de mest almindelige effekter, der påvirker signalet som funktion af frekvensen. Denne påvirkning kan ses som en amplitude- og/eller faseændring afhængig af frekvensen eller som et frekvensskift Equalizer En equalizer gør det muligt selektivt at fremhæve eller nedtone enkelte frekvensbånd. Herved kan frekvensgangen ændres og tilpasses guitaristens ønske. Alt efter hvor præcist frekvenskarakteristikken skal kunne indstilles, opdeles frekvensområdet i et antal bånd. I hvert bånd kan forstærkningen justeres. For at kunne opnå en ønsket karakteristik er det nødvendigt at have et stort antal bånd, der kan justeres til enhver amplitude uden at påvirke de omkringliggende bånd. På en normal guitarforstærker forefindes dog oftest en equalizer, som kun giver mulighed for justering af henholdsvis bass, middle, treble og presence. En ekstern equalizer giver som regel mulighed for at justere ved specifikke frekvenser ofte opdelt i oktaver. Ved design af en equalizer er det nødvendigt at undersøge, ved hvilke frekvenser det er hensigtsmæssigt at placere de enkelte bånd. Desuden skal det fastlægges, hvor meget hvert bånd skal kunne forstærkes/dæmpes, og hvor meget hvert bånd må påvirke de omkringliggende. Inden design skal det yderligere overvejes, hvorvidt equalizeren skal implementeres digitalt eller analogt Wahwah Wahwah effekten opstår ved at sende signalet gennem et båndpasfilter og addere outputtet med det oprindelige signal. Filterets centerfrekvens reguleres af guitaristen vha. en fodpedal. Figur 2.9 viser frekvenskarakteristikken for en wahwah effekt. Ved design af en wahwah effekt skal det overvejes, i hvilket område centerfrekvensen c skal variere, hvor stor den maksimale amplitude G skal være, samt hvilken stejlhed og bredde pasbåndet skal have. Da wahwah-effekten er et filter, der hele tiden varieres, implementeres effekten lettest analogt. 9

16 KAPITEL 2. EFFEKTER G Amplitude 0 0,1c c 10c Frekvens Figur 2.9: Frekvenskarakteristik for wahwah effekt. Centerfrekvensen c varieres af guitarristen via en pedal. G angiver den maksimal amplitude. Begge akser er logaritmiske Phasing Phasing fungerer ved, at signalet sendes gennem et allpass-filter, hvorefter det filtrerede signal adderes med det oprindelige. Et allpass-filter har den egenskab, at hver pol har et tilsvarende nulpunkt, der er spejlet i den imaginære akse. Dette gør, at forstærkningen er 0 db i hele frekvensområdet. Det er kun fasen, der ændres. Når de to signaler adderes, vil amplituden af udgangssignalet ikke længere være konstant, men afhængig af faseforskydningen i allpass-filteret. Ved de frekvenser, hvor faseforskydningen i filteret er π+2πn,n Z vil additionen give nul. Dette gør, at forstærkningen vil være nul ved disse frekvenser. For at variere effekten ændres denne frekvens ved at tilpasse allpass filteret. Figur 2.10 viser frekvenskarakteristikken for en phasingeffekt, hvor f angiver den frekvens der dæmpes. Ved design af en phasing-effekt skal variationen af f undersøges både med hensyn til frekvensområde, hastighed og funktionsform. Desuden skal stejlheden omkring f overvejes. Phasing effekten er et varierende filter, hvilket taler for en analog implementering. Det er svært at placere poler og nulpunkter præcist analog pga. komponenttolerancer, hvilket taler for en digital løsning Pitch shifter En pitch shifter-effekt ændrer indgangssignalets frekvens. Frekvensændringen kan varieres, men for at bibeholde de samme harmonier ændres frekvensen normalt til den dobbelte eller den halve. Denne effekt kaldes normalt en octaver. Effekten kan laves ved at fouriertransformere input og ændre signalets frekvensspektrum for til slut at transformere tilbage til tidsdomænet. 10

17 2.3. TIDSBASEREDE EFFEKTER 0 Amplitude f Frekvens Figur 2.10: Frekvenskarakteristik for en phasing-effekt. Frekvensen f varieres som funktion af tiden. Amplituden ved f er lig nul, da de to adderede signaler er i modsat fase. Begge akser er logaritmiske. Ved design af en pitch shifter er det nødvendigt at tage højde for, hvor meget det ønskes at ændre frekvensen og om det transformerede skal kombineres med det oprindelige. Effekten implementeres oftest digitalt, hvor der er mulighed for at udføre FFT. 2.3 Tidsbaserede effekter I dette afsnit vil nogle af de mest almindelige tidsbaserede effekter kort blive beskrevet. En tidsbaseret effekt benytter et forsinket signal i kombination med det oprindelige til at skabe effekten Delay Et delay er i sin simpleste form en effekt, der gør, at lydsignalet bliver adderet med en forsinket kopi af sig selv. Et simpelt blokdiagram over denne effekt kan ses på figur Delay G Figur 2.11: Blokdiagram over simpelt delay. 11

18 KAPITEL 2. EFFEKTER En typisk udvidelse af effekten er at gentage signalet flere gange med dæmpning hver gang. Når denne forsinkelse er større end 50 ms., og kopien af signalet ligeledes bliver dæmpet, vil det lyde som et ekko. Dette kan simpelt realiseres ved at ændre feedforward-løkken på figur 2.11 til en feedback-løkke. Dette ses på figur G Delay Figur 2.12: Blokdiagram over simpelt, gentagende delay Chorus Formålet med chorus-effekten er at få et instrument til at lyde som var det flere instrumenter, der spiller det samme. Da flere musikere med stor sandsynlighed ikke vil spille nøjagtigt i fase, emuleres denne effekt ved at forsinke en eller flere kopier af signalet ms. Ligeledes vil flere instrumenter sjældent have nøjagtigt samme stemning. Denne forskel emuleres ved at variere de forskellige forsinkelser vha. f.eks. en lavfrekvent oscillator. Et simpelt blokdiagram for effekten ses på figur Delay G Delay G Figur 2.13: Blokdiagram over flere simple delays Flanger En flanger-effekt er i princippet analog med chorus-effekten, blot med mindre tidsforsinkelser. Det er i modsætning til chorus meningen at frembringe en susende lyd som et overflyvende jetfly. Dette opnås ved at benytte et delay på 0-10 ms, der er så lavt, at det ikke opfattes af øret som en forsinkelse. Fasedrejet, som det istedet vil resultere i, gør, at systemet virker som et kamfilter, hvor afstanden mellem tænderne afhænger af delayet, da y(t) = x(t) + x(t t) (2.1) Y(s) = X(s) + e jω t X(s) (2.2) H(s) = 1 + e jω t (2.3) H(s) = e jω t/2 (e jω t/2 + e jω t/2 ) (2.4) H(s) = 2cos( 1 2ω t) (2.5) 12

19 2.4. VALG AF EFFEKTER Ved at variere delayet vha. en lavfrekvent oscillator kan man dermed løbende skifte mellem forskellige filtre, og således frembringe den karakteristiske lyd. En typisk realisering vil ligne figur 2.11, hvor delayet dog varieres Reverb (rumklang) Når en lyd bliver spillet indendørs bliver denne reflekteret af vægge, gulv og loft. Denne reflektion opfattes som et rumklang, der rinder ud alt efter rummets opbygning, størrelse og overfladematerialer. Et typisk impulsrespons af et rum kan ses på figur 2.14 Figur 2.14: Et typisk impulsrespons af et rum. Som det ses, er der forholdvis langt mellem de første reflektioner, mens de senere kommer med kortere interval. Dette kan evt. emuleres vha. flere tilbagekoblede delays. Herved bliver mængden af reflektioner løbende forøget. Dette afslutter effektanalysen. Udfra denne analyse er det muligt at vælge hvilke effekter, det ønskes at implementere. 2.4 Valg af effekter I forbindelse med valg af effekter til implementering lægges der vægt på at dække forskellige dele af pensum. Der skal arbejdes med både analog og digital elektronik, men med hovedvægt på digital elektronik. Det vælges at implementere distortion, wah-wah og tremolo analogt, da disse er meget forskelligartede og velegnede til analog implementering. Det vælges digitalt at implementere effekterne equalizer, reverb, echo og flanger. Equalizeren er også velegnet til analog implementering, men den digitale realisering vælges for at inddrage digital filterteori. Delay-effekterne er alle velegnet til digital implementering og er variationer af samme grundlæggende princip. 13

20 KAPITEL 2. EFFEKTER Effektrækkefølge Det er ikke ligegyldigt i hvilken rækkefølge effekterne tilsluttes. F.eks. vil lyden af en wahwah efterfulgt af en distortion være betydeligt anderledes end hvis rækkefølgen var ombyttet. Det er valgt, at implementere effekterne i rækkefølgen vist på figur 2.15 Wah-Wah Distortion Tremolo Reverb Echo Flanger Equalizer Figur 2.15: Oversigt over rækkefølgen af effekter. Før det er muligt at konstruere de udvalgte effekter er det nødvendigt at kende de grænseflader effekterne skal tilsluttes. Derfor undersøges de eksterne grænseflader i det følgende kapitel. 14

21 Grænseflader 3 Kapitlets indhold: 3.1 Guitarmodel Model af pickup Elektrisk model af guitar Valg af samplingsfrekvens Dette kapitel beskriver grænsefladerne for den elektriske guitar og forstærkeren. Modeldannelsen danner basis for valg af samplingsfrekvensen og indgangs- og udgangsniveauer. 3.1 Guitarmodel Med udgangspunkt i målinger foretaget på laboratorieguitaren opstilles en elektrisk ækvivalent model for denne. Desuden beskrives guitarens transducer, pickup en. For dokumentation af målinger henvises til appendiks A Model af pickup Til at omsætte strengenes mekaniske svingninger til et elektrisk signal anvendes en transducer, der i guitarterminologi benævnes en pickup. Pickup en på laboratorieguitaren anvendes i det følgende som stereotyp til analysen af pickup en, hvorfor single coil pickup en analyseres. Navnet single coil pickup hentyder til, at pickup en har én spole viklet omkring seks magneter. En under hver streng. Da guitarstrengene over magneterne er af et ferromagnetisk materiale, såsom nikkel eller stål, vil svingningerne påvirke den magnetiske flux og dermed inducere en elektrisk spænding, som følge af Faradays lov: ε = N dφ dt (3.1) 15

22 KAPITEL 3. GRÆNSEFLADER hvor N angiver vindingstallet, φ den magnetiske flux og ε den elektriske spænding. Ligning 3.1 udtrykker, at den inducerede spænding er direkte proportional med den tidsmæssige ændring af den magnetiske flux. En streng, der svinger med en given frekvens, vil derfor resultere i en spænding over spolen med samme frekvens og en amplitude, der afhænger af hastigheden, hvormed strengen svinger. En model af en pickup er afbilledet på figur 3.1 L R C Figur 3.1: Model af magnetisk pickup. På figuren udtrykker R den samlede resistans af vindingerne omkring spolen, typisk mellem 5 kω og 10 kω. Kapaciteten C er summen af kapaciteterne i vindinger og kabel, normalt i størrelsesordenen pf. Typiske værdier for spolens selvinduktion er 1-10 H, mens amplituden af spændingssignalet typisk befinder sig mellem 100 mv og 1 V. [The Secrets of Electric Guitar Pickups 24/5-2004]. Udover single coil pickup en findes en række andre pickup-typer, herunder dual coil pickup en, eller humbuckeren. I modsætning til single coil pickup en, der er i højere grad er modtagelig over for udefrakommende magnetiske felter, indeholder humbuckeren to spoler i modfase med omvendt polaritet, hvorved common mode signaler, såsom magnetiske støjkilder, reduceres. For stratocaster-guitarer, som den anvendte laboratorieguitar, er det almindeligt at anvende single coil pickupper, som udmærker sig ved en skarp og klar lydgengivelse Elektrisk model af guitar Målingerne af guitarens udgangsimpedans som funktion af frekvensen er gengivet på figur 3.2. Da anslag af guitarstrengene resulterer i en udgangsspænding over en frekvensafhængig udgangsimpedans, kan Theveninmodellen på figur 3.3 på modstående side ækvivaleres med guitaren. Spændingskilden V s er vist at have en amplitude mellem ±0.6 V. For at undgå overstyring og opnå maksimalt amplitudesving vælges at lave en justerbar indgangsforstærker, der giver en indgangsfølsomhed fra 0.5 V og op. Kendskab til guitarens udgangsimpedans er nødvendig ved dimensionering af effektenhedens indgangsimpedans, som ønskes dimensioneret tilstrækkelig større end guitarens udgangsimpedans, så signalet ind på effektenheden bevares bedst muligt. Udgangsimpedansen har en maksimal værdi på 290 kω. For at undgå stort spændingsfald over udgangsmodstanden vælges, at effektenhedens indgangsimpedans skal være større end 1 MΩ. 16

23 3.2. VALG AF SAMPLINGSFREKVENS Impedans [kω] Frekvens [Hz] Figur 3.2: Guitarens udgangsimpedans som funktion af frekvensen. Guitar + Z out V s Figur 3.3: Theveninækvivalent model af guitar. - I appendiks A.1 på side 90 bestemmes laboratorieguitarens S/N-forhold til 41 db. For ikke at mindske dette forhold betydeligt skal effektenhedens S/N-forhold være større end denne værdi. Figur A.8 på side 97 viser forstærkerens indgangsimpedans som funktion af frekvens. Det ses, at den minimale indgangsimpedans i det hørbare område er 15 kω ved 20 khz. Derfor vælges, at effektenhedens udgangsimpedans skal være mindre end 1 kω. Udgangsspændingen vælges til at ligge i intervallet ±1 V når der er maksimal intern udstyring. 3.2 Valg af samplingsfrekvens Samplingsfrekvensen skal vælges under hensyntagen til to faktorer. Dels skal samplingsfrekvensen være tilstrækkelig høj for at repræsentere det tidskontinuerte signal fyldestgørende i diskret tid, men samtidig sætter en høj samplingsfrekvens strengere timingskrav til den di- 17

24 KAPITEL 3. GRÆNSEFLADER gitale signalprocessering, hvorfor en minimal samplingsfrekvens er ønskelig. Med baggrund i en frekvensanalyse af guitarsignaler er det blevet undersøgt, hvilket frekvensområde guitaren er virksom i. For dokumentation af målinger og resultater henvises til appendiks A.1. Frekvensanalysen viser, at frekvensspektret af guitarsignalerne under ordinært guitarspil ikke indeholder betydelige frekvenskomposanter over 5 khz. Forsøget viser desuden, at det er muligt at fremstille harmoniske overtoner mellem 10 khz og 15 khz, dog er amplituden af disse signaler er negligerbare i forhold til grundtonen og de øvrige harmoniske overtoner. Udfra de udførte målinger vælges samplingsfrekvensen til 16 khz. Dermed opfyldes Nyquists samplingssætning om en samplingsfrekvens, der som minimum er dobbelt så høj som den højeste frekvenskomposant i signalet. Samtidig giver en samplingsfrekvens på 16 khz mulighed for at sample højere ordens harmoniske overtoner med frekvenser op til knap 8 khz, med forbehold for antialiasing-filterets transistionsbånd. 18

25 Kravspecifikation 4 I dette kapitel vil kravene til systemet blive gennemgået. Systembeskrivelse Systemets formål er at tilføje effekter til et rent guitarsignal. Det skal indeholde syv forskellige effekter, der hver især skal kunne vælges/fravælges og indstilles. Disse effekter er wahwah, distortion, tremolo, rumklang, flanger, delay og en equalizer. Effekterne skal opbygges som en serie af blokke, hvor de digitale dog placeres i det samme DSP-system. Eksterne krav I dette afsnit vil systemets eksterne grænseflader blive specificeret. Med eksterne grænseflader menes den indgang, guitaren skal tilsluttes og udgangen, der tilsluttes guitarforstærkeren. Systemets indgang Systemets udgang Systemets S/N-forhold ˆV in = 1 V Z in 1MΩ ˆV out = 1 V Z out 1kΩ > 41 db 19

26 KAPITEL 4. KRAVSPECIFIKATION Interne krav De enkelte delkomponenter i systemet skal designes til at have ens grænseflader. For at undgå signaltab over udgangsmodstanden vælges disse som følger: Komponentens indgang Komponentens udgang ˆV in = 5 V Z in 50kΩ ˆV out = 5 V Z out 5kΩ Generelle parametre Samplefrekvens 16 khz Effektspecifikationer I dette afsnit vil de valgte effekter blive specificeret. For en beskrivelse af de enkelte effekter henvises til kapitel 2. Navn Wah-Wah Implementation Analogt Indstillinger Centerfrekvensen skal kunne varieres mellem 200Hz og 2kHz. Filterets Q-værdi og forholdet mellem båndpas og oprindeligt signal skal kunne varieres. 20

27 Navn Distortion Implementering Analogt Indstillinger En simpel tonekontrol skal være tilgængelig. Det skal være muligt at justere level. Kommentar Da der eksiterer mange forskellige former for distortion skal det tilstræbes at den implementerede effekt rent subjektivt vil blive betegnet som en god lyd. Navn Tremolo Implementation Analogt Indstillinger Frekvensen på den lavfrekvente oscillator skal kunne varieres mellem 0.1 Hz og 10 Hz. Amplituden af den lavfrekvente oscillator skal kunne justeres. Navn Rumklang Implementation Digitalt Indstillinger Effekten skal ikke have nogen indstillinger udover tilog frakobling. Navn Flanger Implementation Digitalt Indstillinger Frekvensen på den lavfrekvente oscillator skal kunne varieres mellem 0.25 Hz og 5 Hz. Intervallet, hvori delayet varieres, skal kunne justeres med udgangspunkt i intervallet fra 1 ms til 10 ms. 21

28 KAPITEL 4. KRAVSPECIFIKATION Navn Delay / Ekko Implementation Digitalt Indstillinger Varigheden af et enkelt ikke-gentagende delay skal kunne indstilles mellem 50 ms og 500 ms. Level på denne gentagelse skal kunne indstilles. Varigheden af et enkelt gentagende delay skal ligeledes kunne indstilles mellem 50 ms og 500 ms. Level på denne gentagelse skal også kunne indstilles. Kommentar Der er tale om to former for delay, et med og et uden gentagelse. Navn Equalizer Implementation Digitalt Indstillinger Effekten skal kunne justere 4 bånd, der hver især skal kunne varieres med ±15 db. De 4 bånd skal være: Hz Hz Hz Hz Brugerflade Her vil systemets brugergrænseflade blive specificeret. Valg af effekter Analoge effekter Digitale effekter Det skal for hver effekt være muligt at aktivere eller deaktivere effekten. For de digitale skal det på et display vises hvilke effekter, der benyttes. De analoge effekter skal indstilles med et potentiometer til hver indstillingsmulighed. Det skal være muligt at vælge hver indstillingsmulighed. Derudover skal der være et display, der viser den valgte indstillingsmulighed og den nuværende værdi, og et jog-hjul til at ændre denne værdi. 22

29 Del II Design Denne del omhandler design af de i kravspecifikationen specificerede effekter, herunder både analoge og digitale realiseringer. 23

30

31 Analoge effekter 5 Kapitlets indhold: 5.1 Ind- og udgangstrin Wahwah Effektens funktionalitet Design af wahwah Test af wahwah Tremolo Effektens funktionalitet Design af multiplikator Design af sinusgenerator Test af tremolo Distortion Effektens funktionalitet Løsningsmodel Design Test af distortion Dette kapitel omhandler design af de analoge guitareffektenheder wahwah, distortion og tremolo samt ind- og udgangstrinnet. De enkelte dele vil blive behandlet seperat i de efterfølgende afsnit. 5.1 Ind- og udgangstrin For at sikre samme indgangsimpedans og udgangsimpedans uafhængig af hvilke effekter, der er slået til, vælges at lave et indgangstrin og et udgangstrin. I indgangstrinnet tilføjes et højpasfilter for at undgå offset. Knækfrekvensen vælges til 50 Hz på baggrund af, at den laveste frekvens en guitar kan generere er 82.4 Hz. I udgangstrinnet tilføjes et lavpasfilter for at fjerne højfrekvent støj genereret internt. Her vælges knækfrekvensen til 10 khz. For altid at opnå det højest mulige S/N-forhold gøres indgangstrinnets forstærkning logaritmisk justerbar i intervallet mellem 0 og 10. Udgangstrinnet dæmper signalet fem gange, hvorved forstærkningen fra indgang til udgang kan varieres mellem 0 og 2. Figur 5.1 viser diagrammet for ind- og udgangstrinnet samt kontakt for til- og frakobling af hver effekt. 25

32 U D G U KAPITEL 5. ANALOGE EFFEKTER Der benyttes fire af sådanne kontakter for at kunne til- og frakoble de tre analoge effekter og det digitale kredsløb. I n p u t 3 2 G N D R 5 1K R 3 9 K 1A 1 C n F G N D R 1 10 K S 1 S 1 Effekt R K G N C p F R K N D 5 6 1B 7 O u t p u t Figur 5.1: Diagram for indgangs- og udgangstrin samt kontaktkredsløb for en enkelt effekt. Der benyttes fire af disse kontaktkredsløb for at kunne til- og frakoble fire effekter. 5.2 Wahwah Dette afsnit omhandler design og implementering af den analoge wahwah-effektenhed. Specifikke udledninger af anvendte formler er vist i appendiks B.1 på side 108, mens et komplet eldiagram er vist i appendiks D på side Effektens funktionalitet Under designfasen af wahwah-enheden tages der udgangspunkt i beskrivelsen af effekten under analysedelen, jf. afsnit Deraf følger, at wahwah-effektenheden opbygges omkring et variabelt båndpasfilter, hvor centerfrekvensen ω c og godhedsfaktoren Q indgår som variable parametre. Endvidere skal udgangen af båndpasfilteret kunne mixes med indgangssignalet således, at wahwah-enhedens effekt kan justeres. Dette betyder, at graden af wahwah kan indstilles af brugeren efter behov. For at overholde kravet om et signalsving på udgangen mellem ± 5 V designes wahwahenheden til at have enhedsforstærkning i pasbåndet. Med udgangspunkt i [GM Arts 25/3-2004] og lyttetest, kan følgende krav til wahwah-enhedens parametre formuleres: 1 Q 11 2π 200Hz ω c 2π 2000Hz Q-værdien (godhedsfaktoren) er afgørende for formen af båndpasfilteret, herunder båndbredden, som kan udtrykkes ved: 26 BW = ω c Q

33 5.2. WAHWAH hvor centerfrekvensen, ω c, er bestemmende for beliggenheden af båndpasfilteret. En høj Q-værdi vil derfor resultere i en spids båndpaskarakteristik, og dermed en skarp wahwaheffekt, hvor kun et mindre frekvensspektrum fremhæves Design af wahwah Det er valgt at dimensionere wahwah-enheden med udgangspunkt i et generelt 2. ordens båndpasfilter. Overføringsfunktionen for et 2. ordens båndpasfilter ses af ligning 5.1. H BP (s) = H o ω c Q s s 2 + ω c Q s + ω c 2 (5.1) hvor H o angiver forstærkningen ved resonansfrekvensen. I dette tilfælde er H o lig 1. En strategi, der foreskriver den elektriske implementering af filteret, kan opnås ved syntese af ligning 5.1. Udledningen heraf kan ses i appendiks B.1 og resultatet er gengivet i ligning 5.2. V out = ω c s ( 1 Q (V in V out ) ω ) c s V out (5.2) hvor V in og V out er ind- og udgangen af filteret. Et blokdiagram, der realiserer båndpasfilteret kan direkte opstilles ud fra ligning 5.2 og er vist på figur 5.2. V in + - 1/ Q + - w c / s V o u t w c / s Figur 5.2: Blokdiagram til realisation af båndpasfilter. For at lette overgangen fra blokdiagrammet i figur 5.2 til den elektriske implementering foretages få regnetekniske modificeringer af figuren således, at strukturen kan realiseres ved hjælp af inverterende operationsforstærkerkoblinger samt en differensforstærker. Resultatet af disse modificeringer ses på figur 5.3. Af figur 5.3 ses, hvordan båndpasfilteret kan implementeres ved at gøre brug af en differensforstærker, en vægtet summationsforstærker i inverterende kobling samt to integratorer. Et kredsløb, der opfylder filterstrukturen fra blokdiagrammet i figur 5.3, er vist på figur 5.4. Differenskoblingen mellem V in og V out dimensioneres til enhedsforstærkning ved at vælge modstandene R 1, R 2, R 3 og R 4 til at have samme modstandsværdi. Af hensyn til kravet om en indgangsimpedans større end 50 kω internt mellem enhederne, vælges værdien af modstandene til 100 kω. 27

34 KAPITEL 5. ANALOGE EFFEKTER V in + - 1/ Q w c / s V o u t - w c / s Figur 5.3: Modificeret blokdiagram til realisation af båndpasfilter. R3 R4 R6 C1 V in R1 R2 15V + -15V R5 15V + -15V R9 R7 C2 15V + -15V Vout 15V + R8-15V Figur 5.4: Eldiagram af båndpasfilter. Den inverterende summationsforstærker skal vægte to signaler i to forskellige forhold; et signal fra differenskoblingen, V di f f, og et fra integratoren i tilbagekoblingen, V int. Situationen er gengivet på figur 5.5. R6 V diff R5 15V V int R V V O Figur 5.5: Inverterende summationsforstærker. Udgangsspændingen, V o, for kredsløbet i figur 5.5 kan opskrives som: ( R6 V o = V di f f + R ) 6 V int R 5 R 9 (5.3) Da V int ønskes vægtet med en faktor 1, skal forholdet mellem R 6 og R 9 være 1. Idet R 6 vælges til 10 kω, bliver R 9 ligeledes 10 kω. Forholdet mellem R 6 og R 5 skal vægtes i forholdet 1 Q, hvorfor R 5 bliver: 28

35 5.2. WAHWAH 1 11 R 6 R 5 1 R 6 R 5 11R 6 10kΩ R 5 110kΩ Modstanden R 5 indsættes derfor som et 100 kω potentiometer i serie med en 10 kω modstand. Af blokdiagrammerne ses, at de to integratorer skal være identiske. Idet R 7 og R 8 benævnes med R og C 1 og C 2 med C, kan centerfrekvensen ω c udtrykkes som 1 RC. Udfra kravet om en centerfrekvens mellem 200 Hz og 2 khz kan R og C dimensioneres. 2π 200Hz 1 RC 2π 2kHz (2π 2kHz C) 1 R (2π 200Hz C) 1 Idet C vælges til en standardværdi på 68 nf findes R til: 1.17kΩ R 11.7kΩ I praksis anvendes et stereopotentiometer på 10 kω i serie med en 1.16 kω modstand. Dette giver en centerfrekvens mellem; 210Hz f c 2.02kHz Som nævnt i afsnit skal udgangen af båndpasfilteret,v out kunne mikses med indgangsignalet, V in. Dette løses ved en variabel spændingsdeling mellem de to signaler ved hjælp af et potentiometer. Ved at udtage det miksede udgangssignal på potentiometerets midterste ben kan udgangsspændingen, V out, opstilles som: V out = V in (1 K) +V out K (5.4) Her angiver K modstandsforholdet til potentiometerets miderste ben. Indsættelsen af potentiometeret påvirker både ind- og udgangsmodstanden af wahwah-effektenheden. Derfor vælges det at føre det miksede udgangssignal, V out, gennem et buffertrin med en lav udgangsimpedans og en høj indgangsimpedans. Udgangstrinnet er vist på figur 5.6. Dette betyder, at indgangsmodstanden afhænger af differensforstærkeren og potentiometeret, der mixer ind- og udgangen. Indgangsmodstanden, R in, af wahwah-enheden kan findes som: R in = 2R 1 R 10 (5.5) 29

36 KAPITEL 5. ANALOGE EFFEKTER V out R10 V in 15V + -15V V' out Figur 5.6: Udgangstrinnet af wahwah-effektenheden. hvor 2R 1 udgør indgangsimpedansen af differensforstærkeren. R in skal i henhold til kravspecifikationen være større end 50 kω, hvorfor følgende ulighed opstilles, som løses med hensyn til R 10 : R in = 2R 1 R 10 > 50kΩ R 10 > 100R 1 kω = 66.7kΩ 2R 1 50 R 10 vælges til 100 kω, hvilket giver en indgangsmodstand på 66.7 kω Test af wahwah Test af wahwah-effektenheden har vist, at centerfrekvensen kan varieres i det ønskede interval mellem 200 Hz og 2 khz, og at Q-værdien er justerbar mellem 1 og 11 i hele frekvensbåndet. For dokumentation af målinger henvises til appendiks A.3 på side Tremolo I dette afsnit beskrives design og implementering af tremolo. Som indledning diskuteres den overordnede virkemåde, hvorefter effekten designes i hardware Effektens funktionalitet Som beskrevet i analysen fungerer tremolo ved, at et lavfrekvent signal multipliceres med guitarsignalet. Figur 2.7 på side 8 viser blokdiagrammet for en tremoloeffekt. For at finde ud af hvilken kurveform det modulerende signal skal have, simuleres en tremoloeffekt i Matlab. Matlab-filen tremolo_effect.m er inkluderet på vedlagte cd, jf. [CD 2004, matlab/tremolo_effect.m]. Der simuleres en tremoloeffekt, hvor der benyttes henholdsvis et sinus-, et trekant- og et firkantsignal. Modulationssignalet gives et offset således, at det kun har een polaritet for at 30

37 5.3. TREMOLO undgå højfrekvent støj som følge af faseskift. Efter lyttetest vurderes, at den bedste effekt opnås ved benyttelse af et sinussignal. Firkantsignalet tilføjer pga. diskontinuitet højfrekvent støj til signalet. Benyttelse af et trekantsignal giver ikke en nær så intens effekt som sinussignalet pga. trekantsignalets konstante hældning. Derfor vælges det at designe en tremolo, der moduleres med et sinussignal, hvilket betyder, at der skal designes en sinusgenerator og en analog multiplikator. Brugeren skal have mulighed for at justere sinussignalets frekvens mellem 0.1 Hz og 10 Hz samt den AC-mæssige amplitude af modulationssignalet. For at imødekomme kravene til grænseflader skal outputsignalet ligge mellem ±5 V ved et input på ±5 V. Dette gør, at sinussignalets maksimale værdi altid skal være den samme uafhængigt af AC-værdien. Sinussignalets spændingsområde vælges til 0-5 V, så multiplikatorens to indgangssignaler har samme størrelse Design af multiplikator Multiplikatoren skal dimensioneres således, at 5 V på de to indgange giver 5 V på udgangen. Det vælges at benyttes den integrerede kreds XR-2208 fra Exar. Dette er en såkaldt firekvadrant multiplikator, med hvilket der menes, at den er i stand til at multiplicere to signaler, der begge kan have begge polariteter. Dette er dog ikke nødvendigt, idet det modulerende sinussignal kun har én polaritet. V C C R 1 R K R K - V C C 22K R 6 S i n u s G N D S i g n a l I n d V x C O M V y X O u t 2 O u t R K R K 30 1K U R K 12 C 1 22p F 11 S i g n a l Ud R K U1 V C C R K R 2 22K G N D R K - V C C Figur 5.7: Diagram for multiplikatorkredsløb baseret på den integrerede kreds Exar XR Signal Ind er guitarsignalet, mens Signal Ud er outputsignalet. Figur 5.7 viser, hvorledes kredsen kobles op. Opkoblingen tager udgangspunkt i figur 14 vist i databladet for kredsen [CD 2004, datablade/xr2208.pdf]. Operationsforstærkeren sidder i samme kreds som multiplikatoren og opererer her i en differenskobling, idet multiplika- 31

38 KAPITEL 5. ANALOGE EFFEKTER torens output v di f f findes differentielt mellem ben 1 og 2. Modstandene R 5 og R 10 definerer multiplikatorens forstærkning. Spændingen v di f f er givet ved følgende ligning, hvor v X og v Y er de to inputspændinger: v di f f = R 5 R 10 v X v Y (5.6) For at opnå et output i forhold til stel benyttes en differensforstærker. I/O-relationen for en differensforstærkeren er givet ved: v O = R 6 v R6 R 7 +R o2 R 7 + R o2 1 + R 8+R o1 v 2 (5.7) R 9 +R 27 R o1 og R o2 er udgangsmodstanden for de to udgange, hvilken findes i datablad til 6 kω. Det vælges at følge databladet og give hvert input en forstærkning på ti gange, hvilket opnås med de viste modstandsværdier. Der benyttes en variabel modstand, R 27, for at kunne gøre de to forstærkninger lige store og herved justere udgangens offset. Når inputspændingerne v X og v Y begge er lig 5 V, skal v O være lig 5 V. Dette betyder, at v di f f skal være 0.5 V, hvorved R 5 og R 10 kan bestemmes vha. ligning 5.8: R 5 R 10 = v X v Y v di f f = Ω 2 (5.8) For at opnå dette forhold vælges at sætte R 5 til 40 kω og R 10 til kω. De to potmetre R 1 og R 2 benyttes til at justere faktorernes offsetværdi, så output er nul, såfremt en indgang er lig nul. Der er byttet om på ben 1 og 2 i forhold til databladet for at kompensere for, at det modulerende sinussignal er negativt. Kondensatoren C 1 mellem udgangen og ben 12 sikrer, at den tilbagekoblede operationsforstærker ikke bliver ustabil, ved at tilføje overføringsfunktionen for åbensløjfen en tidlig pol, der sikrer, at forstærkningen er mindre end 1, når der er en fase på Design af sinusgenerator Guitarsignalet sættes på multiplikatorens ene indgang, mens et lavfrekvent sinussignal sættes på den anden. Det ønskes at kunne justere frekvensen og amplituden af sinussignalet. Frekvensen skal kunne justeres mellem 0.1 Hz og 10 Hz. Den maksimale værdi skal altid være 5 V, og det ønskes at kunne justere amplituden således, at den minimale værdi er 0 V. Dette betyder, at AC-værdiens, v AC, peakspænding justeres i intervallet V. For at have en maksimal spænding på 5 V skal offset følge ligningen: V O f f set = V max V AC,peak = 5 V V AC,peak (5.9) 32

39 5.3. TREMOLO Offset kommer herved til at ligge i intervallet V. Dette offset skal følge amplituden. I det næstfølgende afsnit diskuteres genereringen af et sinussignal uden offset for derefter at tilføje det ønskede offset. Sinusgenerering Det ønskes at generere et sinussignal, hvor frekvensen kan justeres ved kun at ændre een modstand. Herved kan guitaristen ændre frekvens vha. eet monopotentiometer. For at generere et sinussignal uden harmonisk forvrængning er det nødvendigt at lave et system med poler på den imaginære akse. For at holde polerne her er det nødvendigt at konstruere et automatisk gain-system for at sikre en konstant amplitude af sinussignalet. Matlab-simuleringen af tremoloeffekten har vist, at der ikke er stor lydmæssig forskel på modulation med en trekant og en sinus. På den baggrund konkluderes, at det ikke er nødvendigt at benytte et sinussignal med minimal harmonisk forvrængning. Desuden skal sinusgeneratoren kunne generere et lavfrekvent signal på 0.1 Hz, hvilket er svært at generere med en svingningskreds. En anden mulighed er at generere et sinussignal ud fra et trekantsignal. Dette kan gøres ved enten at bortfiltrere alle frekvenser over grundfrekvensen eller ved at sende trekanten gennem et system med et sinussignal som input-outputrelation (se figur 5.8). Fordelen ved denne metode fremfor filtermetoden er, at den er uafhængig af v omax v o v i v imax Figur 5.8: Sendes et trekantsignal med en maksimal amplitude på v imax ind i denne input-outputrelation bliver udgangssignalet en sinus. frekvensen, hvorimod filtermetoden er uafhængig af trekantsignalets amplitude. Af denne grund vælges at lave et system, der har et sinussignal som overføringsfunktion. Dette system kan tilnærmes vha. et netværk af zenerdioder og modstande. 33

40 KAPITEL 5. ANALOGE EFFEKTER Generering af trekantsignal Først genereres et trekantsignal. Det vælges at give trekantsignalet en peak-værdi på 10 V. Spændingen vælges så høj for bedre at kunne finde zenerdioder med passende værdier. Trekantsignalet genereres ved at integrere output fra en inverterende hysterese og sende dette signal tilbage ind i hysteresen. Da en inverterende integrator er lettest at implementere, benyttes en ikke-inverterende hysterese. Figur 5.9 viser sammenhæng mellem input og output for hysteresen. Trekantgeneratoren realiseres som vist på figur Idet det antages, v o L + V TL V TH v i L Figur 5.9: Ikke-inverterende hysterese. Udgangsspændingen v o skifter til L +, når indgangsspændingen v i overstiger V TH. v i skal være mindre end V TL, før v o skifter til L. C 2 v ii R 28 1M R K 2 3 G N D U 1A 1uF v oi 1 v i R K t r e k a n t 5 6 G N D v + U 1B R K 7 R K v o D D G N D Figur 5.10: Realisation af en trekantgenerator. at der ikke løber strøm ind i operationsforstærkeren, bliver spændingen v + på den ikkeinverterende indgang: v + = v o + v i v o R 15 + R 12 R 12 (5.10) Da v + sammenlignes med 0 V, kan den værdi af v i, hvor hysteresen skifter, bestemmes ved at sætte v + lig 0: 34 0 = v o + v i v o R 15 + R 12 R 12 v i = v o R 15 R 12 (5.11)

41 5.3. TREMOLO Herved kan V T L og V TH bestemmes som: V T L = L + R 15 R 12 V TH = L R 15 R 12 (5.12) Outputtet fra hysteresen vil altid være enten L + eller L. Herved vil udgangen af integratoren altid have konstant hældning indtil spændingen når V T L eller V T H. Ved denne spænding vil udgangen skifte, og hældningen skifter fortegn. For at få et trekantsignal på udgangen af integratoren skal firkantsignalet på indgangen have en duty cycle på 50 %. Dette gør sig gældende når L + = L. Denne betingelse opfyldes ved at fastsætte L + og L vha. zenerdioderne D 1 og D 2. Strømmen begrænses af modstanden R 16, der vælges til 10 kω. Idet operationsforstærkeren ikke kan skifte fra L + til L momentant, vælges en zenerdiode med en zenerspænding på 3.9 V. På grund af mangel på datablad måles de resulterende spændinger L + og L til 3.9 V. For at opnå et trekantsignal med en peakværdi på 10 V skal V TL = V T H = 10 V. Herved kan forholdet mellem R 15 og R 12 findes vha. ligning 5.12: V TH = L R 15 R V = 3.9 V R 15 R 12 R 15 = 2.56R 12 (5.13) R 12 vælges til 100 kω og R 15 bliver herved 256 kω, som vælges til en standardværdi på 255 kω. Denne konfiguration sikrer, at trekantsignalet får den korrekte amplitude. Næste skridt er at tilpasse frekvensen. Dette sker ved dimensionering af integratoren. Integratoren har input-outputrelationen: Z 1 v oi = (R 14 + R 28 )C 2 v ii (t)dt (5.14) hvor v oi er udgangsspændingen og v ii er indgangsspændingen. Grundet hysteresen kan v ii kun antage værdierne L + og L +.Ud fra denne ligning ses, at trekantsignalets positive hældning dv ii dt er givet ved: dv ii dt = L + (R 14 + R 28 )C 2 (5.15) Idet L + = L er den negative hældning numerisk lige stor som den positive. Hældningen af et trekantsignal er afhængig af frekvens ( f ) og amplitude. Signalet ændrer sig på en halv periode fra negativt maksimum V T H til positivt maksimum V T H med konstant hældning. Herved bliver hældningen: dv t dt = 2V T H 1 2 f = 4V T H f (5.16) 35

42 KAPITEL 5. ANALOGE EFFEKTER Nu isoleres f, og ligning 5.15 indsættes: f = dv t dt L + = (5.17) 4V T H 4V T H (R 14 + R 28 )C 2 Det ses, at trekantsignalets frekvens kan varieres vha. (R 14 + R 28 ). For at kunne justere frekvensen mellem 0.1 Hz og 10 Hz benyttes en variabel modstand R 28 i serie med en fast modstand R 14. Herved kan to ligninger opstilles for henholdsvis største og mindste frekvens: L + R 14 C 2 = = 9.75 ms 4V T H f max (5.18) L + (R 14 + R 28 )C 2 = = s 4V T H f min (5.19) R 28 vælges til 1 MΩ. Der benyttes et logaritmisk potentiometer. Nu kan C 2 bestemmes: R 14 C 2 + R 28 C 2 = 9.75 ms + 1 MΩ C 2 = s C 2 = µf (5.20) Der vælges en kondensator på 1 µf. R 14 beregnes vha. ligning 5.18 til 9.75 kω. Der vælges en modstand på 10 kω. Dette afslutter designfasen af en trekantgenerator med en peak-værdi på 10 V og en justerbar frekvens mellem 0.1 Hz og 10 Hz. I det følgende designes et kredsløb, der kan lave trekantsignalet til et tilnærmet sinussignal. Design af sinusshaper Sinusshaperen fungerer således, at forstærkningen fra input til output ændres alt efter, hvor stort inputsignalet er. Dette er realiseret vha. zenerdioder og modstande. Figur 5.11(a) viser et kredsløb, der giver et knæk, mens figur 5.11(b) viser kredsløbets input/output-karakteristik. Når indgangsspændingen er lille, vil zenerdioden være afbrudt, og udgangsspændingens hældning bestemmes af spændingsdelingen mellem R i og R a. Når indgangsspændingen når v k, vil dioden lede strøm, og nu bestemmes hældningen af spændingsdelingen mellem R i og parallelforbindelsen af R a og R b. Den samlede overføringsfunktion bliver på denne måde en stykvis lineær funktion. For at kunne lave et trekantsignal til en sinus skal overføringsfunktion være et halvt sinussignal som vist på figur 5.8. Sinussignalet er givet ved: v s = v sp sin(2π ft) (5.21) 36

43 5.3. TREMOLO v o v i R i v o l 2 R a l 1 G N D R b v i G N D v k (a) (b) Figur 5.11: Kredsløb der giver et knæk og dettes input-outputrelation. Den maksimale hældning er 2π f v sp. Dette skal være trekantsignalets hældning. Da trekantsignalet er voksende fra t = 0 til t = 1 4 T = 1 4 f, bliver trekantsignalets peak-værdi v t p: 1 v t p = 2π f v sp 4 f = v π sp 2 (5.22) Spændingen v t p blev tidligere bestemt til at være 10 V, hvorfor v sp bliver: 2 v sp = v t p = 6.36 V (5.23) π Nu kan der opstilles en ligning for den ønskede input-outputrelation. Input-outputrelationen skal nå maksimalværdien v o = v sp når v i = v t p : v o = v sp sin(kv i ) 1 = sin(kv t p ) k = π 2v t p = 1 v sp (5.24) Herved bliver den ønskede input-outputrelation: v o = v sp sin( 1 v sp v i ) (5.25) 37

44 KAPITEL 5. ANALOGE EFFEKTER Den afledede af input-outputrelationen er: dv o = cos( 1 v i ) (5.26) dv i v sp For at få mindst hældningsafvigelse, kvantiseres ligning Skiftene findes ved at isolere v i : v i = v sp arccos( dv o dv i ) (5.27) Skiftene forefindes ved hældningerne dv o 2n + p 1 n, p = 0,1,...,n. Da zenerdioderne begynder at lede strøm, idet v o når zenerspændingen, findes størrelsen af zenerdioderne ved at indsætte v i i ligning dv i = 1 Det vælges at kvantisere hældningen i fem niveauer, hvilket giver fire knæk. I matlabprogrammet tremolo_niveauer.m i appendiks C.8 beregnes knækspændingerne for v o til at være henholdsvis 3.08 V, 4.97 V, 5.90 V og 6.32 V. Det er nødvendigt at benytte zenerdioder med skarpe karakteristikker for at få den korrekte funktion. Af denne grund benyttes dioder af typen BZX84 med en ledespænding på 0.7 V. Disse vælges med zenerspændingerne 2.4 V, 4.3 V, 5.1 V og 5.6 V. Da disse værdier ikke er præcise, udregnes den gennemsnitlige hældning i de benyttede intervaller. Figur 5.12 angiver hældningerne i de forskellige spændingsintervaller for v o. Figur 5.13 viser den resulterende overføringsfunktion. Den stiblede linie viser den ideelle overføringsfunktion. v o v o [V] Hældning v i Figur 5.12: Hældning i de forskellige spændingsintervaller. v o er udgangsspændingen. Figur 5.13: Resulterende overføringsfunktion med hældninger som specificeret i tabel Den stiblede linie er den ideelle overføringsfunktion. Nu kan modstandenes størrelser bestemmes vha. følgende ligninger: 38

45 5.3. TREMOLO = R 23 R 23 + R = R 23 R 24 R 23 R 24 + R = R 23 R 24 R 25 R 23 R 24 R 25 + R = R 23 R 24 R 25 R 26 R 23 R 24 R 25 R 26 + R 20 (5.28) R 20 vælges til 10 kω. Beregningerne udføres vha. Matlab-programmet tremolo_niveauer.m som er vist i appendiks C.8. Figur 5.14 viser diagrammet for sinusshaperen. t r e k a n t R K R K D D D D U 1C 8 s i n u s G N D D D D D R K R K R K G N D G N D G N D G N D Figur 5.14: Eldiagram for den benyttede sinusshaper. Ved et trekantsignal med en peak-værdi på 10 V som input bliver output et tilnærmet sinussignal. Når et trekantsignal med en peak-værdi på 10 V påtrykkes indgangen, vil der på udgangen være et sinussignal med en peak-værdi på 6.3 V, der er fastsat af D 6 og D 10. Der benyttes en buffer i udgangen for at give en lavere udgangsimpedans. Offset Dette afsnit beskriver, hvorledes sinussignalet offsetforskydes, så maksimalspændingen altid er 5 V. Dette gøres ved at addere sinussignalet til en DC-spænding. Kredsløbet er vist på figur V C C v s i n G N D R K v of f R K 10 0 K R 3 v m R 18 1M R 22 1M G N D R K U 1D 14 v o Figur 5.15: Diagram for kredsløbet, der justerer offset og amplitude. 39

46 KAPITEL 5. ANALOGE EFFEKTER Spændingen v m er givet ved: v m = (1 K)V o f f + Kv sin (5.29) hvor K angiver positionen af potentiometeret R 3 som et tal mellem 0 og 1. Det ses, at ACværdien er givet som: v AC = Kv sin (5.30) Den ønskede outputspænding fra sinusgeneratoren er herved givet som: v out = V O f f set + v AC = V max KV sin,peak + Kv sin (5.31) V O f f set findes i ligning 5.9. Kv AC er det endelige sinussignal, der skal kunne varieres mellem 0 V og 2.5 V ved at justere K. Idet V max er lig 5 V og V sin,peak er lig 2.5 V, kan ligningen omskrives til: v out = V AC,peak (2 K) + Kv AC (5.32) Ved sammenligning af ligning 5.32 og 5.29 ses, at det ønskede signal kan opnås ved at summere v m og V o f f som vist i diagrammet på figur Kredsløbet har en input-outputrelation givet ved: v o = 1 ( ( 1 v o f f + (1 K) 1 ) ) 1 + v sin K R 19 R 18 R 22 R 22 (5.33) For at kunne justere offset mellem 2.5 V og 5 V skal R 18 og R 22 være lige store og v o f f skal være lig peak-værdien af v sin = 6.3 V. Ved beregning af overføringsfunktion er det forudsat, at strømmen gennem R 3 er meget større end strømmen gennem R 22, samt at udgangene der genererer v sin og v o f f ikke har nogen udgangsmodstand. På baggrund af disse overvejelser vælges modstandene som vist i diagrammet. R 19 kan nu beregnes vha. ligning 5.33 ved at sætte K lig nul. R 18 og R 22 vælges til 1 MΩ: R 19 = v o v o f f R 18 R 22 R 18 + R 22 = 403 kω (5.34) Dette afslutter design og konstruktion af effekten tremolo. Næste afsnit omhandler test af effekten. 40

47 5.4. DISTORTION Test af tremolo I bilag A.4 på side 100 findes testdokumentation for tremoloeffekten. Testen viser, at effekten har den forventede effekt. Figur 5.16 viser output fra tremoloeffekten, når input er et sinussignal med en frekvens på 100 Hz og en peak-værdi på 5 V Spænding [V] Tid [ms] Figur 5.16: Output fra tremoloeffekt ved et sinussignal som input. Af figuren ses, at amplituden varieres med et sinussignal, samt at output holder sig i intervallet ±5 V. Det konkluderes, at tremoloeffekten fungerer som forventet. 5.4 Distortion I dette afsnit dokumenteres design og test af distortion. Da overgangen fra blokdiagram til design har været præget af mange forudgående forsøg, er afsnittet opbygget som en dokumentation frem for et design Effektens funktionalitet Effektenheden skal indeholde distortion, som ikke har en fast definition, idet denne kan opstå og lyde på mange forskellige måder. Der er sat det mål, at effekten skal tilføre signalet 2. harmoniske komposanter for at opnå en røreffekt. Da det er upraktisk at implementere et rørelement til dette, er en del forskellige kredsløb simuleret og testet for at finde den løsning, der efter vores opfattelse er bedst. Deriblandt kan nævnes kredsløb baseret på henholdsvis et BJT differensforstærkertrin og et FET-trin, som begge viste sig at give et utilfredsstillende 41

48 KAPITEL 5. ANALOGE EFFEKTER resultat. Disse tests er blevet brugt til at retningsbestemme designet, der dokumenteres i det følgende Løsningsmodel Den valgte løsning ses af figur Det ses, at effekten består af tre trin, hvor hvert trin har en variabel parameter, således effekterne kan tilpasses. Første trin er et asymmetrisk trin, der tilfører signalet de ønskede 2. harmoniske. Ved at justere en variabel forstærkning før trinnet kan graden af asymmetri tilpasses. For at signalets amplitude ikke ændres fra indgang til udgang, dæmpes signalet tilsvarende efter trinnet. I næste trin opstår distortion-effekten ved at klippe signalet vha. dioder. Tilsvarende for dette trin kan graden af distortion varieres ved at ændre en variabel forstærkning før trinnet. Diodeklipningen gør formen af signalet mere eller mindre firkantet, hvorved signalet tilføres en række tredje harmoniske. Jo skarpere klipningen er, des højere harmoniske tilføres. Sidste trin er en tonekontrol, der således gør det muligt at justere gengivelsen af disse harmoniske. Med disse tre variable parametre er distortion-effekten alsidig og kan således tilpasses forskellig brug. Endvidere skal det være muligt at justere signalets amplitude efter effekten. Asymmetrisk trin Diodeklipper Simpel tonekontrol Figur 5.17: Blokdiagram over distortion-effekten Design I dette afsnit designes hvert enkelt trin af distortion-effekten. Asymmetrisk trin Den centrale del af det asymmetriske trin er dioden D1 samt modstanden R 5 på figur 5.18, der gør, at spændingen i punktet A er begrænset til at være mindre end diodespændingen. Den negative del af signalet begrænses herved til 0.3 V. R 5 virker som strømbegrænser. For at gøre det muligt at sænke tærsklen på 0.3 V, forstærkes signalet op med operationsforstærkeren U1A. Da det ønskes, at signalets amplitude skal bibeholdes, skal signalets dæmpes tilsvarende efter dioden. For at muliggøre dette vælges forstærkningen styret vha. af en transistor, således at man med et styresignal samtidigt kan styre en dæmpning med en transistor efter dioden. Dette er valgt implementeret som vist på figur En FET-transistor 42

49 5.4. DISTORTION virker som en spændingsstyret modstand, når spændingen mellem drain og source er indenfor trioderegionen. Modstanden gennem transistoren betegnes R DS og bestemmes ved nedenstående omskrivninger af udtrykkene for i D og r o [Sedra Smith 1998, s. 373]. [ i D = K (v GS V p ) v DS 1 ] [ ] 1 id 2 v2 DS r o v DS V GS =konst 1 r o = K (v GS V p v DS ) 1 K = r o (v GS V p v DS ) = 1 VDS =V GS =0 r o V p R DS = v DS r o V p = (5.35) i D (V p v DS ) v GS hvor V p er pinch off-spændingen, i D er drain-strømmen, K er fysiske konstanter og r o er transistorens udgangsmodstand. Denne sammenhæng er ulineær og kan lineariseres ved at sætte ligning 5.36 ind i ligning 5.35, hvorved udtrykket i ligning 5.37 opstår, hvor V x er styresignalet. v GS = V x v DS (5.36) R DS = r o V p (V p V x ) (5.37) Ligning 5.36 realiseres i praksis ved hhv. R 3, R 4, R 9 og R 10, der alle er valgt til 100 kω, hvorved deres modstand ikke har betydelig indvirken på R DS (se figur 5.18). Kondensatorerne C 2 og C 3 bevirker, at signalet ikke får et offset fra styrespændingen. Størrelserne af disse udregnes således, at kondensatorerne leder, og V DS halveres i hele spektret. Knækfrekvensen f 0 er valgt en dekade under den laveste frekvens i guitarsignalet ( f 0 = 8 Hz). C 2 = C 3 = 1 2π f 0 R = 1 2π 8Hz 200kΩ 100nF Transistoren Q 1 sidder i tilbagekoblingen på U1A og styrer forstærkningen, mens Q 2 og R8 udgør en spændingsdeling, der dæmper signalet. De valgte transistorer har en minimumsmodstand for V GS =0 V på ca. 200 Ω, mens de ved 3.5 V har en modstand på ca. 2.8 kω. Disse værdier er fundet ved simulering. For at finde det område hvor forstærkningen skal kunne varieres, udføres en lyttetest. Forstærkningen har vist sig anvendelig i intervallet fra 2 til 14 gange, og R 2 og R 7 kan således beregnes til: R = R 2 = R 7 A V = R R = A V R DS,MAX 2.8kΩ R DS,MAX (5.38) 43

50 KAPITEL 5. ANALOGE EFFEKTER Herved kan forstærkningen varieres i det ønskede interval. Modstanden R 8, der indgår i spændingsdelingen, skal udregnes så dæmpningen af signalet modsvarer forstærkningen. 1 + R2 R DS = R DS + R 8 R DS R 8 = 2.8kΩ (5.39) Til at styre transistorerne anvendes et potentiometer på 10 kω med en seriemodstand til forsyningen, som det ses af diagrammet. Modstanden R 11 er udregnet, så potentiometeret kan variere spændingen i punktet B i intervallet fra 0 V til 3.5 V: V x,max = V + VR1 R 11 +VR1 R 11 = V R1 V + VR1 (5.40) V x,max 10kΩ 15V = 10kΩ 33kΩ (5.41) 3.5V C1 47nF R1 423k Q1 2N U1A TL R2 2.8k C2 100n 15 R5 2.2k D1 BAT85 R4 100k 100k R3 R11 33k A B 15 + U1B R7 R6 100k -15 1k R10 R9 100k 100k R8 2.8k 100n C3 Q2 2N5460 VR1 10k 50% Figur 5.18: Asymmetrisk klipning. Diodeklipning Der ligger mange forsøg forud for designet af blokken distortion, da der som nævnt er mange løsninger, og da kriteriet for succes bestemmes af lytterens opfattelse af en god distortion. Til trods for, at mere sofistikerede kredsløb er blevet testet, er gruppens favorit en simpel diodeklipper, som ses på figur Idéen er, at de to dioder D 2 og D 3 klipper signalet, når dets amplitude overstiger ca. 0.6 V. Ved at justere forstærkningen på U1C kan amplituden, hvor signalet klippes, ændres. Graden af distortion bliver således styret af forstærkningen. Som udgangspunkt for bestemmelsen af forstærkningen er en kobling med variabel forstærkning fra 2 til 1000 blevet afprøvet i laboratoriet. Derudfra er det valgt, at forstærkning skal kunne varieres i intervallet fra 5 til 150 gange. De valgte modstandsværdier til denne forstærkning ses på diagrammet og verificeres i det følgende. 44

51 5.4. DISTORTION A V = R13 + R14 V R2 + 1 R12 = 10kΩ + 1MΩ [0;470]kΩ kΩ (5.42) = [5.5; 150] V/V (5.43) Det ses, at forstærkning med tilnærmelse kan varieres i det ønskede interval U1C R15 2.2k 1Meg -15 R13 10k R14 D2 D3 VR2 R12 2.2k 470k Figur 5.19: Diagram over diodeklipning. Tonekontrol Det sidste krav til distortion-effekten er en simpel tonekontrol. Tonekontrollen skal gøre det muligt at justere fremhævningen af enten bas eller diskant vha. et enkelt potentiometer. Den simpleste implementering sker vha. et høj- og et lavpasfilter samt en mikser. Det skal således være muligt med mikseren at justere, hvorvidt tonekontrollen fungerer som laveller højpasfilter. På figur 5.20 ses diagrammet for den valgte implementering af kredsløbet. Det ses, at tonekontrollen består af to filtre samt en ikke-inverterende forstærker. Potentiometeret udgør en spændingsdeling mellem de to filtres udgange. Knækfrekvensen f 0 er udfra eksperimenter valgt til 340 Hz og kondensatorer og modstande er valgt til: C 4 = C 5 = 4.7nF (5.44) R 16 = R 17 = 1 100kΩ 2πC 4 f 0 (5.45) 45

52 KAPITEL 5. ANALOGE EFFEKTER 15 + U1D C4 4.7n R16 100k VR3 200k C5 4.7n R17 100k -15 R19 1k R18 VR4 100k 47k Figur 5.20: Diagram over tonekontrol. Når potentiometeret stilles i midten, mikses høj- og lavpas lige meget, hvorved filteret får en flad karakteristik. Potentiometeret deler herved signalet og der bliver en dæmpning på 6 db. På figur 5.21 ses frekvensresponsen for tonekontrollen ved forskellige indstillinger. Da filterkoblingen har en stor udgangsimpedans, der samtidig er afhængig af indstillingen, anvendes operationsforstærkeren U1D som buffer. Efter bufferen anvendes endnu et potentiometer til level-kontrol. 0 low high 3 mid low mid high Forstærkning [db] 6 9 middle k 20k Frekvens [Hz] Figur 5.21: Frekvenskarakteristik for tonekontrollen ved forskellige indstillinger. 46

53 5.4. DISTORTION Test af distortion Der er foretaget tre test af distortion-enheden (se målejournal i appendiks A.5). Den første baserer sig på det asymmetriske trin og har til formål at verificere, om de to FET-transistorer justerer amplituden således, at signalet ikke er forstærket efter trinet. Den anden test baserer sig en på subjektiv lyttetest med det formål at vurdere, om distortion-enheden lever op til gruppens kriterier for god lyd. Den sidste test skal afgøre, hvorvidt effekten lever op til kravspecifikationens krav til S/N-forhold. Testen af det asymmetriske trin viste mindre afvigelser af enhedsforstærkning, når trinnets potentiometer drejes mod maksimum. Denne afvigelse skyldes sandsynligvis komponenttolerancer dels i FET-transistorerne og dels i modstande. Afvigelsen anses dog for ubetydelig, da den procentvise afvigelse er under 2 %. Lyttetesten gav gode resultater og lyden er fundet tilfredsstillende. På 5.22 ses et eksempel på formen af et sinussignal efter enheden Amplitude [mv] Tid [ms] Figur 5.22: Eksempel på distortion med indstillingerne: asymmetri 0%, distortion 100%, tone 80% og level 100% S/N-forholdet for effekten er som forventet lavt, idet kredsløbet indebærer en stor forstærkning. S/N-forholdet er målt til 51 db, hvilket accepteres, idet guitarens S/N-forhold på 41 db tages i betragtning. 47

54 DSP-systemet 6 Kapitlets indhold: 6.1 DSP-system A/D- og D/A-konverter CS4218 Codec Test af konvertermodul Adressering Hukommelsesenheder Adressedekodning Brugergrænseflade Knapper Jog-hjul Display I dette kapitel vil designet af DSP-systemet til brug for de digitale effekter blive gennemgået. 6.1 DSP-system DSP-systemet er bygget op omkring en TMS320C26 digital signalprocessor fra Texas Instruments. Denne har været udgangspunktet i kurset Realisation af signalbehandlingssystemer, hvorfor denne processor er valgt til systemet. Processoren bygger på en Harvard-arkitektur med seperat lager og databus til både program og data. Figur 6.2 viser processorens interne arkitektur. Eksternt er der dog kun én kombineret bus til program, data og I/O. Bussens anvendelse kan styres vha. kontrolsignalerne PS, DS og IS (hhv. program-, data- og I/O-strobe). Både data- og programbus er 16 bit bred, ligesom begge adressebusser er 16 bit brede. Adresserummet muliggør således 64 K words datahukommelse samt 64 K words programhukommelse. For I/O kan der dog kun adresseres 16 words (adr. 0h-Fh). Processoren har endvidere en 2 16 bit hardware-multiplier og en 32 bit akkumulator, og dens data path indeholder en totrins pipeline, som er transparant i programmeringsøjemed. Til kommunikation med f.eks. en A/D-konverter har processoren en synkron seriel port, der kan sende/modtage data i pakker af enten 8 eller 16 bit. 48

55 6.1. DSP-SYSTEM Som udviklingsplatform anvendes en debugger/monitor udviklet af Sofus Birkedal Nielsen fra Afdeling for Akustik på AAU. Til denne hører en ROM med selve debugger/monitorprogrammet samt en interfacekreds til kommunikation med en pc over en standard RS-232C forbindelse. Blokdiagram over DSP-systemet ses på figur Adressebus Databus 16 RS-232C Interface D/M Interface DSP D/M EPROM RAM Display / knapper SP 232A IDM3202X -V S BN / AAU TMS320C26 D/M3202X -V (4 K words) SBN / AAU CY7C199 (3 2 K words) HD44780 CS ROM CS RAM CS DISP CS INP Codec CS4218 Serielbus Adressebus 5 Adresse - dekoder 22CV10 Figur 6.1: Blokdiagram over DSP-system. I de følgende afsnit behandles blokkene codec, adressedekoder (herunder memory map) og display/knapper (herunder brugergrænseflade). 49

56 KAPITEL 6. DSP-SYSTEMET SYNC IS DS PS R/W STRB READY BR XF HOLD HOLDA MSC BIO RS IACK MP/MC INT(2-0) A15-A0 RBIT D15-D MUX MUX Controller X1 X2/CLKIN CLKOUT1 CLKOUT2 MCS(16) Address Program ROM/ EPROM ( ) Instruction PFC(16) MUX 16 PC(16) (8 x 16) Stack 16 Program Bus QIR(16) IR(16) STO(16) ST1(16) RPTC(8) IFR(6) 16 8 RSR(16) XSR(16) 16 DRR(16) 16 DXR(16) 16 TIM(16) 16 PRD(16) 6 IMR(6) 8 GREG(8) 16 DR CLKR FSR DX CLKX FSX Data Bus Program Bus 3 ARP(3) 3 ARB(3) AR0(16) AR1(16) AR2(16) AR3(16) AR4(16) AR5(16) AR6(16) AR7(16) ARAU(16) DP(9) MUX LSB From IR Shifter(0-16) TR(16) Multiplier PR(32) 32 Shifter( 6, 0, 1, 4) MUX MUX MUX 16 MUX ALU(32) Block B2 (32 16) Data RAM Block B1 (256 16) 16 Data Bus DATA/PROG RAM (256 16) Block B0 MUX 16 ACCH(16) Shifter(0-7) C ACCL(16) Figur 6.2: Oversigt over den interne arkitektur i TMS320C26. Figuren stammer fra [Texas Instruments 1993] 50

57 6.2. A/D- OG D/A-KONVERTER 6.2 A/D- og D/A-konverter Der skal samples med en samplefrekvens på 16 khz og en opløsning på 16 bit (jf. kravspecifikationen). I det følgende beskrives den valgte konverter CS4218 Codec Det er valgt at benytte et såkaldt stereo codec (tokanals A/D- og D/A-konverter i én integreret kreds) af typen CS4218. Dette er en sigma-delta konverter, som anvender 64 gange oversampling, og kan operere i flere forskellige modes (jf. datablad [Crystal 1996]). Ved anvendelse af serial mode 4 (SM4) er konverteren kompatibel med det serielle format, som anvendes i forbindelse med den serielle port på TMS320C26 eren. DSP ens format bit (FO) sættes til 0, hvorved data transmitteres i 16 bit ad gangen. Endvidere sættes Frame Sync Mode (FSM) til 1 og Transmit mode (TXM) til 0, således at eksternt frame syncronization signal er påkrævet. Herved kan timing og samplefrekvens styres af konverteren, idet konverteren genererer seriel clock samt frame syncronization signal. Dette kan kombineres med anvendelse af TMS320C26 s Receive Interrupt (RINT) og Transmit Interrupt (XINT), der herved signalerer hhv., at data er modtaget og data er afsendt. Det skal i den forbindelse nævnes, at receive interrupt har højere prioritet end transmit interrupt. Når frame syncronization anvendes, påbegyndes seriel I/O ved nedadgående transition på DSP-benene FSX og FSR. Selv om konverteren sender 2 16 bit (venstre og højre kanal), vil DSP en kun modtage de første 16 bit, ligesom processoren kun sender 16 bit tilbage. Konverteren har endvidere indbygget digitalt antialiaseringsfilter, og der er således kun behov for et simpelt passivt førsteordens filter på analog ind- og udgang. For at opnå et rimeligt S/N-forhold skal konverteren og tilhørende komponenter placeres omhyggeligt, for herved såvidt muligt at minimere elektromagnetisk interferens. Endvidere skal analog og digital stel adskilles og kun forbindes ved konverterens DGND og AGND. Eldiagram over konvertermodulet findes i appendiks D.7 på side 170. Filtre i ind- og udgang Filtrene er opbygget efter databladets anbefaling, men dog med nogle ændrede komponentværdier for at tilpasse filteret til den anvendte samplingsfrekvens. Filtrene er båndpasfiltre, hvor den øvre knækfrekvens er valgt til 8 khz, mens den nedre knækfrekvens blot skal ligge under ca. 60 Hz. Resultat af filtersimulering, foretaget vha. Spice, ses på figur 6.3. (udgangsfiltret er simuleret med konverterens udgangsmodstand sat til 600 Ω og belastningen sat til 500 kω). Da konverteren anvender 64 gange oversampling, er den aktuelle samplingsfrekvens ( f s) 1024 khz. Filteret dæmper således 42 db ved f s, idet der er syv oktaver á 6 db fra 8 khz til 1024 khz. På figur 6.4 på næste side ses, hvorledes aliasering opstår, idet frekvensbåndet 1016 khz til 1024 khz spejles ned i pasbåndet. Da dæmpningen kun er 42 db, er der målt på konverteren for at undersøge, om filtrets dæmpning er tilstrækkelig. Med en funktionsgenerator er konverteren testet i området omkring 1 MHz, og dette har 51

58 KAPITEL 6. DSP-SYSTEMET Magnitude Magnitude Frekvens [Hz] Frekvens [Hz] (a) Indgangsfilter (b) Udgangsfilter Figur 6.3: Frekvenskarakteristik for filtre til konverter vist, at dæmpningen er tilstrækkelig. Dette kan hænge sammen med, at analoge kredsløb i konverterens indgang giver anledning til yderligere dæmpning H(jω) H(jω) Frekvens [khz] Frekvens [khz] (a) Antialiaseringsfilter. (b) Aliasering i pasbånd. Figur 6.4: Virkning af antialiaseringsfilter i.f.m. A/D-konvertering Test af konvertermodul Konvertermodulet er testet alene ved at føre det serielle udgangssignal (SDOUT) direkte tilbage til den serielle indgang (SDIN). Der kan skiftes mellem denne form for brug og almindelig brug vha. en jumper. Ved kortsluttet indgang er der målt 0.14 mv RMS på udgangen, mens der ved at sætte en sinus med fuld udstyring på indgangen er målt 940 mv RMS. Dermed er S/N-forholdet for konvertermodulet 76.5 db. 52

59 M 6.3. ADRESSERING Til målingen er benyttet et Fluke 189 true RMS-multimeter, AAU nr Adressering Det følgende afsnit beskriver adressering og tilgang til eksterne enheder, herunder RAM, ROM, display og knapinterface Hukommelsesenheder Via systemet skal det være muligt at selektere de i figur 6.5 anførte enheder. På figuren er tillige angivet det adresserum, som den pågældende enhed optager. Adressedekoder R AM 3 2 K w ord R O 4 K w ord D i sp l a y 1 w ord K n a p p er 1 w ord Figur 6.5: Oversigt over eksterne enheder og deres størrelse. Foruden den eksterne hukommelse har TMS320C26 et internt hukommelsesområde på 1568 words benævnt med blokkene B0, B1, B2 og B3. I denne sammenhæng er det interne hukommelsesområde alene konfigureret som data hukommelse. Fælles for både den interne og eksterne hukommelse er opdelingen af hukommelsesområder i sider af en længde på 128 words. Figur 6.6 viser en memory map over den tilgængelige hukommelse. Til denne anvendelse er det skønnet tilstrækkeligt med 32K word RAM, udfra en betragtning af ønskelige buffere og disses maksimale størrelse. Debugger/monitoren D/M32026 initieres fra adresse 0h, som ligger i ROM, indeholdende programkode til D/M32026, fra 0h til og med FFFh, og udelukkende i program space. User-RAM placeres fra 1000h og frem til 8FFFh, hvoraf D/M32026 gør brug af RAM-området fra 1000h til 107Fh. Som RAM benyttes kredsen CY fra Cypress Semiconductor, der er organiseret som 32K bytes via en 8 bit databus [CD 2004, datablade/cy pdf]. Derfor vælges en upper og lower RAM-kreds, der tilsammen opfylder kravet om 32K words via en 16 bit databus. ROM-kredsen er af typen M27C fra ST Microelectronics og organiseret som 64K word via en 16 bit bus [CD 2004, datablade/m27c ], hvoraf kun de 4K word anvendes. Timingsanalyser af de to kredse er udført i appendiks B.2. De to I/O-enheder, knapinterfacet og displayet, adresseres via IS og optager hver et enkelt word. Det er kun muligt at læse fra knapinterfacet og kun muligt at skrive til displayet. Generering af de nødvendige selekteringssignaler samt R/W generering behandles i de følgende afsnit. 53

60 M KAPITEL 6. DSP-SYSTEMET I N T E RN H U K O M M E L S E E K S T E RN H U K O M M E L S E 0000h Registre Page 0 ( 6 w o r d s ) 0005 h 0000h D / M E P RO R es er v er et Page 0 Page ( 4 K w o r d s ) 006 0h B 2 : D A T A Page 0 ( 3 2 w o r d s ) 007 F h 1 000h D / M R A M ( p age 3 2 ) 0F F F h R es er v er et Page h 04 00h B 0 : D A T A Page 4-7 ( w o r d s ) B 1 : D A T A Page ( w o r d s ) 03 F F h 05 F F h P RO G / D A T A RA M Page ( 3 2 K w o r d s ) 06 00h B 3 : D A T A Page ( w o r d s ) 07 F F h 8 F F F h Figur 6.6: Memory map over intern og ekstern hukommelse Adressedekodning Adressedekoderen implementeres i en 22CV10 PEEL grundet de fleksible egenskaber en omprogrammerbar kreds tilbyder. Med udgangspunkt i hukommelsesoversigten på figur 6.6 opstilles boolske ligninger, der realiserer oversigten, og som efterfølgende implementeres i føromtalte PEEL. Tabel 6.1 giver anvisninger til opstillingen af de boolske udtryk. Hukommelse A15-A12 A11-A8 A7-A4 A3-A0 Område ROM (4K word): 0000 xxxx xxxx xxxx PROG SPACE RAM (32K word): 0xxx xxxx xxxx xxxx PROG/DATA SPACE DISPLAY (1 word): x I/O SPACE (WRITE ONLY) INPUT (1 word): I/O SPACE (READ ONLY) Tabel 6.1: Sandhedstabel for adressedekoder. Et x repræsenterer en don t care. Som det antydes af tabel 6.1 anvendes adressebenene A15-A12 til at tilgå RAM- og ROMområdet entydigt. Derudover er der behov for to kontrolsignaler, WE og OE, der angiver henholdsvis write enable og output enable, afhængig af, om hukommelsen tilgås under en read- eller write cycle. De to kontrolsignaler times med STRB, der markerer øjeblikket, hvor adressen sættes, og R/W, der markerer en skrivning eller læsning. I det følgende vil R/W optræde som RW for at øge læsevenligheden af kildekoden. I overensstemmelse med den faktiske udformning af kildekoden udtrykkes alle signaler som værende aktiv høje. WE og OE genereres på følgende måde: 54

61 6.4. BRUGERGRÆNSEFLADE WE = RW STRB OE = RW STRB De to eksterne hukommelseskredse samt display og knapinterfacet kan nu tilgås som følger: CS_RAM = (A12 + A13 + A14 + A15) (DS+ PS) CS_ROM = (A12 A13 A14 A15) PS CS_DISP = A3 IS RW CS_INP = A3 IS RW Da ROM-kredsen i henhold til timingsanalysen, jf. afsnit B.2, kræver generering af et wait state under en read cycle, skal adressedekoderen tillige være wait state-generator under en read cycle fra ekstern ROM. Et wait state kan genereres ved logisk AND af MSC og selekteringssignalet, CS_ROM, og lade dette signal fungere som READY signal. Såfremt READY er negeret idet DSP en sampler benet, forlænges den aktuelle cycle med periodetiden af en instruktionscyklus, 100 ns. I PEEL-kredsen udtrykkes READY som READY = MSC CS_ROM Den samlede kildekode til adressedekoderen er anført i appendiks C Brugergrænseflade I henhold til kravspecifikationen skal effektenheden udstyres med en brugergrænseflade i form af et display til visning af menu, samt knapper og et jog-hjul til indstilling af effekterne. Hardwaren til brugerfladen designes i det følgende på funktionsniveau med uddybning af enkelte vigtige detaljer. Det endelige eldiagram findes i appendiks D på side 162. På figur 6.7 ses en illustration af brugerfladen, mens den overordnede funktionalitet ses på figur Knapper For at sikre at ét knaptryk kun opfattes som én impuls i hardwaren er det nødvendigt med et debouncer-kredsløb, der kan fjerne prel, der opstår når to kontaktflader sluttes og afbrydes. Til dette anvendes kredsløbet på figur 6.9, der består af et RC-led, samt en inverter med hysterese. Når knappen er afbrudt, er spændingen på indgangen af inverteren 5 V, da C 5 er opladet gennem modstanden R 2. Når kontakten sluttes aflades kondensatoren gennem R 1, og idet spændingen falder under inverterens tærskelspænding, skifter udgangen til høj. Når kontakten afbrydes, oplades kondensatoren igen gennem R 2, og udgangen skifter igen 55

62 KAPITEL 6. DSP-SYSTEMET Display - + jog Reverb Echo Flanger EQ Figur 6.7: Illustration af brugerfladen LCD 4x16 matrix K n a p p e r t i l e f f e k t v a l g j o g - h j u l o g p a r a m e t e r v a l g Lo g i k D 0 - D 7 I R Q A 0 C S I N P C S D I S P Figur 6.8: Blokdiagram over hardwaren til brugerfladeren til lav. Af- og opladningstiderne er valgt større end 2 ms, som er varigheden af det prel kontakterne introducerer. Komponentstørrelserne er bestemt med formel 6.1 med forbehold for, at spændingen mellem R 7 og R 8 skal være under V- for inverteren. RC = t ln( V V CC ) (6.1) 5V R8 5k S1 R7 30k C5 100nF D1 1N U1A Figur 6.9: Kredsløb til fjernelse af kontaktprel 56

63 m O P 6.4. BRUGERGRÆNSEFLADE Jog-hjul Det anvendte jog-hjul er en incremental encoder, med 30 trin (hvilepositioner), der genererer 15 impulser pr. omgang. På figur 6.10(a) ses terminaltilslutningen for jog-hjulet. T T T T T T T T T ON Set fra o n teri n g s s i d e B i t g en erato r ( ro tati o n ) T ry k k n ap (A-C) (B-C ) OFF ON OFF Rotation mod uret (a) Jog-hjulets terminaltilslutning. (b) Kurveform. T angiver hviletrin. Figur 6.10: Piher C11 jog-hjul. Når der drejes på hjulet slutter og afbryder de to kontakter efter et bestemt mønster, der muliggør afkodning af rotationens retning. Den kurveform hjulet benytter benævnes 2-bit quadrature kodning, og dets forløb er illustreret på figur 6.10(b). Af kurveformen ses det, at de to kontakter i hvilepositioner begge er enten sluttede eller afbrudte samtidigt, hvilket med en XNOR-gate giver mulighed for detektering heraf. Med henblik på afkodning af rotationsretning ses det endvidere, at hvis der drejes med uret skifter kontakt A-C først og drejes der modsat, skifter kontakt B-C først. Dette udnyttes til afkodningen vha. en positiv/negativ edge-trigger og et monostabilt flip-flop-kredsløb som illustreret på figur A D eb o u n c e +/- edge-trigger C P D R _ Q Q B D _ Q D eb o u n c e +/- edge-trigger C P R Q N E D Figur 6.11: Blokdiagram over detektion af rotationsretning Hvert trin, der passeres i en retning, resulterer i enten en afbrydelse eller en kortslutning af de to kontakter. Det er derfor nødvendigt med et kredsløb, der kan omdanne dette til én positiv impuls i begge tilfælde, dvs. en edge-trigger. Dette er opnået med kredsløbet på figur 6.12, hvor der på en af de to invertere vil være lav til høj transition i hvert tilfælde. Med kondensatorerne overføres kun en kort puls, når der er transition, og med dioderne afbrydes strømmen tilbage mod inverterenes udgange. Modstanden R 5 virker som pulldown modstand, mens R 3 og R 4 virker til at kondensatorerne aflades efter hver transition. Med et af disse kredsløb på hver kontakt genereres en impuls fra begge kontakter mellem 57

64 KAPITEL 6. DSP-SYSTEMET 5V S1 R1 20k R2 20k C1 100nF U1B 3 4 U1A 1 2 R3 100k R4 100k 100nF C2 C3 100nF R5 100k Figur 6.12: Positiv/negativ edge-trigger-kredsløb hvert trin. Det efterfølgende monostabile kredsløb virker ved, at den impuls, der kommer først, trigger den pågælgende flip-flop. Derved er rotationsretning afkodet og giver således en impuls på én af de to udgange svarende til rotation mod eller med uret. Endelig resettes kredsløbet mellem hvert trin via den føromtalte XNOR-gate Display Det er valgt at benytte et 16x4 dot matrix display med en HD44780-kompatibel controller. Det valgte display har ikke et direkte processor-kompatibelt interface, hvorfor et interfacekredsløb er påkrævet. Dette skyldes hovedsageligt, at det valgte display har en lang skrivetid i forhold til processorens cycle. For at komme udover dette problem anvendes en latch til at holde databussen, mens displayet læser fra bussen, som det ses af figur Ligeledes anvendes en flip-flop til at holde A0, der specificerer om det er data eller en instruktion, der skrives til displayet. Det er valgt at styre displayet vha. et interrupt, så displayet genererer interrupt, når det er færdig med en skrivecyklus. Dette er realiseret med multivibratoren 74HC123, der 2.25 ms efter påbegyndt skrivning til displayet (via chipselect) laver interrupt til processoren. Derved kan en interrupt-rutine sende ny data til displayet, uden der i software skal tages direkte hensyn til den langsomme kommunikation. Tiden mellem interrupt er valgt udfra, at der mellem kommandoer sendt til displayet skal ventes i mere end 1.64 ms (Se datablad [Hitachi 1996]). Dette medfører en opdateringshastighed for displayet på 444 Hz. Det tager hermed 148 ms af fylde hele displayet med tegn, hvilket er acceptabelt (der er medregnet 2 instruktioner til flytning af cursor). Dette afslutter det hardwaremæssige design af DSP-systemet. Næste kapitel omhandler udvikling af effekter og brugergrænseflade i software. 58

65 6.4. BRUGERGRÆNSEFLADE D0 - D7 Latch D0 - D7 LCD 4 x 1 6 m atr i x A 0 D C P _ Q Q R S R5 50 k 5V E ( H D ) C n F CS_DISP _ A B C _ C L R R/C Q _ Q 5V 7 4 H C IR Q _ Q Q R C P D Figur 6.13: Diagram over interfacet mellem processoren og displayet 59

66 Digitale effekter 7 Kapitlets indhold: 7.1 Softwareopbygning Receive-interrupt Knap-interrupt Display-interrupt Hukommelsesoversigt Rumklang Algoritme Implementering Test af rumklang Ekko og delay Funktionalitet Algoritme Test af ekko og delay Flanger Algoritme Implementering Test af flanger Equalizer Analog analyse Transformation til digitale filtre Implementering af equalizer Test af equalizer I dette kapitel vil designet af de digitale effekter blive gennemgået, herunder ekko/delay, flanger, rumklang og equalizer. Desuden vil den overordnede softwareopbygning beskrives. I appendiks C ses kildekode og flowcharts hertil. 7.1 Softwareopbygning Softwaren er opbygget, så alt foregår som følge af interrupts. Når ADC en har aflæst signalet, sættes receive-interruptet i DSP en, hvorefter en sample kan aflæses og behandles. 60

67 7.1. SOFTWAREOPBYGNING Under denne processering er interrupts deaktiveret. Det betyder dog ikke, at interrupts ikke vil blive behandlet, men at de først vil blive behandlet efter interrupts bliver aktiveret igen. De interrupts, der bliver opfanget og behandlet bliver gennemgået herunder Receive-interrupt Receive-interruptet indtræffer gange i sekundet, og er det, der indikerer overfor DSP en at en ny sample er tilgængelig og kan behandles. Behandlingen af denne sample foregår ved, at de forskellige effekt-rutiner kaldes sekventielt. For at hastighedsoptimere denne rutine bliver det ikke undersøgt hvilke effekter, der er slået til. Istedet vil programkoden for denne rutine blive ændret, når en effekt bliver slået til eller fra. Dette kan gøres simpelt, da systemet er opbygget så program- og datahukommelse, på trods af Harvard-strukturen, deler det samme RAM-område. I appendiks C.2 på side 122 vises flowdiagrammer og kildekode for interuptstyringen Knap-interrupt Dette interrupt indtræffer, når en knap trykkes, eller jog-hjulet aktiveres. Det behandles ved, at det aflæses hvilken knap, der er aktiveret, og derefter udføres den rutine, der knytter sig til denne knap. Det drejer sig, bortset fra relativt simple forskelle, om tre rutine-typer, der her kort vil blive beskrevet. I appendiks C.3 på side 126 vises flowdiagrammer og kildekode for hver enkel del af brugergrænsefladen. Vælg effekt Der eksisterer en rutine af denne type til hver af effektknapperne Reverb, Echo, Flanger og Equalizer. Hvis den valgte effekt allerede er vist på displayet, vil den blive aktiveret/deaktiveret. Dette vises med to bogstaver på nederste linie af displayet, f.eks. Re for Reverb. Hvis den derimod ikke er vist på displayet, vil den blive det. Derefter bliver forskellige pointere opdateret, bl.a. information om hvilken parameter, der er valgt, og hvilken opdateringsfunktion, der skal kaldes, når en parameter ændrer værdi. Vælg parameter Denne rutine kaldes hver gang jog-hjulet trykkes ind. Rutinen skifter mellem hvilken af parametrene for den valgte effekt, der kan stilles på, og viser dette vha. to > på displayet. Hvis ingen effekt er vist på displayet eller Reverb, der ikke har nogle justerbare parametre iht. kapitel 4, er valgt, medfører tryk på denne knap intet. 61

68 KAPITEL 7. DIGITALE EFFEKTER Drej jog-hjul Denne rutine tæller den valgte parameter op eller ned. Bemærk, at hver effekt har en minimum- og en maksimumværdi for parametre, og disse kan ikke overskrides. Derefter udføres den opdateringsfunktion, som er tilknyttet den valgte effekt. Rotation af jog-hjulet har ingen effekt, når Reverb er valgt, da denne effekt ikke har nogle justerbare parametre Display-interrupt Dette interrupt indtræffer hver 2.25 ms, og fortæller DSP en, at displayet er klar til at modtage nye data (se evt. afsnit 6.4.3). Hvis der på et tidspunkt herefter bliver skrevet et tegn til displayet (adresse 1h i I/O-space), vil dette tegn blive vist på den plads cursoren står på, og derefter vil cursoren blive flyttet en plads til højre. Pga. HD44780-controlleren skal man være opmærksom på, at når linie 1 er skrevet færdig, fortsættes der på linie 3. Når denne er skrevet færdig, skal der sendes en styrekode for at starte forfra på linie 2. Efter denne fortsættes der på linie 4, hvorefter der igen skal sendes en styrekode, denne gang for at starte fra linie 1. Denne styrekode sendes til displayets instruktionsregister (adresse 0h). Til dette register skal der ved opstart skrives initialiseringsinstruktioner, der indstiller displayet til at alle linier bliver aktiveret, cursoren er usynlig etc. For at forenkle rutinen, der opdaterer displayet, er det valgt, at der i hukommelsen skal ligge et område indeholdende det, der skal udlæses til displayet. Alle ændringer skrives i dette område, hvorfra det er interrupt service-rutinens opgave at skrive løbende til displayet. Et display, hvor Reverb, Flanger og Equalizer er aktiveret, og hvor Echo og dennes anden parameter er valgt, kan ses på figur 7.1 Figur 7.1: Udseende af displayet Hukommelsesoversigt For at de forskellige effekter ikke skal overskrive hinandens data, er der i hukommelsen allokeret den nødvendige plads til hver af disse rutiner. Oversigten over disse hukommelsesområder ses på figur

69 7.2. RUMKLANG Intern hukommelse Ekstern hukommelse 0000h 0060h Diverse parametre 007Fh 1000h 1100h ROM Program 1755h 2100h 0200h 0480h Flanger Reverb 03FFh 04FFh 2400h 2500h Koefficienter Display-data Reverb-buffere 22EFh 24FFh 34FFh 0580h EQ, Echo 05FFh 4000h 407Fh UI-data 407Eh Delay-buffere 07FFh 7FFFh Figur 7.2: Oversigt over hukommelsesforbrug. 7.2 Rumklang Som beskrevet i analysen opstår rumklang, når en lydkilde reflekteres af flader i et rum. Foruden den direkte lyd modtages lyden refekteret én gang af flader i rummet. Disse første reflektioner benævnes som de tidlige reflektioner. Den reflekterede lyd vil yderligere blive reflekteret gentagne gange og forekommer derfor mere spredt og diffust. Disse højere ordens reflektioner benævnes som de sene reflektioner. Efterhånden som lyden reflekteres, øges tætheden af reflektionerne, mens styrken af lyden falder afhængigt af dæmpningen i rummet. Denne er afhængig af dels fladernes materiale og dels luften i rummet. Reflektionerne fremstår tidsmæssigt som en række forsinkelser af den direkte lyd. En rumklang kan således karaktiseres ud fra en række tidskonstanter samt en dæmpningsfaktor. Analogt hertil kan den direkte lyd betegnes som x[n], mens den reflekterede og forsinkede lyd kan betegnes som α x[n-d], hvor D angiver forsinkelse i samples, og α angiver dæmpningsfaktoren. 63

70 KAPITEL 7. DIGITALE EFFEKTER Algoritme Effekten rumklang kan fremstilles på forskellige måder, hvoraf to vil blive beskrevet og analyseret i det følgende. Simpel rumklang På figur 7.3 illustreres en model for en simpel rumklang. Et signal x[n] sendes direkte gennem modellen, og signalet gentages efter D samples i en dæmpet version, hvorefter det D samples senere gentages yderligere dæmpet osv. Det ses heraf, at modellen har uendeligt impulsrespons. Modellen er vist på kanonisk form og har differensligningen: y[n] = x[n] + ay[n D] (7.1) x[n] + y [n] a z -D Figur 7.3: Blokdiagram over simpel rumklang. Den uendelige impulsrespons er illustreret på figur Amplitude [.] Samples [n] Figur 7.4: Impulsrespons for en simpel rumklang, D=145 (skaleret enhedsimpuls). Den oprindelige overføringfunktion for modellen fås ved at Z-transformere differensligningen (7.1), hvorved følgende ligning 7.2 fås: hvor D er forsinkelsen i samples. H(z) = 1 1 az D (7.2) 64

71 7.2. RUMKLANG Allpass-rumklang På figur 7.5 er vist en model for en allpass-rumklang. Specielt for denne rumklang er, at den har en flad frekvenskarakteristik. Modellen er opstillet på direkte form II med differensligningen givet ved ligning a x[n] + z -D + y [n] a Figur 7.5: Blokdiagram for allpass rumklang. y[n] = ay[n D] ax[n] + x[n D] (7.3) Overføringsfunktionen for allpass-rumklangen kan skrives som: H(z) = a + z D 1 a z D (7.4) Ved at sætte z = e jω fås systemets frekvensrespons, ligning 7.5, hvoraf det kan vises, at frekvensresponset er konstant for alle værdier af ω. H(e jω ) = a + e jωd 1 a e jωd (7.5) Det ses ved følgende udledning, at størrelsen af frekvensresponset er konstant for alle frekvenser: 65

72 KAPITEL 7. DIGITALE EFFEKTER H(e jw ) = a + e D jω 1 ae D jω a + cos(dω) j sin(dω) = 1 a(cos(dω) j sin(dω)) (cos(dω) a) 2 + sin 2 (Dω) = (1 acos(dω)) 2 + a 2 sin 2 (Dω) a 2 + cos 2 (Dω) + sin 2 (Dω) 2acos(Dω) = 1 + a 2 cos 2 (Dω) + a 2 sin 2 (Dω) 2acos(Dω) a = acos(Dω) a acos(Dω) (7.6) (7.7) (7.8) (7.9) = 1 (7.10) Det er således med allpass-rumklangen muligt at producere rumklang uden at påvirke frekvenskarakteristikken. Ved at partialopspalte og invers z-transformere frekvensresponset fra ligning 7.5 fremkommer modellens impulsrespons: h[n] = (A + B)δ[n] + Baδ[n D] + Ba 2 δ[n 2D] +... (7.11) Hvor A = 1 a og B = 1 a2 a. På figur 7.6 ses impulsresponset for allpass-rumklangen illustreret Amplitude [.] Samples [n] Figur 7.6: Impulsrespons for allpass-rumklang, D=

73 7.2. RUMKLANG Schroeders rumklang Da et rum ofte forårsager mange forskellige reflektioner, kræver en god rumklangsmodel mange af førnævnte elementer. Der findes imidlertid en model opstillet af M. R. Schroeder, der producerer en realistisk rumklang ved anvendelse af seks delays [Orfanidis 1996, s. 367]. Modellen ses af figur 7.7 og anvender forsinkelser og koefficienter som specificeret i tabel 7.1. Koefficienten b angiver den efterfølgende forstærkning for hver plainsektion. Figur 7.8 viser impulsresponsen for Schroeders rumklang. Sektion Forsinkelse [ms] Forsinkelse [samples] Koefficient plain a=0.75 b=1 plain a=0.75 b=0.9 plain a=0.75 b=0.8 plain a=0.75 b=0.7 allpass a=0.75 allpass a=0.75 Tabel 7.1: Tabel over forsinkelser og koefficienter for Schroeders rumklang Plain 1 Plain b 1 b 2 Plain b 3 Plain b 4 x[n] + A llp as s 1 A llp as s 2 y [n] Figur 7.7: Blokdiagram over Schroeders rumklang Implementering Da der er summationspunkter i modellen, er der en potentiel mulighed for overflow. Med udgangspunkt i modellen på figur 7.7 skaleres hver plain-sektion således, at der ikke forekommer overflow i summationspunkterne. Ved summation af de fire plain-sektioners output er der ligeledes mulighed for overflow. Ligning 7.12 er anvendt til skalering af plain-sektionerne [Oppenheim Schafer 1999, s. 401]. 1 s = (7.12) h[n] 2 n= Summen af den kvadrerede impulsrespons findes ved hjælp af følgende uendelige række: h[n] 2 = (1 + a + a 2 + a 3 + a 4...) 2 = 1 n= 1 a 2 for a < 1 (7.13) 67

74 KAPITEL 7. DIGITALE EFFEKTER Amplitude [.] Samples [n] Figur 7.8: Impulsrespons for Schroeders rumklang med 6 delays (skaleret enheds-impuls). Det ses heraf, at impulsresponset ikke er afhængigt af delay ets længde, og således kun afhænger af koefficienten a. Det er derved den samme skaleringsfaktor, der skal anvendes til alle plain-sektioner, hvorfor skaleringen kan foretages ved blot at skalere indgangssignalet, x[n]. Skaleringsfaktoren S plain bestemmes nu til: S plain = 1 a 2 = (7.14) En konservativ metode til at skalere de fire indgangssignaler i summationspunktet efter plain-sektionerne er at skalere, så ligning 7.12 overholdes: 1 = S sum (b 1 + b 2 + b 3 + b 4 ) = 3.4 S sum (7.15) S sum = (7.16) Denne metode for skalering er dog kun anvendelig, når det antages, at to eller flere plainsektioner ikke genererer tapper til samme sample. Med de anvendte delays opstår dette første gang efter 5365 samples (minimum 29 tapper), hvor signalet anses for værende ubetydeligt. Se figur Test af rumklang Effekten er blevet testet, og der er opnået en tilfredsstillende effekt. Dog genererer effekten en del støj, som af tidsmæssige årsager ikke er forsøgt forbedret. Det er en realistisk 68

75 7.3. EKKO OG DELAY rumklang, der er opnået. På figur 7.9 ses den målte impulsrespons med de oplyste delays og koefficienter. Støjen vurderes at stamme fra skalering af signalet. Det ses, at impulsresponset stemmer overens med det forventede og simulerede, vist på figur 7.8. Endeligt er effektens forbrug af processortid i det samlede system blevet målt til 49 %, hvilket er fundet acceptabelt i betragtning af den samlede belastning på 72.8 % Amplitude [.] Samples [n] Figur 7.9: Den målte impulsrespons 7.3 Ekko og delay I det følgende beskrives opbygningen af ekko- og delayeffekten samt algoritmen til implementering. Kildekode til effekten er gengivet i appendiks C Funktionalitet I henhold til kravspecifikationen skal delayet have en varighed på op til 500 ms og kunne gentages således, at en ekkoeffekt opnås. Desuden skal de to effekter kunne level-justeres mellem 0 og 100% Algoritme Da ekko og delay er beslægtede, vælges en struktur, der er i stand til at realisere begge effekter. Blokdiagrammet i figur 7.10 illustrerer en sådan struktur, der muliggør både ekko og delay [Harmony Central 3/4-2004]. 69

76 KAPITEL 7. DIGITALE EFFEKTER x[n] + y [n] + z -D z[n] K M K D Figur 7.10: Blokdiagram til realisation af ekko- og delayeffekt. Af figur 7.10 ses, hvorledes outputtet y[n] er sammensat af inputtet x[n] og en forsinket udgave af inputtet, z[n], som er er forsinket med D samples. Koefficienterne K D og K M er bestemmende for størrelserne af ekko og delay. Koefficienten K D angiver decay-faktoren for den rekursive del af blokdiagrammet og er dermed et mål for mængden af ekko. K D skal kunne varieres mellem 0 og 1, hvor 0 vil resultere i et simpelt delay, mens 1 vil resultere i en marginalstabil ekko-løkke. Såfremt K D antager en værdi mindre end 1, vil systemets poler, forårsaget af ekko-sløjfen og mængden af delay, befinde sig inden for enhedscirklen i z-planet, og dermed garantere stabilitet. Endelig angiver koefficienten K M niveau af enten delay eller ekko, og skal ligeledes kunne varieres mellem 0 og 1. Figur 7.11(a) viser et ideelt ekkoforløb af en impuls med koefficienterne K M = K D = 0.5 og et enhedsdelay, mens figur 7.11(b) viser et simpelt enhedsdelay, hvor K M = 0.5 og K D = Amplitude [.] Amplitude [.] Sample [n] Sample [n] (a) Ideelt ekkoforløb af impuls. (b) Ideelt enhedsdelay Figur 7.11: Ideelle forløb Udfra figur 7.10 opstilles to differensligninger, der danner udgangspunkt for implementeringen af ekko- og delayeffekten. y[n] = x[n] + K M z[n] (7.17) z[n] = x[n D] + K D z[n D] (7.18) Som det indikeres af ligning 7.18, er der behov for to buffere af samme størrelse, der kan 70

77 7.3. EKKO OG DELAY gemme tidligere værdier af x[n] og z[n]. Den maksimale størrelse, D max, af en enkelt af disse buffere kan bestemmes udfra kendskabet til samplefrekvensen og det maksimale delay på 500 ms. D max = t delay f s 16bit = 500ms 16kHz 1word = 8000words Bufferne konstrueres som cirkulære buffere med en maksimal længde svarende til det aktuelle delay. En readpointer og en writepointer anvendes til at administrere størrelsen af delay, idet længden mellem disse to pointere angiver længden af delay. Figur 7.12 illustrerer opbygningen af en cirkulær buffer n- 1 n R D W R D e l a y Figur 7.12: En cirkulær buffer, hvor RD angiver readpointeren og WR writepointeren. I praksis konstrueres længden af bufferne ved at addere en offset-værdi til bufferens initialværdi, hvor offset-værdien er valgt af brugeren gennem brugergrænsefladen. Offsettet dikteres af et heltal mellem 0 og 63, hvorfor delayet kvantiseres i trin af; delay = 500ms ms Samme offset-metode anvendes også ved valg af koefficienterne K M og K D, der ligeledes kvantiseres i 64 trin. Foruden en hovedrutine, der implementerer de førnævnte differensligninger, jf. ligning 7.17 og 7.18, sørger en subrutine for, at det rette offset selekteres når brugeren interagerer med brugergrænsefladen. Ydermere er det nødvendigt at lagre positionen af read- og writepointere efter afvikling af ekko- og delayrutinen og tillige indlæse positionerne i begyndelsen af en ny afvikling Test af ekko og delay Rutinen er primært testet gennem lyttetests og fundet tilfredsstillende. Parametrene delay, K M og K D kan løbende ændres gennem brugergrænsefladen i henhold til kravene. Figur 7.13(a) viser et faktisk ekkoforløb af en impuls, hvor mix-level (K M ) og decay-faktoren (K D ) er 50%. Delayet er indstillet til en varighed på 39 ms, som ses af afstanden mellem impulsgentagelserne. Desuden er et simpelt delay på 70 ms afbilledet på figur 7.13(b) for K M = 0.5 og K D = 0. 71

78 KAPITEL 7. DIGITALE EFFEKTER Amplitude [V] Amplitude [V] Tid [s] Tid [s] (a) Impulsrespons af ekkorutinen. (b) Simpelt delay Figur 7.13: Impulsresponser Sammenholdes figur 7.13(a) med det ideelle ekkoforløb med tilsvarende koefficienter, jf. figur 7.11(a), ses det, at ekkorutinen forløber som forventet. Dog synes impulsen omkring 120 ms større end halvdelen af forrige impuls, hvilket hænger sammen med, at impulsresponset er foretaget over midlede værdier, hvor støjproblemer kan resultere i et offset. Det simple delay ses af figur 7.13(a) at være i overensstemmelse med det ideelle delay på figur 7.11(b). Endelig er rutinens tidsforbrug mellem hver samplingsperiode blevet målt til 11.2%, hvilket levner tilstrækkelig processortid til eksekvering af de øvrige effekter. 7.4 Flanger Effekten flanger opstår ved at blande et signal med en forsinket kopi af signalet. Forsinkelsen varieres med en lav frekvens, hvorved den forsinkede kopi af signal på skift stiger og falder langsomt i frekvens. Dette signal alene giver en doppler-effekt, og når det blandes med det originale signal, opstår den lidt susende flanger-effekt Algoritme På figur 7.14 ses et blokdiagram for flanger-effekten. Med udgangspunkt i blokdiagrammet kan differensligningen for flanger udtrykkes ved følgende [Orfanidis 1996, s. 361]: y[n] = x[n] + a x[n d[n]] (7.19) d[n] = D ( 2 1 cos[2π f ) 0 n] (7.20) f c Parameteren D er det maksimale antal samples inputsignalet forsinkes, f 0 er oscillatorfrekvensen og f c er beregningsfrekvensen for differensligningen. Parametren a kaldes typisk 72

79 7.4. FLANGER x[n] y[n] + + DELAY d[n] samples a Figur 7.14: Blokdiagram over flangereffekten for dybde eller mix og bestemmer forholdet mellem det oprindelige signal og den forsinkede kopi. På figur 7.15 ses frekvensrespons og pol-/nulpunktplacering for effekten ved et delay på fire samples. Antallet af notches (og dermed nulpunkter) varierer med d[n], ligesom dybden af hver notch bestemmes af a. Koefficienterne D, a og f 0 skal kunne varieres af brugeren. 1+a H(e jω ) 1 a Im(z) Normaliseret frekvens Re(z) (a) Frekvensrespons (b) Pol-/nulpunktplacering Figur 7.15: Flanging (d[n] = 4, a = 0.4) For flanger er forsinkelsen op til 10 ms [Harmony Central 3/4-2004], hvilket betyder, at D skal kunne varieres mellem 0 og 160 samples idet f s er 16 khz. Funktionen d[n] indeholder en cosinus-funktion, og d[n] er således ikke begrænset til heltal. Anvendes en simpel afrunding af d[n], opstår der en meget markant og uønsket baggrundsstøj (ofte kaldet zipper noise). Der er derfor behov for at anvende interpolation til beregning af x[n d[n]]. Det er valgt at anvende lineær interpolation af hensyn til den begrænsede beregningskraft. Da d[n] er positiv for alle n, kan værdien x[n d[n]] beregnes ved følgende: x[n d[n]] = x[n floor(d[n])] (ceil(d[n]) d[n]) (7.21) +x[n ceil(d[n])] (d[n] floor(d[n])) hvor funktionen floor runder ned til nærmeste heltal, mens funktionen ceil runder op til nærmeste heltal. Princippet er skitseret på figur Koefficienten a skal kunne varieres i intervallet 0-1, mens oscillatorfrekvensen f 0 skal kunne varieres i intervallet Hz på en logaritmisk skala. 73

80 KAPITEL 7. DIGITALE EFFEKTER x[n floor(d[n])] 12 x[n] x[n ceil(d[n])] x[n d[n]] Sample n Figur 7.16: Beregning af x[n d[n]] vha. interpolation Implementering Til implementation af flanger anvendes en cirkulær buffer med en enkelt pointer, der altid peger på nyeste input. Der anvendes ingen output-pointer, da denne ændres dynamisk i forhold til input-pointeren. Den lavfrekvente oscillator er implementeret, jf. appendiks B.3 på side 114, og giver et output i Q15 mellem 1 og 1 LSB. Assemblerkode og flowcharts kan findes i appendiks C.5 på side Test af flanger Flanger-effekten er først og fremmest testet vha. lyttetests. Desuden er det tidsforsinkede signal, der blandes med det oprindelige signal, målt med en tonegenerator på indgangen ved 440 Hz. Dette er sket for at afprøve, om signalet stiger/falder i frekvens (doppler-effekt), hvilket var tilfældet. 7.5 Equalizer Equalizeren har til formål at give guitaristen mulighed for at tilpasse frekvenskarakteristikken. Dette åbner mulighed for at guitaristen kan opnå netop den karakteristik han ønsker. I analysen blev det bestemt at implementere en equalizer med fire frekvensbånd, der hver især kan forstærkes i intervallet ±15 db. De fire bånd er givet som frekvensintervallerne: Hz 74

81 O 7.5. EQUALIZER Hz Hz Hz Idet intervallerne ligger fast, er der tale om en grafisk equalizer. Da det ønskes at implementere equalizeren digitalt, undersøges de ønskede filtre analogt for derefter at transformere disse kontinuerte filtre til digitale filtre Analog analyse I hvert bånd skal der være mulighed for at dæmpe og forstærke amplituden. Først undersøges overføringsfunktionerne for de tilfælde, hvor et bånd forstærkes. De to midterste intervaller laves som båndpassektioner, mens de to yderste implementeres som en lavpas og en højpassektion. For at mindske regnekompleksiteten vælges at implementere de to båndpassektioner i anden orden, mens lavpas og højpassektionerne implementeres i første orden. Equalizeren opbygges som fire individuelle filtre hvor hvert enkelt filter justerer amplituden af et af de fire frekvensintervaller. Disse fire filtre kaskadekobles og den samlede overføringsfunktion findes derfor som et produkt af de fire filtres overføringsfunktioner. For at opnå en flad karakteristik skal hvert enkelt filter derfor have en overføringsfunktion lig 1. Udenfor det enkelte filters interval skal amplituden ligeledes være lig 1. Input Filter 1 G + + utput Figur 7.17: Opbygning af filter til equalizeren. Filteret er enten lavpas, båndpas eller højpas. Ved at variere G kan forstærkningen justeres. For at opnå disse egenskaber designes filtrene som lavpas-, båndpas- og højpasfiltre med en forstærkningsfaktor adderet til et ettal (se figur 7.17). Når forstærkningsfaktoren er nul giver filteret en flad karakteristik. Overføringsfunktionen for lavdelen er givet som: ω LP H LP = 1 + G LP = s + (1 + G LP)ω LP (7.22) s + ω LP s + ω LP Det ses, at i det tilfælde, hvor G LP er lig nul, vil H LP blive et. Lavfilteret har en enkelt pol i ω LP, der dikterer placeringen af knækfrekvensen. Bånddelene vil have overføringsfunktionen: H BP = 1 + G BP ω BP Q BP s s 2 + ω BP Q BP s + ω 2 BP = s2 + (1 + G BP ) ω BP Q BP s + ω 2 BP s 2 + ω BP Q BP s + ω 2 BP (7.23) 75

82 KAPITEL 7. DIGITALE EFFEKTER Når G BP er lig nul, er tæller lig nævner, og filteret bliver fladt. ω BP angiver bånddelens centerfrekvens og Q BP bestemmer, hvor spids karakteristikken er. Højsektionen har en overføringsfunktion givet ved: s H HP = 1 + G HP = (1 + G HP)s + ω HP (7.24) s + ω HP s + ω HP Såfremt G HP er nul, er filteret fladt. ω HP bestemmer højpasfilterets knækfrekvens. Ved at ændre G LP, G BP og G HP er det muligt at bestemme, hvor meget hvert bånd skal forstærkes. Herved er der fundet overføringsfunktioner, der beskriver forstærkning af de enkelte bånd. Det ønskes, at dæmpningen er lig en spejling af forstærkningen omkring 0 db. Derfor bliver overføringsfunktionerne for dæmpning lig de reciprokke af overføringsfunktionerne givet i ligningerne 7.22, 7.23 og For at undersøge hvorledes det er fordelagtigt at vælge de forskellige konstanter, er der lavet et Matlab-program, der viser frekvenskarakteristikken. Dette program kan findes på den vedlagte cd. Båndpassektionernes centerfrekvens vælges til at ligge midt i intervallerne, ved 200 Hz og 800 Hz. Den lave sektions cut-off-frekvens vælges til 90 Hz og den høje sektions cutoff-frekvens til 2750 Hz. Båndfiltrenes Q-værdier vælges til 2 2, hvilket giver båndfiltrene en karakteristik, der ligner karakteristikken for lav- og højsektionerne. Eftersom filtrene skal implementeres digitalt, er det nødvendigt at vurdere, hvor mange amplitudetrin hvert interval skal kunne antage. Med henblik på, at det menneskelige øre som minimum kan skelne forskelle omkring 3 db [USG 11/5-2004], vælges det at lade forstærkningerne optræde i trin på 3 db. Dette betyder, at hvert filter kan antage 11 forskellige forstærkninger i intervallet ±15 db. Forstærkningen bestemmes af forstærkningsfaktorerne. Filtrene har en forstærkning i pasbåndet lig G + 1. Forstærkningen i db, A db, kan hermed bestemmes. Ved at isolere G er det muligt at finde forstærkningsfaktoren for en given forstærkning: A db = 20log(G + 1) G = 10 A db 20 1 (7.25) Figur 7.18 viser samtlige muligheder for de fire sektioner. Hermed er der opstillet overføringsfunktioner for de filtre det ønskes at implementere digitalt. Næste afsnit omhandler transformation af de kontinuerte filtre til diskrete filtre. Filtrene beregnes i matlab-programmet eq_analogmodel.m vist i appendiks C Transformation til digitale filtre I sidste afsnit blev der opstillet kontinuerte overføringsfunktioner for equalizerens forskellige indstillinger. For at kunne implementere disse digitalt er det nødvendigt at transformere overføringsfunktionerne fra Laplace-domænet til z-domænet. For at udføre denne transformation benyttes den bilineære transformation for at undgå den aliasing, der kan være for- 76

83 7.5. EQUALIZER 15 Lav Bånd 1 Bånd 2 Høj 10 Amplitude [db] Frekvens [Hz] Figur 7.18: Frekvenskarakteristik for alle filtre. Figuren viser alle muligheder for hvert enkelt filter. Den samlede frekvenskarakteristik findes pga. den logaritmiske y-akse som summen af de fire filtre. bundet med transformation vha. impulsinvariantmetoden. For udledning af bilineær transformation, se [Oppenheim Schafer 1999, s. 450]. Transformation af en overføringsfunktion af s foregår ved at erstatte s med: s = 2 ( 1 z 1 ) T d 1 + z 1 (7.26) Den bilineære transformation undgår aliasering ved at transformere hele den imaginære akse i laplace-domænet til enhedscirklen i z-domænet. Dette giver nødvendigvis en frekvensforvrængning. Forvrængningen er beskrevet ved: ( ) Ω ω = 2arctan 2 f s (7.27) hvor ω er frekvensen i z-domænet, Ω er frekvensen i s-domænet og f s er samplingsfrekvensen. For at få placeret knækfrekvenser korrekt skal disse først prewarpes vha. ligning Transformationen foretages vha. Matlab (se programmet eq_analogmodel i appendiks C.8). Dette giver overføringsfunktioner på formen: H(z) = M b k z k k=0 (7.28) 1 + N a k z k k=1 77

84 KAPITEL 7. DIGITALE EFFEKTER Det vælges at benytte direkte form 1 for at fjerne effekten af eventuelt internt overflow. Ved implementering vha. direkte form 1 giver denne overføringsfunktion differensligningen: y[n] = M k=0 b k x[n k] N k=1 a k y[n k] (7.29) Figur 7.19(a) viser direkte form 1 for et første ordens IIR-filter, mens figur 7.19(b) viser direkte form 1 for et IIR-filter af anden orden. b x[ n ] y[ n ] z z -1 b 1 a 1 x[ n - 1 ] y[ n - 1 ] (a) Første orden. b x[ n ] y[ n ] z z -1 b 1 a + 1 x[ n - 1 ] + y[ n - 1 ] z z -1 b 2 a 2 x[ n - 2 ] y[ n - 2 ] (b) Anden orden. Figur 7.19: Implementering af diskrete filtre vha. direkte form 1. Idet den benyttede DSP arbejder i talformatet 2 s komplement, skal hver koefficient (a k og b k ) konverteres til et heltal mellem 2 15 = og = Equalizerens indgangssignal er repræsenteret i Q15-format. Dette betyder, at indgangssignalet kan variere mellem -1 og 1-LSB. Derfor kan koefficienterne ikke repræsenteres, såfremt de er absolut større end et. Koefficienterne for de to båndsektioner og lavsektionen er altid numerisk mindre end to, mens koefficienterne for højsektionen altid er numerisk mindre end fire. Derfor konverteres signalet til Q14 i båndsektionerne og lavsektionen, mens der benyttes Q13 til højsektionen. For at undersøge hvordan kvantisering af koefficienter og signal i equalizeren påvirker funktionaliteten udføres støjberegninger. Disse er vist i appendiks B.4. Det konkluderes, at koefficientkvantisering ikke spiller nogen nævneværdig rolle for frekvenskarakteristikken. Kvantisering af signalet medfører et S/N-forhold på minimum 49.5 db, hvilket opfylder kravspecifikationen. En endelig test vil vise, hvorvidt equalizeren lever op til dette Implementering af equalizer Dette afsnit beskriver processen fra filterkoefficienter til et assemblerprogram. Det ønskede filter består af en lavsektion af første orden, to båndsektioner af anden orden samt en højsektion af første orden. Disse filtre realiseres ved direkte form 1 og kaskadekobles. Det samlede blokdiagram er vist på figur Det ses, at lavsektionen benytter samme delayelementer som båndsektion 1, der også deler hukommelse med båndsektion 2. Båndsektion 2 deler ikke hukommelse med højsektionen idet denne repræsenterer tal i Q13, mens de resterende filtre benytter Q14. Af figur 7.20 ses yderligere, at der benyttes 16 koefficienter 78

85 7.5. EQUALIZER samt at der er behov for at gemme data 13 gange. Nu er det muligt at fastlægge, hvor de forskellige parametre kan placeres. L a v B å n d 1 B å n d 2 H ø j z -1 b L b B10 + z b B z b B12 + b L 1 a L 1 z -1 z -1 a B11 a B12 b B2 0 + b B z -1 z -1 b B a B2 1 a B2 2 b H z -1 z -1 b H 1 a H 1 Figur 7.20: Samlet blokdiagram for equalizeren. På hinanden følgende blokke deler memory elementer for at spare instruktioner og memory. Placering af parametre Tabel C.4 viser placering af koefficienter og data. Filterkoefficienterne der ligger fra 2Eh til 3Dh er de aktuelle koefficienter. Det samlede sæt af koefficienter er placeret i ekstern ram og værdien af adresserne 61h-64h indeholder equalizerens aktuelle indstilling. Disse fire værdier bestemmer hvilke koefficienter der placeres i 2Eh til 3Dh og hermed benyttes. Programstruktur Programmet opdeles i tre dele: Initialisering, parameterindstilling og selve filteret. Initialiseringen (herefter EQINI)skal køre ved opstart af systemet og resetter den benyttede memory og fastlægger equalizerens startindstillinger. Parameterindstillingen (herefter EQSET) skal køres hver gang brugeren indstiller en ny værdi og sørger for at værdierne i 61h-64h stemmer overens med koefficienterne i 2Eh-3Dh. Selve filteret (herefter EQ) er den del af programmet, som udfører filtreringen. Denne programdel skal eksekveres hver gang der kommer et sample fra A/D-konverteren. Figur C.9 viser flowdiagrammet for EQINI. Memory resettes ved at skrive nul til alle de adresser programmet benytter. Dette gøres for at sikre alle memoryelementer starter som nul. For at indstille equalizeren til flad karakteristik skrives 5 til adresserne 61h-64h. For at opdatere filterkoefficienterne kaldes EQSET. Flowdiagrammet for EQSET er vist på figur C.10. Programmet henter indstillinger fra 61h- 64h, henter de tilsvarende koefficienter i ekstern hukommelse og placerer disse i 2Eh-3Dh på side 11. Filterbanken adresseres vha. fire labels: lcoe, b1coe, b2coe og hcoe. Se kildekoden i appendiks C.7. Disse labels angiver begyndelsen af filterkoefficienter til hver sektion. Koefficienterne ligger i rækkefølgen: {b n,...,b 0,a m,...a 1 }. De fire labels specificerer hvor filterkoefficienterne begynder. I lav- og højsektionen bruges tre koefficienter hvorfor indstillingen i 61h eller 64h multipliceres med tre og adderes til lcoe eller hcoe. Herved findes 79

86 KAPITEL 7. DIGITALE EFFEKTER en pointer, der peger på de aktuelle koefficienter. Da de to båndsektioner benytter fem koefficienter multipliceres indstillingen her med fem. Flowdiagrammet for EQ er vist på figur Af blokdiagrammet ses, at der maksimalt skal udføres fem multipliceringer og additioner i et filter. Derfor vælges det at benytte en implementering med instruktionerne LTA og MPY fremfor MAC, da dette giver den hurtigste eksekvering [Texas Instruments 1993, s 5-55] Test af equalizer I appendiks A.6 forefindes en målejournal, der dokumenterer equalizerens funktionalitet. I denne konkluderes det at den opbyggede equalizer har den ønskede effekt. 80

87 Del III Vurdering Denne del indeholder en samlet systemtest samt konklusion og perspektivering af det samlede projekt. 81

88

89 Systemtest 8 Systemtesten har til formål at vise, hvorvidt systemet fungerer som en helhed og opfylder den ønskede funktionalitet. Test af de enkelte effektenheder, analoge såvel som digitale, har vist, at de fungerer som specificeret. Systemtesten er derfor fortrinsvis udført gennem lyttetests, der har haft til hensigt at undersøge, om de enkelte effekter opererer som ønsket i kombination med de øvrige effektenheder. Processeringstider For det digitale system er processeringstider samt forsinkelsestid blevet målt vha. et oscilloskop (AUC 33861). Forsinkelsestiden fremgår af figur 8.1, der viser inputtet til A/D-konverteren og det efterfølgende output fra D/A-konverteren. Af figuren kan forsinkelsestiden aflæses Input Amplitude [V] Output Tid [ms] Figur 8.1: Måling af systemets forsinkelse. til 1.1 ms. Denne tidsforsinkelse ved processeringen af de digitale effekter er acceptabel, idet forsinkelsen ikke er hørbar. For de analoge effekter er forsinkelsestiden vurderet negligibel. Processeringstiderne for de digitale effekter samt opdateringen af brugergrænsefladen er blevet målt i forhold til periodetiden mellem hver sample. Disse tider er blevet målt vha. processorens XF-ben, som sættes høj inden processeringen og sættes lav igen efter pro- 83

90 KAPITEL 8. SYSTEMTEST cesseringen. Herved vil den målte duty cycle på XF-benet angive den procentvise belastning af DSP en. Tiderne i procent af periodetiden på 62.5 µs er vist i tabel 8.1. Effekter Belastning [%] Ingen effekter rumklang ekko/delay flanger equalizer 11.6 Alle effekter 72.8 Tabel 8.1: Processeringstider for de digitale effekter. Som tabellen viser, optager den samlede processering 72.8% af processorens rådige tid mellem to samples ved tilslutning af samtlige digitale effekter. Signal/støj-forhold S/N-forholdet er målt for hver enkelt af de analoge såvel som digitale effekter vha. et oscilloskop (AUC 33861) samt et true RMS multimeter (Fluke 189, AAU 52832). I tabel 8.2 er de målte S/N-forhold opgivet. De ses, at reverb har det dårligste S/N-forhold, hvilket primært Effekt S/N-forhold [db] Ingen effekter 70.0 Direkte via DSP 63.0 Reverb 47.5 Echo 58.3 Flanger 56.1 Equalizer 61.0 Alle digitale effekter 46.7 Wahwah 73.3 Distortion 51.4 Tremolo 67.3 Alle analoge effekter 44.8 Tabel 8.2: S/N-forhold for de enkelte effekter. skyldes skalering for at undgå overflow i beregninger. De målte S/N-forhold er i alle tilfælde større end guitarens S/N-forhold på omkring 41 db. Det skal nævnes, at S/N-forholdet for de enkelte analoge effekter er målt selvstændigt og dermed isoleret fra de digitale kredsløb, hvilket forklarer den store forskel på målingen på alle analoge effekter og den dårligste analoge effekt (distortion). 84

91 Total harmonisk forvrængning Den totale harmoniske forvrængning (THD+N) er målt for hele systemet uden effekter aktiveret, direkte gennem DSP en samt for den digitale equalizer. Målingerne er foretaget med en forvrængningsmåler af typen Tektronix Distorion Analyzer AA501 A (AUC 08650) ved en frekvens på 100 Hz. Målingerne er opsummeret i tabel 8.3. Der er foretaget to målinger Effekt THD+N [%] Ingen effekter Direkte via DSP Equalizer (neutral) Equalizer (LS 0) Tabel 8.3: Måling af THD+N. på equalizeren med hhv. neutral indstilling og fuld dæmpning i lavsektion. Det vurderes, at denne forvrængning ikke er hørbar og derfor uden betydning. Testkonklusion Med baggrund i de udførte test vurderes, at det samlede system fungerer efter hensigten. De analoge og digitale effekter kan vælges af en bruger og virker som foreskrevet i kombination med hinanden. Effekternes S/N-forhold er i værste fald ca. 6 db bedre end guitarens S/Nforhold. Dette giver dog anledning til en del hørbar støj, når guitarens stregne holdes i ro, hvilket er utilfredsstillende. 85

92 Konklusion 9 I denne rapport er design og realisation af en guitareffektenhed blevet beskrevet. Enheden udgøres af tre analoge effekter og fire digitale effekter. De analoge effekter er wahwah, distortion og tremolo, mens de fire digitale effekter er rumklang, ekko/delay, flanger og equalizer. De analoge effekter justeres med potentiometre, mens de digitale justeres vha. en brugergrænseflade bestående af seks knapper, et jog-hjul og et display. De opnåede resultater ved de implementerede effekter gennemgås i det følgende. Wahwah-effekten giver mulighed for justering af Q-værdi og blanding af oprindeligt og filtreret signal. Guitaristen justerer båndpasfilterets centerfrekvens vha. en fodpedal. Effekten distortion forvrænger signalet med mulighed for at justere mængden af asymmetrisk klipning, symmetrisk klipning, forhold mellem bas og diskant samt level. Som følge af mangel på specifikke krav, er effekten testet ved subjektive lyttetest. Tremolo modulerer signalet med et lavfrekvent sinussignal og giver mulighed for justering af modulationens frekvens og dybde. Test viser, at de analoge effekter opfylder kravspecifikationen. Effekten reverb giver mulighed for at tilføje rumklang. Der er ingen justeringsmuligheder, da kun en enkelt form af rumklang er implementeret. Ekko/delay giver guitaristen valgfrihed mellem ekko (uendeligt antal gentagelser) og delay (en enkelt gentagelse) samt en kombination af disse. Desuden er det muligt at justere delayets længde. Flanger-effekten giver mulighed for justering af den lavfrekvente oscillators frekvens og amplitude samt blandingsforholdet mellem det forsinkede og oprindelige signal. Effekten equalizer gør det muligt at tilpasse frekvenskarakteristikken i fire bånd, der hver især kan forstærkes i intervallet ±15 db. Test viser, at de digitale effekter opfylder kravspecifikationen. På baggrund af de opnåede resultater, konkluderes det, at det samlede system har den ønskede funktionalitet. Det er muligt at indstille de ønskede parametre vha. brugergrænsefladen og effekterne har den forventede virkning, både individuelt såvel som i samspil med de andre. Ved tilslutning af samtlige digitale effekter udnyttes 72.8 % af processorkraften. Systemet overholder det opstillede krav til S/N-forhold. Systemet har et problem hvad angår støj. Både i de digitale og de analoge effekter. Desuden opstår der kliklyde, når parametrene til de digitale effekter varieres, samt ved skift mellem de analoge effekter. Det kan heraf konkluderes, at der opstår problemer ved såvel en analog som en digital implementation. 86

93 Perspektivering 10 I konklusionen fremgår det, at systemet fungerer efter hensigten, dog underlagt visse støjproblemer. For at mindske den analogt introducerede støj er et nyt design af analoge effekter, A/D-konverter og D/A-konverter nødvendigt. Det nuværende system er realiseret ved wrapning, hvilket ikke er støjmæssigt optimalt. Derfor vurderes det, at printudlægning og bedre adskillelse af analog og digital elektronik vil mindske meget af støjen. Den digitale støj opstår pga. intern kvantisering. For at mindske denne støj er det nødvendigt enten at benytte flere bit eller benytte en anden realisationsstruktur, herunder eksempelvis princippet noise shaping. En anden form for støj opstår ved skift af parametre samt ved til- og frakobling af effekter. For at eliminere dette problem er det nødvendigt at implementere rutiner, der ændrer koefficienter gradvist og ikke i steps, som det er tilfældet på nuværende tidspunkt. Til forbedring af produktet er det en mulighed at styre til- og frakobling af de analoge effekter vha. den digitale brugergrænseflade. For at øge anvendeligheden af effekten rumklang, vil det være en fordel at tilføje flere indstillingsmuligheder. For at øge produktets anvendelighed er det ønskeligt at gøre DSP-systemet uafhængigt af monitoren ved at lægge programkoden i ROM. I det tilfælde, hvor det ønskes at markedsføre produktet, er det nødvendigt at ændre det ydre design. Desuden vil det være en fordel om produktet kan nøjes med en enkelt forsyningsspænding, evt. et batteri. 87

94 Litteratur CD [2004], Vedlagt cd, gruppe 04gr640. Crystal [1996], Datablad for CS4218, Crystal. GM Arts [25/3-2004], Harmony Central [3/4-2004], Hitachi [1996], Datablad for HD44780U, Hitachi. Oppenheim, A. V. Schafer, R. W. [1999], Discrete-Time Signal Processing, 2nd udgave, Prentice Hall. ISBN Orfanidis, S. J. [1996], Introduction to Signal Processing, 1. udgave, Prentice-Hall. ISBN Sedra, A. S. Smith, K. C. [1998], Microelectronic Circuits, 4. udgave, Oxford University Press. ISBN Texas Instruments [1993], TMS320C2x User s Guide, Texas Instruments. The Secrets of Electric Guitar Pickups [24/5-2004], USG [11/5-2004], 88

95 Del IV Appendiks 89

96 Målejournaler A Dette appendiks indeholder målejournalerne til test af både analoge og digitale enheder, herunder de analoge effekter wahwah, tremolo og distortion samt den digitale equalizer. A.1 Måling af guitarudgang Denne journal omhandler måling af guitarens udgangsimpedans, det maksimale amplitudesving, frekvenskomposanter af samplede guitarsignaler samt måling af guitarens S/Nforhold. Apparatur Følgende apparatur er anvendt under forsøget. Apparat Serinummer Agilent oscilloskop AUC Dekademodstand AUC Funktionsgenerator AUC Tabel A.1: Anvendt apparatur. Fremgangsmåde Figur A.1 viser forsøgsopstillingen til måling af guitarens udgangsimpedans, Z out. Det ønskes at finde udgangsimpedansen Z out. For at finde denne opstilles spændingsdelingen mellem R pot og Z out. R pot V R = V S R pot + Z out (A.1) 90

97 G A.1. MÅLING AF GUITARUDGANG u i t a r Z ou t Ch. 1 V S R pot V R Ch. 2 Figur A.1: Måling af udgangsimpedans. I denne ligning isoleres Z out : ( ) VS Z out = R pot 1 V R (A.2) Da Z out, V S og V R er komplekse størrelser, omskrives ligningen: ( ) VS Z out = R pot V R (θ S θ R ) 1 (A.3) hvor θ S θ R angiver fasen for den målte spænding. Udfra ligning A.3 kan den komplekse impedans Z out beregnes. R pot skal være sammenlignelig med Z out og sættes derfor til 20 kω. Spændingsgeneratoren indstilles til et sinussignal med en peak-spænding på 1 V ved 20 Hz. På oscilloskopet aflæses størrelsen af V R og faseforskellen mellem V S og V R. Denne procedure gentages ved frekvenser fordelt logaritmisk i området fra 20 Hz - 20 khz. Amplitudesvinget af guitarens udgangsspænding ved kraftige anslag af guitarens strenge måles med oscilloskopet. Opstillingen er illustreret på figur A.2(a). De maksimale frekvenskomposanter findes gennem DFT af samplede guitarsignaler. Signalerne er samplet med et pc-lydkort med en samplingsfrekvens på 44.1 khz og en 16 bit opløsning. Figure A.2(b) viser forsøgsopstillingen til bestemmelse af frekvensindholdet. Desuden beregnes RMS-værdien af de optagede signaler vha. Matlab-programmet guitar_rms.m, der findes på vedlagte cd og der Til måling af guitarens S/N-forhold anvendes et true-rms multimeter, som først tilsluttes guitaren under kraftigt spil med stort signaludsving og dernæst mens guitarstrengene holdes i hvile. 91

98 BILAG A. MÅLEJOURNALER Guitar Indgang til lydkort Guitar Z out Z out osc V s V s (a) Måling af amplitudesving. (b) Måling af frekvenskomposanter. Figur A.2: Forsøgsopstillinger for målinger af guitaren. Resultater Udgangsimpedans Figur A.3 viser den målte udgangsimpedans som funktion af frekvensen i intervallet 20 Hz- 20 khz Impedans [kω] Frekvens [Hz] Figur A.3: Udgangsimpedans som funktion af frekvensen. Af figur A.3 ses, at udgangsimpedansen er relativt konstant omkring 7 kω i intervallet fra 20 Hz til cirka 1 khz. Ved en frekvens på 6 khz når udgangsimpedansen sit maksimum med en værdi svarende til 290 kω og aftager efterfølgende til en værdi på 50 kω ved 20 khz. 92

99 A.1. MÅLING AF GUITARUDGANG Amplitudesving Amplitudesvinget af guitarens udgangsspænding er vist på figur A Amplitude [V] Tid [s] Figur A.4: Amplitudesving af guitarens udgangsspænding. Som det ses af figur A.4, fluktuerer amplituden af udgangsspændingen inden for intervallet ±0.6 V under kraftige anslag af guitarstrengene. Frekvenskomposanter Frekvenskomposanterne er undersøgt på baggrund af to optagelser. En ordinær optagelse af et guitarriff og en optagelse, hvor harmoniske overtoner blev tilstræbt. Signalerne ses afbilledet som funktion af tiden på figur A.5(a) og A.5(b) Amplitude [V] Amplitude [V] Tid [s] Tid [s] (a) Guitarriff. (b) Harmonisk overtone. Figur A.5: Guitarsignaler som funktion af tiden. 93

100 BILAG A. MÅLEJOURNALER Fourier-transformationen af de to tidssignaler er udført i Matlab. Spektret af de to signaler er afbildet på figur A.6(a) og A.6(b) x Amplitude, H(jω) Amplitude, H(jω) k 10k 20k Frekvens [Hz] k 10k 20k Frekvens [Hz] (a) Spektrum af signalet i figur A.5(a). (b) Spektrum af signalet i figur A.5(b). Figur A.6: Frekvensspektre af guitarsignaler. Ved ordinært guitarspil er signalerne forekommende for frekvenser under 5 khz, hvilket ses af figur A.6(a). Derimod er det muligt at fremkalde højere ordens harmoniske overtoner større end 5 khz, som vist på figur A.6(b), hvor frekvenskomposanter op til omkring 10 khz anes. RMS-værdi RMS-værdien af de optagede guitarsignaler beregnes til at have et gennemsnit på 15.3 % af det fulde signaludsving. I beregningen tages udgangspunkt i, at det maksimale signal svarer til fuld udstyring. Signal/støj-forhold Et gennemsnit af flere målinger viste en RMS-værdi på maksimalt 0.45 V under kraftigt guitarspil. Samme måling, hvor strengene blev holdt i ro, viste 4 mv. Det maksimale S/Nforhold for guitaren er derfor: SNR = 20 log ( ) 0.45V = 41dB 4mV 94

101 A.2. MÅLING AF FORSTÆRKERINDGANG Konklusion Med baggrund i måledata ses, at guitarens udgangsimpedans er afhængig af frekvensen. Mellem 1 khz og 6 khz er impedansen stigende med en maksimal værdi på 286 kω, hvorefter den aftager. Amplituden af guitarens udgangssignal ligger i intervallet mellem ±0.6 V, og frekvensanalyse af guitarsignaler viser, at størstedelen af signalerne er forekommende for frekvenser under 5 khz. Dog er det muligt at skabe harmoniske overtoner ved frekvenser i omegnen af 10 khz. Disse overtoner er imidlertid svage i forhold til signalerne i frekvensområdet optil 5 khz. Endelig er guitarens S/N-forhold målt til 41 db. A.2 Måling af forstærkerindgang Denne journal omhandler måling af forstærkerens indgangsimpedans. Denne indgangsimpedans er effektenhedens udgangsbelastning. Apparatur Følgende apparatur er anvendt under forsøget. Apparat Serinummer Agilent oscilloskop AUC Dekademodstand AUC Funktionsgenerator AUC Tabel A.2: Anvendt apparatur. Fremgangsmåde Figur A.7 viser forsøgsopstillingen til måling af indgangsimpedansen Z in. F o r s t æ r k e r R pot Ch. 1 V S V Z Z i n Ch. 2 Figur A.7: Måling af indgangsimpedans. 95

102 BILAG A. MÅLEJOURNALER Det ønskes at finde indgangsimpedansen Z in. For at finde denne opstilles spændingsdelingen mellem R pot og Z in. Z in V Z = V S R pot + Z in (A.4) I denne ligning isoleres Z in : Z in = R pot Da Z in, V S og V Z er komplekse størrelser, omskrives ligningen: ( ) (A.5) VS V Z 1 Z in = R pot ( ) (A.6) VS V Z (θ S θ Z ) 1 hvor θ S θ Z angiver fasen for den målte spænding. Udfra ligning A.6 kan den komplekse impedans Z in beregnes. Frekvensgeneratoren indstilles til en peak-udgangsspænding på 1 V. Signalet er et sinussignal med en frekvens på 20 Hz. Spændingen over generatoren såvel som forstærkeren måles, og faseforskellen aflæses på oscilloskopet. Denne procedure gentages med logaritmiske trin op til 20 khz. Resultater Figur A.8 viser den målte impedans som funktion af frekvens. Det ses, at forstærkerens indgangsimpedans er konstant 155 kω fra 20 Hz til knap 1 khz. Over 1 khz falder indgangsimpedansen for at nå 18 kω ved 20 khz. Konklusion Målingerne viser, at forstærkerens indgangsimpedans er afhængig af frekvensen. I det hørbare område nås den laveste værdi ved 20 khz, hvor impedansen er 18 kω. Den faldende impedans gør forstærkeren mindre støjfølsom ved højere frekvenser. 96

103 A.3. TEST AF WAHWAH Impedans [kω] Frekvens [Hz] A.3 Test af wahwah Figur A.8: Indgangsimpedans som funktion af frekvensen. Formål At undersøge om wahwah-enhedens variable båndpaskarakteristik er i overensstemmelse med den ønskede virkemåde, herunder en variabel centerfrekvens mellem 200 Hz og 2 khz samt en variabel Q-værdi mellem 1 og 11. Apparatur Følgende apparatur er anvendt under forsøget. Apparat Serienummer Agilent oscilloskop AUC Brüel og Kjær støjgenerator AUC Funktionsgenerator AUC Tabel A.3: Anvendt apparatur. Fremgangsmåde I det følgende beskrives fremgangsmåden ved måling af båndpaskarakteristik såvel som bestemmelse af Q-værdi. 97

104 BILAG A. MÅLEJOURNALER Måling af båndpaskarakteristik Støjgeneratoren indstilles til at udsende hvid støj, som påtrykkes indgangen af wahwahenheden. Hvid støj indeholder alle frekvenser med lige stor sandsynlighed, hvoraf følger, at effekten er jævnt fordelt i hele frekvensområdet. Oscilloskopet tilsluttes udgangen af wahwah-enheden, og signalets frekvensspektrum iagttages for forskellige værdier af centerfrekvens og Q-værdi. Spektret giver en indikation af frekvenskarakteristikken, dog uden at være eksakt på grund af den unøjagtighed, der er forbundet med at anvende hvid støj. Bestemmelse af Q-værdi Da Q-værdien afhænger af centerfrekvensen og båndbredden, bestemmes Q-værdien ved at måle båndbredden ved en centerfrekvens på 1 khz. Q-værdien kan da findes udfra følgende sammenhæng, idet BW angiver båndbredden; Q = ω c BW Båndbredden måles ved at påføre indgangen et sinussignal med en frekvens svarende til centerfrekvensen. Dernæst ændres frekvensen af indgangssignalet og differencen af frekvenserne, for hvilke udgangssignalet er faldet 3 db, er da identisk med båndbredden af filteret. Opstilling Til måling af båndpaskarakteristik tilsluttes en støjgenerator til wahwah-enhedens indgang og et oscilloskop til udgangen. Til måling af Q-værdi skiftes støjgeneratoren ud med en sinusgenerator. Måleresultater Båndpaskarakteristik Frekvensspektre for udgangssignalet, hvor Q-værdien og centerfrekvensen er i deres yderpositioner, ses på figurene A.9(a), A.9(b), A.10(a) og A.10(b). Bestemmelse af Q-værdi De minimale og maksimale Q-værdier ved 1 khz er angivet i tabel A.4. 98

105 A.3. TEST AF WAHWAH Amplitude, H(jω) Amplitude, H(jω) Frekvens [Hz] Frekvens [Hz] (a) Q = 1, f c = 200 Hz (b) Q = 11, f c = 200 Hz Figur A.9: Frekvensspektre af udgangssignal, f c =200 Hz Amplitude, H(jω) Amplitude, H(jω) Frekvens [Hz] Frekvens [Hz] (a) Q = 1, f c = 2 khz (b) Q = 11, f c = 2 khz Figur A.10: Frekvensspektre af udgangssignal, f c =2kHz. Resultatbehandling Af figurene A.9(a), A.9(b), A.10(a) og A.10(b) ses wahwah-enhedens filtervirkning. Af hvidstøjsignalet på indgangen er kun frekvenskomposanter omkring centerfrekvensen bibeholdt i udgangssignalet. Desuden ses, hvordan Q-værdien indvirker på båndpaskarakteristikken, idet en højere Q-værdi resulterer i et skarpere filter med en mindre båndbredde. Af figur A.9(a) og A.9(b) ses, at centerfrekvensen er en anelse højere end 200 Hz, hvilket skyldes afvigelsen mellem komponentværdier og designværdier. Som det ses af tabel A.4, afviger den målte Q-værdi ikke betydeligt fra de specificerede værdier mellem 1 og

106 BILAG A. MÅLEJOURNALER f c BW max Q min BW min Q max 1 khz 1.01 khz khz 11.1 Tabel A.4: Måleresultater til bestemmelse af Q-værdi. Konklusion Af frekvensanalysen ses, at wahwah-enheden muliggører en variabel centerfrekvens mellem 200 Hz og 2 khz. Desuden er Q-værdiens indvirkning synlig for de to undersøgte værdier af centerfrekvensen. Ved måling af båndbredden er Q-værdien bestemt til at ligge mellem 1.00 og A.4 Test af tremolo Test af effekten tremolo skal vise, hvorvidt effekten fungerer som forventet. Apparatur Følgende apparatur er anvendt under forsøget. Apparatur Følgende apparatur er anvendt under forsøget. Apparat Serienummer Agilent oscilloskop AUC Funktionsgenerator AUC Tabel A.5: Anvendt apparatur. Formål Testen skal vise, at sinusgeneratoren genererer et sinussignal med justerbar frekvens mellem 0.1 Hz og 10 Hz og det korrekte offset. Desuden skal det vises, at multiplieren fungerer og giver et output i intervallet ±5 V. Fremgangsmåde For at verificere at sinusgeneratoren kan generere de korrekte frekvenser, måles på den ene indgang på multiplieren (ben 3) ved henholdsvis minimal og maksimal frekvens. Amplitu- 100

107 A.4. TEST AF TREMOLO den indstilles til at være maksimal. For at opnå de bedste måleresultater er første trin at justere multiplierens offset med potmetrene R 1, R 2 og R 27. Modstanden R 2 indstiller signalets offset og trimmes ved at sætte signalindgangen (ben 5 på multiplier) til stel og justere R 2 til signalet på udgangen er mindst. Modstanden R 1 indstiller sinussignalets offset. Herved kan der med dette potmeter kompenseres for, at sinussignalet ikke præcist når 0 V. Dette potmeter indstilles ved at sætte maksimal amplitude på sinussignalet, tilslutte en 100 Hz sinus med en peakspænding på 5 V på indgangen og trimme R 1 til der netop ikke opstår faseskift på udgangen. Modstanden R 27 indstiller udgangssignalets offset og dette justeres, så der er minimalt offset. For at verificere den samlede effekts funktionalitet tilsluttes en 100 Hz sinus med en peakspænding på 5 V på signalindgangen, og der måles på signaludgangen (ben 14 på multiplieren). Der foretages to målinger med R 3 i yderpunkterne og én med R 3 i midterposition. Resultater Figurerne A.11(a) og A.11(b) viser udgangen af sinusgeneratoren med minimal og maksimal frekvens. Frekvensen kan indstilles i intervallet mellem 12 mhz og 10 Hz, og det ses af figuren, at spændingen har ekstremumsværdierne V og 0 V. Spænding [V] Tid [ms] Spænding [V] Tid [s] (a) f = 12 mhz (b) f = 10 Hz Figur A.11: Output fra sinusgeneratoren ved henholdsvis minimal og maksimal frekvens. Den maksimale frekvens er aflæst til 10 Hz, mens den minimale aflæses til 12 mhz. Outputtet fra tremoloeffekten er vist på figurerne A.12(a), A.12(b) og A.13. Det modulerende signal har på figurerne maksimal og minimal AC-amplitude og en AC-amplitude midt i intervallet. Inputsignalet er et sinussignal med en frekvens på 100 Hz og en peak-værdi på 5.0 V. 101

108 BILAG A. MÅLEJOURNALER Spænding [V] Spænding [V] Tid [ms] Tid [ms] (a) Maksimal AC-amplitude. (b) Minimal AC-amplitude. Figur A.12: Udgang af tremoloeffekten Spænding [V] Tid [ms] Figur A.13: Udgang af tremoloeffekten ved den AC-amplitude, hvor udgangens peak-værdi er størst. Konklusion Testen viser, at tremoloeffekten har den forventede funktionalitet. Den minimale frekvens afviger fra den specificerede, hvilket kan skyldes tolerancen på R 27. Ved et input med peakværdi i intervallet ±5 V vil output holde sig i samme interval. Output vil ikke nå en peakværdi på 5 V i yderpunkterne, men er dæmpet til minimum 4.5 V svarende til en dæmpning på 0.92 db. Denne afvigelse accepteres. Hermed overholdes kravene til grænsefladerne. A.5 Test af distortion Dette appendiks omhandler test af den analoge distortion-effektenhed. 102

109 A.5. TEST AF DISTORTION Formål At undersøge dels hvorvidt distortion-effekten lever op til gruppens egne krav for lydkvalitet og dels hvorvidt det asymmetriske trin overholder enhedsforstærkning. Endvidere skal effektens S/N-forhold måles med henblik på kravspecifikationen. Fremgangsmåde Asymmetisk trin På indgangen tilsluttes en sinusgenerator indstillet til en frekvens på 100 Hz og en peakamplitude på 600 mv. Dernæst tilsluttes et oscilloskop på udgangen af det asymmetriske trin. Mens potentiometer drejes fra det ene yder punkt til det andet, iagtages amplituden med oscilloskopet. Overordnet funktionalitet Distortion-enheden tilsluttes dels en sinusgenerator og dels en guitar. Mens sinusgeneratoren er tilsluttet iagttages spændingen på udgangen med et oscilloskop ved samtidig indstilling af alle parametre. Derved kan det ses om potentiometrene har de forventede funktioner. Herefter tilsluttes en guitar samt en forstærker og det testes således, hvorvidt effekten lever op til gruppen forventninger. Signal/støj-forhold S/N-forholdet bestemmes ved at måle amplituden af signalet på udgangen, mens der først påtrykkes indgangen en sinus (100 Hz) med den maksimale peak-ampltide 600 mv. Herefter kortsluttes indgangen, mens ampltuden af støjen måles på udgangen. Måleresultater Asymmetisk trin Der viste sig kun en lille afvigelse på 10 mv når potentiometret drejes fra yderpunkt til yderpunkt. Overordnet funktion Gruppen fandt effektens lyd tilfredstillende og indstillingsmulighederne blev fundet passende. På figur A.14 ses screenshot fra oscilloskopet ved indstillet til hhv. maksimal asymmetri og 103

110 BILAG A. MÅLEJOURNALER maksimal distortion Amplitude [mv] Amplitude [mv] Tid [ms] Tid [ms] (a) Maksimal distortion (b) Maksimal asymmetri Figur A.14: Måling på distortion Signal/Støj-forhold I tabel A.6 ses måleresultaterne fra testen. Parameter Forhold Værdi V OUT V IN = 466 mv 75 mv V OUT V IN = 0 V 0.2 mv V DC V IN = 0 V 21,7 mv Tabel A.6: Måleresultater for SNR-målingen Signal/støj-forholdet er således målt til: SNR = 20log( 75mV 0.2mV ) = 51dB (A.7) Apparatur Følgende apparaturer anvendes under forsøget. Apparat AAU-nr Oscilloskop Agilent 54621A Mulitimeter Fluke Funktionsgenerator Philips Tabel A.7: Anvendt apparatur. 104

111 A.6. TEST AF EQUALIZER A.6 Test af equalizer Dette afsnit omhandler test af effekten equalizer, der skal vise, hvorvidt equalizeren fungerer som specificeret. A.6.1 Formål Formålet med forsøget er at finde frekvenskarakteristikker for equalizeren ved forskellige indstillinger og sammenligne disse med de forventede. Apparatur Følgende apparatur er anvendt under forsøget. Apparat Serienummer Agilent oscilloskop AUC Brüel og Kjær støjgenerator AUC Funktionsgenerator AUC Tabel A.8: Anvendt apparatur. Fremgangsmåde For at måle equalizerens frekvenskarakteristik tilsluttes hvid støj på indgangen af A/Dkonverteren. Når støjen sendes gennem et filter, vil udgangen af filteret indeholde frekvenser svarende til frekvenskarakteristikken. For at opnå så stor præcision som muligt skal der benyttes så mange målepunkter som muligt. Af denne grund vælges at tage tre målinger med et oscilloskop og sætte disse sammen. Metoden giver ikke en fuldstændig korrekt karakteristik, men den giver et billede af, hvorvidt filtrene er implementeret korrekt. Der tages målinger ved fem forskellige indstillinger: Flad karakteristik, maksimal forstærkning for lavsektionen, minimal forstærkning for båndsektion 1, maksimal forstærkning for båndsektion 2 og minimal forstærkning for højsektionen. Alle andre sektioner sættes til neutral indstilling ved hver måling. For at verificere alle indstillinger benyttes oscilloskopets FFT-funktion der observeres, mens de forskellige indstillinger afprøves. Resultater For at finde frekvenskarakteristikken udføres en DFT af de målte signaler. Dette giver en meget ujævn kurve. For at udglatte kurven udføres en midling af værdierne. Figur A

112 BILAG A. MÅLEJOURNALER viser frekvenskarakteristikken, når equalizeren indstilles til flad karakteristik Y(e jω ) [db] Frekvens [Hz] Figur A.15: Frekvenskarakteristik for equalizer når indstillet til flad karakteristik. Af figuren ses, at frekvensområdet spænder fra 63 Hz til 6.4 khz, hvor forstærkningen er 3 db mindre end den maksimale. Det skal bemærkes, at enheden på y-aksen ikke angiver forstærkning fra indgang til udgang, men blot er absolutværdien af DFT en i db. Figur A.16 viser frekvenskarakteristikken for de fire forskellige indstillinger af equalizeren, som specificeret under fremgangsmåde. Det ses, at de fire indstillingsmuligheder opererer indenfor de ønskede intervaller. Der er afvigelser, men disse er forventelige som følge af målemetoden. De fire frekvenskarakteristikker skal sættes i relation til den flade karakteristik. Offsetværdien er ikke ens for alle grafer, da indgangsamplituden er blevet tilpasset for at opnå højest S/N-forhold og undgå klipning. Ved benyttelse af oscilloskopets FFT-funktion er det verificeret, at hver sektions 11 indstillinger giver den ønskede funktion. Konklusion Testen viser, at equalizeren fungerer som forventet. Med den benyttede målemetode er det ikke muligt at kontrollere forstærkninger og afskæringsfrekvenser præcist, hvorfor dette ikke er gjort. Dette er dog heller ikke strengt nødvendigt, idet effekten er implementeret digitalt. Her vil en programeringsfejl ofte give stort udslag, hvilket testen ville have vist. 106

113 A.6. TEST AF EQUALIZER Maksimal forstærkning af lavsektion Minimal forstærkning af båndsektion Y(e jω ) [db] Y(e jω ) [db] Frekvens [Hz] Frekvens [Hz] Maksimal forstærkning af båndsektion 2 Minimal forstærkning af højsektion Y(e jω ) [db] Y(e jω ) [db] Frekvens [Hz] Frekvens [Hz] Figur A.16: Frekvenskarakteristik for fire forskellige indstillinger af equalizeren. Det skal bemærkes, at alle grafer skal sættes i relation til den flade karakteristik vist på figur A

114 Beregninger B Dette appendiks indeholder beregninger og udledninger, som anvendes i forbindelse med design af systemets blokke. B.1 Wahwah-beregninger Dette afsnit indeholder udledning af synteseligningen til realisation af wahwah-enhedens båndpasfilter samt en overføringsfunktion for dette. Synteseligning Med udgangspunkt i den generelle overføringsfunktion for et 2. ordens båndpasfilter foretages de nødvendige omskrivninger, så synteseligningen, der foreskriver en mulig realisation af båndpasfilteret, fremkommer. Resonansforstærkningen H o er udeladt i det følgende, da denne er lig 1. V o ( V o s 2 + ω c Q s + ω c 2 = V i ) ω c Q s s 2 + ω c Q s + ω c 2 = V i ωc Q s V o = 1 s 2 ( V i ωc Q s V o ωc Q s V o ω c 2 V o = 1 ω c Q V o = ω c s 2 ) (B.1) (B.2) (B.3) s (V i V o ) ω c s 2 V o (B.4) ( 1 Q (V i V o ) ω ) c s V o (B.5) Overføringsfunktion Opstillingen af overføringsfunktionen for båndpasfilteret er medvirkende til at dokumentere, hvorvidt synteseligningen og den elektriske implementering er valid. Figur B.1 danner udgangspunkt for de videre beregninger, hvor potentialerne V A, V B og V C er påtegnet. I det 108

115 B.1. WAHWAH-BEREGNINGER følgende regnes operationsforstærkerne som ideelle. R3 R4 R6 C1 V in R1 R2 15V + V A -15V R5 R9 15V + -15V VC R7 C2 15V + -15V V out V B 15V + R8-15V Figur B.1: Eldiagram af båndpasfilteret til wahwah-enheden. Spændingsligningerne for de tre potentialer, V A, V B og V C, opstilles: R 2 V A = V in R 1 + R 2 V B = 1 V out sc 2 R 8 V C = ( R6 R 5 V A + R 6 R 9 V B ( 1 + R ) 4 V out R4 R 3 R 3 ) (B.6) (B.7) (B.8) Ligning B.6 og B.7 indsættes i ligning B.8. V C = R ( 6 V in R 5 R 2 R 1 + R 2 ) ( R6 + R 4R 6 R = V 3 in R 5 + R 1R 5 R 2 ( 1 + R ) ) 4 V out R4 +V out R6 1 R 3 R 3 R 9 sc 2 R 8 +V out R 4 R 6 R 3 R 5 +V out R 6 1 R 8 R 9 C 2 s (B.9) (B.10) Idet V out kan skrives V C 1 sc 1 R 7, findes V C som; V C = V out sc 1 R 7 (B.11) 109

116 BILAG B. BEREGNINGER Dette udnyttes i ligning B.10. Herved fås; ( R6 + R ) 4R 6 ( R 0 = V 3 R4 R 6 in R 5 + R 1R 5 +V out + R ) 6 1 R R 3 R 5 R 8 R 9 C 2 s + sc 1R 7 2 V out V in = R 6 + R 4 R 6 R 3 R 5 + R 1 R 5 R 2 sc 1 R 7 + R 4R 6 R 3 R s R 6 R 8 R 9 C 2 (B.12) (B.13) Udtrykket i ligning B.13 reduceres yderligere, idet R 1 = R 2 = R 3 = R 4, C =C 1 =C 2, R = R 7 = R 8 og R 6 = R 9. V out V in = R 6 R 5 RC s 2 + R 6 R 5 RC s + 1 R 2 C 2 (B.14) Ligning B.14 er et 2. ordens båndpasfilter, hvor parametrene ω c og Q kan identificeres som: ω c = 1 RC Q = R 5 R 6 (B.15) (B.16) Af ovenstående ses, at det implementerede båndpasfilters karakteristika er givet efter samme forhold, som designet foreskrev, hvorfor synteseligningen og den elektriske implementering er valid. B.2 Timingsanalyse Dette afsnit undersøger, hvorvidt timingskravene under en read og write cycle overholdes af den eksterne RAM og ROM. Som ekstern RAM er kredsen CY fra Cypress Semiconductor valgt, mens ROM-kredsen hedder M27C og er fra ST Microelectronics. De følgende tider er alle valgt ud fra worst-case tilfælde, dvs. som enten maksimums- eller minimumstider. RAM Timing ved readcycle Figur B.2 viser forløbet af en read cycle og de tider, der skal overholdes af en ekstern RAMkreds. Fælles for samtlige timingsdiagrammer er, at kun tider med relevans for den speci- 110

117 B.2. TIMINGSANALYSE fikke timing er angivet. td(c1-s) CLKOUT1 td(c1-s) CLKOUT2 STRB A15 A0, BR, PS, DS, OR IS tsu(a) VALID th(a) ta(a) R/W READY D15 D0 DATA IN Figur B.2: Timingsdiagram under en readcycle til ekstern RAM. Ved en read cycle skal data være tilgængelig på databussen efter maksimalt t a(a), der angiver den maksimale access time efter adressen er sat. t a(a) = 3Q 40 = 3 25ns 40 = 35ns (B.17) hvor Q svarer til periodetiden for den eksterne clock på 40 MHz. Figur B.3 viser forløbet af en read cycle for RAM-kredsen. CE OE t ACE DATA OUT HIGH IMPEDANCE DATA VALID t HZCE HIGH IMPEDANCE Figur B.3: RAM-kredsens timing under en read cycle. Fra RAM-kredsen chipselectes, til data er valid på databussen, går maksimalt tiden t ACE. Dertil kommer et propagation delay, t PD = 10ns, gennem addressedekodningen, hvorfor den totale tid, t ACE+PD, førend data er tilgængelig på databussen er: t ACE+PD = t ACE +t PD = 20ns + 10ns = 30ns (B.18) 111

118 BILAG B. BEREGNINGER Her ses, at data gøres tilgængelig på bussen inden for den påkrævede tid. For at undgå buskonflikter skal data fra RAM-kredsen ikke holdes ved begyndelsen på en ny cycle. Tiden før en ny adressering foretages, initieret af den nedadgående flanke af CLK- OUT1, kan findes som: t newread = t d(c1 S) t su(a) = Q 6 (Q 12)ns = 6ns Dertil kommer t h(a) = Q 8ns, der markerer address hold time fra STRB negeres til addressen fjernes. Grundet propagations delayet t PD skal RAM-kredsen reelt være i højimpedans mode inden: t high Z = t h(a) t PD +t newread = (Q 8) ns = 13ns For RAM-kredsens vedkommende markerer t HZCE = 9ns tiden fra kredsen deselekterers, til kredsen er i højimpedans tilstand. Da t high Z = 13ns > t HZCE = 9ns undgås buskonflikt. Timing ved write cycle Timingsdiagrammet ved en write cycle fra DSP en er gengivet på figur B.4. CLKOUT1 CLKOUT2 STRB A15 A0, BR, PS, DS, OR IS VALID th(a) R/W READY tsu(d)w th(d)w D15 D0 DATA OUT Figur B.4: Timingsdiagram for DSP en under en write cycle til ekstern RAM. Timingskravene, som RAM-kredsen stiller til DSP en, undersøges nu. På figur B.5 er timingsdiagrammet for RAM-kredsen under en write timing afbildet. På figur B.5 markerer tiden t SD = 10ns den minimale data setup tid før WE og er udtryk for, at data skal være valid mindst 10 ns før WE ophører. Under en write cycle er data tilgængelig 112

119 B.2. TIMINGSANALYSE ADDRESS CE WE t PWE OE t SD t HD DATA I/O DATA IN VALID Figur B.5: Timingsdiagram for RAM-kredsen under en write cycle. t su(d)w = 2Q 20ns = 30ns inden STRB negeres, jf. figur B.4. Dertil kommer propagations delayet (t PD ) gennem adressedekoderen, før WE reelt ophører, således at tiden før WE er: t su(d)w +t PD = 40ns Idet 40ns > t SD > 10ns, overholder DSP en kravet til data setup tiden under en write cycle. Foruden kravet til data setup tid skal varigheden af WE, t PWE, være minimum 15 ns. Dette krav opfyldes af varigheden af STRB, der som minimum er t w(sl) = 2Q 5ns = 45ns. Tiden t HD på figur B.5 indikerer den minimale data hold tid for RAM-kredsen. Idet t HD > 0ns overholdes timingen til data hold tiden, da t h(d)w t PD = (Q 10) 10ns = 5ns, jf. figur B.4. Af foregående timingsanalyse ses, at den valgte RAM-kreds opfylder tidskravene under en read og write cycle. ROM Timingsanalysen af ROM-kredsen er kun aktuel for en read cycle. En read cycle for ROMkredsen ses afbildet på figur B.6. Der henvises til figur B.2 for timingsdiagrammet af en read cycle for DSP en. A0-A15 CE tavqv VALID VALID tehqz OE D0-D15 telqv tghqz Hi-Z Figur B.6: Timingsdiagram under en readcycle for ROM-kredsen. Tiden t ELQV = 100ns angiver tiden fra kredsen selekteres, til data er tilgængelig på databussen. 113

120 BILAG B. BEREGNINGER Da denne tid overstiger t a(a) = 30ns, er det nødvendigt at indføre et enkelt wait state ved tilgang til ROM, der forlænger t a(a) med 100 ns, hvorved t ELQV = 100ns < t a(a) = 130ns. Ved at indføre et wait state sikres desuden, at t EHQZ = 30ns, dvs. data hold tiden for ROMkredsen, inden kredsen sættes i højimpedans mode, ikke får konsekvenser for en efterfølgende cycle. B.3 Lavfrekvent oscillator Til effekten flanger anvendes en lavfrekvent sinus-oscillator. Denne kan implementeres digitalt vha. flere forskellige beregningsmetoder. Heriblandt kan nævnes metoder, som tager udgangspunkt i hhv. rækkeudvikling, CORDIC-algoritmen og en differensligning for et marginalstabilt IIR-filter. Rækkeudvikling og CORDIC er beregningskrævende ved gentagne sinusudregninger, idet hver enkelt værdi beregnes iterativt. Derimod omfatter metoden med et IIR-filter blot én enkelt 2. ordens sektion til implementering af en oscillator. Denne metode har dog den ulempe, at beregningsfejl akkumuleres, og frekvensen vil dermed kunne afvige fra den beregnede frekvens. Det vælges at implementere oscillatoren vha. et IIR-filter, idet der ikke stilles skrappe krav til en nøjagtig frekvens. Kravene til oscillatoren er som følger: Sinusfunktion Frekvens ( f 0 ): 0.25 Hz - 5 Hz Amplitude: 0.9 Samplefrekvens ( f s ): 16 khz I det følgende udledes en differensligning for et marginalstabilt IIR-filter med udgangspunkt i en sinus-funktion, og tilhørende koefficienter bestemmes. B.3.1 Differensligning Differensligningen findes med udgangspunkt i z-transformen af en sinus-funktion: H(z) = Z{sin[ω 0 n] u[n]} = sin(ω 0 )z cos(ω 0 ) z 1 + z 2 (B.19) hvor ω 0 = 2π f 0 / f c ( f c er beregningsfrekvensen og f 0 er oscillatorfrekvensen) [Oppenheim Schafer 1999, s. 104]. Ud fra B.19 bestemmes nu en differensligning for oscillatoren: 114

121 B.3. LAVFREKVENT OSCILLATOR y[n] = b x[n 1] + a y[n 1] y[n 2] (B.20) b = sin(2π f0 f c ) a = 2 cos(2π f0 f c ) (B.21) (B.22) Forholdet f c / f 0 angiver antallet af punkter over én periode (opløsningen) og begrænses af ordlængde, idet det kræves for de kvantiserede koefficienter, at 0 < b < 1 og 0 < ã < 2. Oscillatorfrekvensen skal rimeligvis vælges til f 0 2 f c for at undgå aliasering. Oscillatorfrekvensen skal kunne varieres mellem 0.25 Hz - 5 Hz. Vælges Q15 betyder dette, at beregningsfrekvensen for rekursionsligningen kan bestemmes ud fra B.22, idet a stiller de største krav til f c : ã/2 = Q[cos(2π f0 )] 1 LSB f c f c 2π 0.25Hz cos 1 ( ) 201Hz (B.23) (B.24) Beregningsfrekvensen f c kan udledes fra systemets samplingsfrekvens ( f s ) på 16 khz ved at neddele denne i software. Det vælges at neddele med 320, så f c bliver 50 Hz. Dette giver for den laveste frekvens (0.25 Hz) 200 punkter pr. periode, mens den højeste frekvens (5 Hz) blot består af 10 punkter pr. periode (se figur B.7). Oscillatoren skal opdateres med en frekvens på 16 khz, hvilket opnås ved at anvende lineær interpolation til at beregne de mellemliggende værdier. Amplitude Tid [s] Amplitude Tid [s] (a) 0.25 Hz: 200 punkter/periode. (b) 5 Hz: 10 punkter/periode. Figur B.7: Sinus-generatorens opløsning. 115

122 BILAG B. BEREGNINGER B.3.2 Implementering Det er valgt at inddele frekvensområdet fra 0.25 Hz til 5 Hz i 64 logaritmisk fordelte trin. Koefficienterne a og b beregnes for hver af disse frekvenser. Da formatet Q15 anvendes, må amplituden ikke overstige 1-LSB, hvilket løses ved at skalere b-koefficienten med På figur B.8 ses resultatet af en 16 bit simulering af algoritmen. Det ses af B.8(a), at den uskalerede b-koefficient giver overflow, mens den skalerede b-koefficient reducerer amplituden nok til at undgå overflow, jf. figur B.8(b). Amplitude Tid [s] Amplitude Tid [s] (a) Beregningsoverflow (b) Skaleret begyndelsesværdi, b 0.99 Figur B.8: Simulering af sinus-generator (0.25 Hz) B.4 Kvantiseringsstøj i equalizer Dette afsnit diskuterer fejl og støj i equalizeren grundet kvantisering. Første del omhandler fejl pga. koefficientkvantisering, mens anden del behandler støj genereret på grund af afrundning. B.4.1 Koefficientkvantisering Koefficienterne beregnes vha. Matlab (se programmet eq_kokvantisering.m i appendiks C.8) med 64 bits double præcision. Disse værdier antages at være præcise. Når koefficienterne implementeres i DSP en, kvantiseres de til en præcision på 16 bit. Dette medfører, at overføringsfunktionen ændres. For at undersøge hvor stor afvigelsen bliver, kvantiseres koefficienterne i Matlab og overføringsfunktionen sammenlignes med den korrekte. Idet den korrekte overføringsfunktion betegnes H K og den kvantiserede betegnes H Q, beregnes 116

123 B.4. KVANTISERINGSSTØJ I EQUALIZER afvigelsen D som: D = H K H Q H K (B.25) Figur B.9 viser afvigelsen i db som funktion af frekvensen for hvert enkelt filter. I hver delfigur vises afvigelsen for alle 11 overføringsfunktioner. Lavsektion Båndsektion Afvigelse [db] Afvigelse [db] Frekvens [Hz] Båndsektion Frekvens [Hz] Højsektion Afvigelse [db] Afvigelse [db] Frekvens [Hz] Frekvens [Hz] Figur B.9: De kvantiserede overføringsfunktioners afvigelse fra de korrekte overføringsfunktioner. Hver figur viser de 11 forskellige indstillinger af hvert bånd. Af figuren ses, at den maksimale afvigelse findes i båndsektion 2 ved den 8000 Hz. Afvigelsen er her -33 db. Det skal bemærkes, at der i beregningen højde for koefficientkvantisering såvel som for afvigelsen på grund af den bilineære transformation. Den bilineære transformation afbilder en uendelig frekvens i s-domænet til en frekvens lig π i z-domænet, og derfor vil afvigelsen vokse med frekvensen og være størst ved den halve samplingsfrekvens. Afvigelsen angiver, hvor tæt forstærkningen af hver frekvens er på den korrekte forstærkning. Den mindste hørbare ændring af amplitude er ca. 3 db, hvorfor det vurderes, at 117

124 BILAG B. BEREGNINGER afvigelsen på -33 db er acceptabel. B.4.2 Intern kvantiseringsstøj Når equalizeren realiseres i DSP en, vil der opstå kvantiseringsstøj i forbindelse med afrunding efter multiplikation. Ved multiplikation af to faktorer på 16 bit bliver produktet 32 bit. Når dette produkt afrundes til 16 bit, opstår der støj. Figur B.10 viser et system af anden orden implementeret som direkte form 1. Signalet e[n] er kvantiseringsstøjen grundet multiplikationer. b 0 e[ n ] + + x[ n ] y[ n ] z z -1 b 1 a + 1 x[ n - 1 ] y[ n - 1 ] + z z -1 b 2 a 2 x[ n - 2 ] y[ n - 2 ] Figur B.10: System af anden orden ved direkte form 1. e[n] er den kvantiseringsstøj der opstår pga. multiplikationer. Systemet er ulineært pga. kvantiseringen, men e[n] kan med tilnærmelse sættes lig jævn fordelt hvid støj [Oppenheim Schafer 1999, s. 393], hvorved systemet lineariseres. Støjen har en varians σ 2 e givet som: + σ 2 e = 2 2B 12 (B.26) hvor B angiver antal bit efter kommaet. For at finde støjen på udgangen af filteret er det nødvendigt at undersøge, hvordan støjen påvirkes af systemet. Da systemet er lineært, kan superposition benyttes. Herved kan y[n] opfattes som en sum af det korrekte signal, y k [n] og et støjbidrag, y n [n]. Herved antages, at x[n] ingen indflydelse har på y n [n] samt, at e[n] ingen indflydelse har på y k [n]. Overføringsfunktionen fra x[n] til y k [n] er filterets overføringsfunktion, mens blokdiagrammet systemet på figur B.11 viser systemet fra e[n] til y n [n]. Systemet e[ n ] + y n [ n ] + a a 2 z -1 z -1 y n [ n - 1 ] y n [ n - 2 ] Figur B.11: System for støjen fra oprindelse til udgang, hvor e[n] er støjen, og y n [n] er støjen på udgangen. har en overføringsfunktion givet som: 118 H ey (z) = Y n(z) E(z) = a 1 z 1 + a 2 z 2 (B.27)

125 B.4. KVANTISERINGSSTØJ I EQUALIZER Systemet vist på figur B.10 har til sammenligning overføringsfunktionen: H xy (z) = Y k(z) X(z) = b 0 + b 1 z 1 + b 2 z a 1 z 1 + a 2 z 2 (B.28) Det bemærkes, at H ey har samme nævner som H xy. Derfor påvirkes støjen af de samme poler som signalet, men ikke af nogen nulpunkter. Dette giver anledning til, at støjen vil forstærkes kraftigt, hvis H xy har poler tæt på enhedscirklen. Variansen af støjen på udgangen σ 2 f kan vises at være givet ved [Oppenheim Schafer 1999, s. 396]: σ 2 f = M 2 2B 12 h ey [n] 2 (B.29) n= hvor M er antallet af afrundinger og h ey [n] er impulsresponsen af H ey (z). Da akkumuleringen sker ved 32 bits præcision, er der kun én afrunding (M = 1). Variansen af støjen angiver effekten af støjen. Herved vil S/N-forholdet i forhold til indgangen være: S/N = 10log ( x 2 RMS σ 2 f ) (B.30) hvor x RMS er RMS-værdien af indgangssignalet. Det skal bemærkes, at det udregnede S/Nforhold angiver forholdet mellem indgangssignalet og den internt genererede støj. For at finde S/N-forholdet på udgangen skal indgangssignalet sendes gennem filteret før RMSværdien beregnes. Matlabprogrammet eq_qnoise.m i appendiks C.8 beregner S/N-forholdet for hver enkelt indstilling af de fire filtre. For at finde RMS-værdien af indgangssignalet benyttes programmet guitar_rms.m på forskellige guitarriffs. Dette giver RMS-værdier mellem V og V med et gennemsnit på 0.15 V. Derfor benyttes en RMS-værdi på 0.15 V. Figur B.12 viser S/N-forholdet for hver enkel filtersektion ved alle de mulige forstærkninger. Af figuren ses, at det laveste S/N-forhold er 49.5 db, der forefindes i båndsektion 1 ved positive forstærkninger. Det skal bemærkes, at de beregnede værdier er gældende såfremt støjen er uden påvirkning af de andre filtre. Desuden er beregningerne baseret på forholdet mellem indgangssignalet og den internt genererede støj. For at opnå højere S/N-forhold er det nødvendigt enten at bruge flere bits, benytte en anden realisationsstruktur eller benytte andre filtermodeller. 119

126 BILAG B. BEREGNINGER 70 Høj Lav S/N forhold [db] Bånd Bånd Forstærkning [db] Figur B.12: S/N-forhold for hver enkel filtersektion ved de forskellige forstærkninger. S/N-forholdet er specificeret for hvert filter ved antagelse af at de andre filtre har flad karakteristik. 120

127 Kildekode C Dette kapitel indeholder kildekode til hver af de digitale effekter, brugergrænseflade såvel som adressedekoderens PEEL-program. Kildekoden til hver enkelt DSP-program er suppleret med flowcharts og en memory map. C.1 Adressedekoder Kildekoden til adressedekoderen er kompileret med programmet WinPlace 2.2 og efterfølgende testet vha. de anførte testvektorer. ADDRESS-DECODER.PSF 1 TITLE Address Decoder 2 DESIGNER 0 4GR604 3 DATE 0 5 APR D e s c r i p t i o n 6 Address Decoder f o r TMS320C26 Debugger / Monitor System 7 8 A15 12 A11 08 A07 04 A ROM ( 4K words ) : 0000 xxxx xxxx xxxx PROG SPACE 10 RAM ( 3 2K words ) : 0xxx xxxx xxxx xxxx PROG/DATA SPACE DISPLAY ( 1 word ) : I /O SPACE ( WRITE ONLY) 13 INPUT ( 1 word ) : I /O SPACE (READ ONLY) End_Desc ; PEEL22CV10A 18 19!STRB p i n 1 20! PS p i n 2 21!DS p i n 3 22! IS p i n 4 23 RW p i n 5 24!MSC p i n 6 25 A12 p i n 7 26 A13 p i n 8 27 A14 p i n 9 28 A15 p i n A3 p i n " I /O CONFIGURATION DECLARATION 32 "IOC ( PIN_NO PIN_NAME POLARITY OUTPUT_TYPE FEEDBACK_TYPE ) 33 IOC ( 14 CS_RAM Neg OutCom Feed_Pin ) 34 IOC ( 15 CS_ROM Neg OutCom Feed_Pin ) 35 IOC ( 16 CS_DISP Neg OutCom Feed_Pin ) 36 IOC ( 17 CS_INPUT Neg OutCom Feed_Pin ) 37 IOC ( 18 READY Neg OutCom Feed_Pin ) 38 IOC ( 19 WE Neg OutCom Feed_Pin ) 39 IOC ( 20 OE Neg OutCom Feed_Pin ) 40 IOC ( 21 Pos Com Feed_Pin ) 41 IOC ( 22 Pos Com Feed_Pin ) 42 IOC ( 23 Pos Com Feed_Pin ) AR NODE 25 " Global Asynchronous R e s e t 121

128 BILAG C. KILDEKODE 45 SP NODE 2 6 " Global Synchronous P r e s e t DEFINE EQUATIONS AR = 0 ; 52 SP = 0 ; CS_RAM.COM = ( A12 # A13 # A14 # A15 ) & ( DS # PS ) ; 55 CS_ROM.COM = (! A12 &! A13 &! A14 &! A15 ) & PS ; 56 CS_DISP.COM =! A3 & IS &!RW; 57 CS_INPUT.COM =! A3 & IS & RW; 58 READY.COM = MSC &!CS_ROM ; 59 OE.COM = RW & STRB ; 60 WE.COM =!RW & STRB ; t e s t _ v e c t o r s 63 ( [ A15, A14, A13, A12, A3,! PS,! DS,! IS,RW] >[CS_ROM, CS_RAM, CS_DISP, CS_INPUT ] ) ; 64 [ 0, 0, 0, 0, 0, 0, 1, 1, 1 ] > [ 0, 1, 1, 1 ] 65 [ 0, 0, 0, 0, 0, 0, 1, 1, 0 ] > [ 0, 1, 1, 1 ] 66 [ 1, 0, 0, 0, 0, 0, 1, 1, 0 ] > [ 1, 0, 1, 1 ] 67 [ 0, 0, 0, 0, 0, 1, 0, 1, 1 ] > [ 1, 1, 1, 1 ] 68 [ 0, 1, 0, 0, 0, 0, 1, 1, 1 ] > [ 1, 0, 1, 1 ] 69 [ 0, 1, 0, 0, 0, 1, 0, 1, 1 ] > [ 1, 0, 1, 1 ] 70 [ 0, 0, 0, 0, 0, 1, 1, 0, 0 ] > [ 1, 1, 0, 1 ] 71 [ 0, 0, 0, 0, 0, 1, 1, 0, 1 ] > [ 1, 1, 1, 0 ] 72 [ 0, 0, 0, 0, 1, 1, 1, 0, 0 ] > [ 1, 1, 1, 1 ] 73 [ 0, 0, 0, 0, 1, 1, 1, 0, 1 ] > [ 1, 1, 1, 1 ] t e s t _ v e c t o r s 77 ( [RW,! STRB] >[OE,WE] ) ; 78 [0,0] >[1,0] 79 [0,1] >[1,1] 80 [1,0] >[0,1] 81 [1,1] >[1,1] t e s t _ v e c t o r s 84 ( [ A15, A14, A13, A12,RW,! PS,!MSC] >[CS_ROM,READY ] ) ; 85 [ 0, 0, 0, 0, 1, 0, 0 ] > [ 0, 0 ] 86 [ 0, 0, 0, 0, 1, 0, 1 ] > [ 0, 1 ] 87 [ 0, 0, 0, 0, 1, 1, 0 ] > [ 1, 1 ] 88 [ 0, 0, 0, 0, 1, 1, 1 ] > [ 1, 1 ] " A l l E q u a t i o n s must end w i t h s e m i c o l o n s. 91 " In t er na l or External output names appended with e xte ns ions : 92 " 1 ).COM for Combinatorial Output 93 " 2 ). D for D type Registered Output 94 " 3 ). OE for Output Enable Control C.2 Hovedrutinen Programflowet af hovedrutinen er illustreret på figur C.1 på næste side. all.asm 1 ######################################################### 2 MAIN ROUTINES # 3 # 4 Used r e g i s t e r s : Acc # 5 ######################################################### I n t e r r u p t v e c t o r s s e c t " INT_VEC " 13 b INTR1 14 b INTR2 15 b TINTR ; Timer i n t e r r u p t r o u t i n e 16 b RINTR ; R e c e i v e i n t e r r u p t r o u t i n e 17 b XINTR ; T r a n s m i t i n t e r r u p t r o u t i n e t e x t DATA. equ 0060h ; Global data i n / o u t r e g i s t e r 122

129 C.2. HOVEDRUTINEN Receive interrupt Disable interrupt Hent data Branch Reverb Branch Chorus Branch Echo Branch Flanger Branch Equalizer Skriv data Enable interrupt IDLE Figur C.1: Programflow for hovedrutinen DDR. equ 0 24 DXR. equ 1 25 TIM. equ 2 26 PRD. equ 3 27 IMR. equ 4 28 GREG. equ t e x t 31 ; D e f i n e s 32 Buttons. se t 0h ; 33 Display. se t 1h ; 34 DisInst. se t 0h ; Global s e t u p INIT d i n t 42 rovm ; D i s a b l e o v e r f l o w mode 123

130 BILAG C. KILDEKODE 43 ssxm ; s e t s i g n e x t e n t i o n mode 44 spm 01 ; l e f t s h i f t P reg 1 45 ldpk 0 ; PAGEPOINTER = SERIAL PORT SETUP 48 f o r t 0 ; rx / t x 1 6 b i t words 49 rtxm ; Use FSR as input ( e xt er na l FS ) 50 sfsm ; r e s e t Frame sync INTERRUPT SETUP 53 la l k 0FFFFh 54 s a c l IMR ; Unmask a l l i n t e r r u p t s TIMER SETUP 57 la l k 0FFFFh 58 s a c l PRD 59 s a c l TIM 60 LDPK 0 61 LACK SACL 65h 63 SACL 67h 64 LACK SACL 66h INITIALIZE EFFECTS 68 CALL ECHO_INIT ; I n i t i a l i z e echo 69 CALL ECHO_SETUP 70 LDPK 0 ; I n i t i a l i z e f l a n g e r 71 LALK 4 72 SACL FL_FRQ 73 LALK 3Fh 74 SACL FL_DEPTH 75 LALK 003Fh 76 SACL FL_MIX 77 CALL FLANGER_INIT ; Clear RAM 78 CALL SIN_SETUP ; I n i t i a l i z e s i n u s gen. 79 CALL FL_SETUP ; I n i t i a l i z e f l a n g e r 80 CALL EQINI ; I n i t i a l i z e eq 81 CALL REVERB_INIT ; I n i t i a l i z e r e v e r b 82 EINT ; Enable i n t e r r u p t s MAIN ROUTINE MAIN 90 IDLE 91 B MAIN R e c e i v e i n t e r r u p t RINTR 98 SXF ; Set ex te rn al fla g 99 LDPK LAC DDR 101 SACL DATA ; Save i n p u t i n DATA T a b l e O f E f f e c t s 104 NOP ; CALL 105 NOP ; REVERB 106 NOP ; CALL 107 NOP ; CHORUS 108 NOP ; CALL 109 NOP ; ECHO 110 NOP ; CALL FLANGER_START 111 NOP ; FLANGER_START 112 NOP ; CALL 113 NOP ; EQ RXF ; Reset ex ter n al flag 116 EINT 117 RET Timer i n t e r r u p t TINTR 124 EINT 125 RET T r a n s m i t i n t e r r u p t

131 C.2. HOVEDRUTINEN 131 XINTR 132 LDPK LAC DATA 134 SACL DXR 135 EINT 136 RET I n t e r r u p t B u t t o n p r e s s e d INTR1 143 LDPK IN temp, Buttons 145 LAC temp ; Read which b u t t o n 146 ANDK SACL Button 148 CALL BUTTONS 149 EINT 150 RET s e c t " u i d a t a " BUTTONTABLE 157. word BUTTON word BUTTON word BUTTON word BUTTON word BUTTON word BUTTON word BUTTON word BUTTON i n c l u d e hex2dec. asm 167. include fla ng er. asm 168. i n c l u d e eq. asm 169. include reverb. asm 170. i n c l u d e u i _ d a t a. asm 171. i n c l u d e knapper. asm 172. include display. asm 173. i n c l u d e e c h o d e l a y. asm end 125

132 BILAG C. KILDEKODE C.3 Brugerinterface Programflowet af de forskellige typer af knaprutiner er illustreret på figur C.2, C.3(a) og C.3(b). Effekt 1 (knap) Er Effekt 1 Valgt? Nej Ja Ja Er Effekt 1 i vektortabel? Nej Fjern Effekt 1 fra vektortabellen Tilføj Effekt 1 til vektortabellen Opdater display Hvis Effekt 1 slået til, så skriv det på linie 4 Opdater pointere IDLE Figur C.2: Programflow for Effektknap 1. knapper.asm 1 ######################################################### 2 BUTTONS # 3 # 4 Used r e g i s t e r s : Acc, AR0, AR1 # 5 ######################################################### t e x t 9 BUTTONS 10 LAC Button ; Read which b u t t o n 11 ADLK BUTTONTABLE ; Add o f f s e t 12 SACL temp 13 LAR AR0, temp ; Put i n AR0 14 LARP AR0 15 LACK 0 ; Write 0 16 SACL Button ; in " Button " 17 LAC ; Load a d d r e s s 18 BACC ; Branch t o a d d r e s s " Reverb " b u t t o n

133 C.3. BRUGERINTERFACE Vælg parameter Jog-hjul + Hent pointer til den valgte parameter ind i Accumulator Hent den valgte parameter ind i Accumulator Læg 1 til Accumulator Læg 1 til Accumulator Er Acculumator > sidste param? Ja Er Acculumator > maxværdi? Ja Nej Accumulator = første parameter Nej Accumulator = maxværdi Gem Accumulator som pointer til parameter Gem Accumulator i parameter Opdater display Opdater koefficienter og display IDLE IDLE (a) (b) Figur C.3: Programflow for Valg af parameter og jog-hjul. 25 BUTTON1 26 LACK 0h 27 SACL Usejog ; D i s a b l e jog wheel 28 LAC C h o s e n E f f e c t 29 SUBK 1 ; I f t h i s e f f e c t i s n o t shown on d i s p l a y 30 BNZ Effect1NotChosen ; t h e n branch 31 LRLK AR0, TableOfEffects 32 LARP AR0 33 LAC 34 SBLK 5500h ; I f t h i s e f f e c t i s t u r n e d o f f 35 BZ TurnEffect1On ; t h e n Branch 36 LALK 5500h ; NOP 37 SACL + ; Write t o RINTR code 38 LALK 5500h ; NOP 39 SACL ; Write t o RINTR code 40 LACK 0 41 SACL E f f e c t 1 42 B Effect1NotChosen 43 TurnEffect1On 44 LALK 0FE80h ; CALL 45 SACL + ; Write t o RINTR code 46 LALK REVERB ; REVERB 47 SACL ; Write t o RINTR code 48 LACK 1 49 SACL E f f e c t 1 50 Effect1NotChosen 51 LACK 1 52 SACL C h o s e n E f f e c t 127

134 BILAG C. KILDEKODE 53 LRLK AR0, l ine1 ; Write t o d i s p l a y 54 LRLK AR1, reverbdata1 55 CALL WriteLine 56 LRLK AR0, l ine2 57 LRLK AR1, reverbdata2 58 CALL WriteLine 59 LRLK AR0, l ine3 60 LRLK AR1, reverbdata3 61 CALL WriteLine 62 LRLK AR0, l ine LARP AR0 64 LDPK LACK 20h ; " " 66 SACL + 67 LACK 20h ; " " 68 SACL 69 LAC E f f e c t 1 70 BZ E f f e c t 1 T u r n e d O f f 71 LACK 52h ; " R" 72 SACL + 73 LACK 65h ; " e " 74 SACL 75 E f f e c t 1 T u r n e d O f f 76 LDPK LACK 0 ; 1 parameter 78 SACL numberofparameters 79 LACK 0 ; F ir s t parameter 80 SACL c h o s e n P a r a m e t e r 81 LALK line 3 +1 ; Where t o show chosen parameter 82 SACL d i s p l a y P a r a m e t e r 83 LAC reverb_maxvalue ; Max v a l u e o f p a r a m e t e r s 84 SACL maxvalue 85 LAC reverb_minvalue ; Min v a l u e o f p a r a m e t e r s 86 SACL minvalue 87 LALK r e v e r b P a r a m e t e r s ; P o i n t e r t o p a r a m e t e r s 88 SACL t h i s E f f e c t P a r a m e t e r s 89 SACL t h i s P a r a m e t e r 90 RET "" b u t t o n BUTTON2 97 RET ; T h i s e f f e c t i s d i s a b l e d " Echo" b u t t o n BUTTON3 104 LACK 0F3h 105 SACL Usejog ; Enable jog wheel 106 LAC C h o s e n E f f e c t 107 SUBK 3 ; I f t h i s e f f e c t i s n o t shown on d i s p l a y 108 BNZ Effect3NotChosen ; t h e n branch 109 LRLK AR0, TableOfEffects LARP AR0 111 LAC 112 SBLK 5500h ; I f t h i s e f f e c t i s t u r n e d o f f 113 BZ TurnEffect3On ; t h e n Branch 114 LALK 5500h ; NOP 115 SACL + ; Write t o RINTR code 116 LALK 5500h ; NOP 117 SACL ; Write t o RINTR code 118 LACK SACL E f f e c t B Effect3NotChosen 121 TurnEffect3On 122 LALK 0FE80h ; CALL 123 SACL + ; Write t o RINTR code 124 LALK ECHO ; ECHO 125 SACL ; Write t o RINTR code 126 LACK SACL E f f e c t Effect3NotChosen 129 LACK SACL C h o s e n E f f e c t 131 LRLK AR0, l ine1 ; Write t o d i s p l a y 132 LRLK AR1, echodata1 133 CALL WriteLine 134 LRLK AR0, l ine2 135 LRLK AR1, echodata2 136 CALL WriteLine 137 LRLK AR0, l ine3 138 LRLK AR1, echodata3 139 CALL WriteLine 140 LDPK 0 128

135 C.3. BRUGERINTERFACE 141 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC km_req 145 CALL hex2dec 146 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC d e l a y _ r e q 150 CALL hex2dec 151 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC kd_req 155 CALL hex2dec 156 LRLK AR0, line LARP AR0 158 LDPK LACK 20h ; " " 160 SACL LACK 20h ; " " 162 SACL 163 LAC E f f e c t BZ E f f e c t 3 T u r n e d O f f 165 LACK 45h ; " E" 166 SACL LACK 63h ; " c " 168 SACL 169 E f f e c t 3 T u r n e d O f f 170 LALK ECHO_SETUP 171 SACL s e t u p F u n c t i o n 172 CALA ; I n i t i a l i z e echo 173 LDPK LACK 2 ; 3 p a r a m e t e r s 175 SACL numberofparameters 176 LACK 0 ; F i r s t parameter 177 SACL c h o s e n P a r a m e t e r 178 LALK l ine3 +1 ; Where t o show chosen parameter 179 SACL d i s p l a y P a r a m e t e r 180 LAC echo_maxvalue ; Max v a l u e o f p a r a m e t e r s 181 SACL maxvalue 182 LAC echo_minvalue ; Min v a l u e o f p a r a m e t e r s 183 SACL minvalue 184 LALK e c h o P a r a m e t e r s ; P o i n t e r t o p a r a m e t e r s 185 SACL t h i s E f f e c t P a r a m e t e r s 186 SACL t h i s P a r a m e t e r 187 RET " Flanger " b u t t o n BUTTON4 194 LACK 0F3h 195 SACL Usejog ; Enable jog wheel 196 LAC C h o s e n E f f e c t 197 SUBK 4 ; I f t h i s e f f e c t i s n o t shown on d i s p l a y 198 BNZ Effect4NotChosen ; t h e n branch 199 LRLK AR0, TableOfEffects LARP AR0 201 LAC 202 SBLK 5500h ; I f t h i s e f f e c t i s t u r n e d o f f 203 BZ TurnEffect4On ; t h e n Branch 204 LALK 5500h ; NOP 205 SACL + ; Write t o RINTR code 206 LALK 5500h ; NOP 207 SACL ; Write t o RINTR code 208 LACK SACL E f f e c t B Effect4NotChosen 211 TurnEffect4On 212 LALK 0FE80h ; CALL 213 SACL + ; Write t o RINTR code 214 LALK FLANGER_START ; FLANGER_START 215 SACL ; Write t o RINTR code 216 LACK SACL E f f e c t Effect4NotChosen 219 LACK SACL C h o s e n E f f e c t 221 LRLK AR0, line 1 ; Write t o d i s p l a y 222 LRLK AR1, flangerdata1 223 CALL WriteLine 224 LRLK AR0, line LRLK AR1, flangerdata2 226 CALL WriteLine 227 LRLK AR0, line LRLK AR1, flangerdata3 129

136 BILAG C. KILDEKODE 229 CALL WriteLine 230 LDPK LRLK AR0, l ine LRLK AR1, l ine LRLK AR2, l ine LAC FL_FRQ 235 CALL hex2dec 236 LRLK AR0, l ine LRLK AR1, l ine LRLK AR2, l ine LAC FL_DEPTH 240 CALL hex2dec 241 LRLK AR0, l ine LRLK AR1, l ine LRLK AR2, l ine LAC FL_MIX 245 CALL hex2dec 246 LRLK AR0, l ine LARP AR0 248 LDPK LACK 20h ; " " 250 SACL LACK 20h ; " " 252 SACL 253 LAC E f f e c t BZ E f f e c t 4 T u r n e d O f f 255 LACK 46h ; " F" 256 SACL LACK 6Ch ; " l " 258 SACL 259 E f f e c t 4 T u r n e d O f f 260 LALK FLANGER_SETUP 261 SACL s e t u p F u n c t i o n 262 CALA ; I n i t i a l i z e s i n u s / f l a n g e r 263 LDPK LACK 2 ; 3 p a r a m e t e r s 265 SACL numberofparameters 266 LACK 0 ; F ir s t parameter 267 SACL c h o s e n P a r a m e t e r 268 LALK line 3 +1 ; Where t o show chosen parameter 269 SACL d i s p l a y P a r a m e t e r 270 LAC flanger_maxvalue ; Max v a l u e o f p a r a m e t e r s 271 SACL maxvalue 272 LAC f l a n g e r _ m i n V a l u e ; Min v a l u e o f p a r a m e t e r s 273 SACL minvalue 274 LALK f l a n g e r P a r a m e t e r s ; P o i n t e r t o p a r a m e t e r s 275 SACL t h i s E f f e c t P a r a m e t e r s 276 SACL t h i s P a r a m e t e r 277 RET " EQ" b u t t o n BUTTON5 284 LACK 0F3h 285 SACL Usejog ; Enable jog wheel 286 LAC C h o s e n E f f e c t 287 SUBK 5 ; I f t h i s e f f e c t i s n o t shown on d i s p l a y 288 BNZ Effect5NotChosen ; t h e n branch 289 LRLK AR0, TableOfEffects LARP AR0 291 LAC 292 SBLK 5500h ; I f t h i s e f f e c t i s t u r n e d o f f 293 BZ TurnEffect5On ; t h e n Branch 294 LALK 5500h ; NOP 295 SACL + ; Write t o RINTR code 296 LALK 5500h ; NOP 297 SACL ; Write t o RINTR code 298 LACK SACL E f f e c t B Effect5NotChosen 301 TurnEffect5On 302 LALK 0FE80h ; CALL 303 SACL + ; Write t o RINTR code 304 LALK EQ ; EQ 305 SACL ; Write t o RINTR code 306 LACK SACL E f f e c t Effect5NotChosen 309 LACK SACL C h o s e n E f f e c t 311 LRLK AR0, l ine1 ; Write t o d i s p l a y 312 LRLK AR1, equalizerdata1 313 CALL WriteLine 314 LRLK AR0, l ine2 315 LRLK AR1, equalizerdata2 316 CALL WriteLine 130

137 C.3. BRUGERINTERFACE 317 LRLK AR0, line LRLK AR1, equalizerdata3 319 CALL WriteLine 320 LDPK LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC e q u a l i z e r P a r CALL hex2dec 326 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC e q u a l i z e r P a r CALL hex2dec 331 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC e q u a l i z e r P a r CALL hex2dec 336 LRLK AR0, line LRLK AR1, line LRLK AR2, line LAC e q u a l i z e r P a r CALL hex2dec 341 LRLK AR0, line LARP AR0 343 LDPK LACK 20h ; " " 345 SACL LACK 20h ; " " 347 SACL 348 LAC E f f e c t BZ E f f e c t 5 T u r n e d O f f 350 LACK 45h ; " E" 351 SACL LACK 71h ; " q " 353 SACL 354 E f f e c t 5 T u r n e d O f f 355 LALK EQSET 356 SACL s e t u p F u n c t i o n 357 CALA ; I n i t i a l i z e e q u a l i z e r 358 LDPK LACK 3 ; 4 p a r a m e t e r s 360 SACL numberofparameters 361 LACK 0 ; F i r s t parameter 362 SACL c h o s e n P a r a m e t e r 363 LALK l ine3 +1 ; Where t o show chosen parameter 364 SACL d i s p l a y P a r a m e t e r 365 LAC e q u a l i z e r _ m a x V al ue ; Max v a l u e o f p a r a m e t e r s 366 SACL maxvalue 367 LAC e q u a l i z e r _ m i n V a l u e ; Min v a l u e o f p a r a m e t e r s 368 SACL minvalue 369 LALK e q u a l i z e r P a r a m e t e r s ; P o i n t e r t o p a r a m e t e r s 370 SACL t h i s E f f e c t P a r a m e t e r s 371 SACL t h i s P a r a m e t e r 372 RET jog wheel p r e s s e d BUTTON6 ; Choose parameter 379 LAC Usejog 380 BNZ BUTTON6GO 381 RET 382 BUTTON6GO 383 LACK 20h ; " " 384 SACL l i n e 2 ; D e l e t e a l l " >" 385 SACL l ine SACL l ine SACL l i n e SACL l ine3 389 SACL l ine SACL l ine SACL l i n e LAC numberofparameters 393 SUB c h o s e n P a r a m e t e r ; I f not l a s t parameter 394 BGZ C h o o s e P a r a m e t ern or e s ta rt ; Then branch 395 LACK SACL c h o s e n P a r a m e t e r 397 C h o o s e P a r a m e te rn or e s ta rt 398 LAC c h o s e n P a r a m e t e r ; Choose t h e n e x t parameter 399 ADDK SACL c h o s e n P a r a m e t e r 401 ADD t h i s E f f e c t P a r a m e t e r s ; Create p o i n t e r 402 SACL t h i s P a r a m e t e r 403 LAC chosenparameter, ADDK 1 ; Create d i s p l a y p o i n t e r 131

138 BILAG C. KILDEKODE 405 ADLK line SACL d i s p l a y P a r a m e t e r 407 SUBK SACL temp1 409 ADDK SACL temp2 411 LACK 3Eh ; " >" 412 LARP AR0 413 LAR AR0, temp1 ; Write t o d i s p l a y 414 SACL 415 LAR AR0, temp2 416 SACL 417 RET jog wheel turned l e f t BUTTON7 ; jog wheel down 424 LAC Usejog 425 BNZ BUTTON7GO 426 RET 427 BUTTON7GO 428 LAR AR0, thisparameter 429 LARP AR0 430 LAC ; Read parameter 431 SUBK 1h ; Decrement parameter 432 SUB minvalue 433 BGEZ ParameterNotMin ; I f < minvalue 434 ZAC ; t h e n = minvalue 435 ParameterNotMin 436 ADD minvalue 437 SACL, 0, AR1 438 LAR AR0, displayparameter ; Write v a l u e t o d i s p l a y i n dec f o r m a t 439 LAR AR1, displayparameter 440 ADRK LAR AR2, displayparameter 442 LARP AR2 443 ADRK CALL hex2dec 445 LAC s e t u p F u n c t i o n ; Call update fun ct ion 446 CALA 447 RET jog wheel turned r i g ht BUTTON8 ; jog wheel up 454 LAC Usejog 455 BNZ BUTTON8GO 456 RET 457 BUTTON8GO 458 LAR AR0, thisparameter 459 LARP AR0 460 LAC ; Read parameter 461 ADDK 1h ; I n c r e m e n t parameter 462 SUB maxvalue 463 BLEZ ParameterNotMax ; I f > maxvalue 464 ZAC ; t h e n = maxvalue 465 ParameterNotMax 466 ADD maxvalue 467 SACL, 0, AR1 468 LAR AR0, displayparameter ; Write v a l u e t o d i s p l a y i n dec f o r m a t 469 LAR AR1, displayparameter 470 ADRK LAR AR2, displayparameter 472 LARP AR2 473 ADRK CALL hex2dec 475 LAC s e t u p F u n c t i o n ; Call update fun ct ion 476 CALA 477 RET Function to write a l i ne to the display ( in memory ) WriteLine 485 LARP AR1 486 CALL WriteChar 487 CALL WriteChar 488 CALL WriteChar 489 CALL WriteChar 490 CALL WriteChar 491 CALL WriteChar 492 CALL WriteChar 132

139 C.3. BRUGERINTERFACE 493 CALL WriteChar 494 CALL WriteChar 495 CALL WriteChar 496 CALL WriteChar 497 CALL WriteChar 498 CALL WriteChar 499 CALL WriteChar 500 CALL WriteChar 501 CALL WriteChar 502 B WriteOK 503 WriteChar 504 LAC +, 0, AR0 505 SACL +, 0, AR1 506 WriteOK 507 RET 133

140 BILAG C. KILDEKODE Programflowet af displayrutinen er illustreret på figur C.4. Displayinterrupt Hent det næste tegn Er slutningen nået? Start forfra Er det et tegn eller en instruktion Skriv instruktion til displayet Skriv tegnet til displayet IDLE Figur C.4: Programflow for displayrutinen. display.asm 1 ################################################################ 2 DISPLAY # 3 # 4 Used r e g i s t e r s : Acc, AR0, AR1 # 5 ################################################################ t e x t 9 INTR2 10 LDPK LRLK AR0, d i s p l a y p o i n t e r ; End o f t h e d i s p l a y 12 LARP AR0 ; 13 LAR AR1, ; Current p o i n t on t h e d i s p l a y 14 LARP AR1 15 LAC + 16 CMPR 0 17 BBZ D i s p l a y N o R e s t a r t 18 LRLK AR1, d i s p l a y d a t a 19 D i s p l a y N o R e s t a r t 20 SAR AR1, d i s p l a y p o i n t e r 21 BLEZ DisplayNotTex t 22 SACL temp 23 OUT temp, Display 24 EINT 25 RET 26 DisplayNotT ex t 27 ADLK d i s p l a y i n s t r u c t i o n s 28 SACL temp 29 LAR AR0, temp 30 LARP AR0 31 LAC 32 SACL temp 33 OUT temp, DisInst 34 EINT 35 RET 134

141 C.3. BRUGERINTERFACE Memory Parametre brugt af de overordnede rutiner og brugerinterface kan ses herunder. ui_data.asm 1 ######################################################### 2 Memory used by t h e u s e r i n t e r f a c e # 3 # 4 ######################################################### s e c t " u i d a t a " 8 Button. word 0h 9 10 r e v e r b P a r a m e t e r s. equ 6Eh ; P o i n t e r s t o p a r a m e t e r s 11 r e v e r b P a r 1. equ 6Eh 12 r e v e r b P a r 2. equ 6Fh 13 c h o r u s P a r a m e t e r s. equ 6Bh 14 c h o r u s P a r 1. equ 6Bh 15 c h o r u s P a r 2. equ 6Ch 16 c h o r u s P a r 3. equ 6Dh 17 e c h o P a r a m e t e r s. equ 65h 18 km_req. equ 65h 19 d e l a y _ r e q. equ 66h 20 kd_req. equ 67h 21 f l a n g e r P a r a m e t e r s. equ 68h 22 e q u a l i z e r P a r a m e t e r s. equ 61h 23 e q u a l i z e r P a r 1. equ 61h 24 e q u a l i z e r P a r 2. equ 62h 25 e q u a l i z e r P a r 3. equ 63h 26 e q u a l i z e r P a r 4. equ 64h th is E ffe c tp a ra me t er s. word 0FFF0h ; P o i n t e r s t o what t o change 29 t h i s P a r a m e t e r. word 0h displayparameter. word line 3 +1 ; Where on d i s p l a y t o w r i t e v a l u e reverb_maxvalue. word 63 ; Max and min v a l u e s o f p a r a m e t e r s 34 reverb_minvalue. word 0 35 chorus_maxvalue. word chorus_minvalue. word 0 37 echo_maxvalue. word echo_minvalue. word 0 39 flanger_maxvalue. word f l a n g e r _ m i n V a l u e. word 0 41 e q u a l i z e r _ m a x Va l ue. word e q u a l i z e r _ m i n V a l u e. word 0 43 maxvalue. word 0 44 minvalue. word C h o s e n E f f e c t. word 0h ; Which e f f e c t is shown 47 Usejog. word 0h ; I f 0 t h e n j o g has no e f f e c t numberofparameters. word 3h ; How many parameters t h i s e f f e c t has 50 c h o s e n P a r a m e t e r. word 0h ; Which parameter i s chosen (0 3) temp. word 0h ; Temporary v a l u e s 53 temp1. word 0h 54 temp2. word 0h s e t u p F u n c t i o n. word 0h ; To c a l l when a parameter has changed E f f e c t T a b l e ; 0= turned off, 1= turned on 59 E f f e c t 1. word 0h 60 E f f e c t 2. word 0h 61 E f f e c t 3. word 0h 62 E f f e c t 4. word 0h 63 E f f e c t 5. word 0h d i s p l a y i n i t 67. word 2, 2, 2, 2, 3, 4, 5, 6, 1 68 d i s p l a y d a t a 69 l i n e 1. word 20h, 2 0 h, 2 0 h, 2 0 h, 4 7 h, 5 5 h, 4 9 h, 4 6 h, 4 6 h, 4 5 h, 4 3 h, 5 4 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " GUIFFECT " 70 l i n e 3. word 20h, 2 0 h, 2 0 h, 4 7 h, 7 2 h, 7 5 h, 7 0 h, 7 0 h, 6 5 h, 2 0 h, 3 6 h, 3 4 h, 3 0 h, 2 0 h, 2 0 h, 2 0 h, 0 ; " Gruppe " 71 l i n e 2. word 20h, 2 0 h, 2 0 h, 2 0 h, 5 3 h, 4 2 h, 3 6 h, 2 0 h, 3 2 h, 3 0 h, 3 0 h, 3 4 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " SB " 72 l i n e 4. word 20h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 1 ; " " 73 d i s p l a y p o i n t e r. word d i s p l a y i n i t 74. word 10h ; Move c u r s o r word 06h ; S e t Entry Mode 5 135

142 BILAG C. KILDEKODE 76. word 01h ; Clear d i s p l a y word 0Ch ; Display On, Cursor Off, Blinking Off word 38h ; 8 bit, 2 lines, 5 x8 fo nt word 80h ; Move to l in e d i s p l a y i n s t r u c t i o n s 81. word 0C0h ; Move to l in e s e c t " d i s p l a y " 88 r e v e r b D a t a 1. word 20h, 5 2 h, 6 5 h, 7 6 h, 6 5 h, 7 2 h, 6 2 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " Reverb " 89 r e v e r b D a t a 2. word 3Eh, 2 0 h, 4 1 h, 2 0 h, 2 0 h, 2 0 h, 4 2 h, 2 0 h, 2 0 h, 2 0 h, 4 3 h, 2 0 h, 2 0 h, 2 0 h, 4 4 h, 2 0 h ; " > A B C D " 90 r e v e r b D a t a 3. word 3Eh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > " chorusdata1. word 20h, 4 3 h, 6 8 h, 6 Fh, 7 2 h, 7 5 h, 7 3 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " Chorus " 93 chorusdata2. word 3Eh, 2 0 h, 4 1 h, 2 0 h, 2 0 h, 2 0 h, 4 2 h, 2 0 h, 2 0 h, 2 0 h, 4 3 h, 2 0 h, 2 0 h, 2 0 h, 4 4 h, 2 0 h ; " > A B C D " 94 chorusdata3. word 3Eh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > " echodata1. word 20h, 4 5 h, 6 3 h, 6 8 h, 6 Fh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " Echo " 97 echodata2. word 3Eh, 4 Dh, 6 9 h, 7 8 h, 2 0 h, 4 4 h, 6 Ch, 7 9 h, 2 0 h, 4 4 h, 6 5 h, 6 3 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > Mix Dly Dec " 98 echodata3. word 3Eh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > " f l a n g e r D a t a 1. word 20h, 4 6 h, 6 Ch, 6 1 h, 6 Eh, 6 7 h, 6 5 h, 7 2 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " Flanger " 101 f l a n g e r D a t a 2. word 3Eh, 4 6 h, 7 2 h, 7 1 h, 2 0 h, 4 4 h, 6 5 h, 7 0 h, 2 0 h, 4 Dh, 6 9 h, 7 8 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > Frq Dep Mix " 102 f l a n g e r D a t a 3. word 3Eh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > " e q u a l i z e r D a t a 1. word 20h, 4 5 h, 7 1 h, 7 5 h, 6 1 h, 6 Ch, 6 9 h, 7 Ah, 6 5 h, 7 2 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " E q u a l i z e r " 105 e q u a l i z e r D a t a 2. word 3Eh, 2 0 h, 4 Ch, 5 0 h, 2 0 h, 4 2 h, 5 0 h, 3 1 h, 2 0 h, 4 2 h, 5 0 h, 3 2 h, 2 0 h, 2 0 h, 4 8 h, 5 0 h ; " > LP BP1 BP2 HP" 106 e q u a l i z e r D a t a 3. word 3Eh, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h, 2 0 h ; " > " C.4 Ekko- og delay Memory map Parameter Betegnelse Adresse Parameter Betegnelse Adresse Z-buffer start BUFZ_START 417Fh X-buffer start BUFX_START 60C0h z[n] TEMP_Z 580h x[n] WRX_PTR 581h x[n-d] RDX_PTR 582h z[n] WRZ_PTR 583h z[n-d] RDZ_PTR 584h X-buffer end BUFX_END 585h Z-buffer end BUFZ_END 586h Offsetværdi TMP_OFFSET 587h K M KM 588h K D KD 589h Delay, D DELAY 58Ah Tabel C.1: Memory map til ekko- og delay. Programflowet af rutinen er illustreret på figur C.5 på næste side. 136

143 M C.4. EKKO- OG DELAY Programflow S ta r t Hent z[n-d] og m u l ti p l i c er m ed K D A d d er x [n] og gem r es u l ta t s om y [n] A d d er x [n-d] og gem r es u l ta t s om z[n] O p d a ter p oi nter ; W R X + + O p d a ter p oi nter e; R DZ + +, W R Z + + og R DX + + P oi nter > D? j a j a P oi nter e > D? nej S æ t p oi nter ti l s ta r t a f b u f f er S æ t p oi nter e ti l s ta r t a f b u f f er nej R etu r ner f r a r u ti ne u l ti p l i c er z[n] m ed K M S l u t Figur C.5: Programflow ved afvikling af ekko- og delayrutine. echodelay.asm 1 ################################################################ 2 ECHO / DELAY # 3 D i f f e r e n c e e q u a t i o n s : z [ n ] = x [ n D] + Kd# z [ n D], # 4 y [ n ] = Km# z [ n ] + x [ n ] # 5 # 6 Used r e g i s t e r s : Acc, T, P, AR0, AR1, AR2, AR3, AR4, AR7 # 7 ################################################################ 8 9. i n c l u d e " e c h o d e l a y _ c o e f f i c i e n t s. asm " BUFZ_START. s et 417Fh ; Define delay bu ff er constants 417Fh 12 BUFX_START. s et 60C0h ; Define delay bu ff er constants 60c0h TEMP_Z. s et 580h 15 WRX_ptr. s e t 581h ; ( Read & w r i t e p o i n t e r s i n b u f f e r s X and Z ) 16 RDX_ptr. s et 582h ; 17 WRZ_ptr. s et 583h ; 18 RDZ_ptr. s et 584h ; 19 BUFX_END. s et 585h 20 BUFZ_END. s et 586h 21 TMP_OFFSET. s e t 587h ; Temporary o f f s e t v a l u e 22 KM. s e t 588h ; C o f f e c i e n t s f o r m u l t i p l i c a t i o n 23 KD. s et 589h ;KM = Mix, KD = decay, DELAY = delay : ) 24 DELAY. s et 58Ah ; t e x t I n i t i a l i z a t i o n r o u t i n e f o r echo

144 BILAG C. KILDEKODE 32 ECHO_INIT 33 ZAC ; Clear b u f f e r s 34 RTC 35 LRLK AR7,417 Fh 36 LRLK AR0, 7 FFFh 37 LARP AR7 38 RESET_BUF 39 SACL + 40 CMPR 0 ; AR7 = AR0, i. e. end o f b u f f e r 41 BBZ RESET_BUF 42 RTC 43 RET R o u t i n e t o s e t up p o i n t e r s and c o e f f i c i e n t s 48 f o r echo ECHO_SETUP 51 LDPK LALK COEF_KD ; F i r s t a d d r e s s o f c o e f f i c i e n t array 53 LDPK 0 54 ADD kd_req ; Requested o f f s e t 55 LRLK AR0, TMP_OFFSET 56 la rp AR0 57 SACL 58 LAR AR1,, AR1 ; Load AR1 w i t h a d d r e s s 59 LAC, AR0 60 LDPK SACL KD ; S t o r e s e l e c t e d c o e f f i c i e n t LALK COEF_KM ; F i r s t a d d r e s s o f c o e f f i c i e n t array 64 LDPK 0 65 ADD km_req ; Requested o f f s e t 66 LRLK AR0, TMP_OFFSET 67 LARP AR0 68 SACL 69 LAR AR1,, AR1 ; Load AR1 w i t h a d d r e s s 70 LAC, AR0 71 LDPK SACL KM ; S t o r e s e l e c t e d c o e f f i c i e n t LALK COEF_DELAY ; F i r s t a d d r e s s o f c o e f f i c i e n t array 75 LDPK 0 76 ADD d e l a y _ r e q ; Requested o f f s e t 77 LRLK AR0, TMP_OFFSET 78 LARP AR0 79 SACL 80 LAR AR1,, AR1 ; Load AR1 w i t h a d d r e s s 81 LAC, AR0 82 LDPK SACL DELAY ; S t o r e s e l e c t e d c o e f f i c i e n t LACK BUFX_START ; ( B u f f e r i n i t i a l i z i n g ) 86 ADD DELAY 87 SACL WRX_ptr 88 SACL BUFX_END 89 LACK BUFX_START 90 SACL RDX_ptr 91 LACK BUFZ_START 92 ADD DELAY 93 SACL WRZ_ptr 94 SACL BUFZ_END 95 LACK BUFZ_START 96 SACL RDZ_ptr 97 ZAC 98 RTC 99 RET Main echo r o u t i n e ECHO 106 LDPK LAR AR1, WRX_ptr ; ( Load pointer lo c at io ns ) 108 LAR AR2, RDX_ptr 109 LAR AR3, WRZ_ptr 110 LAR AR4, RDZ_ptr 111 ZAC 112 LARP AR4 113 LT + ;RDZ MPY KD ;Kd z [ n D] 115 LARP AR2 116 ADDH +,AR3 ; Acc. High = RDX, RDX APAC ; z [ n]=x [ n D]+Kd z [ n D] 118 SACH + ;WRZ SACH TEMP_Z 138

145 C.4. EKKO- OG DELAY 120 ; Pointer maintance, wrap p oint er s to 121 LAR AR0, BUFZ_END ; s t a r t o f b u f f e r s i f n e c e s s a r y 122 CMPR 2 ; I f AR3>AR0 >BUFZ_END then TC=1 123 BBZ OK_WRZ,, AR4 ; R e s e t WRZ r o u t i n e 124 LRLK AR3, BUFZ_START 125 RTC 126 OK_WRZ 127 CMPR 2 ; I f AR4>AR0 >BUFZ_END then TC=1 128 BBZ OK_RDZ,, AR2 ; R e s e t RDZ r o u t i n e 129 LRLK AR4, BUFZ_START 130 RTC 131 OK_RDZ 132 LAR AR0,BUFX_END 133 CMPR 2 ; I f AR2>AR0 >BUFX_END then TC=1 134 BBZ OK_RDX,, AR1 ; R e s e t RDX r o u t i n e 135 LRLK AR2, BUFX_START 136 RTC 137 OK_RDX 138 ZAC 139 LDPK ADDH DATA ; Acc. high = x [ n ], NB:60 h = S i g n a l r e g i s t e r 141 SACH + ;WRX LDPK LT TEMP_Z 144 MPY KM 145 APAC ; y [ n]= x [ n]+km z [ n ] 146 LDPK SACH DATA ; Output from echo / d e l a y r o u t i n e 148 CMPR 2 ; I f AR1>AR0 >BUFX_END then TC=1 149 BBZ OK_WRX 150 LRLK AR1, BUFX_START 151 RTC 152 OK_WRX 153 LDPK SAR AR1, WRX_ptr ; ( Save pointer l oc a ti on s for next run ) 155 SAR AR2, RDX_ptr 156 SAR AR3, WRZ_ptr 157 SAR AR4, RDZ_ptr 158 RET ; Return from ISR echodelay_coefficients.asm 1 ################################################################ 2 ECHO COEFFICIENTS # 3 # 4 ################################################################ 5. d a t a 6 7 DECAY COEFFICIENTS 8 COEF_KD. word 512,1024,1536,2048,2560,3072,3584, word 4608,5120,5632,6144,6656,7168,7680, word 8704,9216,9728,10240,10752,11264,11776, word 12800,13312,13824,14336,14848,15360,15872, word 16896,17408,17920,18432,18944,19456,19968, word 20992,21504,22016,22528,23040,23552,24064, word 25088,25600,26112,26624,27136,27648,28160, word 29184,29696,30208,30720,31232,31744,32256, MIXER COEFFICIENTS 18 COEF_KM. word 512,1024,1536,2048,2560,3072,3584, word 4608,5120,5632,6144,6656,7168,7680, word 8704,9216,9728,10240,10752,11264,11776, word 12800,13312,13824,14336,14848,15360,15872, word 16896,17408,17920,18432,18944,19456,19968, word 20992,21504,22016,22528,23040,23552,24064, word 25088,25600,26112,26624,27136,27648,28160, word 29184,29696,30208,30720,31232,31744,32256, DELAY COEFFICIENTS 28 COEF_DELAY. word 125,250,375,500,625,750,875, word 1125,1250,1375,1500,1625,1750,1875, word 2125,2250,2375,2500,2625,2750,2875, word 3125,3250,3375,3500,3625,3750,3875, word 4125,4250,4375,4500,4625,4750,4875, word 5125,5250,5375,5500,5625,5750,5875, word 6125,6250,6375,6500,6625,6750,6875, word 7125,7250,7375,7500,7625,7750,7875,

146 BILAG C. KILDEKODE C.5 Flanger Memory map Parameter Betegnelse Adresse Parameter Betegnelse Adresse sin(ω 0 t) FSIN 0300h Buffer start BUFFER 0200h y sin [n] FSIN1 0301h In-pointer FL_PT 0307h y sin [n 1] FSIN2 0302h Flanger coef. A FL_CA 0308h f 0 coef. FFRQ 0303h Flanger coef. D FL_CD 0309h a (sinus) SIN_CA 0304h Delay High Word FL_DH 030Ah Interpolation count. ICNT_A 0305h Delay low word FL_DLA 030Bh 1-ICNT_A ICNT_B 0306h 1 - FL_DLA FL_DLB 030Ch Temp. storage TEMP 030Dh Temp. storage TEMP1 030Eh Tabel C.2: Memory map til flanger Programflowet af rutinen er illustreret på figur C.6 på modstående side. 140

147 C.5. FLANGER Programflow S tart j a K napper æ ndret? B ereg n adresser på x [ n- c eil ( d[ n] ) ] o g x [ n- f l o o r( d[ n] ) ] H ent ny e k o ef f ic ienter; a, b, f 0, D nej B ereg n x [ n- d[ n] ] v h a. interpo l atio n Opdater sinus A dder x [ n] G em x [ n] i b uf f er G em so m y [ n] B ereg n d[ n], c eil ( d[ n], f l o o r( d[ n] ) R eturner f ra rutine S l ut Figur C.6: Programflow ved afvikling af flanger-rutine. 141

148 BILAG C. KILDEKODE flanger.asm 1 ######################################################### 2 FLANGER & SINUS # 3 # 4 Used r e g i s t e r s : Acc, T, P, AR0, AR1, AR7 # 5 ######################################################### 6 7. i n c l u d e " f l a n g e r _ c o e f f i c i e n t s. asm " 8 9 GLOBAL VARIABLES 10 FL_FRQ. equ 0068h ; [0 63] 11 FL_DEPTH. equ 0069h ; [0 63] 12 FL_MIX. equ 006Ah ; [0 63] SINUS VARIABLES 16 FSIN. equ 0300h ; S i n u s i n t e r p o l a t e d o u t p u t 17 FSIN1. equ 0301h ; Sinus y [ n ] 18 FSIN2. equ 0302h ; Sinus y [ n 1] 19 FFRQ. equ 0303h ; Sin coef. number 20 SIN_CA. equ 0304h ; Sin coef. A 21 ICNT_A. equ 0305h ; S i n i n t e r p o l a t i o n c o u n t e r A 22 ICNT_B. equ 0306h ; S i n i n t e r p o l a t i o n c o u n t e r B FLANGER VARIABLES 26 BUFFER. equ 0200h ; B u f f e r s t a r t addr. ( page 4, B0 ) 27 BLEN. equ 00A0h ; Buffer length ( 1 60 words ) 28 FL_PT. equ 0307h ; Flanger bu ff er pointer 29 FL_CA. equ 0308h ; Flanger coef. A 30 FL_CD. equ 0309h ; Flanger coef. D 31 FL_DH. equ 030Ah ; f l o o r ( d [ n ] ) 32 FL_DLA. equ 030Bh ; d [ n ] f l o o r ( d [ n ] ) 33 FL_DLB. equ 030Ch ; c e i l ( d [ n ] ) d [ n ] TEMP. equ 030Dh 36 TEMP1. equ 030Eh t e x t FLANGER SETUP ROUTINE 42 FLANGER_SETUP 43 CALL SIN_SETUP 44 CALL FL_SETUP 45 RET FLANGER ROUTINE 49 FLANGER_START 50 CALL SINUS 51 CALL FLANGER 52 RET I n i t i a l i z a t i o n r o u t i n e f o r f l a n g e r and s i n u s FLANGER_INIT 60 LARP AR7 ; Clear page 4 7 ( B0 ) 61 LRLK AR7, BUFFER 62 LALK 0 63 RPTK SACL + 65 RPTK SACL + 67 RPTK SACL + 69 RPTK SACL + 71 RET R o u t i n e t o s e t up p o i n t e r s and c o e f f i c i e n t s 76 f o r s i n u s SIN_SETUP 79 LARP AR0 80 LRLK AR0, TEMP 81 LALK SIN_COEF ; Calc. addr. of sinus coef LDPK 0 84 ADD FL_FRQ, 1 ; Add o f f s e t

149 C.5. FLANGER 86 SACL ; Store coef. address in TEMP 87 LAR AR1,, AR1 ; Load AR1 with coef. address ( TEMP) LAC + ; Load ACC with coef. A 90 LDPK 6 91 SACL SIN_CA ; Store coef. A 92 LAC ; Load ACC with coef. B 93 SACL FSIN1 ; Store coef. B 94 LACK 0 95 SACL FSIN LALK 07FFFh ; I n i t i a l i z e s i n i n t e r p o l a t i o n c o u n t e r 98 SACL ICNT_A 99 RET R o u t i n e t o s e t up p o i n t e r s and c o e f f i c i e n t s 104 f o r f l a n g e r FL_SETUP 107 LDPK 6 ; ( I n i t i a l i z e f l a n g e r b u f f e r p o i n t e r ) 108 LALK BUFFER 109 SACL FL_PT LARP AR0 112 LRLK AR0, FL_DEPTH 113 LT MPYK 0A28h ; Make 0 63 to PAC 116 SACH FL_CD, 4 ; I n i t i a l i z e f l a n g e r c o e f. D 117 LAC,9 118 SACL FL_CA ; I n i t i a l i z e f l a n g e r c o e f. A 119 RET S i n u s g e n e r a t o r SINUS 127 MPY 0 ; ( Calc. i n t e r p o l a t i o n c o e f. ) 128 LDPK LACK 7FFFh 130 SUB ICNT_A ; ICNT_B = 1 ICNT_A 131 SACL ICNT_B ; S t o r e new ICNT_B ZAC ; ( I n te r p o la t e : FSIN = ICNT_A FSIN2 + ICNT_B FSIN1 ) 134 LT ICNT_A 135 MPY FSIN2 136 LTA ICNT_B 137 MPY FSIN1 138 APAC 139 SACH FSIN ; S t o r e new o u t p u t ( FSIN ) LACL ICNT_A ; ( Decrement ICNT_A and check for underflow ) 142 SUBK 32h 143 SACL ICNT_A 144 BGZ SIN_END ; I f no underflow, end f unc tio n UPD_SIN1 147 MPYK 0 ; ( Calc. new FSIN1, FSIN2 ) 148 LAC FSIN1 149 SACL TEMP 150 ZAC 151 SUBH FSIN2 152 LT SIN_CA 153 MPY FSIN1 154 MPYA FSIN1 155 APAC 156 SACH FSIN1 157 LAC TEMP 158 SACL FSIN LACK 7FFFh ; ( Reload ICNT_A ) 161 SACL ICNT_A 162 SIN_END RET Flanger r o u t i n e FLANGER 170 LDPK 6 ; ( Update flanger b uf fe r pointer ) 171 LAR AR7, FL_PT 172 LARP AR7 173 ADRK 1 143

150 BILAG C. KILDEKODE 174 LRLK AR0, BUFFER+BLEN CMPR 2 ; Check p o i n t e r ( AR7 > AR0? ) f o r o v e r f l o w 176 BBZ FLAN ; I f not, skip pointer reload 177 LRLK AR7, BUFFER ; Reload p o i n t e r FLAN SAR AR7, FL_PT 180 LDPK LAC DATA 182 SACL ; Store DATA in bu ff e r ZAC ; ( Calc. FL_DH, FL_DLA, FL_DLB ) 185 LDPK LT FSIN 187 MPY FL_CD 188 APAC 189 ADDH FL_CD 190 SACH FL_DH ; FL_DH = FL_CD (1+FSIN ) ( High word ) SFR 193 ANDK 07FFFh 194 SACL FL_DLA ; I n t e r p o l a t i o n c o e f. A 195 LALK 07FFFh 196 SUB FL_DLA 197 SACL FL_DLB ; I n t e r p o l a t i o n c o e f. B SAR AR7, TEMP ; ( Calc. a d d r e s s o f x [ n f l o o r ( d [ n ] ) ] and x [ n c e i l ( d [ n ] ) ] ) 200 LAC TEMP 201 SUB FL_DH 202 SBLK BUFFER 203 BGEZ FLAN2 204 ADLK BLEN ; Add BLEN i f address out of range 205 FLAN2 ADLK BUFFER 206 SACL TEMP ; S t o r e a d d r e s s o f x [ n f l o o r ( d [ n ] ) ] i n TEMP 207 SUBK SBLK BUFFER 209 BGEZ FLAN3 210 ADLK BLEN ; Add BLEN i f address out of range 211 FLAN3 ADLK BUFFER 212 SACL TEMP1 ; S t o r e a d d r e s s o f x [ n c e i l ( d [ n ] ) ] i n TEMP LARP AR0 ; ( I n t e r p o l a t e x [ n f l o o r ( d [ n ] ) ] and x [ n c e i l ( d [ n ] ) ] ) 215 LAR AR0, TEMP1 216 ZAC 217 LT FL_DLA 218 MPY ; M u l t i p l y x [ n c e i l ( d [ n ] ) ] ( d [ n ] f l o o r ( d [ n ] ) ) 219 LAR AR0, TEMP 220 LTA FL_DLB 221 MPY ; M u l t i p l y x [ n f l o o r ( d [ n ] ) ] ( c e i l ( d [ n ] ) d [ n ] ) 222 APAC SACH TEMP ; Store x [ n d [ n ] ] 225 ZAC 226 LT FL_CA 227 MPY TEMP ; Multiply a x [ n d [ n ] ] 228 APAC LARP AR7 ; Add x [ n ] 231 ADDH LDPK SACH DATA ; S t o r e Output RET flanger_coefficients.asm 1 ################################################################ 2 FLANGER COEFFICIENTS # 3 # 4 ################################################################ 5. d a t a 6 7 SIN_COEF. word 32735, 1019, 32731, 1068, 32728, 1121, 32724, word 32720, 1233, 32715, 1292, 32710, 1355, 32704, word 32698, 1490, 32691, 1563, 32683, 1638, 32675, word 32666, 1802, 32656, 1890, 32645, 1982, 32632, word 32619, 2179, 32604, 2285, 32588, 2397, 32570, word 32550, 2635, 32529, 2763, 32505, 2897, 32479, word 32450, 3185, 32419, 3340, 32384, 3502, 32346, word 32304, 3850, 32258, 4036, 32207, 4231, 32151, word 32090, 4651, 32022, 4876, 31948, 5111, 31867, word 31777, 5616, 31679, 5888, 31571, 6171, 31452, word 31321, 6778, 31177, 7102, 31019, 7442, 30846, word 30655, 8169, 30445, 8558, 30215, 8963, 29963, word 29685, 9831, 29380, 10293, 29046, 10776, 28678,

151 C.6. RUMKLANG 20. word , , , , , , , word , , , , , , , word , , , , , , , C.6 Rumklang Memory map Parameter Betegnelse Adresse Parameter Betegnelse Adresse a COEK_A 0480h b 1 PLAIN_COEF_B1 048Dh In-pointer IN_PTR1 0481h b 2 PLAIN_COEF_B2 048Eh Out-pointer OUT_PTR1 0482h b 3 PLAIN_COEF_B3 048Fh In-pointer IN_PTR2 0483h b 4 PLAIN_COEF_B4 0490h Out-pointer OUT_PTR2 0484h Temp. storage RE_TEMP1 0491h In-pointer IN_PTR3 0485h Temp. storage RE_TEMP2 0492h Out-pointer OUT_PTR3 0486h S PLAIN XN_SCALE 0493h In-pointer IN_PTR4 0487h Plain 1 buffer BUF_START1 2500h Out-pointer OUT_PTR4 0488h Plain 2 buffer BUF_START2 2700h In-pointer IN_PTR5 0489h Plain 3 buffer BUF_START3 2A00h Out-pointer OUT_PTR5 048Ah Plain 4 buffer BUF_START4 2C00h In-pointer IN_PTR6 048Bh Allpass 1 buffer BUF_START5 3080h Out-pointer IN_PTR6 048Ch Allpass 2 buffer BUF_START6 3300h Tabel C.3: Memory map til rumklang Programflowet af rutinen er illustreret på figur C.7 på næste side. 145

152 BILAG C. KILDEKODE Programflow S tart Hent adr. på a G em I A R 3 A l l pas s 1 : i o u i G i A R Hent n/ t- po ntere em adr. P l ai n 1 : Hent x [ n] S c al é r x [ n] G em i R E _ T E M P 1 Hent i n/ o u t- po i ntere G em adr. i A R y [ D ] A R 1 + M u l i c é m ( A R 3 ) Hent n- ti pl r ed a A ddé r res u l tat m ed A c c. G em i R E _ T E M P 2 Hent b 1, m u l ti - pl i c é r b 1 m ed A c c. G em i D A T A R E _ T E M P 2 G A R 2 + Hent em på adr. G i ( A R 1 + A R 2 ) em ny e po ntere y [ D ] A R 1 + M u l i c é m ( A R 3 ) Hent n- ti pl r ed a x [ M u l i c é m ( A R 3 ) Hent n] ti pl r ed a S u b s trah é r f ra A c c G em i R E _ T E M P 2 Hent o u t- po i nter A ddé r del ay Hent x [ n- D ] A ddé r ti l A c c. i i G y [ i b u f f o g D A T A Hent n- po nter em n] er A ddé r del ay G em x [ n] i b u f f er] P o i ntere > D? j a j a P o i ntere > D? nej S æ t po i ntere ti l s tart af b u f f er S æ t po i ntere ti l s tart af b u f f er nej A l l pas s 2 P l ai n 2-4 S l u t Figur C.7: Programflow ved afvikling af rumklang-rutine. reverb.asm 1 2 REVERB 3 D i f f e r e n c e e q u a t i o n s : P l a i n s e c t i o n s : y [ n ]= x [ n ] + a # y [ n D] 4 A l l p a s s e c t i o n s : y [ n]= ax [ n ] + x [ n D] + a# y [ n D] 5 6 Used r e g i s t e r s : Acc, T, P, AR0, AR1, AR2, AR3, AR ; C o e f f i c i e n t s f o r p l a i n s e c t i o n s 10 COEFK_A. equ ; a = COEF_A. equ 480h ; L o c a t i o n o f COEF_A ; P l a i n # 1 ( PAGE 8 ) 146

153 C.6. RUMKLANG 14 IN_PTR1. equ 481h ; L o c a t i o n o f IN p o i n t e r 15 OUT_PTR1. equ 482h ; L o c a t i o n o f OUT p o i n t e r 16 IN_PTR2. equ 483h ; L o c a t i o n o f IN p o i n t e r 17 OUT_PTR2. equ 484h ; L o c a t i o n o f OUT p o i n t e r 18 IN_PTR3. equ 485h ; L o c a t i o n o f IN p o i n t e r 19 OUT_PTR3. equ 486h ; L o c a t i o n o f OUT p o i n t e r 20 IN_PTR4. equ 487h ; L o c a t i o n o f IN p o i n t e r 21 OUT_PTR4. equ 488h ; L o c a t i o n o f OUT p o i n t e r 22 IN_PTR5. equ 489h ; L o c a t i o n o f IN p o i n t e r 23 OUT_PTR5. equ 48Ah ; L o c a t i o n o f OUT p o i n t e r 24 IN_PTR6. equ 48Bh ; L o c a t i o n o f IN p o i n t e r 25 OUT_PTR6. equ 48Ch ; L o c a t i o n o f OUT p o i n t e r 26 PLAIN_COEF_B1. equ 48Dh ; L o c a t i o n o f PLAIN_COEF_B 27 PLAIN_COEF_B2. equ 48Eh ; L o c a t i o n o f PLAIN_COEF_B 28 PLAIN_COEF_B3. equ 48Fh ; L o c a t i o n o f PLAIN_COEF_B 29 PLAIN_COEF_B4. equ 490h ; L o c a t i o n o f PLAIN_COEF_B BUF1_START. equ 2500h ; Location of bu ff er 32 BUF2_START. equ 2700h ; Location of bu ff er 33 BUF3_START. equ 2A00h ; Location of bu ff er 34 BUF4_START. equ 2C00h ; Location of bu ff er 35 BUF5_START. equ 3080h ; Location of bu ff er 36 BUF6_START. equ 3300h ; 3500 ; Location of bu ff er COEF_B1. equ 9633 ; b1 = COEF_B2. equ 8670 ; b2 = COEF_B3. equ 7707 ; b3 = COEF_B4. equ 6743 ; b4 = DELAY1. equ 145 ; D e f i n e d e l a y l e n g h t 44 DELAY2. equ 185 ; D e f i n e d e l a y l e n g h t 45 DELAY3. equ 220 ; D e f i n e d e l a y l e n g h t 46 DELAY4. equ 250 ; D e f i n e d e l a y l e n g h t ALL_DELAY1. equ 135 ; Define al lp as s delay lenght 49 ALL_DELAY2. equ 155 ; Define al lp as s delay lenght RE_TEMP1. equ 491h 52 RE_TEMP2. equ 492h XN_SCALE. equ 493h 55 SCALE. equ ; x [ n ] s c a l i n g f a c t o r ( ) t e x t I n i t i a l i z a t i o n r o u t i n e f o r r e v e r b e r a t i o n REVERB_INIT 65 LARP AR0 ; Reset b uf fe r memory 66 LRLK AR0,2500 h ; S ta r t at 2500 h 67 LALK 0 68 RPTK 255 ; Repeat t i m e s 69 SACL + 70 ; Reset b uf fe r memory 71 LRLK AR0,2600 h ; S ta r t at 25FFh 72 LALK 0 73 RPTK 255 ; Repeat t i m e s 74 SACL + 75 ; Reset b uf fe r memory 76 LRLK AR0,2700 h ; S ta r t at 26FEh 77 LALK 0 78 RPTK 255 ; Repeat t i m e s 79 SACL + 80 ; Reset b uf fe r memory 81 LRLK AR0,2800 h ; S ta r t at 27FDh 82 LALK 0 83 RPTK 255 ; Repeat t i m e s 84 SACL + 85 ; Reset b uf fe r memory 86 LRLK AR0,2900 h ; S ta r t at 28FCh 87 LALK 0 88 RPTK 255 ; Repeat t i m e s 89 SACL + 90 ; Reset b uf fe r memory 91 LRLK AR0, 2 A00h ; S ta r t at 29FBh 92 LALK 0 93 RPTK 255 ; Repeat t i m e s 94 SACL + 95 ; Reset b uf fe r memory 96 LRLK AR0, 2 B00h ; S ta r t at 29FBh 97 LALK 0 98 RPTK 255 ; Repeat t i m e s 99 SACL ; Reset b uf fe r memory 101 LRLK AR0, 2 C00h ; S ta r t at 29FBh 147

154 BILAG C. KILDEKODE 102 LALK RPTK 255 ; Repeat 25 6 times 104 SACL LRLK AR0,2900 h ; St ar t at 28FCh 107 LALK RPTK 255 ; Repeat 25 6 times 109 SACL ; Reset bu ff er memory 111 LRLK AR0, 2 D00h ; St ar t at 29FBh 112 LALK RPTK 255 ; Repeat 25 6 times 114 SACL ; Reset bu ff er memory 116 LRLK AR0, 2 E00h ; St ar t at 29FBh 117 LALK RPTK 255 ; Repeat 25 6 times 119 SACL ; Reset bu ff er memory 121 LRLK AR0, 2 E00h ; St ar t at 29FBh 122 LALK RPTK 255 ; Repeat 25 6 times 124 SACL LRLK AR0, 2 F00h ; St ar t at 28FCh 127 LALK RPTK 255 ; Repeat 25 6 times 129 SACL ; Reset bu ff er memory 131 LRLK AR0,3000 h ; St ar t at 29FBh 132 LALK RPTK 255 ; Repeat 25 6 times 134 SACL ; Reset bu ff er memory 136 LRLK AR0,3100 h ; St ar t at 29FBh 137 LALK RPTK 255 ; Repeat 25 6 times 139 SACL ; Reset bu ff er memory 141 LRLK AR0,3200 h ; St ar t at 29FBh 142 LALK RPTK 255 ; Repeat 25 6 times 144 SACL LRLK AR0,3300 h ; St ar t at 29FBh 147 LALK RPTK 255 ; Repeat 25 6 times 149 SACL LRLK AR0,3400 h ; St ar t at 29FBh 152 LALK RPTK 255 ; Repeat 25 6 times 154 SACL LRLK AR0,3500 h ; St ar t at 29FBh 157 LALK RPTK 255 ; Repeat 25 6 times 159 SACL LDPK LALK SCALE 163 SACL XN_SCALE ; P l a c e s COEF_B i n d a t a s p a c e 164 P l a i n LALK COEF_B1 166 SACL PLAIN_COEF_B1 ; P l a c e s COEF_B i n d a t a s p a c e 167 LALK BUF1_START 168 SACL IN_PTR1 ; IN_PTR1 = BUF1_START 169 ADDK SACL OUT_PTR1 ; OUT_PTR1 = 1 + IN_PTR1 171 P l a i n # LALK COEF_B2 173 SACL PLAIN_COEF_B2 ; P l a c e s COEF_B i n d a t a s p a c e 174 LALK BUF2_START 175 SACL IN_PTR2 ; IN_PTR2 = BUF2_START 176 ADDK SACL OUT_PTR2 ; OUT_PTR2 = 1 + IN_PTR2 178 P l a i n # LALK COEF_B3 180 SACL PLAIN_COEF_B3 ; P l a c e s COEF_B i n d a t a s p a c e 181 LALK BUF3_START 182 SACL IN_PTR3 ; IN_PTR3 = BUF3_START 183 ADDK SACL OUT_PTR3 ; OUT_PTR3 = 1 + IN_PTR P l a i n # LALK COEF_B4 188 SACL PLAIN_COEF_B4 ; P l a c e s COEF_B i n d a t a s p a c e 189 LALK BUF4_START 148

155 C.6. RUMKLANG 190 SACL IN_PTR4 ; IN_PTR4 = BUF4_START 191 ADDK SACL OUT_PTR4 ; OUT_PTR4 = 1 + IN_PTR A l l p a s s LALK BUF5_START 196 SACL IN_PTR5 ; IN_PTR5 = BUF5_START 197 ADDK SACL OUT_PTR5 ; OUT_PTR5 = 1 + IN_PTR5 199 A l l p a s s LALK BUF6_START 201 SACL IN_PTR6 ; IN_PTR6 = BUF6_START 202 ADDK SACL OUT_PTR6 ; OUT_PTR6 = 1 + IN_PTR RET Plain se c tio n #1 209 Difference equation : y [ n ]= x [ n ] + a y [ n D] REVERB 212 LDPK LALK COEFK_A 214 SACL COEF_A ; P l a c e s COEF_A i n d a t a s p a c e 215 LRLK AR3, COEF_A ; Save COEF_A i AR3 216 LDPK LRLK AR1,DATA 218 LARP AR1 219 LT ; M u l t i p l y DATA w i t h XN_SCALE 220 LDPK LRLK AR1, XN_SCALE 222 MPY 223 ZAC 224 APAC ; Put scaled x [ n ] int o Acc. 225 SACH RE_TEMP1 ; Save x [ n ] to RE_TEMP 226 PLAIN1 LAR AR1, OUT_PTR1 227 LARP AR1 ; Load out pointer ( Pointing on y [ n ] from l a s t run ) 228 LAR AR2, IN_PTR1 ; Load in pointer ( pointing on y [ n 1] from l a s t run ) 229 LT +,AR3 ; Load y [ n D] i nto T re gis t er, point on AR3 230 MPY ; Multiply a y [ n D], point on AR2 231 APAC ; Add Product r e g i s t e r s t o Acc 232 SACH RE_TEMP2 ; Save Acc i n RE_TEMP2 233 LT RE_TEMP2 ; Load RE_TEMP2 t i l T r e g i s t e r 234 LRLK AR4, PLAIN_COEF_B1 ; Load B t o AR4 235 LARP AR4 236 MPY ; M u l t i p l y T w i t h B 237 ZAC 238 APAC 239 LDPK SACH DATA ; Save in DATA ( b y [ n ] ) 241 LDPK LAC RE_TEMP2 243 LARP AR2 244 SACL +,0, AR1 ; Save y [ n ] t o b u f f e r SAR AR1, OUT_PTR1 ; Save current OUT pointer p os it io n 247 SAR AR2, IN_PTR1 ; Save current IN pointer p o s it io n 248 LALK BUF1_START ; Check po int er s for overrun 249 ADLK DELAY1 250 SACL RE_TEMP2 251 LAR AR0, RE_TEMP2 ; AR0 = BUF1_START + DELAY1 252 CMPR 0 ; IF AR1 = AR0 : OUT_PTR1 = BUF1_START 253 BBZ SKIP_OUT_PTR1 254 LALK BUF1_START 255 SACL OUT_PTR SKIP_OUT_PTR1 258 LARP AR2 259 CMPR 0 ; IF AR2 = AR0 : IN_PTR1 = BUF1_START 260 BBZ SKIP_IN_PTR1 261 LALK BUF1_START 262 SACL IN_PTR1 263 SKIP_IN_PTR1 ;B SKIP_IN_PTR Plain se c tio n #2 267 Difference equation : y [ n ]= x [ n ] + a y [ n D] PLAIN2 LAC RE_TEMP1, 16 ; Load DATA to Acc. high 271 LAR AR1, OUT_PTR2 272 LARP AR1 ; Load out pointer ( Pointing on y [ n ] from l a s t run ) 273 LAR AR2, IN_PTR2 ; Load in pointer ( pointing on y [ n 1] from l a s t run ) 274 LT +,AR3 ; Load y [ n D] i nto T re gis t er, point on AR3 275 MPY ; Multiply a y [ n D], point on AR2 276 APAC ; Add Product r e g i s t e r s t o Acc 277 SACH RE_TEMP2 ; Save Acc i n RE_TEMP2 149

156 BILAG C. KILDEKODE 278 LT RE_TEMP2 ; Load RE_TEMP2 t i l T r e g i s t e r 279 LRLK AR4, PLAIN_COEF_B2 ; Load B t o AR4 280 LARP AR4 281 MPY ; M u l t i p l y T w i t h B 282 ZAC 283 APAC 284 LDPK ADDH DATA ; Add P l a i n # 2 t i l DATA 286 SACH DATA ; Save in DATA ( b y [ n ] ) 287 LDPK LAC RE_TEMP2 289 LARP AR2 290 SACL +,0,AR1 ; Save y [ n ] t o b u f f e r SAR AR1, OUT_PTR2 ; Save current OUT pointer po s i ti on 293 SAR AR2, IN_PTR2 ; Save current IN pointer po s i ti o n 294 LALK BUF2_START ; Check poin te rs for overrun 295 ADLK DELAY2 296 SACL RE_TEMP2 297 LAR AR0, RE_TEMP2 ; AR0 = BUF2_START + DELAY2 298 CMPR 0 ; IF AR1 = AR0 : OUT_PTR2 = BUF2_START 299 BBZ SKIP_OUT_PTR2 300 LALK BUF2_START 301 SACL OUT_PTR SKIP_OUT_PTR2 304 LARP AR2 305 CMPR 0 ; IF AR2 = AR0 : IN_PTR2 = BUF2_START 306 BBZ SKIP_IN_PTR2 307 LALK BUF2_START 308 SACL IN_PTR2 309 SKIP_IN_PTR Plain s e ct ion #3 313 D i f f e r e n c e e q u a t i o n : y [ n ]= x [ n ] + a y [ n D] PLAIN3 LAC RE_TEMP1, 16 ; Load DATA to Acc. high 317 LAR AR1, OUT_PTR3 318 LARP AR1 ; Load out pointer ( Pointing on y [ n ] from l a s t run ) 319 LAR AR2, IN_PTR3 ; Load in pointer ( pointing on y [ n 1] from l a s t run ) 320 LT +,AR3 ; Load y [ n D] int o T r eg is te r, point on AR3 321 MPY ; Multiply a y [ n D], point on AR2 322 APAC ; Add Product r e g i s t e r s t o Acc 323 SACH RE_TEMP2 ; Save Acc i n RE_TEMP2 324 LT RE_TEMP2 ; Load RE_TEMP2 t i l T r e g i s t e r 325 LRLK AR4, PLAIN_COEF_B3 ; Load B t o AR4 326 LARP AR4 327 MPY ; M u l t i p l y T w i t h B 328 ZAC 329 APAC 330 LDPK ADDH DATA ; Add P l a i n # 3 t i l DATA 332 SACH DATA ; Save in DATA ( b y [ n ] ) 333 LDPK LAC RE_TEMP2 335 LARP AR2 336 SACL +,0,AR1 ; Save y [ n ] t o b u f f e r SAR AR1, OUT_PTR3 ; Save current OUT pointer po s i ti on 339 SAR AR2, IN_PTR3 ; Save current IN pointer po s i ti o n 340 LALK BUF3_START ; Check poin te rs for overrun 341 ADLK DELAY3 342 SACL RE_TEMP2 343 LAR AR0, RE_TEMP2 ; AR0 = BUF3_START + DELAY3 344 CMPR 0 ; IF AR1 = AR0 : OUT_PTR3 = BUF3_START 345 BBZ SKIP_OUT_PTR3 346 LALK BUF3_START 347 SACL OUT_PTR SKIP_OUT_PTR3 350 LARP AR2 351 CMPR 0 ; IF AR2 = AR0 : IN_PTR3 = BUF3_START 352 BBZ SKIP_IN_PTR3 353 LALK BUF3_START 354 SACL IN_PTR3 355 SKIP_IN_PTR Plain s e ct ion #4 359 D i f f e r e n c e e q u a t i o n : y [ n ]= x [ n ] + a y [ n D] PLAIN4 LAC RE_TEMP1, 16 ; Load DATA to Acc. high 363 LAR AR1, OUT_PTR4 364 LARP AR1 ; Load out pointer ( Pointing on y [ n ] from l a s t run ) 365 LAR AR2, IN_PTR4 ; Load in pointer ( pointing on y [ n 1] from l a s t run ) 150

157 C.6. RUMKLANG 366 LT +,AR3 ; Load y [ n D] i nto T re gis t er, point on AR3 367 MPY ; Multiply a y [ n D], point on AR2 368 APAC ; Add Product r e g i s t e r s t o Acc 369 SACH RE_TEMP2 ; Save Acc i n RE_TEMP2 370 LT RE_TEMP2 ; Load RE_TEMP2 t i l T r e g i s t e r 371 LRLK AR4, PLAIN_COEF_B4 ; Load B t o AR4 372 LARP AR4 373 MPY ; M u l t i p l y T w i t h B 374 ZAC 375 APAC 376 LDPK ADDH DATA ; Add P l a i n # 4 t i l DATA 378 SACH DATA ; Save in DATA ( b y [ n ] ) 379 LDPK LAC RE_TEMP2 381 LARP AR2 382 SACL +,0, AR1 ; Save y [ n ] t o b u f f e r SAR AR1, OUT_PTR4 ; Save current OUT pointer p os it io n 385 SAR AR2, IN_PTR4 ; Save current IN pointer p o s it io n 386 LALK BUF4_START ; Check po int er s for overrun 387 ADLK DELAY4 388 SACL RE_TEMP2 389 LAR AR0, RE_TEMP2 ; AR0 = BUF4_START + DELAY4 390 CMPR 0 ; IF AR1 = AR0 : OUT_PTR4 = BUF4_START 391 BBZ SKIP_OUT_PTR4 392 LALK BUF4_START 393 SACL OUT_PTR SKIP_OUT_PTR4 396 LARP AR2 397 CMPR 0 ; IF AR2 = AR0 : IN_PTR4= BUF4_START 398 BBZ SKIP_IN_PTR4 399 LALK BUF4_START 400 SACL IN_PTR4 401 SKIP_IN_PTR A l l p a s s s e c t i o n # Difference equation : y [ n ]= a y [ n D] a x [ n ] + x [ n D] ALLPASS1; a y [ n D] 409 LAR AR1, OUT_PTR5 ; ( PAGE 9 ) 410 LARP AR1 ; Load out pointer ( Pointing on y [ n D ] from l a s t run ) 411 LAR AR2, IN_PTR5 ; Load in pointer ( pointing on y [ n ] from l a s t run ) 412 LT +,AR3 ; Load AR1++ ( y [ n D] ) i nto T re gi st er, point on AR3 = coef_ a 413 MPY ; Multiply a y [ n D] 414 ZAC 415 APAC ; C a l c u l a t e accumulator + p r o d u c t r e g i s t e r s ( ax [ n ] + a y [ n D ] ) 416 SACH RE_TEMP ; a x [ n ] 419 LDPK LT DATA ; Load s i g n a l t o T r e g i s t e r ( x [ n ] ) 421 MPY, AR2 ; Multiply a x [ n ] and s et AR2 pointer 422 LDPK LAC RE_TEMP2, 16 ; Load RE_TEMP2 to Acc. high 424 SPAC ; Load high P r e g i s t e r t o accumulator 425 SACH RE_TEMP ; + x [ n D] 428 LAC OUT_PTR5 429 ADDK ALL_DELAY1 ; Add d e l a y 430 SACL RE_TEMP1 ; Save new p o i n t e r i n RE_TEMP1 431 LAR AR4, RE_TEMP1 ; Load x [ n D] 432 LARP AR4 433 LAC RE_TEMP2 434 ADD, 0, AR2 ; Add x [ n D ] to accumulation ( ax [ n ] + x [ n D] + a y [ n D ] ), point on AR2 435 SACL RE_TEMP2 ; Save new y [ n ] in RE_TEMP ; Update bu ff er with x [ n ] and y [ n ] 438 SACL +,0, AR4 ; Save y [ n ] to buffer, point on AR4 439 LAC IN_PTR5 ; Calculate x [ n ] IN pointer 440 ADLK ALL_DELAY1 ; Add d e l a y 441 SACL RE_TEMP1 ; Save x [ n ] IN pointer 442 LAR AR4, RE_TEMP1 ; Load t o AR4 443 LDPK ZAC 445 ADDH DATA ; Load s i g n a l t o acc 446 SACH ; Save x [ n ] i n b u f f e r 447 LDPK LAC RE_TEMP2 449 LDPK SACL DATA ; Send new y [ n ] to DAC ; Update p o i n t e r 453 LDPK 9 151

158 BILAG C. KILDEKODE 454 SAR AR1, OUT_PTR5 ; Save current OUT pointer po s i ti on 455 SAR AR2, IN_PTR5 ; Save current IN pointer po s i ti o n 456 LALK BUF5_START ; Check poin te rs for overrun 457 ADLK ALL_DELAY1 458 SACL RE_TEMP2 459 LAR AR0, RE_TEMP2 ; AR0 = BUF5_START + ALL_DELAY1 460 LARP AR1 461 CMPR 0 ; IF AR1 = AR0 : OUT_PTR5 = BUF5_START 462 BBZ SKIP_OUT_PTR5 463 LALK BUF5_START 464 SACL OUT_PTR SKIP_OUT_PTR5 467 LARP AR2 468 CMPR 0 ; IF AR2 = AR0 : IN_PTR5 = BUF5_START 469 BBZ SKIP_IN_PTR5 470 LALK BUF5_START 471 SACL IN_PTR5 472 SKIP_IN_PTR Allpass s ec ti on # D i f f e r e n c e e q u a t i o n : y [ n ]= a y [ n D] a x [ n ] + x [ n D] ALLPASS2; a y [ n D] 480 LAR AR1, OUT_PTR6 ; ( PAGE 9 ) 481 LARP AR1 ; Load out pointer ( Pointing on y [ n D] from l a s t run ) 482 LAR AR2, IN_PTR6 ; Load in pointer ( pointing on y [ n ] from l a s t run ) 483 LT +,AR3 ; Load AR1++ ( y [ n D] ) in to T r eg is te r, point on AR3 = coef_ a 484 MPY ; Multiply a y [ n D] 485 ZAC 486 APAC ; C a l c u l a t e accumulator + p r o d u c t r e g i s t e r s ( ax [ n ] + a y [ n D ] ) 487 SACH RE_TEMP ; a x [ n ] 490 LDPK LT DATA ; Load s i g n a l t o T r e g i s t e r ( x [ n ] ) 492 MPY, AR2 ; Multiply a x [ n ] and s e t AR2 pointer 493 LDPK LAC RE_TEMP2, 16 ; Load RE_TEMP2 to Acc. high 495 SPAC ; Load high P r e g i s t e r t o accumulator 496 SACH RE_TEMP ; + x [ n D] 499 LAC OUT_PTR6 500 ADLK ALL_DELAY2 ; Add d e l a y 501 SACL RE_TEMP1 ; Save new p o i n t e r i n RE_TEMP1 502 LAR AR4, RE_TEMP1 ; Load x [ n D] 503 LARP AR4 504 LAC RE_TEMP2 505 ADD, 0, AR2 ; Add x [ n D] to accumulation ( ax [ n ] + x [ n D] + a y [ n D ] ), point on AR2 506 SACL RE_TEMP2 ; Save new y [ n ] in RE_TEMP ; Update b u f f e r w i t h x [ n ] and y [ n ] 509 SACL +,0,AR4 ; Save y [ n ] to buffer, point on AR4 510 LAC IN_PTR6 ; Calculate x [ n ] IN pointer 511 ADLK ALL_DELAY2 ; Add d e l a y 512 SACL RE_TEMP1 ; Save x [ n ] IN pointer 513 LAR AR4, RE_TEMP1 ; Load t o AR4 514 LDPK ZAC 516 ADDH DATA ; Load s i g n a l t o acc 517 SACH ; Save x [ n ] i n b u f f e r 518 LDPK LAC RE_TEMP2 520 LDPK SACL DATA ; Send new y [ n ] to DAC ; Update p o i n t e r 524 LDPK SAR AR1, OUT_PTR6 ; Save current OUT pointer po s i ti on 526 SAR AR2, IN_PTR6 ; Save current IN pointer po s i ti o n 527 LALK BUF6_START ; Check poin te rs for overrun 528 ADLK ALL_DELAY2 529 SACL RE_TEMP2 530 LAR AR0, RE_TEMP2 ; AR0 = BUF6_START + ALL_DELAY2 531 LARP AR1 532 CMPR 0 ; IF AR1 = AR0 : OUT_PTR6 = BUF6_START 533 BBZ SKIP_OUT_PTR6 534 LALK BUF6_START 535 SACL OUT_PTR SKIP_OUT_PTR6 538 LARP AR2 539 CMPR 0 ; IF AR2 = AR0 : IN_PTR6 = BUF6_START 540 BBZ SKIP_IN_PTR6 541 LALK BUF6_START 152

159 m m m C.7. EQUALIZER 542 SACL IN_PTR6 543 SKIP_IN_PTR6 544 RET C.7 Equalizer Konverter signal, x [ n] til Q 1 4 M u ltip lic er b L,1 ed x [ n- 1 ] og gem i A C C M u ltip lic er b L,0 ed x [ n], ad d er resu ltat til A C C G x [ x [ 1 ] em n] som n- M u ltip lic er a L,1 ed y L [ n- 1 ]. A d d er resu ltat til A C C G A C C [ em som y L n] R etu rner f ra ru tine Slut Figur C.8: Flowdiagram for lav-sektionen. De øvrige sektioner har overordnet samme struktur. Dette flowdiagram fungerer ikke selvstændigt da y L [n 1] ikke gemmes. Dette skyldes, at båndsektion 1 også benytter y L [n 1], hvorfor værdien først opdateres i båndsektion 1. Parameter Betegnelse Adresse Parameter Betegnelse Adresse Lav level LLEV 61h Eq-temp EQTEMP 5ADh Bånd 1 level B1LEV 62h b L,1 BL1 5AEh Bånd 2 level B2LEV 63h b L,0 BL0 5AFh Høj level HLEV 64h a L,1 AL1 5B0h x[n] X0 5A0 b B1,2 BB12 5B1h x[n 1] X1 5A1 b B1,1 BB11 5B2h y L [n] YL0 5A2 b B1,0 BB10 5B3h y L [n 1] YL1 5A3 a B1,2 AB12 5B4h y L [n 2] YL2 5A4 a B1,1 AB11 5B5h y B1 [n] YB10 5A5 b B2,2 BB22 5B6h y B1 [n 1] YB11 5A6 b B2,1 BB21 5B7h y B1 [n 2] YB12 5A7 b B2,0 BB20 5B8h y B2 [n 1] YB21 5A8 a B2,2 AB22 5B9h y B2 [n 2] YB22 5A9 a B2,1 AB21 5BAh x H [n] XH0 5AA b H,1 BH1 5BBh x H [n 1] XH1 5AB b H,0 BH0 5BCh y H [n 1] YH1 5AC a H,1 AH1 5BDh Tabel C.4: Memory map for equalizerens data og koefficienter. eq.asm 153

160 BILAG C. KILDEKODE S ta rt Reset memory S k ri v 5 i 6 1 h h f or a t i n d sti l l e f l a d k a ra k teri sti k E Q S E T Figur C.9: Flowdiagram for EQINI. Programmet initialiserer equalizeren. H en t lav-i n d s t i lli n g i 6 1 h, 0 H en t b å n d 1 - i n d s t i lli n g i 6 2 h, 0 H en t b å n d 2 - i n d s t i lli n g i 6 3 h, 0 H en t h ø j -i n d s t i lli n g i 6 4 h, 0 R et u r n er Gem lavk o ef f i c i en t er i 5 A E h -5 B 0 h Gem b å n d 1 - k o ef f i c i en t er i 5 B 1 h -5 B 5 h Gem b å n d 2 - k o ef f i c i en t er i 5 B 6 h -5 B A h Gem h ø j - k o ef f i c i en t er i 5 B B h -5 B D h Slut Figur C.10: Flowdiagram for EQSET. Programmet henter koefficienter der svarer til indstillingen specificeret i 61h-64h. 1 ################################################################ 2 EQUALIZER # 3 # 4 Used r e g i s t e r s : Acc, T, P, AR0 # 5 ################################################################ 6 7 LLEV. equ 61h ; Low s e t t i n g 8 B1LEV. equ 62h ; Band1 s e t t i n g 9 B2LEV. equ 63h ; Band2 s e t t i n g 10 HLEV. equ 64h ; High s e t t i n g 11 X0. equ 5A0h ; x [ n ] 12 X1. equ 5A1h ; x [ n 1] 13 YL0. equ 5A2h ; yl [ n ] 14 YL1. equ 5A3h ; yl [ n 1] 15 YL2. equ 5A4h ; yl [ n 1] 16 YB10. equ 5A5h ; yb1 [ n ] 17 YB11. equ 5A6h ; yb1 [ n 1] 18 YB12. equ 5A7h ; yb1 [ n 2] 19 YB21. equ 5A8h ; yb2 [ n 1] 20 YB22. equ 5A9h ; yb2 [ n 2] 21 XH0. equ 5AAh ;xh[ n ] 22 XH1. equ 5ABh ;xh[ n 1] 23 YH1. equ 5ACh ;yh[ n 1] 24 EQTEMP. equ 5ADh 25 BL1. equ 5AEh 26 BL0. equ 5AFh 27 AL1. equ 5B0h 28 BB12. equ 5B1h 29 BB11. equ 5B2h 30 BB10. equ 5B3h 31 AB12. equ 5B4h 32 AB11. equ 5B5h 33 BB22. equ 5B6h 34 BB21. equ 5B7h 35 BB20. equ 5B8h 36 AB22. equ 5B9h 37 AB21. equ 5BAh 38 BH1. equ 5BBh 39 BH0. equ 5BCh 40 AH1. equ 5BDh i n c l u d e e q _ c o e f f i c i e n t s. asm 45. t e x t I n i t i a l i z a t i o n r o u t i n e f o r e q u a l i z e r EQINI LARP AR0 ; R e s e t memory 52 LRLK AR0,0580 h 53 LALK 0 54 RPTK

161 C.7. EQUALIZER 55 SACL LACK 5 ; P r e s e t f o r f l a t c h a r a c t e r i s t i c 58 LDPK 0 59 SACL LLEV 60 SACL B1LEV 61 SACL B2LEV 62 SACL HLEV R o u t i n e t o s e t up p o i n t e r s and c o e f f i c i e n t s 66 for equ aliz e r EQSET LDPK 0 ; Page 0 69 LALK l c o e ; Save l o c a t i o n o f low c o e f f i c i n e n t e r i n ACC 70 RPTK 2 ; M u l t i p l y s e t t i n g by 3 and add t o ACC 71 ADD LLEV 72 LDPK 11 ; Page SACL EQTEMP ; Save a d d r e s s e i n AR0 74 LAR AR0,EQTEMP ; 75 LARP AR0 ;AR p o i n t e r on AR0 76 LAC + ; Save low c o e f f i c i e n t s i n 2 Eh 30h 77 SACL BL1 ; blp1 78 LAC + 79 SACL BL0 ; blp0 80 LAC 81 SACL AL1 ; alp LDPK 0 ; Page 0 84 LALK b1coe ; Save l o c a t i o n o f band1 c o e f f i c i e n t s i n ACC 85 RPTK 4 ; M u l t i p l y s e t t i n g by 5 and add t o ACC 86 ADD B1LEV 87 LDPK 11 ; Page SACL EQTEMP ; Save a d d r e s s i n AR0 89 LAR AR0,EQTEMP ; 90 LARP AR0 ;AR p o i n t e r on AR0 91 LAC + ; Save band1 c o e f f i c i e n t s i n 3 1 h 35h 92 SACL BB12 ; bbp12 93 LAC + 94 SACL BB11 ; bbp11 95 LAC + 96 SACL BB10 ; bbp10 97 LAC + 98 SACL AB12 ; abp12 99 LAC 100 SACL AB11 ; abp LDPK 0 ; Page LALK b2coe ; Save l o c a t i o n o f band2 c o e f f i c i e n t s i n ACC 104 RPTK 4 ; M u l t i p l y s e t t i n g by 5 and add t o ACC 105 ADD B2LEV 106 LDPK 11 ; Page SACL EQTEMP ; Save a d d r e s s i n AR0 108 LAR AR0,EQTEMP ; 109 LARP AR0 ;AR p o i n t e r on AR0 110 LAC + ; Save band2 c o e f f i c i e n t s i n 3 6 h 3Ah 111 SACL BB22 ; bbp LAC SACL BB21 ; bbp LAC SACL BB20 ; bbp LAC SACL AB22 ; abp LAC 119 SACL AB21 ; abp LDPK 0 ; Page LALK hcoe ; Save l o c a t i o n o f high c o e f f i c i e n t s i n ACC 123 RPTK 2 ; M u l t i p l y s e t t i n g by 3 and add t o ACC 124 ADD HLEV 125 LDPK 11 ; Page SACL EQTEMP ; Save a d d r e s s i n AR0 127 LAR AR0,EQTEMP ; 128 LARP AR0 ;AR p o i n t e r on AR0 129 LAC + ; Save hp c o e f f i c i e n t s i n 3 Bh 3Dh 130 SACL BH1 ; bhp1 131 LAC SACL BH0 ; bhp0 133 LAC 134 SACL AH1 ; ahp RET Main equ aliz er routine

162 BILAG C. KILDEKODE 143 LOW FILTER 144 EQ LDPK 0 ; Page LAC DATA, 1 5 ; Load s i g n a l and c o n v e r t t o Q LDPK 11 ; Page SACH X0 ; Save s i g n a l i n X0 148 ZAC ; R e s e t ACC 149 LT X1 ; Save x [ n 1] in T reg 150 MPY BL1 ; blp1 x [ n 1] 151 LTD X0 ; Add res to ACC, Save x [ n ] in T reg and X1 152 MPY BL0 ; blp0 x [ n ] 153 LTA YL1 ; Add res to ACC, Save ylp [ n 1] in T reg 154 MPY AL1 ; alp1 y l p [ n 1] 155 APAC ; Add r e s t o ACC 156 SACH YL0, 1 ; Save ylp [ n ] in YL BAND1 FILTER 159 ZAC ; R e s e t ACC 160 LT YL2 ; Save y l p [ n 2] i n T reg 161 MPY BB12 ; bbp12 y l p [ n 2] 162 LTD YL1 ; Add res to ACC, Save ylp [ n 1] in T reg and YL2 163 MPY BB11 ; bbp11 y l p [ n 1] 164 LTD YL0 ; Add res to ACC, Save ylp [ n ] in T reg and YL1 165 MPY BB10 ; bbp10 y l p [ n ] 166 LTA YB12 ; Add res to ACC, Save ybp1 [ n 2] in T reg 167 MPY AB12 ; abp12 ybp1 [ n 2] 168 LTA YB11 ; Add res to ACC, Save ybp1 [ n 1] in T reg 169 MPY AB11 ; abp11 ybp1 [ n 1] 170 APAC ; Add r e s t o ACC 171 SACH YB10, 1 ; Save ybp1 [ n ] in YB BAND2 FILTER 174 ZAC ; R e s e t ACC 175 LT YB12 ; Save ybp1 [ n 2] i n T reg 176 MPY BB22 ; bbp22 ybp1 [ n 2] 177 LTD YB11 ; Add res to ACC, Save ybp1 [ n 1] in T reg and YB MPY BB21 ; bbp21 ybp1 [ n 1] 179 LTD YB10 ; Add res to ACC, Save ybp1 [ n ] in T reg and YB MPY BB20 ; bbp20 ybp1 [ n ] 181 LTA YB22 ; Add res to ACC, Save ybp2 [ n 2] in T reg 182 MPY AB22 ; abp22 ybp2 [ n 2] 183 LTD YB21 ; Add res to ACC, Save ybp2 [ n 1] in T reg and YB MPY AB21 ; abp21 ybp2 [ n 1] 185 APAC ; Add r e s t o ACC 186 SACH XH0, 1 ; Save ybp2 [ n ] in XH0 187 SACH YB21, HIGH FILTER 190 LAC XH0, 1 5 ; Save xh [ n ] in XH0 in Q SACH XH0 ; 192 ZAC ; R e s e t ACC 193 LT XH1 ; Save xhp [ n 1] in T reg 194 MPY BH1 ; bhp1 ybp2 [ n 1] 195 LTD XH0 ; Add res to ACC, Save xhp [ n ] in T reg and XH1 196 MPY BH0 ; bhp0 xhp [ n ] 197 LTA YH1 ; Add res to ACC, Save yhp [ n 1] in T reg 198 MPY AH1 ; ahp1 yhp [ n 1] 199 APAC ; Add r e s t o ACC 200 SACH YH1, 2 ; Save yhp [ n ] in YH1 201 LDPK 0 ; Page SACH DATA, 4 ; Save signal in 60 h in Q RET eq_coefficients.asm 1 ################################################################ 2 EQUALIZER COEFFICIENTS # 3 # 4 ################################################################ 5. d a t a 6 7 l c o e. word 14640,15166, word 15037,15578, word 15331,15883, word 15546,16106, word 15703,16267, word 15815,16384, word 15698,16501, word 15532,16667, word 15298,16901, word 14967,17232, word 14500,17699, b1coe. word 11797, 24902,13182, 8595, word 12677, 26760,14165, 10458, word 13384, 28252,14955, 11955,

163 C.8. MATLABPROGRAMMER 22. word 13934, 29413,15570, 13120, word 14351, 30294,16036, 14004, word 14662, 30951,16384, 14662, word 14307, 30951,16739, 14662, word 13806, 30951,17241, 14662, word 13097, 30951,17949, 14662, word 12096, 30951,18950, 14662, word 10683, 30951,20364, 14662, b2coe. word 5782, 14053,8983,1619, word 6887, 16739,10700, 1202, word 7964, 19359,12374, 3954, word 8956, 21770,13916, 6488, word 9823, 23876,15262, 8701, word 10545, 25631,16384, 10545, word 9340, 25631,17588, 10545, word 7639, 25631,19290, 10545, word 5236, 25631,21693, 10545, word 1841, 25631,25088, 10545, word 2954, 25631,29882, 10545, hcoe. word 610,2048, word 831,2792, word 1118,3758, word 1481,4978, word 1923,6462, word 2438,8192, word 4631,10385, word 7728,13482, word 12103,17857, word 18282,24036, word 27012,32766,2438 C.8 Matlabprogrammer tremolo_niveauer.m 1 c l o s e a l l 2 c l e a r 3 c l c 4 5 trekpeak =10; 6 n =4; 7 sinpeak = trekpeak 2/ pi ; 8 v i = 0 :. 0 1 : t r e k p e a k ; 9 vo= s i n p e a k s i n ( 1 / s i n p e a k v i ) ; 10 vom=cos ( 1 / s i n p e a k v i ) ; 11 vomspring =. 5 / n : 1 / n : 1 12 viknak = s i n p e a k acos ( vomspring ) 13 voknak= s i n p e a k sin ( 1 / s i n p e a k viknak ) knak = [ 3. 1, 5. 0, 5. 8, 6. 3 ] ; 16 viknak =.1 round (10 sinpeak a s i n ( 1 / sinpeak knak ) ) 17 o ( 1 ) =( knak ( 1 ) 0) / ( s i n p e a k a s i n ( 1 / s i n p e a k knak ( 1 ) ) s i n p e a k a s i n ( 1 / s i n p e a k 0) ) ; 18 o ( 2 ) =( knak ( 2 ) knak ( 1 ) ) / ( s i n p e a k a s i n ( 1 / s i n p e a k knak ( 2 ) ) s i n p e a k a s i n ( 1 / s i n p e a k knak ( 1 ) ) ) ; 19 o ( 3 ) =( knak ( 3 ) knak ( 2 ) ) / ( s i n p e a k a s i n ( 1 / s i n p e a k knak ( 3 ) ) s i n p e a k a s i n ( 1 / s i n p e a k knak ( 2 ) ) ) ; 20 o ( 4 ) =( knak ( 4 ) knak ( 3 ) ) / ( s i n p e a k a s i n ( 1 / s i n p e a k knak ( 4 ) ) s i n p e a k a s i n ( 1 / s i n p e a k knak ( 3 ) ) ) Ri =10; 23 f o r i = 1 : 4 24 Rp ( i ) =Ri o ( i ) /(1 o ( i ) ) 25 i f i >1 26 R( i ) =Rp ( i ) Rp ( i 1) / ( Rp ( i 1) Rp ( i ) ) 27 e l s e 28 R( i ) =Rp ( i ) 29 end 30 end voapp =[ o ( 1 ) [ 0 :. 0 1 : viknak ( 1 ) ], o ( 2 ) [ viknak ( 1 ) :. 0 1 : viknak ( 2 ) ] , o ( 3 ) [ viknak ( 2 ) :. 0 1 : viknak ( 3 ) ] , o ( 4 ) [ viknak ( 3 ) :. 0 1 : viknak ( 4 ) ] , 0 [ viknak ( 4 ) :. 0 1 : 1 0 ] ] ; 34 p l o t ( vi, voapp, b l a c k ) 35 hold on 36 p l o t ( vi, vo, : b l a c k ) 37 a x i s o f f 38 %a x i s square 39 l 1 = l i n e ( [ 0, 1 1 ], [ 0, 0 ] ) ; 40 l 2 = l i n e ( [ 0, 0 ], [ 0, 7 ] ) ; 41 l 3 = l i n e ( [ , 1 1 ], [. 1, 0 ] ) ; 42 l 4 = l i n e ( [ , 1 1 ], [. 1, 0 ] ) ; 43 l 5 = l i n e ( [ 0,. 2 ], [ 7, 6. 8 ] ) ; 44 l 6 = l i n e ( [ 0,. 2 ], [ 7, 6. 8 ] ) ; 157

164 BILAG C. KILDEKODE 45 f o r i =[ l 1 l 2 l 3 l 4 l 5 l 6 ] 46 s e t ( i, c o l o r, b l a c k ) 47 end 48 t e x t ( 1 0,. 2 5, v _ i, f o n t s i z e, 1 2 ) 49 t e x t (. 1, 6. 5, v_o, f o n t s i z e, 1 2 ) % cd.. 52 % cd f i g s 53 % p r in t deps tremolo_ sinus_ jdyr eq_analogmodel.m 1 c l o s e a l l 2 c l e a r 3 c l c 4 5 w=2 pi logspace ( log10 ( 2 0 ), log10 ( ),1000) ; 6 Td =1/16000; 7 8 wbp10=2 pi 200; 9 QBP1= s q r t ( 2 ) / 2 ; 10 GBP1 = [ 0, 1 0. ^ ( ( 3 : 3 : 1 5 ) / 2 0 ) 1]; 11 f o r i =1:6 12 Hbp1T ( i, : ) = [ 1, ( GBP1( i ) +1) wbp10 / QBP1, wbp10 ^ 2 ] ; 13 Hbp1N ( i, : ) =[1, wbp10 / QBP1, wbp10 ^ 2 ] ; 14 Hbp1B ( i ) = t f ( Hbp1T ( i, : ), Hbp1N ( i, : ) ) ; 15 Hbp1C ( i ) = t f ( Hbp1N ( i, : ), Hbp1T ( i, : ) ) ; 16 Dbp1B ( i ) =c2d ( Hbp1B ( i ), Td, prewarp, ) ; 17 Dbp1C ( i ) =c2d ( Hbp1C ( i ), Td, prewarp, ) ; 18 [ numbp1b( i ) denbp1b ( i ) ]= t f d a t a ( Dbp1B ( i ) ) ; 19 conumbp1b( i, : ) = c e l l 2 m a t ( numbp1b( i ) ) ; 20 codenbp1b ( i, : ) = c e l l 2 m a t ( denbp1b ( i ) ) ; 21 [ numbp1c( i ) denbp1c ( i ) ]= t f d a t a ( Dbp1C ( i ) ) ; 22 [Hbp1MagB Hbp1PhaseB]= bode ( Hbp1T ( i, : ),Hbp1N ( i, : ),w) ; 23 [Hbp1MagC Hbp1PhaseC]= bode (Hbp1N ( i, : ), Hbp1T ( i, : ),w) ; 24 semilogx (w,20 log10 (Hbp1MagB ), black ) 25 hold on 26 semilogx (w,20 log10 (Hbp1MagC ), black ) 27 end wbp20=2 pi 800; 30 QBP2= s q r t ( 2 ) / 2 ; 31 GBP2 = [ 0, 1 0. ^ ( ( 3 : 3 : 1 5 ) / 2 0 ) 1]; 32 f o r i =1:6 33 Hbp2T ( i, : ) = [ 1, ( GBP2( i ) +1) wbp20 / QBP2, wbp20 ^ 2 ] ; 34 Hbp2N ( i, : ) =[1, wbp20 / QBP2, wbp20 ^ 2 ] ; 35 Hbp2B ( i ) = t f ( Hbp2T ( i, : ), Hbp2N ( i, : ) ) ; 36 Hbp2C ( i ) = t f ( Hbp2N ( i, : ), Hbp2T ( i, : ) ) ; 37 Dbp2B ( i ) =c2d ( Hbp2B ( i ), Td, prewarp, ) ; 38 Dbp2C ( i ) =c2d ( Hbp2C ( i ), Td, prewarp, ) ; 39 [ numbp2b( i ) denbp2b ( i ) ]= t f d a t a ( Dbp2B ( i ) ) ; 40 [ numbp2c( i ) denbp2c ( i ) ]= t f d a t a ( Dbp2C ( i ) ) ; 41 [Hbp2MagB Hbp2PhaseB]= bode ( Hbp2T ( i, : ),Hbp2N ( i, : ),w) ; 42 [Hbp2MagC Hbp2PhaseC]= bode (Hbp2N ( i, : ), Hbp2T ( i, : ),w) ; 43 semilogx (w,20 log10 (Hbp2MagB ), black ) 44 semilogx (w,20 log10 (Hbp2MagC ), black ) 45 end wlp0=2 pi 90; 48 GLP = [ 0, 1 0. ^ ( ( 3 : 3 : 1 5 ) / 2 0 ) 1]; 49 f o r i =1:6 50 HlpT ( i, : ) =[1, wlp0 (1+GLP( i ) ) ] ; 51 HlpN ( i, : ) =[1, wlp0 ] ; 52 HlpB ( i ) = t f ( HlpT ( i, : ), HlpN ( i, : ) ) ; 53 HlpC ( i ) = t f ( HlpN ( i, : ), HlpT ( i, : ) ) ; 54 DlpB ( i ) =c2d ( HlpB ( i ), Td, prewarp, 9 0 ) ; 55 DlpC ( i ) =c2d ( HlpC ( i ), Td, prewarp, 9 0 ) ; 56 [ numlpb ( i ) denlpb ( i ) ]= t f d a t a ( DlpB ( i ) ) ; 57 [ numlpc ( i ) denlpc ( i ) ]= t f d a t a ( DlpC ( i ) ) ; 58 [ HlpMagB HlpPhaseB ]= bode ( HlpT ( i, : ), HlpN ( i, : ),w) ; 59 [ HlpMagC HlpPhaseC ]= bode ( HlpN ( i, : ), HlpT ( i, : ),w) ; 60 semilogx (w,20 log10 ( HlpMagB ), b l a c k ) 61 semilogx (w,20 log10 ( HlpMagC ), b l a c k ) 62 end whp0=2 pi 2750; 65 GHP= [ 0, 1 0. ^ ( ( 3 : 3 : 1 5 ) / 2 0 ) 1]; 66 f o r i =1:6 67 HhpT( i, : ) = [ (GHP( i ) +1),wHP0 ] ; 68 HhpN( i, : ) =[1,wHP0 ] ; 69 HhpB ( i ) = t f (HhpT ( i, : ),HhpN( i, : ) ) ; 70 HhpC ( i ) = t f (HhpN( i, : ), HhpT ( i, : ) ) ; 71 DhpB ( i ) =c2d ( HhpB ( i ), Td, prewarp,2750) ; 72 DhpC ( i ) =c2d ( HhpC ( i ), Td, prewarp,2750) ; 73 [ numhpb ( i ) denhpb ( i ) ]= t f d a t a (DhpB ( i ) ) ; 158

165 C.8. MATLABPROGRAMMER 74 [ numhpc ( i ) denhpc ( i ) ]= t f d a t a (DhpC ( i ) ) ; 75 [HhpMagB HhpPhaseB ]= bode ( HhpT ( i, : ),HhpN( i, : ),w) ; 76 [HhpMagC HhpPhaseC ]= bode (HhpN( i, : ), HhpT ( i, : ),w) ; 77 semilogx (w,20 log10 (HhpMagB), black ) 78 semilogx (w,20 log10 (HhpMagC), black ) 79 end 80 a x i s ([2 pi 20,2 pi 8000, 17,17]) 81 s e t ( gca, x t i c k,[2 pi 20,2 pi 200,2 pi 2000]) 82 s e t ( gca, x t i c k l a b e l, [ 2 0, 2 0 0, ] ) 83 t e x t (2 pi 30,16, Lav, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 84 t e x t (2 pi 200,16, åbnd 1, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 85 t e x t (2 pi 800,16, åbnd 2, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 86 t e x t (2 pi 5000,16, øhj, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 87 s e t ( gca, f o n t s i z e, 1 2 ) 88 x l a b e l ( Frekvens [ Hz], f o n t s i z e, 1 4 ) 89 y l a b e l ( Amplitude [ db ], f o n t s i z e, 1 4 ) % cd.. 92 % cd f i g s 93 % p r i n t deps e q _ k a r a k t e r _ j d y r eq_koberegning.m 1 f o r i =1:6 2 conumlp ( i, : ) = c e l l 2 m a t ( numlpc(7 i ) ) ; 3 codenlp ( i, : ) = c e l l 2 m a t ( denlpc (7 i ) ) ; 4 conumlp ( i + 5, : ) = c e l l 2 m a t ( numlpb ( i ) ) ; 5 codenlp ( i + 5, : ) = c e l l 2 m a t ( denlpb ( i ) ) ; 6 conumbp1 ( i, : ) = c e l l 2 m a t ( numbp1c(7 i ) ) ; 7 codenbp1 ( i, : ) = c e l l 2 m a t ( denbp1c(7 i ) ) ; 8 conumbp1 ( i + 5, : ) = c e l l 2 m a t ( numbp1b( i ) ) ; 9 codenbp1 ( i + 5, : ) = c e l l 2 m a t ( denbp1b ( i ) ) ; 10 conumbp2 ( i, : ) = c e l l 2 m a t ( numbp2c(7 i ) ) ; 11 codenbp2 ( i, : ) = c e l l 2 m a t ( denbp2c(7 i ) ) ; 12 conumbp2 ( i + 5, : ) = c e l l 2 m a t ( numbp2b( i ) ) ; 13 codenbp2 ( i + 5, : ) = c e l l 2 m a t ( denbp2b ( i ) ) ; 14 conumhp ( i, : ) = c e l l 2 m a t ( numhpc(7 i ) ) ; 15 codenhp ( i, : ) = c e l l 2 m a t ( denhpc (7 i ) ) ; 16 conumhp ( i + 5, : ) = c e l l 2 m a t ( numhpb ( i ) ) ; 17 codenhp ( i + 5, : ) = c e l l 2 m a t ( denhpb ( i ) ) ; 18 end Qconumlp=round ( conumlp /2 2^15) ; 21 Qcodenlp= round ( codenlp /2 2^15) ; 22 Qconumbp1=round ( conumbp1 /2 2^15) ; 23 Qcodenbp1= round ( codenbp1 /2 2^15) ; 24 Qconumbp2=round ( conumbp2 /2 2^15) ; 25 Qcodenbp2= round ( codenbp2 /2 2^15) ; 26 Qconumhp=round ( conumhp /4 2^15) ; 27 Qcodenhp= round ( codenhp /4 2^15) ; c s v w r i t e ( l p. t x t, [ Qconumlp ( :, [ 2 : 1 : 1 ] ), Qcodenlp ( :, 2 ) ] ) 30 c s v w r i t e ( bp1. t x t, [ Qconumbp1 ( :, [ 3 : 1 : 1 ] ), Qcodenbp1 ( :, 3 : 1 : 2 ) ] ) 31 c s v w r i t e ( bp2. t x t, [ Qconumbp2 ( :, [ 3 : 1 : 1 ] ), Qcodenbp2 ( :, 3 : 1 : 2 ) ] ) 32 c s v w r i t e ( hp. t x t, [ Qconumhp ( :, [ 2 : 1 : 1 ] ), Qcodenhp ( :, 2 ) ] ) eq_kokvantisering.m 1 f i g u r e 2 ClpT =[HlpN ( 6 : 1 : 2, : ) ; HlpT ] ; 3 ClpN =[ HlpT ( 6 : 1 : 2, : ) ; HlpN ] ; 4 Cbp1T=[Hbp1N ( 6 : 1 : 2, : ) ; Hbp1T ] ; 5 Cbp1N=[ Hbp1T ( 6 : 1 : 2, : ) ; Hbp1N ] ; 6 Cbp2T=[Hbp2N ( 6 : 1 : 2, : ) ; Hbp2T ] ; 7 Cbp2N=[ Hbp2T ( 6 : 1 : 2, : ) ; Hbp2N ] ; 8 ChpT =[HhpN( 6 : 1 : 2, : ) ; HhpT ] ; 9 ChpN=[HhpT ( 6 : 1 : 2, : ) ; HhpN ] ; 10 hold on 11 w= logspace ( log10 ( 2 0 ), log10 ( ),1000) ; 12 f o r i =1:11 13 [ lpmagexact l p P h a s e E x a c t ]= bode ( ClpT ( i, : ), ClpN ( i, : ),w) ; 14 l p E x a c t ( :, i ) =lpmagexact. exp( j l p P h a s e E x a c t pi / ) ; 15 lpquant ( :, i ) = f r e q z ( quant ( conumlp ( i, : ),2^ 14), quant ( codenlp ( i, : ),2^ 14),w,2 pi 16000) ; 16 l p E r r o r ( :, i ) = l p E x a c t ( :, i ) lpquant ( :, i ) ; 17 lperrdb ( :, i ) =20 log10 ( abs ( l p E r r o r ( :, i ). / l p E x a c t ( :, i ) ) ) ; 18 subplot ( 2, 2, 1 ) 19 semilogx (w, lperrdb ( :, i ), b l a c k ) 20 hold on 21 a x i s ([20,8000, 100, 30]) 22 t i t l e ( L a v s e k t i o n, f o n t s i z e, 1 4 ) 23 y l a b e l ( A f v i g e l s e [ db ], f o n t s i z e, 1 2 ) 24 s e t ( gca, f o n t s i z e,11, x t i c k, [ 2 0, 2 0 0, ], y t i c k, 100:20: 40) 159

166 BILAG C. KILDEKODE [ bp1magexact bp1phaseexact ]= bode ( Cbp1T ( i, : ), Cbp1N ( i, : ),w) ; 27 bp1exact ( :, i ) =bp1magexact. exp( j bp1phaseexact pi / 180) ; 28 bp1quant ( :, i ) = f r e q z ( quant ( conumbp1 ( i, : ),2^ 14), quant ( codenbp1 ( i, : ),2^ 14),w,2 pi 16000) ; 29 b p 1 E r r o r ( :, i ) = bp1exact ( :, i ) bp1quant ( :, i ) ; 30 bp1errdb ( :, i ) =20 log10 ( abs ( b p 1 E r r o r ( :, i ). / bp1exact ( :, i ) ) ) ; 31 subplot ( 2, 2, 2 ) 32 semilogx (w, bp1errdb ( :, i ), b l a c k ) 33 hold on 34 a x i s ([20,8000, 100, 30]) 35 t i t l e ( å B n d s e k t i o n 1, f o n t s i z e, 1 4 ) 36 s e t ( gca, f o n t s i z e,11, x t i c k, [ 2 0, 2 0 0, ], y t i c k, 100:20: 40) [ bp2magexact bp2phaseexact ]= bode ( Cbp2T ( i, : ), Cbp2N ( i, : ),w) ; 39 bp2exact ( :, i ) =bp2magexact. exp( j bp2phaseexact pi / 180) ; 40 bp2quant ( :, i ) = f r e q z ( quant ( conumbp2 ( i, : ),2^ 14), quant ( codenbp2 ( i, : ),2^ 14),w,2 pi 16000) ; 41 b p 2 E r r o r ( :, i ) = bp2exact ( :, i ) bp2quant ( :, i ) ; 42 bp2errdb ( :, i ) =20 log10 ( abs ( b p 2 E r r o r ( :, i ). / bp2exact ( :, i ) ) ) ; 43 subplot ( 2, 2, 3 ) 44 semilogx (w, bp2errdb ( :, i ), b l a c k ) 45 hold on 46 a x i s ([20,8000, 100, 30]) 47 t i t l e ( å B n d s e k t i o n 2, f o n t s i z e, 1 4 ) 48 x l a b e l ( Frekvens [ Hz], f o n t s i z e, 1 2 ) 49 y l a b e l ( A f v i g e l s e [ db ], f o n t s i z e, 1 2 ) 50 s e t ( gca, f o n t s i z e,11, x t i c k, [ 2 0, 2 0 0, ], y t i c k, 100:20: 40) [ hpmagexact hpphaseexact ]= bode ( ChpT ( i, : ), ChpN ( i, : ),w) ; 53 hpexact ( :, i ) =hpmagexact. exp( j hpphaseexact pi / ) ; 54 hpquant ( :, i ) = f r e q z ( quant ( conumhp ( i, : ),2^ 13), quant ( codenhp ( i, : ),2^ 13),w,2 pi 16000) ; 55 h p E r r o r ( :, i ) =hpexact ( :, i ) hpquant ( :, i ) ; 56 hperrdb ( :, i ) =20 log10 ( abs ( h p E r r o r ( :, i ). / hpexact ( :, i ) ) ) ; 57 subplot ( 2, 2, 4 ) 58 semilogx (w, hperrdb ( :, i ), b l a c k ) 59 hold on 60 a x i s ([20,8000, 100, 30]) 61 t i t l e ( ø H j s e k t i o n, f o n t s i z e, 1 4 ) 62 x l a b e l ( Frekvens [ Hz], f o n t s i z e, 1 2 ) 63 s e t ( gca, f o n t s i z e,11, x t i c k, [ 2 0, 2 0 0, ], y t i c k, 100:20: 40) 64 end % cd.. 67 % cd f i g s 68 % p r in t deps eq_ quantization_ jdyr eq_qnoise.m 1 Td =1/16000; 2 g u i t a r r m s =. 1 5 ; 3 f o r i =1:11 4 s y s E r r l p ( i ) = t f ( 1, codenlp ( i, : ), Td ) ; 5 implp= impulse ( s y s E r r l p ( i ), 1 ) ; 6 varlp =2^( 2 14) implp implp / 12; 7 SNRlp ( i ) =10 log10 ( guitarrms ^2/ varlp ) ; 8 9 s y s E r r b p 1 ( i ) = t f ( 1, codenbp1 ( i, : ), Td ) ; 10 impbp1= impulse ( s y s E r r b p 1 ( i ), 1 ) ; 11 varbp1=2^( 2 14) impbp1 impbp1 / 1 2 ; 12 SNRbp1 ( i ) =10 log10 ( guitarrms ^2/ varbp1 ) ; s y s E r r b p 2 ( i ) = t f ( 1, codenbp2 ( i, : ), Td ) ; 15 impbp2= impulse ( s y s E r r b p 2 ( i ), 1 ) ; 16 varbp2=2^( 2 14) impbp2 impbp2 / 1 2 ; 17 SNRbp2 ( i ) =10 log10 ( guitarrms ^2/ varbp2 ) ; s y s E r r h p ( i ) = t f ( 1, codenhp ( i, : ), Td ) ; 20 imphp= impulse ( s y s E r r h p ( i ), 1 ) ; 21 varhp =2^( 2 13) imphp imphp / 12; 22 SNRhp ( i ) =10 log10 ( guitarrms ^2/ varhp ) ; 23 end f i g u r e 26 hold on 27 p l o t ( 15:3:15, SNRlp, +black ) 28 p l o t ( 15:3:15, SNRbp1, ^ b l a c k ) 29 p l o t ( 15:3:15, SNRbp2, s b l a c k ) 30 p l o t ( 15:3:15, SNRhp, v b l a c k ) 31 a x i s ( [ 1 5, 1 5, 4 8, 7 4 ] ) 32 s e t ( gca, f o n t s i z e, 1 2 )%, x t i c k, [ 2 0, 2 0 0, ], y t i c k, 100:20: 40) 33 x l a b e l ( æ F o r s t r k n i n g [ db ], f o n t s i z e, 1 4 ) 34 y l a b e l ( S /N f o r h o l d [ db ], f o n t s i z e, 1 4 ) 35 t e x t ( 0, 5 1, åbnd 1, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 36 t e x t ( 0, 6 5, åbnd 2, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 37 t e x t ( 0, 6 8, Lav, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 38 t e x t ( 0, 7 1, øhj, f o n t s i z e,12, h o r i z o n t a l a l i g n m e n t, c e n t e r ) 160

167 C.8. MATLABPROGRAMMER % cd.. 41 % cd f i g s 42 % p r i n t deps e q _ n o i s e _ j d y r 161

168 Eldiagrammer D D.1 Indgangs- og udgangstrin I n p u t 3 2 R 5 1K R 3 9 K U 1A 1 C n F G N D R 1 R P o t 1 10 K S 1 S 1 Wahwah S 2 S 2 D i s t o r t i o n G N D S 3 S 3 T r e m o l o S 4 S 4 D S P R K C p F R K 5 6 U 1B 7O u t p u t G N D G N D Figur D.1: Eldiagram for indgangs- og udgangstrin 162

169 D.2. WAHWAH D.2 Wahwah R3 R4 R6 C1 V in R1 R2 15V + V A -15V R5 15V + -15V R9 V C R7 C2 15V + -15V V B 15V + R8-15V R10 15V + V out -15V Figur D.2: Eldiagram for wahwah-enhed. 163

170 D D BILAG D. ELDIAGRAMMER D.3 Tremolo V C C R 1 R 4 22K 10 0 K R 5 - V C C 40. 2K 8 9 R 6 S i n us 3 4 G N D S i g n a l I n d 5 V x C O M V y Xgain1 6 Ygain1 R 10 X 30. 9K 7 Xgain2 Ygain2 O ut 2 O ut 1 U 3 V C C R K R 2 22K 2 1 R K R K 30 1K U 2A C 1 12 R K 22p F G N D R K S i g n a l U d - V C C C 2 R 28 1M R K 3 G N D U 1A 1uF 1 R K R K G N G N 5 6 R K U 1B R K D R K D D D D D G N D U 1C 8 V C C G N D R K R K 10 0 K R 3 R 18 1M R M 12 G N D R K U 1D 14 S i n us D D D D R K R K R K G N D G N D G N D G N D Figur D.3: Eldiagram for tremolo 164

171 D.4. DISTORTION D.4 Distortion C1 47nF R1 423k Q1 2N U1A TL R2 2.8k C2 100n R4 100k 15 R5 2.2k D1 BAT85 R3 100k R11 33k 15 + U1B -15 R7 1k R6 100k R9 100k R10 100k R8 2.8k 100n C3-15 R13 10k 1Meg R14 VR2 Q2 2N5460 R12 2.2k 15 + U1C 470k R15 2.2k D2 D3 C4 4.7n R16 100k VR3 200k C5 4.7n R17 100k U1D R19 1k R18 VR4 100k 47k VR1 10k 50% Figur D.4: Eldiagram for distortion 165

172 BILAG D. ELDIAGRAMMER D.5 Brugerflade 5V S1 R1 20k R2 20k C1 100nF U1A 1 2 U1B 3 4 R3 100k R4 100k 100nF C2 C3 100nF R5 100k 5 D S6 3 CP 4 R Q 1 _ Q 2 U2A OP 5V S2 R6 20k R7 20k C4 100nF U1C 5 6 U1D 9 8 R8 100k R9 100k 100nF C5 C6 100nF R10 100k 9 D S8 11 CP 10 R U2B Q 13 _ Q 12 NED U3A Figur D.5: Eldiagram for jog-hjul 166

173 D.5. BRUGERFLADE R8 5k R9 5k S1 S2 5V 5V R7 30k C5 100nF R10 30k C6 100nF D1 1N U1E D2 1N U1F U EI GS 14 4 I7 3 I6 A I5 A1 7 I4 A I3 12 I I1 I0 EO 15 U3B U6 74LS OE CP 11 D7 Q D6 Q D5 Q5 15 D4 Q D3 Q D2 Q2 6 D1 Q1 5 3 D0 Q U4E U4F EO INT INT2 INT1 INT0 UP DOWN 5V R2 5k S3 R1 30k C1 100nF D3 1N U4A 5V R3 5k S4 R4 30k C2 100nF D4 1N U4B 5V R6 5k S5 R5 30k C3 100nF D5 1N U4C 5V R11 5k S6 R12 30k C4 100nF D6 1N U4D Figur D.6: Eldiagram for knap-interface 167

174 BILAG D. ELDIAGRAMMER D7 D6 D5 D4 D3 D2 D1 D0 A0 CS_DSIP U2A C4 100nF 5V U8 74LS OE CP D7 Q7 19 D6 Q D5 Q D4 Q D3 Q3 9 D2 Q D1 Q1 5 D0 Q0 2 U9B D S8 11 CP _ A B CLR 10 R C R/C Q 13 _ Q 12 Q _ Q R5 50k 5V D7 D6 D5 D4 D3 D2 D1 D0 RS E R/W* 74HC123 INT2 U9A S6 1 Q _ 2 Q 5 D CP 3 4 R V Figur D.7: Eldiagram for displayet 168

175 D R D X V V V V V N D S N X F D W E T V W E W E 169 Figur D.8: Eldiagram for DSP-system A d d r e s s D a t a Co n t r o l J D Co n n e c t o r 9 Pa r t CL K X, CL K R X 1 U 1, U 2 U 3 U 4, U 5 U 6 U 7 F S X, F S R I N T _ D I S P I N T _ I N P CC S e r i a l V c c ( + 5 V ) , 35, 61, C1 C5 10 u F 0. 1u F C3 0. 1u F S 2 G N D R , 27, 44 11, 30 U 3 E E R 2I N R 1I N CC D D G N D R 2O U T R 1O U T T U T T N T U T T N 2O 2I 1O 1I C2- C2+ C1- C1+ MA X 232A CPE V CC R 5 10 K C6 2. 2u F S 1 D 1 R 6 10 K C8 1n F R K C4 0. 1u F C7 10 n F R K R 13 V CC D S 1 CC C2 0. 1u F U 2 R X D D 15 T X D D 14 D 13 D 11 D 12 R S I D 12x R S O A 3 T R PO A 2 T R PI A 1 D MO A 0 R /W I S S T R B 22CV V CC V CC R 3 10 K R 8 10 K R 4 10 K V CC V CC U 1 A d d r e s s D e c o d e r 23 S T R B N C 22 PS N C 21 N C I S R /W 20 MS C O E 19 A A 13 R D Y R E A D Y 17 CS _ I N P A 14 I N P 16 CS _ D I S P A 15 I S P 15 A 3 R O M CS _ R O M 14 CS _ R A M C R A M 22CV 10 U 6 T MS 320 C26 R 9 10 K MP/MC MS C B I O R S A 0 A 1 A 2 A 3 A 4 A 5 A 7 A 6 A 8 A 9 A 10 A 11 A 12 A 13 A 14 A 15 INT0 20 INT1 21 INT2 22 IACK CLKOUT2 CLKOUT1 X1 X2/CLKIN 8 FSX FSR 53 CLKX 63 CLKR DX 64 DR 24 X 1 40 MH z O U O s c. V CC CC SYNC BR HOLD HOLDA R 10 1K R 1 10 K R 2 10 K PS IS DS D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 9 D 10 D 11 D 12 D 13 D 14 D 15 R E A D Y S T R B R /W U 4 A 0 I /O 0 A 1 I /O 1 A 2 I /O 2 A 3 I /O 3 A 4 I /O 4 A 5 I /O 5 A 6 I /O 6 A 7 I /O 7 A 8 A 9 O E A 10 A 11 CE A 12 A 13 A 14 CY 7C199 U 5 A 0 I /O 0 A 1 I /O 1 A 2 I /O 2 A 3 I /O 3 A 4 I /O 4 A 5 I /O 5 A 6 I /O 6 A 7 I /O 7 A 8 A 9 O E A 10 A 11 CE A 12 A 13 A 14 RAM (Lower) RAM (Upper) CY 7C199 U 7 A 0 A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 A 10 A 11 A 12 A 13 A 14 A 15 EPROM (D/M) A M27C10 24 CE O E PR O G Q 0 Q 1 Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 8 Q 9 Q 10 Q 11 Q 12 Q 13 Q 14 Q CS _ R A M D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 9 D 10 D 11 D 12 D 13 D 14 D CS _ R A M _ R O D 0 D D D D D D D D D D D D D D D 2 CS M D.6 DSP-system D.6. DSP-SYSTEM

176 M M M M 170 Figur D.9: Eldiagram for konvertermodul SM4 - Minimum DSP Interface F s 16 k H z ; CLKIN M H z [ M F 6: F 1 M F 7: F 2 M F 8: F 3 ] S M 4 - M as t e r, 32 B P F [ S M ODE 3 S M ODE 2 S M ODE 1 ] P 1 R CA R K R K Vd C u F C p F C u F R K C n F Vd F e r r i t e B e ad C18 1u F C n F U9 R IN2 LIN2 R IN1 LIN1 4 R E F B UF Vd F 1: F 1/ CDOUT F 2: F 2/ CDIN F 3: DI3/ F 3/ CCLK M F 4: M A/ CCS F 5: DO2/ INT M F 6: DI2/ F 1 Dgnd 5 24 CS 4218 Va Agnd R OUT LOUT R E F B Y P R E F GND CLKIN R E S E T P DN S DOUT S DIN S CLK S S Y NC DI1 DO1 S M ODE 3 S M ODE 2 S M ODE 1 M F 7: S F S 1/ F 2 M F 8: S F S 2/ F 3 F ILT C n F Va C19 1u F Vd Vd C n F C9 10 u F C12 33n F S DIN S CLK S S Y NC S DOUT C n F R K F o r b i n d e l s e t i l b u s U10 OE 1 OE 2 OE 3 OE 4 A1 A2 A3 A4 GND Vd R K VCC Y 1 Y 2 Y 3 Y 4 S N74H C125N C21 10 u F DX CLKX, CLKR F S X, F S R DR Va U8 LM 78L0 5ACZ OUT IN 1 GND 2 Vd DR CLKR, CLKX F S R, F S X DX Vd VD DGND OUT VA AGDN CLKIN D.7 A/D- og D/A-konvertermodul BILAG D. ELDIAGRAMMER 23

Projekt. Analog Effektforstærker.

Projekt. Analog Effektforstærker. Projekt. Analog Effektforstærker. Udarbejdet af: Klaus Jørgensen. Gruppe: Klaus Jørgensen Og Morten From Jacobsen. It og Elektronikteknolog. Erhvervsakademiet Fyn Udarbejdet i perioden: 7/0-03 /-03 Vejledere:

Læs mere

Hi-Fi forstærker med digital styring

Hi-Fi forstærker med digital styring Hi-Fi forstærker med digital styring POWER VOLUME VÆLGER BAS DISKANT MUTE OP NED MUTE Klass #39 P3 PROJEKT 008 GRUPPE 39 INSTITUT FOR ELEKTRONISKE SYSTEMER AALBORG UNIVERSITET DEN. 7 DECEMBER 008 Titel:

Læs mere

Øvelsesvejledning. Frekvenskarakteristikker Simulering og realisering af passive filtre.

Øvelsesvejledning. Frekvenskarakteristikker Simulering og realisering af passive filtre. ELT2, Passive filter, frekvenskarakteristikker Øvelsesvejledning Frekvenskarakteristikker Simulering og realisering af passive filtre. Øvelsen består af 3 dele: 1. En beregningsdel som du forventes at

Læs mere

Analog Øvelser. Version. A.1 Afladning af kondensator. Opbyg følgende kredsløb: U TL = 70 % L TL = 50 %

Analog Øvelser. Version. A.1 Afladning af kondensator. Opbyg følgende kredsløb: U TL = 70 % L TL = 50 % A.1 Afladning af kondensator Opbyg følgende kredsløb: U TL = 70 % L TL = 50 % Når knappen har været aktiveret, ønskes lys i D1 i 30 sekunder. Brug formlen U C U start e t RC Beskriv kredsløbet Find komponenter.

Læs mere

Synopsis: Titel: Digitalt styret effektenhed til el-guitar. Tema: Signalbehandlingsalgoritmer og -systemer. Projektperiode: SP6, Forår 2012

Synopsis: Titel: Digitalt styret effektenhed til el-guitar. Tema: Signalbehandlingsalgoritmer og -systemer. Projektperiode: SP6, Forår 2012 Titel: Digitalt styret effektenhed til el-guitar Tema: Signalbehandlingsalgoritmer og -systemer Projektperiode: SP6, Forår 2012 Projektgruppe: 642 Gruppemedlemmer: Asger Heidemann Andersen Frederik Juul

Læs mere

Differensforstærkning

Differensforstærkning Rapport over projekt i Fys2ØV Differensforstærkning Christian Busk Hededal Steen Eiler Jørgensen Morten Garkier Hendriksen Udarbejdet efteråret 1995 Indhold 1 Formulering af projektets mål 4 1.1 Problemformulering..........................

Læs mere

Signalbehandling 1. Compressorer, gates, digitale filtre. Litteratur: Roads s. 390-418

Signalbehandling 1. Compressorer, gates, digitale filtre. Litteratur: Roads s. 390-418 Signalbehandling 1 Compressorer, gates, digitale filtre Litteratur: Roads s. 390-418 Envelopes Tidsvariant forstærkning/dæmpning Mange formål Syntese Overlap (FFT) Klip Musikalsk virkemiddel Compressor

Læs mere

Af: Valle Thorø Fil.: Oscilloscopet Side 1 af 10

Af: Valle Thorø Fil.: Oscilloscopet Side 1 af 10 Oscilloscopet Kilde: http://www.doctronics.co.uk/scope.htm Følgende billede viser forsiden på et typisk oscilloskop. Nogle af knapperne og deres indstillinger forklares i det følgende.: Blokdiagram for

Læs mere

Aalborg Universitet. Analog HiFi forstærker med digital styring

Aalborg Universitet. Analog HiFi forstærker med digital styring Aalborg Universitet Analog HiFi forstærker med digital styring Birnir S. Gunnlaugsson Mark Jespersen Michael S. Pedersen Morten K. Rævdal Thomas F. Pedersen Tredje semester, Gruppe 310 Efteråret 2009 Reproduktion

Læs mere

Dæmpet harmonisk oscillator

Dæmpet harmonisk oscillator FY01 Obligatorisk laboratorieøvelse Dæmpet harmonisk oscillator Hold E: Hold: D1 Jacob Christiansen Afleveringsdato: 4. april 003 Morten Olesen Andreas Lyder Indholdsfortegnelse Indholdsfortegnelse 1 Formål...3

Læs mere

3 Overføringsfunktion

3 Overføringsfunktion 1 3 Overføringsfunktion 3.1 Overføringsfunktion For et system som vist på figur 3.1 er overføringsfunktionen givet ved: Y (s) =H(s) X(s) [;] (3.1) Y (s) X(s) = H(s) [;] (3.2) Y (s) er den Laplacetransformerede

Læs mere

Total systembeskrivelse af AD1847

Total systembeskrivelse af AD1847 Total systembeskrivelse af AD1847 Af Anna Hampen Jens Jørgen Nielsen Johannes Bjerrum Johnny Nielsen 3.semester HIH Anna Hampen, Jens Nielsen, Johannes Bjerrum, Johnny Nielsen 1 Indholdsfortegnelse Indledning...3

Læs mere

LCR-opstilling

LCR-opstilling LCR-opstilling 4206.00 2013-09-18 AA4206.00 Beskrivelse Udstyret består af Resistorer (modstande): 24,9 kω / 3,3 kω / 1,0 kω / 1,0 kω (1 %) Induktorer (spoler): 4,7 mh / 1,8 mh (5 %) Kapacitorer (kondensatorer):

Læs mere

Elektrodynamik Lab 1 Rapport

Elektrodynamik Lab 1 Rapport Elektrodynamik Lab 1 Rapport Indhold Fysik 6, EL Bo Frederiksen ([email protected]) Stanislav V. Landa ([email protected]) John Niclasen ([email protected]) 1. Transienter og RC-kredsløb 1.1 Formål 1. Teori 1.3

Læs mere

C R. Figur 1 Figur 2. er eksempler på kredsløbsfunktioner. Derimod er f.eks. indgangsimpedansen

C R. Figur 1 Figur 2. er eksempler på kredsløbsfunktioner. Derimod er f.eks. indgangsimpedansen Kredsløbsfunktioner Lad os i det følgende betragte kredsløb, der er i hvile til t = 0. Det vil sige, at alle selvinduktionsstrømme og alle kondensatorspændinger er nul til t = 0. I de Laplace-transformerede

Læs mere

Kursus i brug af Pinnacle Studio 9

Kursus i brug af Pinnacle Studio 9 Bent Sehested Odense Video Klub Side 20 Ved at markere en sekvens og med markøren peger på den blå linje i lydsporet, ændres markøren til en højttaler med en pil. I berøringspunktet opstår der en lille

Læs mere

Testsignaler til kontrol af en målekæde

Testsignaler til kontrol af en målekæde 20. marts 2007 RL 12/07 OFC/THP/CB/lm MILJØSTYRELSENS Testsignaler til kontrol af en målekæde Resumé Der er udarbejdet testsignaler, som gør det muligt at kontrollere en samlet målekæde. Testsignalerne,

Læs mere

Metal Detektor. HF Valgfag. Rapport.

Metal Detektor. HF Valgfag. Rapport. Metal Detektor. HF Valgfag. Rapport. Udarbejdet af: Klaus Jørgensen. Gruppe: Klaus Jørgensen Og Morten From Jacobsen. It- og Elektronikteknolog. Erhvervsakademiet Fyn Udarbejdet i perioden: 9/- /- Vejledere:

Læs mere

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen TG 8 EUC-Syd Sønderborg 6. Skoleperiode Elektronikmekaniker Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: 30 04-2002 Modtaget af: Søren Knudsen

Læs mere

Effektenhed til elektrisk guitar

Effektenhed til elektrisk guitar Effektenhed til elektrisk guitar Det Ingeniør-, Natur- og Sundhedsvidenskabelige Fakultet 6. semesterprojekt ved Aalborg Universitet Signalbehandling 3. juni 2008 Gruppe 640 Johnni T. Pedersen Esben Madsen

Læs mere

Spektrumrepræsentation

Spektrumrepræsentation Spektrumrepræsentation (Kapitel 3) Jens D. Andersen Datalogisk Institut Københavns Universitet p.1/35 $ $ $ Spektrumrepræsentation Matematisk repræsentation af en sinusoide: hvor "! er en fasor. Mere komplicerede

Læs mere

Opførslen af LCR lavpasfiltre undersøges gennem udmåling af frekvensgang og steprespons for en række af disse.

Opførslen af LCR lavpasfiltre undersøges gennem udmåling af frekvensgang og steprespons for en række af disse. LCR lavpasfiltre Nummer 136350 Emne Vekselstrøm / elektronik Version 2017-01-18 / HS Type Elevøvelse Foreslås til gyma p. 1/5 420600 Formål Opførslen af LCR lavpasfiltre undersøges gennem udmåling af frekvensgang

Læs mere

EMC. Elektromagnetic Compatibility Sameksistens!

EMC. Elektromagnetic Compatibility Sameksistens! EMC Elektromagnetic Compatibility Sameksistens! Forløb for EMC Mandag: Generelt om EMC, R&S kommer på besøg Tirsdag: Brug af instrumenter, signal teori (Cadence), EMC opgaver Onsdag: EMC opgaver Torsdag:

Læs mere

Klasse-G forstærker. Gruppe 310

Klasse-G forstærker. Gruppe 310 Klasse-G forstærker Gruppe 310 20. december 2011 Det Teknisk-Naturvidenskablige fakultet, andet studieår Elektronik og IT Fredrik Bajers vej 7B Telefon 99 40 99 40 http://sict.aau.dk Titel: Klasse-G forstærker

Læs mere

Analog og digital elektronik. HiFi-forstærker. med digital styring

Analog og digital elektronik. HiFi-forstærker. med digital styring Analog og digital elektronik HiFi-forstærker med digital styring 3. semester projekt School of Information and Communication Technology Elektronik & IT Aalborg Universitet Efteråret 20 Titel: HiFi-forstærker

Læs mere

Undervisningsbeskrivelse for design & produktion - el

Undervisningsbeskrivelse for design & produktion - el Undervisningsbeskrivelse for design & produktion - el Termin Maj/juni 2013 Institution Uddannelse Fag og niveau Lærer Hold ZBC-Ringsted, Ahorn Allé 3-5 4100 Ringsted HTX Design & produktion - el Christian

Læs mere

2/3 Akset digital tæller

2/3 Akset digital tæller SERIE Z59E 2/3 Akset digital tæller for Elgo Magnetisk målebånd og / eller Encoder ELGO - ELECTRIC Gerätebau und Steuerungstechnik GMBH D - 78239 Rielasingen, Postfach 11 30, Carl - Benz - Strafle 1 Telefon

Læs mere

Theory Danish (Denmark) Ikke-lineær dynamik i elektriske kredsløb (10 point)

Theory Danish (Denmark) Ikke-lineær dynamik i elektriske kredsløb (10 point) Q2-1 Ikke-lineær dynamik i elektriske kredsløb (10 point) Læs venligst de generelle instruktioner i den separate konvolut før du starter på opgaven. Introduktion Bi-stabile ikke-lineære halvlederkomponenter

Læs mere

Fasedrejning i RC / CR led og betragtninger vedrørende spoler

Fasedrejning i RC / CR led og betragtninger vedrørende spoler Fasedrejning i en kondensator og betragtninger vedrørende RC-led. Følgende er nogle betragtninger, der gerne skulle føre frem til en forståelse af forholdene omkring kondensatorers og spolers frekvensafhængighed,

Læs mere

Elektronikken bag medicinsk måleudstyr

Elektronikken bag medicinsk måleudstyr Elektronikken bag medicinsk måleudstyr Måling af svage elektriske signaler Indholdsfortegnelse Indholdsfortegnelse... 1 Introduktion... 1 Grundlæggende kredsløbteknik... 2 Ohms lov... 2 Strøm- og spændingsdeling...

Læs mere

Antennens udstrålingsmodstand hvad er det for en størrelse?

Antennens udstrålingsmodstand hvad er det for en størrelse? Antennens udstrålingsmodstand hvad er det for en størrelse? Det faktum, at lyset har en endelig hastighed er en forudsætning for at en antenne udstråler, og at den har en ohmsk udstrålingsmodstand. Den

Læs mere

HF Sender & Modtager.

HF Sender & Modtager. HF Sender & Modtager. HF Valgfag. Rapport. Udarbejdet af: Klaus Jørgensen. Gruppe: Klaus Jørgensen Og Morten From Jacobsen. It og Elektronikteknolog. Erhvervsakademiet Fyn Udarbejdet i perioden: /- 7/-

Læs mere

Elektroteknik 3 semester foråret 2009

Elektroteknik 3 semester foråret 2009 Elektroteknik 3 semester foråret 2009 Uge nr. Ugedag Dato Lektions nr 16 onsdag 15.04.09 75 76 Gennemgang af opgaver fra sidst: Gennemgang af afleveringsopgaver fra sidst Nyt stof(vejledende): skibshovedfordelingsanlæg

Læs mere

Grundlæggende lydtekniker kursus

Grundlæggende lydtekniker kursus Hvad er lyd? Grundlæggende Lyd kan vi opfatte med ørerne. Lyd opstår ved at noget bringes til at svinge. Hvis man f.eks. knipser en guitarstreng, vil den svinge frem og tilbage. Slår man med en hammer

Læs mere

Analogregnemaskinen. Datahistorisk Forening 30/8 2007

Analogregnemaskinen. Datahistorisk Forening 30/8 2007 Analogregnemaskinen Datahistorisk Forening 30/8 2007 Analogregnemaskiner bygger på ÆKVIVALENSRELATION: Ækvivalensen mellem en fysisk størrelse og en skalaaflæsning Eksempel: Fysisk længder ~ talværdier

Læs mere

U Efter E12 rækken da dette er den nærmeste I

U Efter E12 rækken da dette er den nærmeste I Transistorteknik ved D & A forold. 4--3 Afkoblet Jordet mitter: Opbygning og beregning af transistorkobling af typen Jordet mitter ud fra følgende parameter erunder. Alle modstande vælges / beregnes ud

Læs mere

Hold 6 Tirsdag. Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe) Dato for aflevering: 29.

Hold 6 Tirsdag. Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe) Dato for aflevering: 29. ELA journal: Øvelse 3 Grundlæggende Op. Amp. Koblinger. Dato for øvelse:. nov. 00 & 9. nov. 00 Hold 6 Tirsdag Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe)

Læs mere

1 v out. v in. out 2 = R 2

1 v out. v in. out 2 = R 2 EE Basis 200 KRT3 - Løsningsforslag 2/9/0/JHM Opgave : Figur : Inverterende forstærker. Figur 2: Ikke-inverterende. Starter vi med den inverterende kobling så identificeres der et knudepunkt ved OPAMP

Læs mere

Resonans 'modes' på en streng

Resonans 'modes' på en streng Resonans 'modes' på en streng Indhold Elektrodynamik Lab 2 Rapport Fysik 6, EL Bo Frederiksen ([email protected]) Stanislav V. Landa ([email protected]) John Niclasen ([email protected]) 1. Formål 2. Teori 3.

Læs mere

Indhold. Figur 1: Blokdiagram over regulatorprincip

Indhold. Figur 1: Blokdiagram over regulatorprincip Indhold.1 Beskrivelse af regulatorer............................. 2.2 Krav til regulator................................. 2.2.1 Integrator anti-windup.......................... 4.3 Overføringsfunktion

Læs mere

Impedans. I = C du dt (1) og en spole med selvinduktionen L

Impedans. I = C du dt (1) og en spole med selvinduktionen L Impedans I et kredsløb, der består af andre netværkselementer end blot lække (modstande) og kilder vil der ikke i almindelighed være en simpel proportional, tidslig sammenhæng mellem strøm og spænding,

Læs mere

HiFi-forstærker. -med digital volumenkontrol. Elektronik og Elektroteknik 3. semester Aalborg universitet 2005 Projektgruppe 05gr315

HiFi-forstærker. -med digital volumenkontrol. Elektronik og Elektroteknik 3. semester Aalborg universitet 2005 Projektgruppe 05gr315 HiFi-forstærker -med digital volumenkontrol Elektronik og Elektroteknik 3. semester Aalborg universitet 2005 Projektgruppe 05gr315 Institut for Elektroniske Systemer Elektronik og Elektroteknik Fredriks

Læs mere

Synopsis: Titel: HiFi-forstærker med minimeret effektforbrug. Tema: Analog og digital elektronik. Projektperiode: P3, efterårssemesteret 2009

Synopsis: Titel: HiFi-forstærker med minimeret effektforbrug. Tema: Analog og digital elektronik. Projektperiode: P3, efterårssemesteret 2009 Synopsis: Institut for Elektroniske Systemer Elektronik og Elektroteknik Fredrik Bajers Vej 7 B 9220 Aalborg Ø Tlf.: 99 40 86 00 http://es.aau.dk Titel: Tema: HiFi-forstærker med minimeret effektforbrug.

Læs mere

8. Jævn- og vekselstrømsmotorer

8. Jævn- og vekselstrømsmotorer Grundlæggende elektroteknisk teori Side 43 8. Jævn- og vekselstrømsmotorer 8.1. Jævnstrømsmotorer 8.1.1. Motorprincippet og generatorprincippet I afsnit 5.2 blev motorprincippet gennemgået, men her repeteres

Læs mere

Strømforsyning +/- 12V serieregulator og 5V Switch mode

Strømforsyning +/- 12V serieregulator og 5V Switch mode Udarbejdet af: +/- 12V serieregulator og 5V Switch mode Side 1 af 15 Udarbejdet af: Komponentliste. B1: 4 stk. LN4007 1A/1000V diode D1: RGP30D diode Fast Recovery 150nS - 500nS, 3A 200V C1 C3 og C4: 100nF

Læs mere

Nedenfor er tegnet svingningsmønsteret for to sinus-toner med frekvensen 440 og 443 Hz:

Nedenfor er tegnet svingningsmønsteret for to sinus-toner med frekvensen 440 og 443 Hz: Appendiks 1: Om svævning: Hvis to toner ligger meget tæt på hinanden opstår et interessant akustisk og matematisk fænomen, der kaldes svævning. Det er dette fænomen, der ligger bag alle de steder, hvor

Læs mere

Vejledning til Baghusets lydanlæg

Vejledning til Baghusets lydanlæg Vejledning til Baghusets lydanlæg Denne vejledning er inddelt i følgende kapitler med farvekoder: 1. Forstærker og Afbrydere 2. Minimixeren 3. Monitorhøjtalere (Medhør) 4. Subwhoofer 5. PA-mixeren 6. Linedrivere

Læs mere

Signalbehandling og matematik 1 (Tidsdiskrete signaler og systemer)

Signalbehandling og matematik 1 (Tidsdiskrete signaler og systemer) Signalbehandling og matematik 1 (Tidsdiskrete signaler og systemer) Session 1. Sekvenser, diskrete systemer, Lineære systemer, foldning og lineære tidsinvariante systemer Ved Samuel Schmidt [email protected]

Læs mere

Velkommen til. EDR Frederikssund Afdelings Almen elektronik kursus. Steen Gruby OZ9ZI

Velkommen til. EDR Frederikssund Afdelings Almen elektronik kursus. Steen Gruby OZ9ZI Emne 18: Måleteknik Velkommen til EDR Frederikssund Afdelings Steen Gruby 1 Emne 18: Måleteknik I øvrigt Tidsrum :1900 2200 I pause ca. i midten Toilettet er i gangen mellem køkken og dette lokale De der

Læs mere

To-tone generator med lav forvrængning

To-tone generator med lav forvrængning To-tone generator med lav forvrængning Af OZ1BXM Lars Petersen, [email protected] Indledning Denne artikel beskriver en to-tone generator, som frembringer sinustoner på 700 Hz og 1900 Hz. Tonerne tilføres

Læs mere

Kollektor. Teknisk skole Ringsted Fysikrapport Af Kenneth René Larsen Afleveret d.26. maj 1999. Emitter

Kollektor. Teknisk skole Ringsted Fysikrapport Af Kenneth René Larsen Afleveret d.26. maj 1999. Emitter Kollektor Teknisk skole Ringsted Fysikrapport Af Kenneth René Larsen Afleveret d.26. maj 1999 Basis Emitter 1 Indholdsfortegnelse Problemformulering 3 Transistorens opbygning 4 Transistoren DC forhold

Læs mere

J-fet. Kompendium om J-FET

J-fet. Kompendium om J-FET J-fet 27/8-215 Kompendium om J-FET FET transistorer Generelt Fet-transistorer er opbygget helt anderledes end bipolar transistorerne. Her er det ikke en basisstrøm, der styrer ledeevnen gennem transistoren,

Læs mere

Elektriske Signaler. Redigeret 21/ Analoge signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler!

Elektriske Signaler. Redigeret 21/ Analoge signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler! Analoge signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler! I modsætning til digitale signaler, der enten er eller 1, dvs. Lav eller Høj, og med stigninger så lodrette som muligt,

Læs mere

Svingninger. Erik Vestergaard

Svingninger. Erik Vestergaard Svingninger Erik Vestergaard 2 Erik Vestergaard www.matematikfysik.dk Erik Vestergaard, 2009. Billeder: Forside: Bearbejdet billede af istock.com/-m-i-s-h-a- Desuden egne illustrationer. Erik Vestergaard

Læs mere

Kapitel 10. B-felt fra en enkelt leder. B (t) = hvor: B(t) = Magnetfeltet (µt) I(t) = Strømmen i lederen (A) d = Afstanden mellem leder og punkt (m)

Kapitel 10. B-felt fra en enkelt leder. B (t) = hvor: B(t) = Magnetfeltet (µt) I(t) = Strømmen i lederen (A) d = Afstanden mellem leder og punkt (m) Kapitel 10 Beregning af magnetiske felter For at beregne det magnetiske felt fra højspændingsledninger/kabler, skal strømmene i alle ledere (fase-, jord- og eventuelle skærmledere) kendes. Den inducerede

Læs mere

0.1 Modultest af hardware

0.1 Modultest af hardware 0.1 Modultest af hardware Hardwaren af M2 testes ved, at de enkelte blokke først testes hver for sig, og derefter testes det, om hele modulet virker. TS2-monitoren brændes i ROM, og ved at forbinde M2

Læs mere

Laboratorie Strømforsyning

Laboratorie Strømforsyning Beskrivelse af 0 30 Volt DC Stabiliseret strømforsyning med variabel strømregulering fra 0,002 3 Amp. Teknisk Specifikation Input spænding: 28-30 Volt AC Input Strøm: 3 A MAX Udgangsspænding: 0 30 Volt,

Læs mere

Fysik 2 - Den Harmoniske Oscillator

Fysik 2 - Den Harmoniske Oscillator Fysik 2 - Den Harmoniske Oscillator Esben Bork Hansen, Amanda Larssen, Martin Qvistgaard Christensen, Maria Cavallius 5. januar 2009 Indhold 1 Formål 1 2 Forsøget 2 3 Resultater 3 4 Teori 4 4.1 simpel

Læs mere

Elektriske Signaler. Redigeret 19/ Analoge og digitale signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler!

Elektriske Signaler. Redigeret 19/ Analoge og digitale signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler! Analoge og digitale signaler: Før vi beskæftiger os med OPAMP s ses her lidt på analoge signaler! I modsætning til digitale signaler, der enten er eller 1, dvs. Lav eller Høj, og med stigninger så lodrette

Læs mere

EDR Frederikssund afdeling Almen elektronik kursus. Afsnit 9-9B-10. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG Formand

EDR Frederikssund afdeling Almen elektronik kursus. Afsnit 9-9B-10. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG Formand Afsnit 9-9B-10 EDR Frederikssund Afdelings Joakim Soya OZ1DUG Formand 1 Opgaver fra sidste gang Pico, nano, micro, milli,, kilo, mega Farvekode for modstande og kondensatorer. 10 k 10 k m A Modstanden

Læs mere

Noter til Komplekse tal i elektronik. Højtaler Bas, lavpasled, Mellemtone, Diskant

Noter til Komplekse tal i elektronik. Højtaler Bas, lavpasled, Mellemtone, Diskant Noter til Komplekse tal i elektronik. Eksempler på steder, hvor der bruges kondensatorer og spoler i elektronik: Equalizer Højtaler Bas, lavpasled, Mellemtone, Diskant Selektive forstærkere. Når der er

Læs mere

Transceiver målinger.

Transceiver målinger. Transceiver målinger. Denne gang senderen - teori og lidt praksis. Varighed 45 min. EDR Horsens Afdeling, 12. april. 2018, OZ2OE Transceiver måling - målinger kan kræve masser af udstyr Sender måling 1)

Læs mere

Rapport. Undersøgelse af Dantale DVD i forhold til CD. Udført for Erik Kjærbøl, Bispebjerg hospital og Jens Jørgen Rasmussen, Slagelse sygehus

Rapport. Undersøgelse af Dantale DVD i forhold til CD. Udført for Erik Kjærbøl, Bispebjerg hospital og Jens Jørgen Rasmussen, Slagelse sygehus Rapport Undersøgelse af Dantale DVD i forhold til CD Udført for Erik Kjærbøl, Bispebjerg hospital og Jens Jørgen Rasmussen, Slagelse sygehus 2003-08-19 DELTA Dansk Elektronik, Lys & Akustik Teknisk-Audiologisk

Læs mere

Lidt tankevirksomhed i fbm. udvikling og fremstilling af en 23 transverter

Lidt tankevirksomhed i fbm. udvikling og fremstilling af en 23 transverter Lidt tankevirksomhed i fbm. udvikling og fremstilling af en 23 transverter Af Istvan Zarnoczay OZ1EYZ 29. august 2008 Krav/ønsker osv. Inden man går i gang med sådan et projekt skal man gøre sig klart

Læs mere

Frekvensbestemmelse. HWP I1 Kursusarbejde Forår 2007

Frekvensbestemmelse. HWP I1 Kursusarbejde Forår 2007 HWP I1 Kursusarbejde Forår 2007 Søren Riis, 3024 Vitus Bering Danmark 31 05 2007 University College Vitus Bering Danmark Teknologi og Managementdivisionen Titel: Frekvensbestemmelse Tema: Hardwareprogrammering

Læs mere

Hvorfor bevæger lyset sig langsommere i fx glas og vand end i det tomme rum?

Hvorfor bevæger lyset sig langsommere i fx glas og vand end i det tomme rum? Hvorfor bevæger lyset sig langsommere i fx glas og vand end i det tomme rum? - om fysikken bag til brydningsindekset Artiklen er udarbejdet/oversat ud fra især ref. 1 - fra borgeleo.dk Det korte svar:

Læs mere

wwwdk Digital lydredigering på computeren grundlæggende begreber

wwwdk Digital lydredigering på computeren grundlæggende begreber wwwdk Digital lydredigering på computeren grundlæggende begreber Indhold Digital lydredigering på computeren grundlæggende begreber... 1 Indhold... 2 Lyd er trykforandringer i luftens molekyler... 3 Frekvens,

Læs mere

Med mellemrum opstår der i den audiofile verdens mange afkroge langstrakte diskussioner om kablers lyd.

Med mellemrum opstår der i den audiofile verdens mange afkroge langstrakte diskussioner om kablers lyd. Forord. Målgruppen er de, der målrettet går efter en signalvej med ingen eller absolut mindst mulig ændring af musiksignalet. Ingen tonekontroller, equalizere eller anden elektronisk påvirkning, der uundgåelig

Læs mere

Ren versus ligesvævende stemning

Ren versus ligesvævende stemning Ren versus ligesvævende 1. Toner, frekvenser, overtoner og intervaller En oktav består af 12 halvtoner. Til hver tone er knyttet en frekvens. Kammertonen A4 defineres f.eks. til at have frekvensen 440

Læs mere

Mellem mennesker Ny Prisma Fysik og kemi 9 - kapitel 9 Skole: Navn: Klasse:

Mellem mennesker Ny Prisma Fysik og kemi 9 - kapitel 9 Skole: Navn: Klasse: Mellem mennesker Ny Prisma Fysik og kemi 9 - kapitel 9 Skole: Navn: Klasse: Opgave 1 Hvilke egenskaber gælder ikke for radiobølger? Der er 5 svarmuligheder. Sæt et kryds. De kan reflekteres, når de rammer

Læs mere

Mean Well, LCM-serie installations vejledning.

Mean Well, LCM-serie installations vejledning. Egenskaber: 180 -> 295 VAC (LCM-25: 180 277 VAC) Indbygget aktivt power factor funktion Udgangsstrøm indstilles med DIP kontakter Indbygget DALI interface og simpel kontakt dæmpning (DA version) Indbygget

Læs mere

HIFI-forstærker med digital volumenkontrol

HIFI-forstærker med digital volumenkontrol HIFI-forstærker med digital volumenkontrol Tema: Emne: Analog- og Digital elektronik HIFI-forstærker med digital styring Hovedvejleder: Niels Erik Bødker Jensen Bivejleder: Palle Sennels P-projekt efteråret

Læs mere

Afsnit 7-8. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG. EDR Frederikssund afdeling Almen elektronik kursus

Afsnit 7-8. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG. EDR Frederikssund afdeling Almen elektronik kursus Afsnit 7-8 EDR Frederikssund Afdelings Joakim Soya OZ1DUG 2010-02-18 OZ1DUG 7-8 1 Opgave fra sidste gang. find ud af hvordan modulationskontrol kan gennemføres for CW - FM - AM - SSB Oscilloscop!! 2010-02-18

Læs mere

HAC telefon testrapport

HAC telefon testrapport DELTA Acoustics & Vibration Technical Audiological Laboratory -TAL We help ideas meet the real world HAC telefon testrapport Akustiske og magnetiske målinger på output fra forskellige telefoner December

Læs mere

En harmonisk bølge tilbagekastes i modfase fra en fast afslutning.

En harmonisk bølge tilbagekastes i modfase fra en fast afslutning. Page 1 of 5 Kapitel 3: Resonans Øvelse: En spiralfjeder holdes udspændt. Sendes en bugt på fjeder hen langs spiral-fjederen (blå linie på figur 3.1), så vil den når den rammer hånden som holder fjederen,

Læs mere

Mean Well, LCM-serie installations vejledning.

Mean Well, LCM-serie installations vejledning. Egenskaber: 180 -> 295 VAC (LCM-25: 180 277 VAC) Indbygget aktivt power factor funktion Udgangsstrøm indstilles med DIP kontakter Indbygget DALI interface og simpel kontakt dæmpning (DA version) Indbygget

Læs mere

Halsslynger. Tekniske målinger af halsslyngers kvalitet

Halsslynger. Tekniske målinger af halsslyngers kvalitet Halsslynger Tekniske målinger af halsslyngers kvalitet Side 2 af 21 Indhold 1. Forord... 3 2. Målinger... 3. Beskrivelse af halsslynger... 3.1 HearIt Mobile... 3.2 HearIt all... 3.2.1 Base enheden... 3.2.2

Læs mere

Elevforsøg i 10. klasse Lyd

Elevforsøg i 10. klasse Lyd Fysik/kemi Viborg private Realskole Elevforsøg i 10. klasse Lyd Lydbølger og interferens SIDE 2 1062 At påvise fænomenet interferens At demonstrere interferens med to højttalere Teori Interferens: Det

Læs mere

Nærføring mellem banen Nykøbing F-Rødby og 132 kv kabelanlægget Radsted-Rødsand 2

Nærføring mellem banen Nykøbing F-Rødby og 132 kv kabelanlægget Radsted-Rødsand 2 Dette dokument beskriver en nærføringssag med de forskellige aktiviteter, der er foretaget. En dyberegående teori omkring formler og tilnærmelser, som er anvendt kan studeres i Nærføringsudvalgets håndbog

Læs mere

Titel: Tema: Projektperiode: Projektgruppe: Deltagere: Vejleder:

Titel: Tema: Projektperiode: Projektgruppe: Deltagere: Vejleder: 19. december 2005 Titel: HiFi forstærker med minimeret effektforbrug Tema: Analog elektronik Projektperiode: P3 Projektgruppe: EE - gr.319 Deltagere: Michael Niss Henrik Dalsager Morten Hemmingsen Nikolaj

Læs mere

Temperaturmåler. Klaus Jørgensen. Itet. 1a. Klaus Jørgensen & Ole Rud. Odense Tekniskskole. Allegade 79 Odense C 5000 28/10 2002.

Temperaturmåler. Klaus Jørgensen. Itet. 1a. Klaus Jørgensen & Ole Rud. Odense Tekniskskole. Allegade 79 Odense C 5000 28/10 2002. Temperaturmåler Klaus Jørgensen Klaus Jørgensen & Ole Rud Odense Tekniskskole Allegade 79 Odense C 5000 28/10 2002 Vejleder: PSS Forord.: Denne rapport omhandler et forsøg hvor der skal opbygges et apparat,

Læs mere

Digitalt styret Hi-Fi forstærker med trådløs fjernbetjening

Digitalt styret Hi-Fi forstærker med trådløs fjernbetjening Digitalt styret Hi-Fi forstærker med trådløs fjernbetjening P3 projekt, AAU, Elektronik og elektroteknik Gruppe 315 Mads Yde Jensen Jes Toft Kristensen Jan Sundvall Christian Thomsen Rasmus Nielsen Hans-Henning

Læs mere

KEB COMBIVERT FREKVENSOMFORMER QUICK-GUIDE. F4-C VERSION (0,75 315 kw)

KEB COMBIVERT FREKVENSOMFORMER QUICK-GUIDE. F4-C VERSION (0,75 315 kw) KEB COMBIVERT FREKVENSOMFORMER ANTRIEBSTECHNIK QUICK-GUIDE F4-C VERSION (0,75 315 kw) REGAL A/S Industrivej 4, DK - 4000 Roskilde Tlf. 46 77 70 00 Fax 46 75 76 20 [email protected] www.regal.dk Forord Denne

Læs mere