Sampler/trommemaskine

Størrelse: px
Starte visningen fra side:

Download "Sampler/trommemaskine"

Transkript

1 Sampler/trommemaskine P4-projekt Gruppe 416 Elektronik & IT Aalborg Universitet Den 27. Maj 2014

2 2. Studieår v/ Det Teknisk- Naturvidenskabelige Fakultet Elektonik og IT Fredrik Bajers Vej Aalborg Titel: Sampler/trommemaskine Projekt: P4-projekt Projektperiode: Februar Juni 2014 Projektgruppe: 416 Deltagere: Anders Charly Rasmussen Rasmus Mogensen Tobias Nørgård Dahl Andreas Harbo Rukjær Vejledere: Søren Krarup Olesen Synopsis: Der bliver i dag udviklet og fremstillet ganske få hardware-samplere. På trods af dette er de stadig eftertragtede. Derfor vil en hardwaresampler blive designet, som kan optage lydklip og gemme dem i en hukommelse. Det er derudover valgt, at denne sampler også skal have visse funktioner fra en trommemaskine. Brugeren skal kunne programmere de samplede lyde ind i en sekvens, som derefter kan afspilles. Der vil blive konstrueret en prototype, som anvendes til accepttest. Til udvikling af prototypen tages der udgangspunkt i en spartan-3 platform. Efter testene kan det konkluderes, at prototypen ikke overholder krav til lydkvalitet, afspilning af samples og digitalt output. Sidetal: 106 Appendiks: 4 Afsluttet Rapportens indhold er frit tilgængeligt, men offentliggørelse (med kildeangivelse) må kun ske efter aftale med forfatterne.

3 Titelblad Anders Rasmussen Andreas Harbo Rukjær Rasmus Mogensen Tobias Nørgård Dahl iii

4 Forord Denne rapport er skrevet i 2014 af studerende fra Aalborg Unviersitet på fjerde semester med studieretningen Elektronik og IT. Rapporten omhandler design og test af en sampler, der er kombineret med en trommemaskine. Denne sampler kan optage lyde, lægge dem ind i en sekvens i en kombiantion efter brugerens ønske, og afspille denne sekvens. Rapporten indeholder design af sampleren med udgangspunkt i en spartan-3 platform. Der vil blive lavet en prototype af sampleren, hvorpå testene vil blive udført. iv

5 Læsevejledning Rapporten er inddelt i kapitler, hvor der i starten af hvert kapitel vil være en kort introduktion. Der vil ligeledes være en opsummering til sidst i hvert kapitel. I rapporten er til sidst en kildeliste. Samtlige kilder er desuden vedlagt på en CD, såfremt det er en internetside. Igennem rapporten er figurer og tabeller nummereret, i henhold til hvilket kapitel de befinder sig i. Det vil sige, at figur 3.1 eksempelvis er den første illustration i kapitel 3. Der vil blive refereret til kapitler med det tilhørende kapitelnummer. Der vil blive refereret til formler med parantes omkring formlens reference nummer. Efter konklusionen kommer bilag til rapporten. Der vil blive refereret til bilag på samme måde, som der referres til kapitler. v

6 Ordliste A/D (Analog til Digital) ADC (Analog to Digital Converter) ALU (Arithmetic Logical Unit) ASMD (Algorithmic State Machine with Data path) BCD (Binary-Coded Decimal) BPM (Beats Per Minute) CE (Chip Enable) FIT (Fixed Interval Timer) FPGA (Field-Programmable Gate Array) FSO (Frame Sync Out) GPI (General Purpose Input) GPO (General Purpose Output) LB (Lower byte Enable) LED (Light Emitted Diode) LSB (Least Significant Bit) MSB (Most Significant Bit) OE (Output Enable) RAM (Random Acces Memory) SCO (Serial Clock Out) SDO (Serial Data Out) SFMT (Serial Format) SIPO (Serial in Parallel Out) SRAM (Static Random Access Memory) UAR/T (Universal Asynchronous Receiver/Transmitter) UB (Upper byte Enable) VHDL (Very high speed integrated circuit Hardware Description Language) WE (Write/Read Enable) vi

7 Indholdsfortegnelse Kapitel 1 Indledning 1 Kapitel 2 Initierende problemformulering 2 Kapitel 3 Problemanalyse Grundlæggende om sampler og trommemaskine Sampler Sequencer Trommemaskine Kapitel 4 Indledning til problemformulering Problemformulering Kapitel 5 Kravspecikation Generelle krav Krav til sampler Krav til trommemaskine Kapitel 6 Design FPGA Microblaze Hukommelse Sampling af lyd Design af brugerflade Programmeringsfilosofier Funktionsbeskrivelser Softwareopdeling C-program Sekvenstiming segment display Kapitel 7 Accepttest Sampler Trommemaskine Kapitel 8 Konklusion 65 Kapitel 9 Perspektivering 66 Litteratur 68 Figurer 69 vii

8 Indholdsfortegnelse Aalborg Universitet Tabeller 72 Appendiks A Digital konvertering 73 A.1 Analogt til digitalt signal A.2 Sampling A.3 Kvantisering Appendiks B Test af analog til digtal konvertering med DSP56ADC16 Appendiks C C-program Appendiks D VHDL Kode viii

9 Indledning 1 I dag bliver langt det meste musik distribueret ved hjælp af digitale medier, eksempler på dette er Spotify, Youtube, lovlige eller ulovlige MP3-filer eller radio via nettet. Men sådan har det ikke altid været, overgangen fra analog til digital musik-teknologi skete sammen med CD ens udbredelse op igennem 90 erne. CD erne blev skabt med henblik på at finde en afløser for den gammeldags grammofonplade[cd]. Sammen med CD ens udbredelse, blev mere og mere musikudstyr konverteret til digital teknologi, og i dag er næsten alt musik blevet redigeret, eller på anden måde blevet behandlet på en computer. Der er også musikgenrer, som udelukkende eksisterer på baggrund af den digitale lyds gennembrud, her tænkes der især på elektroniske musikgenrer, heraf navnet elektronisk, som i de seneste år har fået en voldsom popularitet med egne festivaller og store koncerter. Hiphoppen tog også ret hurtigt de nye digitale instrumenter til sig, særligt blev trommemaskinen og sampleren brugt meget inden for denne genre. Et eksempel på sådan en maskine er E-MU SP-1200 [Emu] der blev udgivet i Med de digitale mediers stigende popularitet, blev det også nødvendigt at kunne håndtere musikken digitalt, for at gøre redigering, og tilpasningen nemmere for producerne. Der blev brugt samplere til at indspille lyden digitalt, da musikken skulle over på digital form. De første digitale samplere blev tilgængelige i slutningen af 1970 erne, men de var stadig meget dyre, og ofte skulle et helt computersystem bygget omkring sampleren, dette tog meget plads, og var beregnet til brug i musikstudier. Det var først senere at samplerne blev produceret til en pris og størrelse, som gjorde det muligt for hobbyister at bruge dem. I begyndelsen af den digitale musiks gennembrud, fandtes der kun hardwaresamplere. En hardwaresampler er som navnet antyder en sampler der er lavet ved hjælp af hardware, forskellige digitale kredsløb der kan behandle digital musik. Softwaresampleren var i begyndelsen ikke særlig anvendelig, på grund af den lave regnekraft i datidens computere. Men i dag er det den mest populære sampler, og med de computere der findes i dag er det muligt at lave meget advanceret lydbehandling på grund af den store regnekraft i nutidens computere. I dag bliver meget musik produceret på softwaresamplere og trommemaskiner, det har sat udviklingen af hardwaresampleren og trommemaskine i bero, da det er nemmere at opdatere et stykke software, og købe ekstra lyde til. Men der er stadig folk som anvender de gamle hardwaresamplere og trommemaskiner, da de har en unik lyd i forhold til de nyere softwaresamplere. 1

10 Initierende problemformulering 2 Hvilke grundlæggende funktioner har sampleren og trommemaskinen? Hvilke principper ligger til baggrund for samplerens og trommemaskinens funktioner? Hvad adskiller moderne samplere og trommemaskiner fra deres tidligste stadie? 2

11 Problemanalyse Grundlæggende om sampler og trommemaskine I dette afsnit vil de overordnede funktioner og principper, ved en sampler og en trommemaskine, blive forklaret. Disse uddybes senere i problemanalysen. For at skabe grundlag for forståelse indenfor digitale elektroniske instrumenter, vil forskellen mellem et analogt signal og et digitalt signal kort blive forklaret Analogt signal Et analog signal er kontinuerligt. Dvs. at amplituden og tiden har en uendelig høj opløsning. Analoge elektroniske musikinstrumenter består udelukkende af analoge komponenter, som modstande, spoler, kondensatorer og halvledere. Typisk sat sammen i store, tunge, komplicerede kredsløb. Signalvejen er altså analog hele vejen igennem. Eksempler på analoge musikinstrumenter kan være synthesizere, Hammond-orgel [ham] samt thereminen [the] Digitalt signal Modsat de analoge signaler har digitale signaler ikke en uendelig opløsning. Med andre ord er amplituden og tiden diskrete. Signalvejen for digitale elektroniske instrumenter kan have analog indgange og/eller udgange, hvor signalet er digitalt under instrumentets behandling af lyden. Digitale elektroniske instrumenter kan laves langt mindre og mere energieffektive end de analoge Sampleren En sampler er i stand til at optage lyde fra en lydkilde, og gemme det på dens indbygget hukommelse. Dette kan eksempelvis være lyde fra en pladespiller eller en mikrofon. En sampler konverterer altså analog lyd til digital lyd og gemmer det. I sampleren er det også muligt at manipulere med de lyde sampleren har optaget, dette kan fx være at tilpasse længden af den lyd der er optaget, eller ændre lydens toneleje. 3

12 3.2. Sampler Aalborg Universitet Trommemaskinen Trommemaskinen er et instrument der i forvejen indeholder af forskellige trommelyde, gemt på en intern hukommelse. Stortromme, lilletromme, hihat og tommer, kunne være eksempler på lyde i en trommemaskine. Trommemaskinen indeholder en sequencer, hvilket gør det muligt, at programmere en rytme til et justerbart tempo Opsummering I dette afsnit er forskellen mellem et analogt og digital signal beskrevet ved, at et digitalt signal er diskret. En sampler kan optage, redigere og gemme lyd, hvor en trommemaskine kan programmere eksisterende lyde ind i en sekvens, ved hjælp af en sequencer. De efterfølgende afsnit vil uddybe disse funktion og principper. 3.2 Sampler I dette afsnit vil en samplers funktioner samt anvendelsesmuligheder blive beskrevet. Samplerens mulighed, for at håndtere analoge og digitale signaler, vil blive beskrevet, ligeledes vil forskellen på moderne og ældre samplere blive beskrevet. Figur 3.1: Billedet viser SP-1200 erens interface. commons/9/99/111607sp1200.jpg De første samplere var fysiske maskiner, hvor de nu til dags hovedsageligt er software. Hardwaresamplere er dog stadig eftertragtede af mange musikere, fordi de kan skabe en hel speciel lyd. Et eksempel på en sampler, der stadig bliver brugt er E- MU SP-1200 fra 1987, se figur 3.1. Da den blev lanceret, blev den brugt til at lave skelsættende numre inden for hip-hop verdenen. En sampler kan optage, også kaldet at sample, et stykke lyd fra en lydkilde og derefter ændre dette lydstykke efter behov. Det er muligt at ændre f.eks. pitch, hastigheden, som samplet skal afspilles med, tilføje effekter eller filtrere lyden og fjerne uønskede aspekter. E-MU SP-1200 sampleren har en opløsning på 12-bit, med en samplingsfrekvens på 26,04 khz [Emu], se evt. bilag A for en nærmere forklaring af samplingsfrekvens og opløsning. 12-bits opløsning er, efter moderne standarder, ikke en særlig høj opløsning. I dag kan lyd, der bliver brugt til DVD og Blu-Ray, være op til 24-bits [blu]. E-MU SP-1200 er blevet brugt af kunstnere som Vanilla Ice, Dr. Dre, Daft Punk, ICE-T og Beastie Boys. Derfor er den statig meget eftertragtet, og priserne for en SP-1200 på ebay.com ligger omkring kr. for et eksemplar i god 4

13 3.2. Sampler Aalborg Universitet stand. Sampleren i sig selv kan betragtes som et instrument til at lave musik. Det er muligt, at lave hele musiknumre ved hjælp af en mikrofon og en sampler, dog anvendes der ofte en mixerpult til at finjustere og samle lyden. Nedenfor er der nævnt nogle af de essentielle funktioner sampleren har Funktioner Optage På grund af den analoge indgang, er det muligt at optage alle former for lyde. Enten ved hjælp af en mikrofon, direkte fra et instrument eller en pladespiller. Dette giver mulighed for uendelig mange forskellige samples at arbejde med, når der skal laves musik. Simpel redigering Når der er indspillet samples, giver det mulighed for at redigere i de indspillede samples. Redigeringen af et sample kan eksempelvis være at beskære længden, dele det op i flere samples, justere længden af et sample eller lægge effekter på samples. Dog er der en begrænsning på den længde et sample kan have, i en SP-1200 kan hvert sample kan maksimalt være 2,5 sekunder. Filtre Der sidder et lavpasfilter i den analoge indgang til SP-1200, sådan at det ikke er muligt at optage lyde med en frekvens højere end det som mennesket kan høre. Det er for at undgå støj ved digital konvertering, og kaldes et anti-aliasing filter (se bilag A). Derudover er der også mulighed for at filtrere et sample yderligere, dette kan være nødvendigt for at opnå den ønskede effekt Ind- og udgange Der kan være flere ind- og udgange på en sampler, dette betyder at der er flere muligheder at optage lyde, og samarbejde med andre instrumenter. Både ind- og udgange til samplere kan være analoge. Udgange kan også være digitale, men indgangen er typisk analog, da formålet med sampleren er at gøre analoge signaler digitale. Hvis det er et analogt indgangssignal, får den signalet eksempelvis fra en mikrofon, eller en pladespiller. Der kan være mange udgange på en sampler, et til hvert lydspor, samt et master output, hvor alle lydspor bliver afspillet Opsummering I afsnittet er det blevet forklaret, at sampleren har været banebrydende inden for flere genre af musik. Muligheden for at gøre analoge lyde digtale, og manipulere med dem har haft stor betydning, takket være den digitale teknik. Derudover er der gjort rede for nogle af de tekniske detaljer i en sampler, med 5

14 3.3. Sequencer Aalborg Universitet udgangspunkt i EMU SP-1200 hardwaresampleren. I det følgende afsnit vil sequencerens funktioner blive beskrevet. 3.3 Sequencer I dette afsnit vil det blive beskrevet hvad en sequencer er, samt typer af sequencere. Derudover vil vigtige funktioner i sequenceren blive fremhævet. En sequencer er et stykke hardware/software der giver et overblik over de forskellige lyde/samples, som er blevet indspillet via eksempelvis en sampler. Sequenceren kan også indeholde forskellige virtuelle instrumenter, dette er dog oftes tilfældet når det kommer til en software sequencer. Det er også muligt at lave redigering af lyden på en sequencer. En sequencer er som navnet antyder, noget der opstiller lyd i en sekvens og afspiller det igen og igen. Sequenceren holder også et givet tempo, så det der er optaget i sekvensen afspilles med konstant hastighed. Nogle sequencere har også mulighed for at passe sekvensen til, så takten automatisk holdes til det indstillede. Nedenunder vil nogle af de digitale sequencere blive forklaret Realtid En realtidssequencer arbejder ikke med et bestemt antal slag eller tid i en sekvens. Derimod optages der en sekvens, som varer den tid brugeren ønsker. Sekvensen er defineret fra brugeren starter den, ved tryk på en knap, og til at den afsluttes, ved tryk på en knap. Denne sekvens gentages, uanset hvordan opbygningen og længde af sekvensen er. Dette betyder at der ikke er bestemt et tempo på forhånd, hvilket kan gøre det svært for brugeren at skabe en taktfast sekvens. Det kræver altså præcision fra brugerens side, for at kunne håndtere en realtidssequencer Step En stepsequencer fungerer noget anderledes end realtime sequenceren. Der er fokus på at hvert step i sekvensen har det samme tidsinterval. Det gør at hver step kan programmeres præcist, uden at brugeren skal have meget erfaring. Stepsequenceren gør det desuden også muligt at lave en sekvens, der altid holder takten. Step sequenceren er typisk den der er implementeret i trommemaskiner eller rytmebokse. Et eksempel kan ses på billedet 3.2, der viser hvordan stepsequenceren placerer lydene med bestemte intervaller Funktioner Visuelt overblik Nogle sequencere viser hvornår i sekvensen de forskellige samples afspilles, dette kan eksempelvis være lamper. 6

15 3.3. Sequencer Aalborg Universitet Figur 3.2: Øverst på billedet ses 2 forskellige spor, det røde spor symboliserer hvornår stortrommen skal aktiveres i sekvensen, mens det grønne spor symboliserer hihatten. Master out er det samlede output. Nem redigering Ved at have de forskellige steps nemt tilgængelige,fx med en knap til hver sample, kan der hurtigt bestemmes hvilke samples der skal være på de forskellige steder i sekvensen. Tempo De forskellige samples bliver placeret ved forskellige tidspunkter i sekvensen. Hver gang sekvensen slutter, gentages sekvensen. Hvis der skrues op eller ned for tempoet, vil tiden imellem hvert step blive henholdsvis kortere eller længere. Placeringen af de forskellige samples i sekvensen vil ikke ændres Ind- og udgange Det sequenceren får ind som input er tryk på en knap fra brugeren. Det sequenceren sender ud er information om hvornår samples skal afspilles i sekvensen Opsummering Sequencer er et værktøj til at gentage en melodisk sekvens af lyde. Det kan enten være lyd fra en optagelse eller lyde fra et elektronisk instrument, der bliver aktiveret forskellige steder i sekvensen. Der er forskellige måder at sekvensere på, realtidssekvens eller en stepsekvens. Sequenceren giver typisk også en form for visuel afbildning af sekvensen, og hvad der måtte være programmeret derind i. Det er også muligt at ændre tempoet i en sekvens, uden at lydene flytter sig. I det følgende afsnit bliver trommemaskinen, samt dens funktioner gennemgået. 7

16 3.4. Trommemaskine Aalborg Universitet 3.4 Trommemaskine Dette kapitel vil omhandle hvordan en trommemaskine grundlæggende virker, samt nogle af de funktioner en trommemaskine har. Helt fra de første, og frem igennem tiden til de nyeste modeller. En trommemaskine er en elektronisk musikinstrument, som består af en kombination mellem samplede lyde, en sequencer, og en omfattende brugerflade. Trommemaskinen er i stand til at afspille forskellige lyde, hovedsageligt trommelyde, deraf navnet. Ideen bag dem er at sætte personen der bruger maskinen i stand til at producere unikke lydspor ved hjælp af en sekvens på eksempelvis 16 takter, og at personen så programmerer lydene ind afhængig af hvornår trommelyden ønskes. En sekvens er den tid det tager inden trommemaskinen begynder at afspille de samme lyde igen. En trommemaskine har mange funktioner, nogle af disse funktioner går igen fra de gamle til de nye modeller, men de nye trommemaskiner har flere effekter, og flere lyde, som ikke nødvendigvis er trommelyde. Nedenfor vil de mest gængse funktioner blive forklaret Funktioner Figur 3.3: Roland model TR-909. Den gule og grønne cirkel viser henholdsvis volumen og tempokontrol. Den blå firkant indeholder knapper der kan ændre på de enkelte lyde i trommemaskinen. I den røde firkant er de knapper, som bestemmer hvornår i sekvensen at de enkelte lyde skal afspilles. /ed3tqvp2ksk/s1600/1430_roland_tr909_1.jpg På billedet ovenfor ses en af de mest ikoniske trommemaskiner, denne model kom frem tilbage i Russ [2004] En af de mest essentielle dele af trommemaskinen er den række knapper der sidder nederst på billedet, dette kan ses i den røde firkant på billedet. I hver af disse knapper er der en LED, disse LED er viser hvor langt trommemaskinen 8

17 3.4. Trommemaskine Aalborg Universitet er kommet i en sekvens. Der vil blive afspillet en trommelyd, såfremt brugeren har trykket på den pågældende knap, når trommemaskinen når den del af sekvensen. Disse knapper gør brugeren i stand til at bestemme hvor i sekvensen at trommelydene skal være. Dog er der mere end én trommelyd i en trommemaskine, i TR-909 er der f.eks 10 lyde indlagt. Ved hjælp af en knap får brugeren mulighed for at vælge hvilken lyd der skal afspilles. Disse forskellige trommelyde lægges derpå ind i forskellige spor, disse spor er alle længden af en sekvens, og derved kan brugeren skabe en unik sekvens ved hjælp af få prædefinerede lyde. Enhver af disse prædefinerede lyde kan Figur 3.4: Roland model TR-8. På denne tegning er de samme funktioner indrammet som på billedet af model TR-909, det ses at selv 35 år senere går mange af de samme funktioner igen. desuden finindstilles, det sker på de knapper som kan ses i den blå firkant på figur 3.3 og 3.4. Disse finjusteringer er blandt andet hvor meget bas eller diskant der skal med fra den enkelte lyd, hvor høje de enkelte lyde skal være og hvor meget decay der skal være. På figur 3.4 ses et af de nyeste skud på stammen indenfor trommemaskiner, model TR-8 trommemaskinen blev lanceret i februar år [TR8] Decay Decay er, hvor lang tid lyden er om at ringe ud, det vil sige at en lyd uden decay vil stoppe meget pludseligt. Attack Attack er i modsætning af decay, hvor hurtigt lydens styrke skal starte. Hvis attack-tiden er kort, vil lydens styrke hurtigt stige, modsat hvis attack-tiden er lang vil det tage længere tid for lydstyrken at stige. Tune I hver lyd kan tune desuden ændres. Tune ændrer frekvensen, dvs. hvis 9

18 3.4. Trommemaskine Aalborg Universitet tune er på sin laveste, vil en lyd være meget dyb, skrues der derimod op på tune, vil lyden ikke længere være så dyb, altså lydens frekvens bliver højere. Comp Comp er en forkortelse af compression, på dansk kompression. Comp bruges til reducere lydens dynamik. Dynamikken er forskellen mellem lydens laveste og højeste amplitude. Afhængig af hvor meget Comp skrues op, vil lydens niveau presses, så lydniveauet til sidst er ens på hele lydsporet. Når comp skruer helt op, vil lyden være mere direkte. Accent Accent fremhæver tonen af lyden. Det kan gøres tidsmæssigt, dvs. lydstyrken kan hæves i kortere eller længere tid. Reverb Reverb, på dansk rumklang eller efterklang, er en effekt der bruges til at lave klang på lyden. Ved at skue op eller ned ændres klangen på lyden. Metronom Metronomen gør brugeren i stand til nemmere at kunne holde rytmen. Metronemen er typisk en kliklyd, der følger tempoet. Hvis der skrues op for hastigheden på sekvensen, så følger metronomen med. Alle disse funktioner kan justeres for hver trommelyd Ind- og udgange Der er mange ind- og udgange på en trommemaskine, dette gør at en trommemaskine har rig mulighed med at arbejde sammen med andre maskiner, blandt andet synthesizers og samplere. For et eksempel har model TR-909 en udgang for hvert enkel trommelyd, det betyder at en enkelt lyd kan moduleres yderligere ved hjælp af eksempelvis en mixer Opsummering En trommemaskine indeholder en sequencer, som kan afspille forudbestemte samples, i en programmeret kombination, som brugeren selv kan bestemme. Brugeren er altså i stand til at kreere unikke lydsekvenser, som kan afspilles igennem en eller flere analoge udgange. På baggrund af de muligheder vil der i det næste kapitel blive diskuteret hvad der ønskes konstrueret i løbet af projektet. 10

19 Indledning til problemformulering 4 Det følgende kapitel indeholder, på baggrund af problemanalysen, en beskrivelse af den prototype, der arbejdes hen imod i løbet af projektet, samt en forklaring på, hvorfor denne er valgt. Der er i de tidligere afsnit set på funktioner og principper ved samplere og trommemaskiner. På figur 4.1 ses en skitse af prototypen. Under figuren er alle funktionerne listet og forklaret i tabel 4.1. Derudover vil afsnittet også indeholde en mere generel beskrivelse af betjeningen af maskinen. Figur 4.1: Illustration af brugerflade. Der kan læses mere om de forskelle funktioner i tabel Funktioner Der er i dag meget begrænset udvikling indenfor hardwaresamplere, hvilket nævnes i afsnittet om sampleren. De er dog stadig eftertragtede, hvilket giver grundlag for udvikling, netop inden for dette område. Trommemaskinen giver brugeren frihed til at kreere en unik rytme, dog er den begrænset af indbyggede lyde, som ikke kan ændres. Det ønskes derfor i dette projekt, at lave en kombination af en sampler og en trommemaskine. Denne kombiantion skal forstås, som en sampler med indbygget sequencer, hvor det er muligt at optage lyd fra en kilde, sample bidder, og programmeres disse ind i en sekvens. 11

20 Aalborg Universitet On/Off Play/Pause BPM En vippeknap med den funktion at tænde for maskinen. Knap der starter eller stopper den optagede sekvens. Et display der viser det indstillede tempo. Tempo En trinløs drejeknap der kan bruges til at indstille tempoet. Master REC Mode Jam Programmér Step Step indikator Sample start Attack Decay Volumen Solo Mute En trinløs drejeknap der bruges til at indstille volumen ud af maskinens. En knap der starter optagelse af et nyt sample. I jam-mode skal det være muligt at spille på sample triggers uden at optage over en allerede optaget sekvens. I programmeringsmode skal det være muligt at programmere en sekvens, eller tilføje mere til en allerede optaget sekvens. Det skal også være muligt at optage en sekvens, step for step, når sekvensen er sat på pause. En knap der bruges til at skifte plads i sekvensen. En række LED er der viser hvor maskinen er i sekvensen. En drejeknap der har den funktion at flytte en fikseret sample tid frem eller tilbage for at vælge, hvilken del af det optagede sample, der skal afspilles når hver sample trigger aktiveres. En drejeknap der kan justere hvilken volumen et sample skal begynde med. Det kan give en mere eller mindre "punchy"lyd. En drejeknap der kan justere på slutningen af samplet. Ved at dreje på knappen, ændres den volumen den sidste del af samplet afspilles med. Hver kanal skal have en volumen fader der kan styre den individuelle volumen for hvert sample. Hver kanal skal kunne isoleres, så det kun er denne kanal der afspilles, selvom andre samples er programmeret ind i sekvensen. Hver kanal skal kunne mutes så den ikke længere kan høres på outputtet. Tabel 4.1: Tabellen indeholder en liste med beskrivelse af alle de funktioner der er vist på figur

21 4.1. Problemformulering Aalborg Universitet Ind- og udgange For at kunne sample et stykke lyd fra en mikrofon eller pladespiller, er det nødvendigt, at der er en indgang i maskinen, som er koblet til A/D konvertering, for at maskinen kan repræsentere den analoge verden digitalt. Dette koncept er forklaret nærmere i appendix A. Digital lyd skal konvereteres til analog lyd, før at det kan afspilles gennem højtalere. I afsnittet om trommemaskinen (3.4) står der at en TR-909 fra Roland har en analog udgang for hver trommelyd. Prototypen vil ikke have en analog udgang, men i stedet en enkel digital udgang, hvor alle signaler adderes, og sendes ud af et master output. På figur 4.2, ses et blokdiagram af systemet der ønskes udviklet i dette projekt. Figur 4.2: Blokdiagram for prototypen er vist i den sorte firkant. Figuren viser signalvejen. Der fokuseres ikke på den røde del af figuren Opsummering I det foregående afsnit er det blevet beskrevet, at visse egenskaber ved, henholdsvis en sampler, og en trommemaskine ønskes kombineret. Samplerens egenskab til at optage samples og gemme dem, samt trommemaskinens egenskab til at programmere samples ind i en sekvens ønskes samlet i én maskine. Dette er for at give brugeren mulighed for at kunne optage samples, som derefter kan programmeres ind i en sekvens. På baggrund af dette vil en endelig prolemformulering blive opstillet. 4.1 Problemformulering "Hvordan kan en hardwaresampler designes, således, at brugeren er i stand til, at optage samples og programmere dem ind i en sekvens, i en ønsket kombination og denne sekvens i et ønsket tempo ved hjælp af en brugerflade? " 13

22 4.1. Problemformulering Aalborg Universitet Afgrænsning I dette projekt skal en prototype konstrueres og dermed ikke et færdigt produkt. Prototypen vil senere kunne videreudvikles. Prototypens funktionalitet afgrænses til, at kunne optage en analog lydkilde og konveretere lyden til digital, hvorefter det skal gemmes på en hukommelse. Brugeren skal, ved hjælp af en brugerflade, kunne programmere og afspille en sekvens. Når sekvensen afspilles, skal de optagede samples hentes fra hukommelsen, hvorefter de afspilles, som et digitalt output. 14

23 Kravspecikation 5 Det produkt, som skal konstrueres i projektet, skal have nogle bestemte funktioner, for at det kan kvalificeres som en sampler og trommemaskine. Disse krav vil, sammen med andre, blive opstillet i det følgende kapitel. Det vil også blive beskrevet, hvorfor disse krav er relevante for produktet. 5.1 Generelle krav Fungerende Prototype: Produktet skal være en funktionel prototype, hvor der er mulighed for at indspille lyd, og gemme det på produktet i form af et sample. Funktionelt interface: Der skal være et passende antal knapper og skrueknapper, sådan at produktet er nemt at betjene. 5.2 Krav til sampler Herunder vil samplerens krav blive opstillet. Digital lyd: Sampleren skal arbejde med digital lyd. Konvertering: Sampleren skal indholde en analog til digital konverter, så det er muligt at indspille lyde fra analoge kilder. Lydkvalitet: Samplerens lydkvalitet skal være CD kvalitet. Altså 16-bit opløsning og minimum 44,1 khz samplingsfrekvens. Realtidsindspilning: Sampleren skal kunne gemme lyden i realtid. Hukommelsen skal kunne arbejde hurtigt nok, så lyden ikke bliver forsinket eller samples går tabt. Længde af samples: Sampleren skal kunne indeholde 2 samples af mimimum 2,5 sekunder. 5.3 Krav til trommemaskine Der skal være mulighed for at programmere en sekvens. Variabelt tempo: For at kunne lave forskellige genre af musik på trommemaskinen, skal det være muligt at variere tempoet. Visning af tempo: For at brugeren kan indstille et præcist tempo, skal det være muligt at se det aktuelle tempo i BPM (Beats Per Minute). Visning af sekvens: Der skal være en visuel repræsentation af, hvilken plads i sekvensen der bliver afspillet eller arbejdes med. Dette skal ske ved hjælp af lysdioder. 15

24 5.3. Krav til trommemaskine Aalborg Universitet Vise indholdet af sekvensen: Der skal være 2 dioder, der viser hvilke samples, der er programmeret ind på den viste plads i sekvensen. Digitalt output: Der skal være mulighed for at kunne afspille en sekvens med de samplede lyde, og få dette ud som et digitalt signal. Afspilningsmode: Der skal være mulighed for, at se sekvensen blive afspillet. Der skal derfor være et afspilningsmode på trommemaskinen Overblik af produktet For at give et overblik over hvad produktet kommer til at indeholde, er der lavet et blokdiagram. Blokdiagrammet viser, hvordan de forskellige knapper og funktioner er tilgængelige på produktet. Det færdige system kommer til at Figur 5.1: Et overblik over det samlede system. indeholde 4 komponenter: Brugerpanel: Brugerpanelet er det, som brugeren har mulighed for at justere på. Det er her tempo, sekvens samt hvilken mode, produktet skal befinde sig i, bliver styret. PC: PC en bruges til at programmere FPGA en og debugge ved hjælp af UAR/T. ADC: Analog til digital konverteringen laver analoge signaler om til digitale signaler. Dette er nødvendigt, før lyden kan blive gemt i hukommelse. Spartan-3 platform: Denne indeholder FPGA, Microblaze, lysdioder, switches, 7-segmentsdisplay og RAM. Næste del af rapporten vil beskrive, hvordan prototypen er designet udfra de stillede krav. Der bruges, i dette projekt, en Spartan-3 platform. Denne platforms egenskaber vil blive forklaret, som det første i næste kaptel. 16

25 Design 6 Til design af prototypen er der taget udgangspunkt i en Spartan-3 platform. Denne platform har mange fordele ved design af digitale systemer. For at kunne forstå desginprocessen, vil denne platforms egenskaber blive forklaret i rapporten. Dette kapitel vil omhandle den del af Spartan-3 platformen, som kaldes FPGA. 6.1 FPGA I dette projekt skal en prototype af sampleren designes. Hertil anvendes en FPGA (Field-Programmable Gate Array), som er et modificerbart integreret kredsløb. Overordnet set kan en FPGA betragtes som en programmerbar hardware-enhed. En FPGA er baseret på halvledere og har rekonfigurerbare logikblokke, som er forbundet med rekonfigurerbare ledninger og databusser. Fordelen ved at anvende en FPGA er, at den hardware, som er udviklet på FPGA en under projektet, kan ændres, selv langt inde i projektet. FPGAen kan moduleres ved hjælp af et tilegnet sprog, kaldt VHDL (Very high speed integrated circuit Hardware Description Language). Den konkrete FPGA, som anvendes i dette projekt, er en Spartan 3 XS1000. Denne er valgt, da den er egnet til at lave prototyper på, idet den giver mulighed for at tilslutte mange forskellige inputs og outputs, har integreret 4 7-segmentsdisplays, SRAM for større lagermulighed, dioder, knapper og RS232 port indbygget på platformen. Derudover kan Spartan-3 platformen også håndtere en Microblaze-processor. [FPG] Inputs og outputs Spartan-3 XS1000 har 3 40-pin udvidelsesstik, med mulighed for at tilslutte mange eksterne signaler. Dog er nogle af disse pins reserveret i tilfælde af, at visse af platformens funktioner er taget i brug. De tre udvidelsesporte ses på figuren nedenfor 6.1. A1-porten deler mange signaler med kommunikation til de RAM, der sidder på platformen. Derfor skal denne port ikke tages i brug, hvis det ønskes at benytte SRAM-blokkene. A2-porten er næsten kun dedikeret til in- og outputs. B1-porten har også delte porte, men de fleste kan bruges som in- eller outputs. Det er valgt, at benytte A2-porten til input fra knapper og encodere, samt outputs til dioder og A/D converter. A1-porten benyttes ikke til input eller output, da det ønskes at benytte RAM og derfor er disse signaler allerede optaget. Der er skrevet mere om RAM-controlleren i afsnit

26 6.1. FPGA Aalborg Universitet [Xilinx, 2005] Figur 6.1: På figuren ses en illustration af de 3 udvidelsesstik Constraint fil For at kunne bruge disse in- og outputs, skal FPGA en have fortalt, hvilket signaler der tilhøre hvilke ben. Dette sker i en opslags-fil, som kaldes en Constraint-fil. Filen mapper de signaler, som brugeren har defineret i sin VHDL kode, ud på de ønskede ben af FPGA en UAR/T Der er på spartan-3 platformen en RS232 port, som gør det nemt at udføre debugging på software, imens det skrives, da status kan skrives til en terminal på computeren Opsumering En FPGA er en reprogrammebar hardware-enhed. Denne giver mulighed for at designe hardware og ændre det undervejs ved at programmere det fra en PC. Sproget det programmeres med kaldes VHDL. I dette projekt er der valgt en Spartan3-platform, som har adskillige in- og outputs, samt knapper, switches, dioder, 7-segementsdisplays og UAR/T. UAR/T giver mulighed for at kunne debugge programmerne, som skrives ned på FPGA en. Det er også muligt at programmere en processor ned på FPGA en, hvilket næste kapitel vil omhandle. 18

27 6.2. Microblaze Aalborg Universitet 6.2 Microblaze Samplerens funktioner skal implementeres på spartan-3 platformen. Det er muligt at implementere en processor i FPGA en. Visse af samplerens funktioner kan med fordel håndteres af processoren, hvor andre bedst kan betale sig at lade selve FPGA en håndtere. Dette kapitel vil komme ind på Microblaze-processorens opbygning, egenskaber og hvordan den vil blive anvendt i dette projekt. En MicroBlaze-processor er en såkaldt softcore-processor, dvs. at processoren programmeres ned på FPGAen. Det er altså ikke en dedikeret fysisk processorenhed. Ved at lave en microprocessor i en FPGA, kombineres fordelene fra en alm. processor og FP- GA en i samme enhed. Microblazen er designet til at kunne programmeres, sådan at det kun er de funktioner, der skal bruges til den opgave, som skal løses, der bliver lagt ned i Microblazen og derved kan der spares plads, hvilket kan betyde at hastigheden af processoren øges. Microblazen er valgt, da den kan programmeres med C-kode, hvilket giver stor fleksibilitet i forhold til de opgaver, der kan løses med en Microblaze. Der er mulighed for at anvende 32 bits til hukommelsesbussen til Microblazen, hvilket vil sige at det er muligt at tildele processoren 4 Gb RAM. Planen i dette projekt er at bruge microblaze processoren til at behandle de data der samples fra AD konverteren og håndterer C-programmet Microblazens interne design Microblazen består af flere forskellige blokke internt. I dette afsnit vil de blokke, der gør at Microblazen kan betegnes som en processor, blive beskrevet og forklaret. På figur 6.2 ses et blokdiagram over Microblazen, i de følgende afsnit vil de farvede firkanter blive forklaret ALU og skifteregistre (Blå firkant) I den her firkant er der en ALU (Arithmetic Logical Unit) og et skifteregister. ALU en er ikke dokumenteret i Microblaze dokumentationen, så der vil i stedet blive lavet en beskrivelse af en 1-bits ALU. Der vil også blive givet en kort gennemgang af, hvordan skifteregisteret virker. Arithmetic Logical Unit (ALU) ALU-blokken er designet til at lave forskellige regneoperationer på 2 værdier. Regneoperationer kan være addition, subtraktion, multiplikation, division eller blot en sammenligning. Der tages udgangspunkt i en 1-bit ALU, som derefter kan udvides til en 8-, 16- eller flere bits ALU(Tanenbaum [2005]). Dette gøres ved at sætte flere 1-nit ALU er sammen, som vist på figur 6.4. For at give en bedre forklaring på, hvorfor 1-bit ALU er kan sættes sammen, er det nødvendigt at forstå, hvad der sker inde i ALU en. ALU ens interne dele er mulige at dele op i små blokke. De 3 blokke, som ALU en består af, er en logisk enhed, en dekoder samt en full adder. Disse 3 blokke gør det 19

28 6.2. Microblaze Aalborg Universitet ref_guide.pdf Figur 6.2: Blokdiagram over Microblaze processoren. I den blå firkant er ALU og skifteregistre, i den røde firkant er program-counteren, i den lyserøde firkant er instruktionsregistre og i den grønne er general purpose registre. Alle disse er beskrevet i dette kapitel Tanenbaum [2005] Figur 6.3: Billed af hvordan det er muligt at sammensætte flere ALU er for at udvide bit-kapaciteten muligt, at lave de nødvvendige regneoperationer. Nogle af disse operationer er sværere end andre. Det er f.eks. simplet at gange med 2 da det er en skifteregister-operation, alle tallene skal blot flyttes én plads i retning af den mest betydende bit. Det er sværere at trække 2 tal fra hinanden, da det er nødvendigt at lave det tal, der skal trækkes fra, om til 2s-kompliment. Dette er kun muligt ved at lave flere forskellige operationer, altså skal tallene igennem ALU en flere gange. 20

29 6.2. Microblaze Aalborg Universitet Tanenbaum [2005] Figur 6.4: Dette blokdiagram viser, hvordan en 1-bit ALU er opbygget. Denne opbygning er ikke nødvendigvis, som den i Microblazen. Logisk enhed ALU ens logiske enhed består af 3 kredse, som klarer de operationer, der skal laves. Derudover er der 3 kredse til at bestemme, hvilke af de 3 operationer, der skal føres videre ud til udgangen af ALU en. De 3 operationer bliver klaret af en AND gate, en OR gate og en inverter. I den logiske enhed, er det muligt at få A*B, A + B (addering) eller B inverteret. Med disse 3 operationer er det muligt at lave alle de arithmetriske operationer som plus, minus og gange. Division er, som oftest klaret af en floating point unit (kommatal), dette sker fordi ALU en kun er designet til at skulle klare integere (helttal). Ved division af 2 tal er det muligt at ende op med et tal, som ikke kan være i en integer og derfor er det en floating point unit, som tager sig af alt division. Med den logiske enhed og de gates, der sidder på indgangen af ALU en, er det også muligt at lave alle de logiske operationer som AND, OR, XOR og de inverterede operationer. Dekoder Dekoder kredsløbet kan ved hjælp af 2 bits, bestemme hvilke af de 4 operationer der skal åbnes op for ved hjælp af de AND gates, der sidder lige bag ved hver af de kredsløb, som er til de forskellige operationer. Det eneste den her 0 multiplexer består af er 4 invertere og 4 AND gates. A B A&B A&B A&B A&B

30 6.2. Microblaze Aalborg Universitet Som det ses ud fra sandhedstabellen, er det ikke nødvendigt med mere end de 2 inputs til dekoderen. Full Adder Full adder kredsløbet er, som navnet hentyder til, nemlig et kredsløb, der kan adderer 2 tal. Det bruges også uden for ALU en i processoren til at udregne adresser med Skifteregister Skifteregistret kan læse et register og skubbe indholdet af det register enten til højre eller venstre i bitrækken. For at give et bedre billede af, hvad et skifteregister kan, vil der blive givet et eksempel med 4 bits. Hvis de 4 bits er 0110 (6.1) og der udføres en skifte operation, som skifter mod venstre, vil det komme til at se ud således: 1100 (6.2) Hvis operationen så gentages igen, på det nye tal, vil den mest betydende bit blive smidt over i et carry flag. Det vil komme til at se sådan ud: et carry flag (6.3) Program-counter (Rød firkant) Figur 6.5: Overblik over de forskelligesignaler, der bruges fra Microblazen. Program-counteren er et register med 32 bits, hvor adressen på den næste instruktion er gemt. Programcounteren har et carry flag, som bliver brugt til interrupt. Programcounteren tæller op og henter den næste instruktion, der skal afvikles fra den programkode, som er lavet fra komplieren til Microblazen Instruktionsregistre (Lyserød firkant) Instruktionsregistrene indeholder de instruktioner, der skal bruges I ALU en. Disse instruktioner bliver læst ind fra Microblazen s instruktionssæt. ALU en henter fra program counteren, den adresse hvorpå instruktionen befinder 22

31 6.2. Microblaze Aalborg Universitet sig, herefter læses instruktionsregistret for at finde ud af, hvilken operation ALU en skal udføre. Instruktionsbufferen henter instruktioner forud, sådan at hastigheden af processoren øges General purpose registre (Grøn firkant) Her bliver alle variabler fra programkoden gemt, og kan hurtigt læses ind i ALU en. Der er 32 registre, som alle kan indeholde værdier på op til 32 bits. General purpose in- og outputs er, som navnet antyder, in- og outputs, der bliver brugt til det, som brugeren af Microblazen har brug for. I dette projekt bliver de brugt til dioder, knapper og andre former for bruger inputs. Derudover bliver de også brugt til kommunikationen til RAM og ADC, se figur Fixed interval timer (FIT) Fixed interval timer er en timer, der blive genereret sammen med Microblazen. Timeren tæller det antal clock cycler, som er bestemt der skal gå mellem hver gang signalet på FIT en går højt. En FIT kan genererer 2 signaler FIT_toggle og FIT_interrupt. Disse to kan ses på figur 6.6. Der bruges i dette projekt 2 FIT s. Figur 6.6: Diagrammet viser FIT_toggle og FIT_interrupt, hvor FIT_toggle har en 50 % duty cycle og FIT_interrupt blot kort sættes højt, når det tilhørende antal clock cycler er forløbet. På den ene FIT, bruges kun FIT_toggle og på den anden kun FIT_interrupt. FIT interrupts bruges til at lave en timer internt i softwaren. FIT-toggle bruges som en clock-generator til analog til digital konverteren, så der samples med den rette frekvens Interrupt Interrupt bruges generelt til at kunne prioritere et lille stykke programkode over resten af programmet. Når interrupt-benet går højt bliver det registreret internt i Microblazen, og resten af programmet sættes på pause. Når resten af programmet sættes på pause, gemmes den nuværende position, der er ved at blive eksekveret, i stakken. Stakken er den midlertidige hukommelse, hvor de variable der arbejdes med i programmet gemmes. Ved et interrupt bliver program-counterens værdi gemt i stakken, sammen med eventuelle variable, som var i brug da interruptet kom. Når program-counterens og de andre variables værdi er gemt, bliver interruptkoden kørt. I dette projekt er det valgt at håndtere tiden ved at tælle op hvert halve millisekund. Når interruptet 23

32 6.2. Microblaze Aalborg Universitet er afsluttet hentes programcounter værdien og de andre variable ind igen, og programmet fortsætter, som intet var sket Opsummering I det her afsnit er det blevet forklaret, hvordan Microblazen er opbygget. Den består af en ALU, som kan lave forskellige logiske beregninger. Der er en program-counter, der holder styr på hvor i programmet der bliver arbejdet. Dette giver mulighed for at lave interrupt kald. Interruptet stopper hovedprogrammet helt, gemmer program-counterens værdi i et register og kører interruptrutinen, som er højere prioriteret end hovedprogrammet. Når interruptrutinen er gennemført genoptages hovedpragrammen fra programcounterens værdi. Det bliver i dette projekt brugt til at lave en tæller som styre timingen af sekvensen og BPM. Interruptet bliver genereret med en Fixed interval timer eller FIT, som bliver genereret sammen med processoren, når den programmeres ned i FPGA en. FIT en sender et interrput for hvert gang et bestemt antal clock cycler er forløbet. Microblazen består også af en masse registre, der styrer alt fra instruktioner til in- og outputs. Microblazen er i dette projekt, hjernen der styrer næsten alle funktioner. Microblazen bliver blandt anden brugt til at tilgå hukommelsen. Det næste kapitel vil omhandle RAMcontrolleren, som er den anvendte hukommelse i dette projekt. 24

33 6.3. Hukommelse Aalborg Universitet 6.3 Hukommelse Sampleren skal kunne optage og afspille optagede lyde. Dette kræver at samples kan gemmes, hvilket betyder, at der er brug for hukommelse. Dette kapitel vil derfor omhandle tilgangen til de eksterne RAM på spartan-3 platformen, herunden hvilke porte der er, samt hvilke timing parametre der skal overholdes for at læse eller skrive til dem. Derefter vil den RAM-controller og tilgangen til RAM-blokken fra Microblazen blive gennemgået. Hastigheden af controlleren vil blive udregnet for at sikre sig at den overholder de krav, der er opstillet til den. Til sidst vil enkelte forbedringsmuligheder blive gennemgået. Det er i dette projekt nødvendigt at have mulighed for at gemme de data, der kommer ind fra A/D konverteringen, da disse data ikke altid bruges med det samme. Desuden åbner det også muligheder for at manipulere med data, dette kan for et eksempel være at justere enkelte samples, så brugeren kan få den ønskede effekt ud af den lyd der er optaget. Der er to måder at tilgå memory på en spartan-3 platform. Den første er at tilgå de eksterne RAM, der sidder på platformen. Disse eksterne RAM er asynkrone SRAM (Static Random Access Memory), dette betyder, at de ikke umiddelbart er til at læse eller skrive til på hvert clocksignal. Det er derfor nødvendigt med en controller, der holder styr på de forskellige signaler ind til de eksterne RAM-blokke. Den anden metode er at lave registre internt i spartan-3 platformen, denne metode er synkron med clocken, og kan derfor tilgås nemmere end de eksterne RAM, dog er kapaciteten af disse interne RAM langt fra at være lige så stor som de eksterne RAM. I dette projekt er det vigtigt, at have så meget plads til den konverterede lyd som muligt. Derfor er det valgt at bruge de eksterne SRAM. Spartan-3 platformen har to 256k x 16 asynkrone SRAM, det vil sige at der i alt er 1 mebibyte memory fordelt på de 2 blokke. Hver blok har plads til bits. Disse bits er af fabrikanten fordelt på 16-bit words. Words er ikke altid 16-bit, men dette passer til kravet om at sample med en opløsning på 16-bit. Nedenfor vil det blive udregnet, hvor lang en sample der er plads til på en enkelt blok: = ords (6.4) 16 Det er i kravspecifikationen blevet bestemt, at der samples med 44,1 khz, hvilket betyder, at der skal stykker data ind i sekundet. Derfor kan den maksimale længde af lydklippet udregnes: = 5,944 s (6.5) 44,1 khz Det vil sige, at der i hver blok kan være næsten 6 sekunders lyd. Dette er tilstrækkeligt til prototypen af produktet. En nem måde, at udvide dette på, 25

34 6.3. Hukommelse Aalborg Universitet er at gøre det muligt at skrive til den anden eksterne SRAM-blok på spartan-3 platformen, hvilket vil fordoble kapaciteten. Der er en del signaler ind og ud fra SRAM-blokken. På figur 6.7 er et blokdiagram over SRAM-blokken vist: [ISSI, 2011] Figur 6.7: Blokdiagram over ind- og udgange af spartan-3 platformens SRAM-blok Signal Størrelse(bits) Funktion A0-A17 18 Adresseben I/O0-I/O15 16 Databen CE* 1 Chip enable OE* 1 Output enable WE* 1 Write/Read enable UB* 1 Upper byte enable LB* 1 Lower byte enable * Bemærk at disse signaler er active-low, dvs. at de er afbrudt, når de har værdien 1. 26

35 6.3. Hukommelse Aalborg Universitet A 0-17: Er adresseben, disse ben bruges til at styre, hvor i RAM-blokken at de pågældende data skal gemmes. I/O 0-15: Er databen, disse ben gør de muligt både at læse og skrive til RAM-blokken. Data på disse ben bliver sendt til den adresse, der er bestemt af ovenstående adresseben. Disse ben er in- og output, hvilket vil sige at data til og fra RAM skal igennem samme ben. CE, (Chip Enable): Hvis dette signal sættes højt går RAM-blokken i standby, der reducerer strømforbruget. I dette projekt er signaltet lavt, da der altid ønskes mulighed for at tilgå RAM-blokken. OE, (Output Enable) Dette signal bruges til at tilgå RAM-blokken. Sættes dette signal højt, bliver de 16 databen højimpedante, hvilket betyder, at det ikke er muligt at tilgå disse databen WE, (Write Enable): Dette signal bruges til at bestemme, om der skal skrives eller læses til RAM-blokken. Når signalet er højt, er der mulighed for at læse fra RAM, hvis signalet derimod er lavt kan der skrives til RAM. UB, (Upper Byte enable): Dette signal sættes højt, hvis brugeren ikke ønsker at tilgå de øverste 8 databits. LB, (Lower Byte ebable): Dette signal bruges, ligesom det foregående, her er det dog omvendt, og signalet skal sættes højt, hvis brugeren ikke ønsker at tilgå de nederste 8 databits. Da der i dette projekt kun arbejdes med en enkelt RAM-blok, vil CE og OE altid være sat lav, ydermere vil UB og LB også altid være sat lav, da der kun skal læses og skrives 16 databit af gangen Timing For at læse eller skrive til RAM-blokken, er det nødvendigt at holde styr på en del parametre. Der er flere end 20 parametre[ref til datablad], heldigvis er det ikke alle, der skal kontrolleres for at få data ind eller ud af RAM. Der er flere måder at læse, og skrive til disse RAM på, nedenunder er et simplificeret timing-diagram for den metode, der er valgt til dette projekt, vist. Det fulde timing-diagram kan ses i [ref til datablad]. Bemærk at i timing-diagrammet for både read- og writecycle er ce, lb og ub lave. 27

36 6.3. Hukommelse Aalborg Universitet [ISSI, 2011] Figur 6.8: Timing diagram af en read-cycle t OHA : Output hold time, dette er den tid at output fra RAM vil være tilgængelige, efter at adressen er skiftet. t AA : Adress access time, den tid det tager fra at adressen sættes til at data er klar på data-bussen. t RC : Read cycle time, dette er minimumtiden imellem 2 læseoperationer på RAM. Tabel 6.1: Read-cycle parametre Symbol Parameter min max enhed t OHA output hold time 2 - ns t AA adress access time - 10 ns t RC read cycle time 10 - ns Der er ligesom før, flere forskellige måder at læse fra RAM på. I tabel 6.2 er et simplificeret timing-diagram af en write-cycle. Selve skrivningen ind i RAMblokken sker, når read/write signalet (write_enable) går fra lavt til højt. [ISSI, 2011] Figur 6.9: Timing diagram af en write-cycle 28

37 6.3. Hukommelse Aalborg Universitet Tabel 6.2: Write-cycle parametre Symbol Parameter min max enhed t SA adress setup time 0 - ns t HA adress hold time 0 - ns t WPE1 WE pulse width 8 - ns t SD data setup time 6 - ns t HD data hold time 0 - ns t WC write cycle time 10 - ns t SA : Address setup time, dette er den tid som adressen minimum skal være stabil inden read/write signalet sættes lavt. t HA : Adress hold time, det er den tid adressen minimum skal være stabil efter read/write signalet sættes lavt. t WPE1 : Write enable pulse width, minimumstiden at read/write signalet skal holdes lavt. t SD : Data setup time, den tid, dataen på databenene, som minimum skal være stabil, før der skrives til RAM. t HD : Data hold time, den tid som data skal holdes stabil efter at der er skrevet til RAM. t WC : Write cycle time, tiden som det minimum vil tage at foretage en write-operation. Med disse informationer er det nu muligt at konstruere en RAM-controller, der skal fungere som et link imellem microblazen og selve RAM-blokken. Dette er vigtigt da en læse eller skrive operation tager mere end 1 clock cycle, og for at gøre det nemmere at udføre operationer direkte fra microblazen SRAM-controller For bedre at kunne forstå, hvad en RAM-controllers opgave er, er der på figur 6.10 en overordnet tegning over de signaler, der kommer ind og ud fra den. [ISSI, 2011] Figur 6.10: Overordnet tegning over komponenter omkring RAM-controlleren samt signaler 29

38 6.3. Hukommelse Aalborg Universitet Bemærk på figur 6.10 at de 3 blokke mod venstre befinder sig inde i spartan-3 platformen, hvoraf Microblazen er en softcore-processor. De data der sendes fra Microblaze til Top_level vendes der tilbage til senere i dette afsnit. RAMcontrollerens opgave er at tage signaler fra microblazen, og sende de data videre, som noget RAM-blokken kan forstå. Den opgave Top_level har, er at gøre det nemmere at sende kommandoer fra microblaze, og omsætte de inputs til noget som RAM-contolleren kan forstå, den er med andre ord skridtet fra software til hardware programmering. Top_level sender disse data videre til RAM-controlleren. Skridtet imellem RAM-controlleren og RAM-blokken er kontrolleret ved hjælp af en constraints fil, som er blevet forklaret i afsnit For bedre at kunne sige præcis, hvad RAM-controlleren skal, kigges der på figur 6.8, hvorefter der opstilles en liste over de steps, som RAM-controller skal igennem for at gennemføre en read cycle. 1. Adressen, der skal læses fra, sættes ind, samt at output_enable signalet skal sættes lavt, disse signaler skal være stabile under hele read-cyclen. 2. Vent derefter på at t AA overholdes, i følge tabel 6.1 tager det maks 10 nanosekunder. Dette løses nemt ved bare at vente 1 clockcycle(20 ns). 3. Data er klar på Data_out, og der gøres klar til en ny cycle. Skal der derimod skrives er fremgangsmåden lidt anderledes, der tages udgangspunkt i figur Placer adressen på adresse-bussen, samt at write_enable sættes lavt da der skal skrives. 2. Vent derefter på at at t WPE1 overholdes, i følge tabel 6.2 tager dette minimum 8 nanosekunder, dette løses igen ved at vente 1 clock cycle (20 ns). 3. Sæt derpå write_enable høj igen, det er på det tidspunkt at data bliver skrevet ind. 4. Fjern data fra data_ind, og gør klar til ny cycle. Disse informationer er sat op i en ASMD (Algorithmic State Machine with Data path) i figur 6.11, for at gøre det nemmere at overskue. 30

39 6.3. Hukommelse Aalborg Universitet Figur 6.11: ASMD over RAM-controlleren, bemærk at alt inde i den røde firkant er 1 state Selve controlleren er opdelt i 5 states: klar, read1, read2, write1 og write2, RAM-controlleren kan kun være i et state af gangen, og bruger en clock cycle på at komme fra 1 state til den næste. I hvert state står der, hvad der skal ske i selve koden. Den nedenstående kode viser hvordan RAM-controlleren bevæger sig i klar-tilstanden. 57 process ( state_reg, mem, rw, dio_a, addr, data_f2s, data_f2s_reg, data_s2f_reg, addr_reg ) 58 begin 59 addr_next <= addr_reg ; 60 data_f2s_next <= data_f2s_reg ; 61 data_s2f_next <= data_s2f_reg ; 62 ready <= 0 ; ready say t i l 0, som i nu er en operation i gang 63 case state_reg i s 64 when idle => 65 i f mem= 0 then 66 state_next <= idle ; hvis mem er 0 bliver vi i " idle " state 67 else 68 addr_next <= addr ; e l l e r s opdateres adresesn 69 i f rw= 0 then write 70 state_next <= wr1; hopper ned i write1 state hvis read / write = 0 71 data_f2s_next <= data_f2s ; data sættes klar 72 else reading 73 state_next <= rd1 ; hvis ikke der skal skrives, så skal der læses 74 end i f ; 75 end i f ; 76 ready <= 1 ; Der er indsat et top_level, der skal gøre det nemt at kontrollere, hvad der sker ned til RAM fra microblazen. RAM kan kontrolleres ved hjælp af 2 signaler fra Microblazen, "data_skriv"og 31

40 6.3. Hukommelse Aalborg Universitet "memory". Memory bruges til at styre, hvornår RAM skal tilgås og sættes lavt, både hvis der skal læses og når der skal skrives. Data_skriv bruges til at bestemme, om der skal læses eller skrives, når data_skriv sættes lavt, signaleres der til RAM-blokken, at nu ønskes der en skrive operation, hvis signalet er højt ønskes der i stedet en læse operation. Et udsnit af koden, der gør netop dette, kan ses nedenfor: 131 process ( data_skriv, memory) 132 begin 133 data_f2s <= ( others=> 0 ) ; alle databit bliver sat t i l i f ( data_skriv = 0 and memory = 0) then skriv 135 mem <= 1 ; "Åbner" for ram 136 rw <= 0 ; siger t i l memory controlleren at vi v i l skrive 137 data_f2s <= data_fra_microblaze ; sender data fra microblaze videre ind t i l Memory contolleren 138 e l s i f ( data_skriv = 1 and memory = 0) then læs 139 mem <= 1 ; "Åbner" for ram 140 rw <= 1 ; siger t i l memory controlleren at vi v i l læse 141 else 142 mem <= 0 ; "Lukker" for tilgangen t i l RAM 143 rw <= 1 ; den kan stå på hvad den nu v i l 144 end i f ; 145 end process ; 146 output 147 data_til_microblaze <= data_s2f ; Data fra RAM bliver sendt tilbage ind i microblaze Dette styrer hvorvidt data skal ind eller ud af RAM-blokken, samt hvornår. Det fortæller derimod intet om, hvor disse data er. Adressen ned til RAM-blokken bliver opdateret ved hver clock cycle, dette foregår i en seperat proces, der kører ved hver clock cycle: 119 process ( Clk ) 120 begin 121 i f ( clk event and clk = 1 ) then 122 signal_addr <= adresse_fra_microblaze ; 123 data_f2s <= std_logic_vector ( data_fra_microblaze(17 downto 2) ) ; 124 data_skriv <= std_logic_vector ( data_fra_microblaze(1 downto 1) ) ; 125 memory <= std_logic_vector ( data_fra_microblaze(0 downto 0) ) ; 126 end i f ; 127 end process ; 128 addr <= signal_addr ; Hele koden kan desuden ses i appendiks D Hastighed af RAM Da der ønskes en samplingsfrekvens på 44,1 khz, det vil sige at der kommer en ny 16-bit datastring hver 22,68 millisekund ifølge formel = 22,68 ms (6.6) 44,1 khz Ifølge krav i kapitel 5.2 skal RAM-controller være i stand til at sætte en 16-bit string ind i RAM-blokken, inden de næste 16 bit dukker op fra A/D-converteren. 32

41 6.3. Hukommelse Aalborg Universitet Det betyder med andre ord at controlleren skal være i stand til, at udføre en read eller write cycle indenfor 22,68 millisekunder. Da Microblazen frekvens er 50 MHz, betyder det ifølge formel (6.7) 1 = 20 ns (6.7) 50 MHz at en clock cycle tager 20 nanosekunder, deraf kan det udregnes, hvor mange clockcykler der er til rådighed i formel (6.8), dog skal det huskes at en læse eller skrive operation hver tager 3 clock cycler dvs. 60 ns. 22, 68ms 60ns = c ockcyc er (6.8) Opsummering Den største hindring ved disse RAM er kapaciteten, der bliver i projektet kun tilgået 1 af de 2 eksterne RAM-blokke bag på spartan-3 platformen, det er valgt ikke at arbejde videre med at tilgå begge, da en er nok til at gemme 2 lyde af minimum 2,5 sekunder 5.2 i prototypen. Der er derimod ingen tvivl om, at hastigheden kan overholdes, men det er samtidig langt fra umuligt at gøre RAM-controlleren endnu hurtigere, det kunne for et eksempel være ved at eliminere klar-tilstanden, se figur På den måde vil alle læse- eller skriveoperationer ske lige efter hinanden uden nogen form for pause. En anden metode kunne være, at hæve clockfrekvensen til det dobbelte (100 MHz), det ville betyde at en clock cycle tog 10 ns i stedet for 20 ns. Dette vil stadig virke, da timing parametre fra RAM, se tabel 6.1 og 6.2, ikke overstiger 10 ns. Ingen af disse løsninger vil kunne betale sig, da RAM-controlleren overholder de krav, der er sat i projektet. Det at sætte hastigheden op forøger chancen for fejl. Det er i dette kapitel lykkedes at konstruere en RAM-controller der er i stand til at tilgå RAM-blokken fra Microblazen indenfor det ønskede tidsinterval. Næste kapitel omhandler sampling af den data, som skal gemmes. 33

42 6.4. Sampling af lyd Aalborg Universitet 6.4 Sampling af lyd Sampling af lyd foregår med analog til digital konvertering, ved brug af en DSP56ADC16-chip. Denne chips funktionalitet er forklaret og testet i appendiks B. Chippen kan konfigureres på mange forskellige måder. En kort opsummering af chippens konfiguration til fordel for dette projekt, følger. FIR-filter er valgt. Dette giver mulighed for 16 bit opløsning, og et dynamisk område på 96 db. SFMT (Serial Format) er valgt til 0. Dette valg gør så FSO benet giver en puls lige før hvert sample sendes ud på SDO. En ønsket output samplingsfrekvens på mindst 44,1 khz. Dette giver mulighed for at sample lyde på op til 22 khz Signaler Ind Chippen skal have et clock-signal for at fungere. Dette signal kommer fra Microblazens FIT2. Det er FIT_toggle der sendes ud, da dette signal har en 50 % duty-cycle. FIT_toggle signalet skal have en frekvens, der sørger for at chippens samplingsfrekvens bliver minimum 44,1 khz, se kapitel 5. Det fremgår af databladet [Motorola, 1992], at output samplingsfrekvensen er ƒ s,o t = ƒ s, n 128 (6.9) Her er ƒ s, n inputsamplingsfrekvensen, som svarer til FIT_toggle frekvensen og ƒ s,o t outputsamplingsfrekvensen. Den ønskede output samplingsfrekvens sættes ind i formlen og input samplingsfrekvensen isoleres. ƒ s, n = 44,1 khz 128 = 5,6448 MHz (6.10) Derfor skal FIT signalet have en frekvens på mindst 5,6448 MHz. For at dette lader sig gøre, skal der regnes ud, hvor mange 50 MHz clock cycler der skal til imellem hvert FIT signal. 50 MHz = 5,6448 MHz 50 MHz = 5,6448 MHz = 8,56 (6.11) Her er x antal clock cycler på 50 MHz, der skal gå for at opnå den ønskede inputsamplingssekvens. Da det ikke er muligt at dele Microblazens clock op i halve, er det valgt at have 8 cycler imellem hver FIT. Det giver den følgende inputsamplingssekvens 50 MHz ƒ s, n = = 6,25 MHz (6.12) 8 34

43 6.4. Sampling af lyd Aalborg Universitet Hvilket resulterer i en ny outputsamplingsfrekvens på ƒ s,o t = 6,25 MHz = 48,828 khz (6.13) Ud Der er 3 signaler fra ADC-chippen, som er vigtige for at kunne sample korrekt. Frame Sync Out (FSO), Serial Clock Out (SCO) og Serial Data Out (SDO). Disse kan ses på figur 5.1. Serial Data Out er det signal, der indeholder den samplede data. Mellem hvert sample er der 32 SCO pulser. De 16 første indeholder den samplede data, og de 16 sidste er alle 0. Denne data kommer ud af chippen serielt. Frame Sync Out er et signal, der sender en puls lige før den første bit i samplet transmitteres. Dette signal indikerer, hvornår et nyt sample kommer. Den adresse, det første sample ligges ind på, skal ændres, så det næste sample ikke overskriver det første sample. FSO kan benyttes til denne inkremering af adresse. Serial Clock Out signalet er en clock, der sender en puls hver gang en bit transmitteres. Dette giver mulighed for at holde styr på, hvor mange bit der er lagt ind i RAM, og derfor kan memory controlleren lukkes efter 16 bits. Dette sker, så det egentlige sample ikke bliver overskrevet af de efterfølgende 16 nuller, inden det næste sample kommer Håndtering af samples Det er valgt i dette projekt at konvertere det serielle data, der kommer ud af chippens SDO, til parallel data inden det sendes ind i Microblazen og videre til RAM. Dette realiseres ved at lave et skifteregister i VHDL der er timet efter to af chippens signaler FSO og SCO. Det første der skal ske i VHDL koden er at konstruere en måde hvorpå programmet er i stand til at detektere hvornår de SCO og FSO finder sted. For bedre at forstå hvorfor det er vigtigt at vide præcis hvornår SCO eller FSO kigges der på et timing fra databladet, se figur [Motorola, 1992] Figur 6.12: Uddrag af timing diagram for A/D konverter 35

44 6.4. Sampling af lyd Aalborg Universitet 1 Her ses det at data på SDO er stabile når der er en faldende flanke på SCO. Med det i mente, er det nu muligt at sende data ind i en 16-bit SIPO-buffer (Serial In Parallel Out). Dette realiseres i vhdl, og kan ses i kodeeksemplet nedenfor. 2 process ( detect_output_sco, detect_output_fso, parallel_out, s e r i a l _ i n ) SIPO buffer (16 bit ) 3 begin 4 i f ( detect_output_sco = 1 and detect_output_fso = 0 ) then hvis der er data klar, og der ikke er reset, så 5 parallel_out (15 downto 1) <= parallel_out (14 downto 0) ; s k i f t parallel output med 1 6 parallel_out (0) <= s e r i a l _ i n ; input nyt b it fra s e r i e l ind på plads 0 i parallel output 7 end i f ; 8 end process ; Koden tager data serielt ind på serial_in-benet, og sender det bit over i et 16-bit register, det register bliver så skiftet en plads til venstre, hver gang der kommer en faldende flanke fra SCO. Denne funktion vil blive ved med at gemme nye bits, og efter 16 pulser fra SCO, vil de første bits, der er sendt ind i registeret, forsvinde. Derfor kører der parallelt med denne funktion en counter, der tæller 1 op, hver gang der er en faldende flanke fra SCO. Når dette counter så når 16, sender den en puls ved navn max_tick, når max_tick går højt, fortæller den, at nu skal data sendes ud parallelt fra SIPO via en 16-bit bus, og videre til Microblazen. Hele koden kan ses i appendiks D Opsummering I dette afsnit er det blevet forklaret hvordan analog til digital konvertering er sat op i projektet. Der benyttes en DSP56ADCS chip til at konvertere det analoge signal til digitalt. Denne chip drives af en FIT der sendes ud af Microblazen, med en frekvens på 6,25 MHz. De kontrolsignaler og data signalet chippen sendes ud håndteres af en SIPO, der laver den serielle data parallel så den nemt kan læses ind i hukommelsen. I det næste vil det bliver forklaret hvordan hukommelsen på spartan-3 platformen håndteres. 36

45 6.5. Design af brugerflade Aalborg Universitet 6.5 Design af brugerflade Brugerfladen til et produkt, er det som brugeren kommer til at interegere med. Designet af brugerfladen er derfor vigtigt for brugervenligheden af produktet. Derfor vil der i det følgende afsnit blive beskrevet, hvad de forskellige komponenter i brugerfladen på produktet kan og hvordan de interagere med softwaren. Der vil også blive givet et overblik over, hvordan brugerfladen, for den prototype der vil blive produceret, vil komme til at se ud. På figur 4.1 ses et billede af prototypens brugerflade. Figur 6.13: Figuren viser prototypens brugerflade. Dioder til sekvens (Kasse nr. 1) Denne samling af 8 dioder, bliver brugt til at vise brugeren, hvor i sekvensen trommemaskinen befinder sig. Dette er lavet for at vise brugeren, hvor i sekvensen der bliver arbejdet. Når den sidste plads i sekvens er nået, skal sekvensen startes forfra, altså skal der komme lys i dioden i den modsatte ende af dioderækken. Disse dioder bliver styret af Microblazen for at holde styr på, hvor i sekvensen der arbejdes. 37

46 6.5. Design af brugerflade Aalborg Universitet Dioder til samples (Kasse nr. 2) Disse 2 dioder, giver brugeren et visuelt overblik over, hvilke samples der bliver afspillet. Hvis der, på en given plads i sekvensen, er programmeret en eller flere lyde ind, vil de tilsvarende dioder lyse. Disse dioder bliver også aktiveret af Microblazen, så der er mulighed for at holde styr på hvilke samples der afspilles, hvor i sekvensen. Knapper til at vælge forskellige tilstande (Kasse nr. 3) De 2 knapper der er angivet i kasse nummer 4, bliver brugt til at vælge mellem programmerings tilstand eller afspilnings tilstand. Disse knapper er hægtet på en vektor, hvor de bits, der er styret af knapperne, bliver tjekket inde i Microblazen. Udfra hvordan bit-kombinationen er på vektoren, vil det blive bestemt, hvilken tilstand trommemaskinen skal være i. Knapper til at trigge samples (Kasse nr. 4) På samme måde som det skal være muligt at bestemme hvilken tilstand trommemaskinen skal være i, skal det være muligt at bestemme, hvilke samples der skal puttes ind på de forskellige pladser i sekvensen. Denne funktion er tildelt knapperne i kasse nr. 4. De fungere på samme måde, som de knapper der er beskrevet i kasse nummer 3. Knapperne manipulere en vektor, hvor de bits, knapperne manipulerer, bliver tjekket inde i Microblazen. Udfra kombinationen af bit ene vil det blive bestemt, hvilket sample der skal placeres i sekvensen. Encoder til tempostyring (Kasse nr. 5) Brugeren kan justere tempoet ved at dreje på en encoder. Microblazen forøger eller reducerer tiden mellem hvert step, udfra drej på encoderen. Encoderen er lige som knapperne tilsluttet vektoren der tjekkes i Mikroblazen. En funktion i C-programmet sørger for at finde ud af hvilken vej encoderen drejer. Vippekontakt til stepskift(kasse nr. 6) Vippekontakten her i kasse 6, er den som brugeren kan bruge til at bestemme, hvilket step i sekvensen der skal arbejdes på, når sekvensen skal programmeres. Ved at vippe med kontakten bliver enten det højre eller venstre ben på kontakten sat højt og derved kan processoren registrere, hvilken retning der skal skiftes til. 7-segments display (Kasse nr. 7) 7-segments displayet bliver brugt til at vise brugeren, hvilke tempo der bliver afspillet med i trommemaskinen. BPM bliver udregnet ud fra den værdi, som microblazen har læst fra enkoderens input. Værdien bliver så lavet om til en vektor, der sendes til FPGA en, som styrer 7-segmentsdisplayet. 38

47 6.6. Programmeringsfilosofier Aalborg Universitet 6.6 Programmeringsfilosofier Der er mange forskellige måder at programmere det samme stykke software på. Det er muligt at gøre det efter forskellige filosofier, forskellige metoder, i forskellige sprog, og alt sammen har deres fordele og ulemper. I dette afsnit vil tanken bag de forskellige metoder, brugt i dette projekt, blive forklaret. Der vil blive givet et overblik over de mest anvendte filosofier, samt deres fordele og ulemper [Pro] De forskellige filosofier Når der tales om filosofier inden for programmering, er der tale om, hvordan forskellige programstykker kobles sammen. Nogle kodesprog kan bruges til flere forskellige af disse filosofier, mens andre kun egner sig til et enkelt af dem. Der er sprog, som med vilje kombinerer, hvad der menes at være det bedste fra hver af de mange filosofier, i følge personerne som står bag det pågældende kodesprog. Imperitiv filosofi Grundprincipperne i imperativ programmering, er at programmet bliver afviklet som en funktion af, hvor lang tid der er gået. Det skal forstås på den måde, at den tid, det tager at afvilke de foregående kommandoer, er den tid, som vil blive brugt på at afvilke en given kommando i et program. Denne programmeringsmetode har sine rødder i den digitale elektronik, ved at ideerne bag den og metoden er de samme, som der er lagt vægt på i en Von Neumann maskine. Funktionel filosofi Denne filosofi er baseret på et matematisk grundlag og er derfor i mange henseender meget simplere, end den imperitive filosofi. Tid spiller ikke så stor en rolle, som i imperitiv programmering, samt alle udregninger bliver lavet ved at lave funktionskald. Objekt-orienteret programmering Med objekt-orienteret programmering arbejdes der udfra en idé om, hvordan et program skal fungere, og arbejder sig frem imod at få de funktioner implementeret i et program inden for de givne rammer. Programmet bliver sat op, så der er en logisk sammenhæng mellem de forskellige blokke, som programmet kommer til at bestå af. Realtidsfilosofi Denne filosofi er lavet til realtidsoperationer, hvor det er muligt at sample på den virkelige verden ved hjælp af forskellige sensorer og en analog til digital konverter. Denne filosofi kræver også, at der bliver brugt et programmeringssprog, der gør det muligt at interegere med omverdenen i realtid. Eksemper på disse sprog er C/C++ og java. 39

48 6.6. Programmeringsfilosofier Aalborg Universitet Implementering af filosofier i projektet I dette projekt er der brug for en blanding af de ovennævnte filosofier. Grunden til at det er nødvendigt at blande alle disse filosofier er, at projektet består af flere forskellige systemer. Der er brug for realtidsprogrammering, når der skal samples lyde ind i hukommelsen. Der er også brug for de 3 andre filosofier, når der skal designes funktioner til produktet. Der vil blive brug for at lave en funktion til at afspille samples fra hukommelsen. Der vil blive brug for at lave flere funktionskald, når de indspillede samples skal programmeres ind i sekvensen. Så ved at lave en kombination af alle de forskellige filosofier, er det lettere at skrive den nødvendige kode, der skal til for at få de ønskede funktioner med. 40

49 6.7. Funktionsbeskrivelser Aalborg Universitet 6.7 Funktionsbeskrivelser Her vil de forskellige funktioner blive beskrevet og forklaret. Samtidig vil der være flowdiagrammer til bedre at give en visuel forklaring af funktionens egenskaber Indspilling af samples til RAM Figur 6.14: Flowchart af programsekvensen for hvordan samples bliver gemt i RAM. For at kunne indspille samples til RAM, er der visse betingelser, som skal være opfyldt. Produktet skal være sat i indspilningsmode og der skal være samples fra ADC en før programsekvensen kan afsluttes. Det første der skal være opfyldt, før det er muligt at indspille noget, er at indspilningmode skal være valgt. Det sker ved at lave et tjek på om en kontakt er sluttet eller afbrudt. Hvis kravet, for at gå videre i sekvensen, er opfyldt bliver der også tjekket 41

50 6.7. Funktionsbeskrivelser Aalborg Universitet hvilken knap brugeren har valgt, at lyden skal ligge på. Den adresse bliver sendt videre til Microblazen, som gemmer adressen og har styr på, hvor det pågældende sample er placeret i hukommelsen. Når det er sket så skal der ventes på det næste sample fra ADC en. Når samplet er modtaget bliver det lagt over i adressen i RAM, som brugeren valgte før Programmering af sekvens Figur 6.15: Flowchart af hvordan samples bliver programmeret ind i en Sekvens. Sekvensprogrammeringen foregår ved at der vælges en postion i sekvensen med step-skifteren. Ved at vippe kontakten til enten højre eller venstre, skiftes der position i sekvensen, og når den ønskede position er nået, vælges de/den pågældende sample(s), der ønskes på positionen. 42

51 6.8. Softwareopdeling Aalborg Universitet Afspilning af sekvens Figur 6.16: Flowchart af hvordan samples vil blive afspillet. Afspilningen foregår ved at, den første plads i sekvensen bliver undersøgt. Hvis der er et eller flere samples programmeret ind på pladsen, bliver adresserne hentet fra Microblazen og samples bliver læst. Herefter bliver næste plads i sekvensen undersøgt. Efter denne forklaring af de forskellige funktioner i produktet, vil det blive beskrevet, hvordan disse funktioner er opdelt inde i produktet. 6.8 Softwareopdeling I det følgende afsnit vil det blive beskrevet, hvordan de forskellige funktioner, produktet får, vil blive håndteret i dels FPGA en, men også i Microblazen. Derudover vil de forskellige funktioner også blive beskrevet meget overordnet, for at få et overblik over, hvilke inputs og outputs, der skal til, for at lave de beskrevne funktioner. De funktioner, som produktet kommer til at indeholde, vil blive styret af forskellige dele af FPGA en. Nogle af funktionerne vil blive styret af Microblazeprocessoren. Andre dele af programmet, vil bliver styret direkte af det hardware, som bliver lagt i FPGA en. 43

52 6.8. Softwareopdeling Aalborg Universitet Finite-state-maskiner Det hardware, der bliver lagt i FPGA en, skal ses som værende finite-statemaskiner, altså et kredsløb, som har endeligt mange tilstande. Disse maskiner kan med fordel laves i FPGA en, sådan at Microblaze-processoren ikke skal beskæftige sig med at lave de samme trivielle opgaver igen og igen. Opgaver, som har variable, er bedre egnet til Microblazen. For at en funktion kan beskrives, som en finite-state-maskine, skal den have et endeligt antal tilstande, den kan antage. En af de mest simple ting, der kan beskrives som en finite-state-maskine, er en dør. En dør har 2 tilstande, åbnet eller lukket. På samme måde er det muligt at beskrive funktioner i et produkt, som en finite-state-maskine. En af de funktioner der kan beskrives som en finite-state-maskine i produktet, er det at indspille samples til RAM (se 6.3.2). Det er en funktion, som består af 5 dele. Der skal laves et tjek om produktet er sat i indspilningsmode eller ej, hvis indspilningsmode er valgt, så skal der læses på A/D konverteren og data herfra lægges i RAM på en given adresse Microblazens opgaver Microblazen kommer til at håndtere alle de forskellige variable, som trommemaskinen opererer med. Dette gøres, da den C-kode, Microblazen bliver programmeret med, bedre kan tage højde for de mange forskellige variable og lave de beregninger, der skal til. Programmering af sekvens Sekvensen er den rækkefølge, som samples skal afspilles i. Hvor hurtigt en sekvens forløber bestemmes ud fra tempoet. Hvad der skal afspilles på de forskellige tidspunkter i sekvensen bestemmes af, hvad brugerens input er. Håndtering af samples i RAM Microblazen skal hele tiden have styr på, hvor de forskellige samples ligger i hukommelsen. Det er derfor muligt at bestemme, hvilke samples der skal afspilles ud fra det, sekvensen er programmeret til. IO-håndtering (knapper og drejeknapper) Nogle af de variable produktet skal håndtere, kommer fra knapperne eller encoderen. Værdien, som knapperne giver, er enten et digital højt eller lavt signal, så dette kan føres direkte ind til Microblazen. Tempoet bliver justeret ved hjælp af en encoder. Encoderen giver et signal, hvorfra det skal bestemmes om der skrues den ene eller anden vej. Dette skal henholdsvis øge eller sænke tempoet

53 6.8. Softwareopdeling Aalborg Universitet Opsumering Det er i det foregående afsnit blevet klarlagt, hvilke fordele der kan være ved at nogen funktioner bliver klaret på forskellige platforme. Hvis det er nødvendigt at lave mange forskellige typer regneoperationer på tal, er det smart at den opgave bliver klaret i Microblazen. Hvorimod det er hurtigere at klare opgaver i FPGA en og VHDL-koden hvis opgaven kan beskrives som en finite-state-maskine. Det er også blivet klarlagt hvilke opgaver, der skal varetages af hvilke platforme i projektet. Det næsten afsnit vil komme til at handle om hvordan Microblazens opgaver vil bliver programmeret, og der vil blive givet en kort gennemgang af nogen kodeeksempler. 45

54 6.9. C-program Aalborg Universitet 6.9 C-program Der er skrevet et C-program til at håndtere in- og outputs fra brugerfladen, samt sampling af lyd, programmering og afspilning af sekvens. Denne software har til formål at styre funktionaliteten af sampleren og trommemaskinen. Dette afsnit indeholder beskrivelse af de forskellige funktionaliteter, og hvordan de bliver realiseret i koden Aflæsning af inputvektor Det er vigtigt for programmet at kunne holde styr på, hvilke knapper eller funktioner brugeren betjener. Da alle brugerens interaktioner bliver registreret via et 12 bit GPI (General Purpose Input), skal der holdes styr på, hvilke bits der tændes, når brugeren trykker eller drejer på en knap. Dette gøres ved at tjekke de enkelte bits i den vektor, der læses på inputtet. De interaktioner brugeren laver, hænger ofte sammen med en bestemt tilstand, brugeren er i. Derfor vil det ikke altid være nødvendigt at tjekke hele vektoren, men kun de funktionaliteter, der er tilgængelige i en given tilstand. Alle disse inputs er tilkoblet Microblazens GPI4. Der benyttes en debounce funktion på denne vektor, for at kunne aflæse den korrekt. Debounce funktionen sørger for, at et knap tryk bliver mere stabilt og er nemmere at regne med. Hvis ikke der var en debounce funktion, vil der ved et enkelt tryk på en knap måske blive registreret 20 tryk. Denne inputvektor tjekkes efter og debounces med følgende kode [deb]. 72 int readinputfct ( ){ 73 input = XIOModule_DiscreteRead(&gpi, 4) ; 74 return ( input ) ; 75 } void debounceinput ( ){ 78 state [ indeks]=readinputfct ( ) ; / / det der læses på inputvektoren, gemmes på en plads i arrayet 79 indeks++; / / næste plads i arrayet gøres klar 80 j=0 x f f f f ; 81 for ( i=0 ; i<max_checks ; i++) j = j & state [ i ] ; / / AND operation udføres på j og det læste input, 10 gange 82 debouncedstate = j ; / / resultatet af and operationen gemmes i debouncedstate 83 i f ( indeks >= MAX_CHECKS) indeks = 0; / / index n u l s t i l l e s 84 } Afhængig af hvilken tilstand brugeren er i skal variablen DebouncedState tjekkes, men kun de bits der har relevans for den tilstand. Dette realiseres med følgende kode. 46

55 6.9. C-program Aalborg Universitet 97 void togglemode ( ){ 98 debounceinput ( ) ; 99 for ( i = 2 ; i < 4 ; i++){ / / her hardcodes de bits i inputvektoren der ønskes tjekket 100 i f ( debouncedstate & (1 << i ) ){ / / er en af de givne bits høje 101 modebtn = (1 << i ) ; / / sættes samme bit hø j i en variabel 102 } 103 else{ / / er en af de givne bits lave 104 modebtn &= ~(1 << i ) ; / / sættes den samme bit lav i variablen 105 } 106 } Her hardcodes hvilke bits i vektoren debouncedstate der ønskes tjekket. I eksemplet ovenfor er det bit 2 og 3 i vektoren der tjekkes Kontrol af tilstande Brugeren skal have mulighed for at bestemme, hvilken tilstand maskinen er i. Dette gøres via modeknapperne på brugerfladen, samt en switch der styrer sample mode. Det er op til softwaren at holde øje med, hvilken knap brugeren sidst har trykket ned, samt at registrerer om brugeren trykker på en ny, eller den samme knap igen. Menuen er delt op i 2 dele. Den første del tjekker om switchen står på 1 eller 0, står den på nul får brugeren adgang til at vælge programmeringstilstand eller afspilningstilstand. Står switchen på 1, har brugeren kun mulighed for at sample lyde ind i hukommelsen. Følgende kode viser den mekanisme der lader brugeren vælge programmeringstilstand eller afspilningstilstand. 107 i f (modebtn!= modesel) modesel = modebtn; 108 while (modesel!= lstmodesel ){ / / der tjekkes kun hvis der sker noget nyt på de to mode knapper 109 i f ( (mode == 2 1) && (modecounter1 == 2 modecounter2 == 2) ){ 110 mode = 0; / / hvis der tykkes på den samme knap igen 111 modecounter1 = 0; / / n u l s t i l l e s mode og modecountere 112 modecounter2 = 0; 113 } 114 else i f (modesel == 8){ / / trykkes der på den ene mode knap 115 mode = 2; / / sætttes mode t i l modecounter1++; / / og der tæl l e s op 117 } 118 else i f (modesel == 4){ / / trykkes der på den ene mode knap 119 mode = 1; / / sætttes mode t i l modecounter2++; / / og der tæl l e s op 121 } 122 else{ 123 } 124 lstmodesel = modesel; / / det nuværende input gemmes, så der kan tjekkes om det æ ndrer sig 125 } Tilstande I det følgende vil de forskellige tilstande blive gennemgået. På figur 6.17 er vist et flowchart af den software der skal kunne navigere rundt i menuen. 47

56 6.9. C-program Aalborg Universitet Figur 6.17: Figuren viser et flowchart af den software, der skal styre navigationen til samplerens forskellige funktioner. Sampling af lyd Sampling foregår i samspil med ADC-chippen og den 16-bit SIPO der er beskrevet i afsnit 6.4. Den 16-bit vektor der sendes ud af SIPO en indeholder data fra et sample og skal derfor aflæses. Det er vigtig at aflæse vektoren i rette tid, da alle bits i et nyt sample skal være på plads inden. Dette gøres ved at læse på det signal SIPO en sender ud, der hedder max_tick. Dette signal er tilsluttet Microblazens GPI samplingmode ( ) ; / / der polles på sample switchen 325 switch ( sampling ){ 326 case 1 : 327 toggletrigger ( ) ; / / det a f læses hvilken trigger det ønskes at gemme sample på 328 while ( trigger == 1){ 329 toggletrigger ( ) ; / / der polles på trigger igen for at kunne forlade l økke 330 addr_til_ram = lst_addr ; / / den sidst kendte adresse gemmes i addr_til_ram 331 nyt_sample = XIOModule_DiscreteRead(&gpi, 3) ; / / max_tick fra SIPO a f læses 332 i f ( ( nyt_sample!= gammelt_sample) && ( nyt_sample!= 0) ){ / / betingelser for at nyt sample skal hentes 333 addr_til_ram++; 334 XIOModule_DiscreteWrite(&gpo, 2, addr_til_ram ) ; / / adresse sendes t i l RAM controller 335 data_til_ram = XIOModule_DiscreteRead(&gpi, 2) ; / / data læses fra RAM 336 data_til_ram = data_til_ram << 2; / / data variablen bit manipuleres for at 48

57 6.9. C-program Aalborg Universitet 337 data_til_ram &= ~(1 << 0) ; / / holde styr på de 2 kontrol signaler i denne vektor 338 data_til_ram &= ~(1 << 1) ; / / bit 0 og bit 1 sættes lav 339 XIOModule_DiscreteWrite(&gpo, 1, data_til_ram ) ; / / kontrol signaler sendes t i l RAM controller 340 gammelt_sample = nyt_sample ; / / kontrol af betingelser for i f statement 341 } 342 i f ( nyt_sample == 0) gammelt_sample = 0; 343 lst_addr = addr_til_ram ; 344 } 345 XIOModule_DiscreteWrite(&gpo, 4, udgang) ; 346 break ; Programmering af sekvens Denne funktion giver brugeren mulighed for at programmere en given sekvens, til et sample efter brugerens ønske. Dette kan gøres inden sekvensen afspilles. Sekvensen programmeres ved hjælp af en vippeknap, der kan vippe til begge sider. Denne knap bruges til at navigere rundt i sekvensen, således at samples kan placeres på den ønskede plads i sekvensen. Trykkes der på et sample, gemmes den nuværende position, i sekvens-arrayet for det givne sample. Funktionen, der lader dette ske, er realiseret i softwaren med det følgende kode 236 void programsq( ){ 237 i f ( step!= prevstep ) trigger = 0; / / n u l s t i l l e r placering af sample hvis der skiftes plads i sekvensen 238 toggletrigger ( ) ; / / a f læser triggers for at placere sample 239 i f ( trigger == 1){ / / hvis trigger 1 trykkes på 240 sekvens[ trigger ] = (1 << step ) ; / / sættes den bit der svarer t i l den nuværende placering i sekvensen 241 i f ( trgcounter1 == 2){ / / trykkes der på den samme trigger igen, 242 sekvens[ trigger ] &= ~(1 << step ) ; / / fjernes den tilsvarende bit 243 } 244 } 245 else i f ( trigger == 2){ / / det samme sker for trigger sekvens[ trigger ] = (1 << step ) ; 247 i f ( trgcounter2 == 2){ 248 sekvens[ trigger ] &= ~(1 << step ) ; 249 } 250 } 251 else{ 252 } 253 prevstep = step ; 254 } Afspilning Denne funktion afspiller de førnævnte programmerede sekvenser i et givet tempo, der også kan justeres af brugeren. Det er nødvendigt at aflæse de forskellige sekvenser, der er blevet programmeret forinden, bit for bit for at finde ud af om der er sat et sample, som skal afspilles. Hvis der er sat et 49

58 6.9. C-program Aalborg Universitet sample et sted i sekvensen skal dette sample hentes fra hukommelsen. Dette lader sig gøre med følgende kode. 159 void samplemix ( ){ 160 sq = sekvens[1 ] ; / / den første sekvens indlæses midlertidigt 161 i f (sq & (1 << step ) ){ / / denne midlertidige variabel tjekkes for hø j bit på det nuværende step i sekvensen 162 udgang &= ~(1 << 8) ; / / er dette t i l fælde tændes den tilsvarende diode 163 data_til_ram = 0xFFFFFFFE ; 164 XIOModule_DiscreteWrite(&gpo, 1, data_til_ram ) ; / / der sendes kontrolsignaler t i l RAM controller for at læse fra RAM 165 addr_til_ram = 0; 166 while ( addr_til_ram < lst_addr ){ / / der læses fra RAM på alle de adresser der samplet ind på 167 XIOModule_DiscreteWrite(&gpo, 2, addr_til_ram ) ; / / adressen der ønskes læst sendes t i l RAM controller 168 data_fra_ram = XIOModule_DiscreteRead(&gpi, 1) ; / / der læses data fra RAM contoller 169 x i l _ p r i n t f ( "%d, \ n", data_fra_ram ) ; / / de læste data printes t i l UAR/ T 170 data_fra_ram = 0; / / data variablen sættes t i l 0 for at minimere f e j l 171 addr_til_ram = addr_til_ram + 1; / / der ligges en t i l adressen 172 } 173 } 174 else{ 175 udgang = (1 << 8) ; / / e l l e r s slukkes den 176 } 177 sq = sekvens[2 ] ; / / samme procedure for sekvens / funktion fortsættes / De data der hentes fra RAM printes via UAR/T i en.csv fil for at kunne plotte resultatet. Dette er valgt siden der i projektet ikke laves digital til analog konverter, og det derfor ikke er muligt at få lyd ud i en højtaler. Tempo Det er i dette projekt valgt at det skal være muligt at se det nuværende tempo på spartan-3 platformens 7-segmentsdisplay. For at kunne vise tempoet på 7-segmentsdisplayet er det nødvendigt at decode den hexadecimale BPMværdi, til et andet tal, der repræsenterer den samme værdi, men vist på 7-segmentsdisplayet. Dette gøres ved at konvertere hexadecimalværdien til BCD (Binary-Coded Decimal). Det er muligt at konvertere fra hexadecimal til BCD ved hjælp af det følgende stykke kode [BCD]. 86 unsigned long topackedbcd ( unsigned int val ){ 87 unsigned long bcdresult = 0; 88 for ( t = 0; val ; t++) 89 { 90 ( ( char )&bcdresult ) [ t / 2] = t & 1? ( val % 10) << 4 : ( val % 10) & 0xf ; 91 val /= 10; 92 } 93 return bcdresult ; 94 } Konverteringen resulterer i en vektor af 16 bits, der kan deles op i 4, hvor bit 1-4 styrer det første ciffer, bit 5-8 det næste ciffer osv. Denne vektor sendes ud af Microblazens GPO3, og behandles derefter i VHDL med en display-controller, 50

59 6.9. C-program Aalborg Universitet der er beskrevet i afsnit Det er beskrevet i næste afsnit, hvordan tempo udregnes og reguleres Kontrol af outputvektor Brugeren får feedback når der interageres med maskinen, i form af dioder der lyser. Disse dioder er styret af GPO4 fra Microblazen. Denne GPO er en 9 bit vektor, der ved en høj bit tænder en lysdiode. Afhængig af hvilken tilstand brugeren er i, skal forskellige dioder lyse. Dette løses ved at lave bitvis manipulation på en variabel, og derefter sende denne variabel ud af GPO4. Det følgende kodeeksempel vil tænde den diode der er tilsluttet den første plads i output vektoren. udgang = (1 << 0) ; XIOModule_DiscreteWrite(&gpo, 4, udgang) ; Denne outputvektor skal hele tiden bitmanipuleres afhængig af den tilstand maskinen er i Opsummering I dette kapitel er det beskrevet hvordan sampleren og trommemaskinens funktionaliteter er realiseret ved C-programmet i Microblazen. Det er forklaret, hvordan der holdes styr på brugerens tryk på knapper, og hvordan brugeren får feedback via diverse dioder. Derudover beskrives det, hvordan data flyttes fra SIPO til Microblaze og videre til RAM, samt hvordan data hentes fra RAM igen. Hele C-filen findes i appendiks C. 51

60 6.10. Sekvenstiming Aalborg Universitet 6.10 Sekvenstiming I dette afsnit vil det blive beskrevet, hvordan timingen af samplerens sequencer er designet. Dette indebærer dens implementering på FPGA en, hvordan tidsbegrebet implementeres, hvordan sequenceren forholder sig til tiden og hvordan tempoet kan ændres fra brugerfladen. Det er valgt, at sequenceren skal være af typen stepsequencer, som beskrevet i afsnit 3.3. Dette er for at sekvensen stemmer overens med takterne, som anvendes i det meste musik i dag Microblaze og FIT En sequencer skifter mellem hvert step med et bestemt tidsinterval. Dette betyder, at systemet skal kunne håndtere tid. Microblazen har en såkaldt FIT 6.2.5, som kan indstilles til at generere et interrupt, for hver gang et bestemt antal af FPGA ens clock cycler er forløbet, fra den indbyggede clock. Dette er illustreret på figur Figur 6.18 Spartan-3 platformen har en clockfrekvens på 50MHz. Hvis der skal være et interrupt for hvert halve millisekund, kan antal clock cycler mellem hver interrupt udregnes. Hvorfor der er valgt et halv millisekund, vil blive forklaret senere i kapitlet. En periodetid på et halvt millisekund kan udtrykkes i frekvens: ƒ nt = 1 T nt = 1 0, s = Hz (6.14) Her er T nt interruptets periodetid og ƒ nt er dets frekvens. Nu kan antal clock cycler udregnes ved følgende udtryk: Hz k = Hz k = Hz Hz Her er k antallet af clock cycler mellem hver interrupt. k = (6.15) Nu får Microblazen ét interrupt for hver halve millisekund. Dette interrupt kan bruges i Microblazens C-kode. For hvert interrupt der registreres, tælles der én op i variablen ct : 274 void timertick ( void ref ) { / dette er interrupt rutinen der køres ved FIT1 s interrupt / 275 ct++; / / ct tæl l e s op ved hvert interrupt hvert halve millisekund 276 debounceinput ( ) ; / / inputtet læses 277 readencoder ( ) ; / / encoderen a f læses og tempo korrigeres, hvis der er ændringer 278 } 52

61 6.10. Sekvenstiming Aalborg Universitet Funktionen readencoder(); kaldes også ved interruptet, denne funktion forklares senere i dette afsnit. Der laves en delay-funktion ved hjælp af interruptet. Denne er baseret på variablen ct : 1 void delay (u32 ms) { / denne funktion er en delay funktion / 2 ct = 0; / / tælleren n u l s t i l l e s 3 while ( ct < ms){ / / værdien der sendes ind i funktionen definerer delay tiden 4 } 5 } Der laves nu en while-løkke, hvori delay-funktionen kaldes. For hver gang løkken køres igennem skal sequenceren gå fra ét step til det næste. Tiden derimellem, bestemmes udfra den værdi, som delay-funktion kaldes med multipliceret med interruptets periodetid, T, på 0,5 ms: T step = T nt = 0, (6.16) Her er T step tiden mellem hvert step og x er den værdi, som delay-funktion kaldes med. Hele koden kan desuden ses i appendiks C BPM og periodetid Periodetiden T step er, som nævnt, tiden der går fra et step til det næste. Når der produceres musik angives tempoet i BPM (Beats Per Minute), hvilket betyder slag per minut. Tempoet ønskes derfor angivet i BPM, hvilket betyder at forholdet mellem BPM og x skal bestemmes. Der går 2 steps for hvert slag, hvilket er illustreret på figur Dvs. at tiden mellem hvert slag er dobbelt Figur 6.19: På figuren er sekvensens steps vist ved alle firkanterne. De røde firkanter viser slag. De grønne cirkler illustrerer de dioder brugeren kan se på brugerfladen. så stor, som tiden mellem hvert step, altså: T s g = 2 T step = 2 T nt = 2 0, = 10 3 (6.17) Her er T s g tiden mellem hvert slag. 53

62 6.10. Sekvenstiming Aalborg Universitet BPM kan betragtes som en frekvens afhængig af minutter, i stedet for sekunder. FPGA en clockfrekvens afhænger af sekunder, derfor ønskes BPM udtrykt ifht. sekunder. Først ses der på frekvensen for slagene i sekunder. ƒ s g = 1 T s g (6.18) Dette kan omregnes til BPM. 1 1 BPM = 60 ƒ s g = 60 = 60 T s g 10 3 = (6.19) Den værdi delay-funktionen skal kaldes med, på baggrund af BPM, kan nu findes ved at isolere x. = BPM (6.20) For at undgå at processoren skal lave denne udregning, hver gang tempoet ændres, udregnes x til tempo op til 240 BPM, hvilket musik sjældent overstiger. Disse lægges ind i et array, ved opstart af programmet, og kan derefter kaldes i delayfunktionen med udgangspunkt i tempo. Tiden mellem Figur 6.20 hvert interrupt, T nt, på et halvt millisekund, er bestemt ud fra denne række. Hvis T nt er et millisekund er det lettere at regne med, men det vil betyde at nogle af de laveste x-værdier, ved højt tempo, ikke vil variere. Tiden T nt kan reduceres yderligere, hvis større præcision af tempoet ønskes. Alle funktioner der kaldes i interrupt rutinen, vil blive eksekveret tilsvarende oftere, ved reduceret T nt, og vil derfor også belaste processoren yderligere Encoder Det er vigtigt for brugeren, at kunne indstille tempoet. Derfor skal en drejeknap implementeres til at styre tempoet. Til dette formål er der valgt en encoder, som er en drejeknap delt op i trin uden et minimum eller maksimum. Encoderen tilsluttes FPGA en, som vist på figur

63 6.10. Sekvenstiming Aalborg Universitet Figur 6.21: Figuren viser et eldiagram over encoderens forbindelse til FPGA en. To pull-up modstande er sat ind for at holde signalet stabilt. Encoderen er tilsluttet 2 inputs og kan derfor antage 4 forskellige binære værdier: 00, 01, 10 og 11. Retningen knappen drejes, bestemmer rækkefølgen på talrækken. Hvis der drejes med uret er rækkefølgen: 11, 01, 00 og 10. Hvis der drejes mod uret er rækkefølgen modsat: 11, 10, 00 og 01. Retningen encoderens drejes, afgøres ved at sammenligne den nuværende position med den forhenværende. Denne sammenligning sker ikke af sig selv, og skal derfor ske i programkoden. Mellem hvert trin, encoderen drejes, gennemgås samtlige værdier og ender med at stå på samme værdi, som udgangspunktet på forrige trin. Ved hjælp af bitmanipulation rykkes den tidligere værdi 2 pladser til venstre i dens binære række og den nye værdi tager de to pladser, hvor den tidligere værdi var før. Dette sker 4 gange for hver gang encoderen drejes et trin, hvilket er illustreret på figur For hvert trin encoderen drejes, ønskes det Figur 6.22 at skrue tempoet én BPM op eller én BPM ned, alt efter retningen der skrues. Det er derfor kun nødvendigt at registrere én af de 4 skift, som sker mellem hvert trin. En af disse skift vælges, til at skulle tælle op i tempoet og et andet til at tælle ned. Dette kan ses i kodeeksemplet nedenfor. 55

64 6.10. Sekvenstiming Aalborg Universitet 255 int readencoder ( ){ / denne funktion læser encoderens bevægelser og korrigerer BPM efterfølgende / 256 for ( i = 0 ; i < 2 ; i++){ 257 i f (debouncedstate & (1 << i ) ){ 258 encoder = (1 << i ) ; 259 } 260 else{ 261 encoder &= ~(1 << i ) ; 262 } 263 } 264 sum = ( lastencoded << 2) encoder ; / / f l y t t e r den nuværende værdi 2 pladser t i l venstre 265 i f (sum == 0b ) BPM ++; / / tæl l e r op hvis den sidste værdi er 11 og nuværende er i f (sum == 0b ) BPM ; / / tæl l e r op hvis den sidste værdi er 11 og nuværende er lastencoded = encoder ; Denne funktion kaldes for hvert interrupt, så det er sikkert at encoderens bevægelser registreres. Encoderen kan nu styre tempoet, hvilket er mappet til variablen x, der skal ind i delay-funktionen for at opnå den tilhørende tid mellem hver step. Da x er mappet til tempoet vha. et array må tempoet ikke overstige antallet af pladser i array et. Derfor begrænses tempoet til at ligge mellem 30 og 240 BPM. Dette sker ved at tilføje følge kode i funktionen, som registrerer encoderen. 269 i f (BPM > 240) BPM = 240; / / øvre BPM grænse på i f (BPM < 30) BPM = 30; / / nedre BPM grænse på return BPM; Opsumering Sequenceren designes på Microblazen igennem C-kode. Tiden, sequenceren forholder sig til, implementeres vha. interrupts fra Microblazens FIT1. En delayfunktion laves udfra disse interrupts, og bestemmer derved tiden mellem hvert step i sekvensen. Forholdet mellem periodetiden for steps og BPM udregnes. Dette bruges af en encoder, som programmeres til at ændre BPMvariablen, hvor den tilhørende periodetid bestemmes og på den måde styres tempoet. I næste kapitel ses der på, hvordan sampleren kan vise tempoet til brugeren. 56

65 segment display Aalborg Universitet segment display Det kan være svært for brugeren, at høre præcis hvilket tempo sekvensen spilles med. Der bliver derfor brugt 7-segmentsdisplays til at vise brugeren, den aktuelle BPM. Et 7-segmentsdisplay er et display, der er i stand til at vise tal og bogstaver. Der sidder fire 7-segmentsdisplays ved siden af hinanden på spartan-3 platformen. Hvert af disse 4 displays indeholder 8 forskellige LEDs, 7 lyser de forskellige streger op, mens den sidste er et punktum. Der er med andre ord 8 inputs til hvert 7-segmentsdisplay, som illustreret på figur Figur 6.23: Figuren viser de 8 inputs til de 8 segmenter i 7-segmentsdisplayet. Da der er 4 displays ved siden af hinanden skulle der umiddelbart være 32 inputs, men for at spare inputs bruges i stedet de samme 8 inputs til alle 4 displays. Dette gør at der kun skal 12 signaler til at styre fire 7- segmentsdisplays, dette kan ses på figur På figur 6.25 er et timing-diagram over, hvordan multiplexeren styrer hvilket af de fire 7-segments displays der er tændt Skiftefrekvens Der skal skiftes så hurtigt i mellem de fire 7-segmentdisplays, at brugerens øjne ikke kan se at der kun er et display tændt af gangen. Brugeren vil på den måde tro, at alle 4 displays lyser på samme tid med forskellige tal. Det må samtidig ikke gå så hurtigt, at LED erne ikke kan følge med til at slukke og tænde hurtigt nok. For at gøre dette, er der blevet implementeret en 18-bits counter. Det er med andre ord et binært tal der er 18 cifre langt, som ligger 1 til hver gang der kommer et clock-signal, fra FPGA ens indbyggede clock. Der er fire 7-segmentdisplays, hvilket betyder, at der skal være 4 forskellige tal, som kan dekodes. Derfor skal der bruges 2 bits fra counteren, for at lave 4 mulige kombinationer. Disse 2 bits kan tage kombiantionerne 00, 01, 10 eller 11, hvilket styrer 4 outputs. Disse to bits bliver de to MSB i 18-bit counteren, det er de 2 bits, der tager længst tid om at skifte når der tælles op. 57

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys! Og der blev lys! OPGAVEFORMULERING:... 2 DESIGN AF SEKVENS:... 3 PROGRAMMERING AF PEEL KREDS... 6 UDREGNING AF RC-LED CLOCK-GENERAOR:... 9 LYSDIODER:... 12 KOMPONENLISE:... 13 DIAGRAM:... 14 KONKLUSION:...

Læs mere

Indholdsfortegnelse :

Indholdsfortegnelse : Rapporten er udarbejdet af Daniel & Kasper D. 23/1-2001 Indholdsfortegnelse : 1.0 STEPMOTEREN : 4 1.1 Stepmotorens formål : 4 1.2 Stepmotorens opbygning : 4 2.0 PEEL-KREDSEN 4 2.1 PEEL - Kredsen Generelt

Læs mere

Computerens Anatomi. Af Martin Arnetoft

Computerens Anatomi. Af Martin Arnetoft Computerens Anatomi Af Martin Arnetoft Moores lov Moores lov siger, at antallet af transistorer på et stykke hardware over 18 eller 24 måneder fordobles. Denne lov bruges til at beskrive udviklingen indenfor

Læs mere

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!) MHz KIT Rev: /- Det er ikke tilladt, at man bare udsender radiobølger på den frekvens, man ønsker. Forskellige frekvenser er udlagt til forskellige formål. Nogle til politiet, militæret, FM-radio-transmission,

Læs mere

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG Xilinx XC9536 29-9-3 Generel beskrivelse af JTAG: JTAG:

Læs mere

Opslagsbog om computer. Af Erik Veidorf og Mike T. Krogh.

Opslagsbog om computer. Af Erik Veidorf og Mike T. Krogh. Opslagsbog om computer Af Erik Veidorf og Mike T. Krogh. Indhold: Side 1-------------------------------------------------------------------------------------------------------------CD-Rom/disk drev/ Side

Læs mere

Start af nyt schematic projekt i Quartus II

Start af nyt schematic projekt i Quartus II Start af nyt schematic projekt i Quartus II Det følgende er ikke fremstillet som en brugsanvisning der gennemgår alle de muligheder der er omkring oprettelse af et Schematic projekt i Quartus II men kun

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

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

LYDOPTAGER ROLAND R-05

LYDOPTAGER ROLAND R-05 INTRODUKTION TIL LYDOPTAGER ROLAND R-05 Rolands R-05 er en lille lydoptager, der nemt kan ligge i tasken. Den har indbygget mikrofon men også mulighed for tilslutning af en ordentlig interviewmikrofon,

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

Vurdering af digitalt læringsmiddel:

Vurdering af digitalt læringsmiddel: Vurdering af digitalt læringsmiddel: Indholdsfortegnelse: 1) Beskrivelse af Photo Story 3.. 2 a. Trin 1.. 3 b. Trin 2.. 5 c. Trin 3.. 5 d. Trin 4.. 6 e. Trin 5.. 6 2) Konklusion. 7 Claus B. Jensen Side

Læs mere

Brug Photo Story 3 en let introduktion

Brug Photo Story 3 en let introduktion Brug Photo Story 3 en let introduktion Denne vejledning forudsætter at programmet Photo Story 3 er installeret på din computer. Se andetsteds for vejledning i at installere programmet, der kan findes gratis

Læs mere

Simulering af en Mux2

Simulering af en Mux2 Simulering af en Mux2 Indhold Start QuartusII op start et nyt projekt.... 2 Fitter opsætning... 6 Opstart af nyt Block diagram... 8 ModelSim... 14 Hvis man vil ændre data grafisk kan det også lade sig

Læs mere

Projekt - RoboNet Del Journal.

Projekt - RoboNet Del Journal. Projekt - RoboNet Del Journal. A/D Konvertering. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, a Erhvervsakademiet Fyn Udarbejdet i perioden:

Læs mere

Tips og Tricks 2. Indholdsfortegnelse. 1. De væsentligste features i Fantom-G s sequencer...2. 2. Brug af Sequenceren...3. 3. Audio Track demo...

Tips og Tricks 2. Indholdsfortegnelse. 1. De væsentligste features i Fantom-G s sequencer...2. 2. Brug af Sequenceren...3. 3. Audio Track demo... Tips og Tricks 2 Indholdsfortegnelse Side 1. De væsentligste features i Fantom-G s sequencer...2 2. Brug af Sequenceren...3 Optag Trommer, Bas og Keyboard Brug af Arpeggio og Chord Memory 3. Audio Track

Læs mere

Afsluttende - Projekt

Afsluttende - Projekt 2014 Afsluttende - Projekt Rapporten er udarbejdet af Ali, Andreas og Daniel Vejleder Karl G Bjarnason Indholdsfortegnelse Indledning... 2 Case... 3 Design... 4 Python kalender:... 4 Poster:... 4 Planlægning...

Læs mere

Til dig som vil have et indblik i computeren

Til dig som vil have et indblik i computeren Vi håber du nu har fået indblik i computerens hardware. Til dig som vil have et indblik i computeren Brochuren er skrevet af Anders Bøge Paulsen, Betina Kopp Pedersen, Frederik Hejgaard Andersen og Oscar

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Det digitale niveau Niveauer af abstrakte maskiner Mikroarkitektur: Mic-1 Digitale kredsløb Logiske tilstande: 0 (0-1 V), 1 (2-5 V) Mikroarkitektur: Mic-1 Kombinatoriske kredsløb Logiske tilstande: 0 (0-1

Læs mere

Automatisering Af Hverdagen

Automatisering Af Hverdagen Automatisering Af Hverdagen Programmering - Eksamensopgave 10-05-2011 Roskilde Tekniske Gymnasium (Kl. 3,3m) Mads Christiansen & Tobias Hjelholt Svendsen 2 Automatisering Af Hverdagen Indhold Introduktion:...

Læs mere

Vejledning til Audacity, version beta 1.3.7

Vejledning til Audacity, version beta 1.3.7 Vejledning til Audacity, version beta 1.3.7 Teknisk forberedelse: 1. Programmet Audacity kan frit downloades fra nettet. En simpel søgning på navnet vil angive en netside med den nyeste version. Programmet

Læs mere

Fluke ScopeMeter 190 serien

Fluke ScopeMeter 190 serien Fluke ScopeMeter 190 serien ScopeMeter 190 serien : Al denne kraft lige ved hånden! ScopeMeter 190C og 190B serierne har egenskaber, som man normalt kun finder i de bedste bordoscilloskoper. De byder på

Læs mere

Hjertets elektriske potentialer og målingen af disse

Hjertets elektriske potentialer og målingen af disse Hjertets elektriske potentialer og målingen af disse Indholdsfortegnelse Indholdsfortegnelse... 1 Introduktion... 1 Grundlæggende kredsløbteknik... 1 Ohms lov... 2 Strøm- og spændingsdeling... 4 Elektriske

Læs mere

Studerendes video- optagelser til prøver

Studerendes video- optagelser til prøver Studerendes video- optagelser til prøver Resume Video til brug ved prøver kan optages i flere forskellige formater og lagres på forskellige medier. Hvis video optages på dvd (f.eks. 80 mm skive, der sættes

Læs mere

fotografisk kommunikation

fotografisk kommunikation XDANMARKS MEDIE- OG JOURNALISTHØJSKOLE CAMPUS KØBENHAVN Forprøve 2016 fotografisk kommunikation 1/2 Professionsbacheloruddannelsen i Visuel Kommunikation Studieretning: Fotografisk Kommunikation Del 1:

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen

Læs mere

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i) Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i) 1. DS1821 1-WIRE KOMMUNIKATION (HERUNDER TIMING KRAV) ------------------------ 2 2. DS1821 SOFTWARE (OPBYGNING AF STYREPROGRAM I SYSTEM51 C) -----------

Læs mere

Kravspecifikation For. Gruppen

Kravspecifikation For. Gruppen Kravspecifikation For Gruppen Indholdsfortegnelse 1. INDLEDNING...3 1.1 FORMÅL...3 1.2 REFERENCER...3 1.3 LÆSEVEJLEDNING...3 2. GENEREL BESKRIVELSE...4 2.1 SYSTEM BESKRIVELSE...4 2.2 SYSTEMETS FUNKTION...4

Læs mere

Bredbånds-TV. Brugervejledning. ComX brugervejledning version 4.0

Bredbånds-TV. Brugervejledning. ComX brugervejledning version 4.0 Bredbånds-TV Brugervejledning ComX brugervejledning version 4.0 1 INDHOLD PAKKENS INDHOLD Pakkens indhold side 2 Fjernbetjening side 2 Tilslutning af Settop-boksen side 3 Introduktion til Bredbånds-TV

Læs mere

CANSAT & ARDUINO step by step

CANSAT & ARDUINO step by step CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark jdn@space.aau.dk 1/51 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...

Læs mere

Quick-guide til Konftel 250

Quick-guide til Konftel 250 Conference phones for every situation Quick-guide til Konftel 250 DANSK BESKRIVELSE Konftel 250 er en konferencetelefon, der kan tilsluttes analogt telefonstik. På www.konftel.com/250 finder du en håndbog

Læs mere

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP) Speciale efterår 2005 Teknisk Informationsteknologi Jan Lauritzen & Mads

Læs mere

Betjeningsvejledning. BeoLab 2000 giver Deres centrale Bang & Olufsen system en ekstra dimension.

Betjeningsvejledning. BeoLab 2000 giver Deres centrale Bang & Olufsen system en ekstra dimension. B E O L A B 2 0 0 0 1 BeoLab 2000 giver Deres centrale Bang & Olufsen system en ekstra dimension. De kan nu spille den musik- eller videokilde De ønsker på Deres centrale system og lytte til det via Deres

Læs mere

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Virtuel PC Fordele/ulemper Fordele: Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Ulemper: Reserverer RAM (Windows 7) Problemer med at ureglementeret lukke ned Mister

Læs mere

BeoSound Vejledning

BeoSound Vejledning BeoSound 9000 Vejledning BeoVision Avant Guide BeoVision Avant Reference book Vejledningens indhold 3 For at du kan lære dit Bang & Olufsen produkt at kende, har du to vejledninger til rådighed. Vejledningen

Læs mere

Side 1 af 10. Lydbreve. Indhold. Indhold...1 Forord...2 Lydoptager...2 Ændring af indtalt lyd...4 Sende dit lydbrev...8 Lyde i Worddokumenter...

Side 1 af 10. Lydbreve. Indhold. Indhold...1 Forord...2 Lydoptager...2 Ændring af indtalt lyd...4 Sende dit lydbrev...8 Lyde i Worddokumenter... Side 1 af 10 Indhold Indhold...1 Forord...2 Lydoptager...2 Ændring af indtalt lyd...4 Sende dit lydbrev...8 Lyde i Worddokumenter...8 Side 2 af 10 Forord Du har måske et barnebarn, der ikke har lært at

Læs mere

3.0 Velkommen til manualen for kanalen Shift 1. 3.1 Introduktion til kanalen 1. 3.2.1 Hvad er et spot? 2. 3.2.2 Opret et nyt spot 2

3.0 Velkommen til manualen for kanalen Shift 1. 3.1 Introduktion til kanalen 1. 3.2.1 Hvad er et spot? 2. 3.2.2 Opret et nyt spot 2 3.0 Velkommen til manualen for kanalen Shift 1 3.1 Introduktion til kanalen 1 3.2 Shift kanalside 1 3.2.1 Hvad er et spot? 2 3.2.2 Opret et nyt spot 2 3.2.3 Aktivt og inaktivt spot 3 3.2.4 Rediger et spot

Læs mere

Analoge indgange og A/D konvertering. Analoge udgange

Analoge indgange og A/D konvertering. Analoge udgange Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations

Læs mere

Lydklip i PP elevøvelse (uden installation af Audacity) Side 1. Dette er en papirudgave af opgaven www.frborg-gymhf.dk/gj/genre

Lydklip i PP elevøvelse (uden installation af Audacity) Side 1. Dette er en papirudgave af opgaven www.frborg-gymhf.dk/gj/genre Lydklip i PP elevøvelse (uden installation af Audacity) Side 1 Lyd-klip i PP Genre-øvelser - uden at installere Audacity Dette er en papirudgave af opgaven www.frborg-gymhf.dk/gj/genre Dette er en øvelse

Læs mere

Egenskaber for ROM/RAM

Egenskaber for ROM/RAM Egenskaber for ROM/RAM Preben Holm 5-3-3 En ROM-kreds kan lagre nogle data, men disse data kan ikke ændres. Man siger at kredsen har n input og b output. Input s er kaldet adresse ben (f.eks....a5) og

Læs mere

Computerens Anatomi Af Mathias og Mark

Computerens Anatomi Af Mathias og Mark Computerens Anatomi Af Mathias og Mark Planlægning af projekt Case Størstedelen af nutidens unge har deres egen smartphone, computer og fjernsyn. Computere i alle afskygninger bliver fortsat en større

Læs mere

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Lærevejledning - en introduktion til maskinarkitektur faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig Basisuddannelse

Læs mere

Sådan laver du en film (VIDEO)

Sådan laver du en film (VIDEO) QUICK GUIDE Sådan laver du en film (VIDEO) En trinvis guide til nogle af de værktøjer, der er nødvendige for at lave en digital fortælling 1. Sådan skaber du en digital fortælling For at skabe en digital

Læs mere

Computerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/3 2015. Planlægning af kommunikationsvalg og medieprodukt.

Computerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/3 2015. Planlægning af kommunikationsvalg og medieprodukt. Computerens Anatomi Planlægning af kommunikationsvalg og medieprodukt. Vi startede med at snakke om modtager, afsender og budskab og blev enige om at det skulle være simpelt for at få modtagernes interesse.

Læs mere

DAB+ adaptor. Kære kunde,

DAB+ adaptor. Kære kunde, Kære kunde, Kvalitet har altid været drivkraften for os og grundlæggelsen af Argon Audio er en naturlig forlængelse af denne filosofi. Vi har 20 års erfaring i at lave og specificere høj kvalitetsprodukter

Læs mere

AM signalet er et automatisk mellemblok signal. Det består af 3 lamper og er opbygget som et U signal med 3 lamper.

AM signalet er et automatisk mellemblok signal. Det består af 3 lamper og er opbygget som et U signal med 3 lamper. Signaler Der skal signaler på modelbanen. En modelbane med signaler er som prikken over i et. Der er forskellige signaler. I signal, U signal og AM signaler. Desuden er der PU signaler. Alle disse signaler

Læs mere

Computerens anatomi. Flashklip for børn

Computerens anatomi. Flashklip for børn Computerens anatomi Flashklip for børn Rapport der beskriver vores arbejde med at fremstille produkter, der kan formidle information om computerens opbygning til børn. Anders og Asger 11-05-2011 Indhold

Læs mere

Clarion DXZ638RMP, DXZ738RMP, DXZ838RMP - Sådan laver man WMA filer, samt evt. Play Lists. -

Clarion DXZ638RMP, DXZ738RMP, DXZ838RMP - Sådan laver man WMA filer, samt evt. Play Lists. - Clarion DXZ638RMP, DXZ738RMP, DXZ838RMP - Sådan laver man WMA filer, samt evt. Play Lists. - For at lave sine musik CD er om til WMA format kræver det en PC med Microsoft Media Player version 7.1 eller

Læs mere

Projekt - Valgfrit Tema

Projekt - Valgfrit Tema Projekt - Valgfrit Tema Søren Witek & Christoffer Thor Paulsen 2012 Projektet Valgfrit Tema var et projekt hvor vi nærmest fik frie tøjler til at arbejde med hvad vi ville. Så vi satte os for at arbejde

Læs mere

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C Indhold Indledning(Enes)... 2 Problemstilling (Enes)... 2 Teori (Enes)... 2 Løsningsforslag (Enes)... 4 RFID relæet (Mathias)... 6 Krav (Enes og Mathias)... 8 Målgruppen (Mathias)... 8 Rekvirent... 8 Implementering(Mathias)...

Læs mere

Quickstart Guide. Dansk

Quickstart Guide. Dansk Quickstart Guide Dansk Support: For produktregistrering, besøg venligst ION hjemmeside: ionaudio.com For de seneste oplysninger om dette produkt, kan du besøge hjemmesiden ionaudio.com/blockpartylive.

Læs mere

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner. Tams Elektronik LD-G-3 / LD-W-3 (1) Lokomotivdekoder LD-G-3 / LD-W-3 i Märklin-Motorola format Denne oversættelse omfatter monterings- og anvendelsesvejledningerne til LD-G-3 / LD-W-3 dekoderen. Den originale

Læs mere

Hvad skal du vide for at bygge din egen computer?

Hvad skal du vide for at bygge din egen computer? Hvad skal du vide for at bygge din egen computer? Kender du alle de her dele og hvad de gør godt for? Er du mellem 11 og 16 år, og tænker på at sammensætte din egen computer? Så er denne her guide lige

Læs mere

DCC digital dekoder til magnetiske produkter

DCC digital dekoder til magnetiske produkter Viessmann 5212 Digital Dekoder Dansk Brugervejledning DCC digital dekoder til magnetiske produkter med fire udgangsgrupper Indhold 1. Vigtige oplysninger... 2 2. Indledning / Egenskaber... 3 3. Montering...

Læs mere

Brugervenlig og kommunikativ!

Brugervenlig og kommunikativ! Brugervenlig og kommunikativ! Altivar 312 Frekvensomformer til tre-faset asynkrone motorer, 0,18 til 2,2 kw en-faset 240V 0,18 til 15kW tre-faset 200-600V Specielle funktioner til alle typer af maskiner

Læs mere

ADVARSEL: Smid ikke dette produkt i husholdningsaffaldet. Aflever det til et indsamlingssted for genanvendelse af elektroniske apparater.

ADVARSEL: Smid ikke dette produkt i husholdningsaffaldet. Aflever det til et indsamlingssted for genanvendelse af elektroniske apparater. Garanti & Support Dette produkt har en ét-års garanti, der dækker over eventuelle problemer ved normalt brug. Misbrug af Easi-Speak eller at åbne enheden vil ugyldiggøre denne garanti. Alle data, der er

Læs mere

MYLOQ 1101 Kodecylinder

MYLOQ 1101 Kodecylinder MYLOQ 1101 Kodecylinder Brugsanvisning DK Vigtig information før anvending Kodecylinderen skal aktiveres før brug (se side 3). En administrationskode skal tilføjes. Vær sikker på at få skrevet den nye

Læs mere

2. De 7 signaler skal kodes til en 3-bit kode. Enkodningen skal prioriteres som beskrevet i afsnit?? på side??.

2. De 7 signaler skal kodes til en 3-bit kode. Enkodningen skal prioriteres som beskrevet i afsnit?? på side??. 01 FORUDSÆTNINGER 01 Forudsætninger Dette kapitel tager udgangspunkt i processerne beskrevet i afsnit?? på side?? Hver enkelt proces tildeles et afsnit, hvorunder det beskrives hvilke hardware moduler,

Læs mere

Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1

Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1 Svane Electronic Universal timer med 2 relæer og 18 funktioner hver 1 Digital dobbelt timer print modul 12V 2000.2236 Multi funktions timer med 18 funktioner pr. relæ, anvendelig i mange installationer,

Læs mere

- en manual fra Skolekonsulenterne.dk. Versionsdato: August 2008

- en manual fra Skolekonsulenterne.dk. Versionsdato: August 2008 - en manual fra Skolekonsulenterne.dk Versionsdato: August 2008 Indholdsfortegnelse Generelt om manualer fra Skolekonsulenterne.dk...3 Audacity...4 Få fat i programmet...4 Brugerfladen...5 Optag fra mikrofon

Læs mere

EMSD 7 Gr. 15 Aalborg Universitet

EMSD 7 Gr. 15 Aalborg Universitet Elektro Mekanisk System Design EMSD 7 Gr. 15 Aalborg Universitet Institut for EnergiTeknik Pontoppidanstræde 101, 9220 Aalborg Øst Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet M-sektoren

Læs mere

Dansk Mink Papir. Teknisk brugermanual

Dansk Mink Papir. Teknisk brugermanual Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge

Læs mere

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0 Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS

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 19 & 20: Sender & Modtagerteknik Velkommen til EDR Frederikssund Afdelings Steen Gruby 1 I øvrigt Emne 19 & 20: Sender & Modtagerteknik Tidsrum :1900 2200 I pause ca. i midten Toilettet er i gangen

Læs mere

PhotoStory. Et fedt program til præsentation af digitale billeder. Version: August 2012

PhotoStory. Et fedt program til præsentation af digitale billeder. Version: August 2012 PhotoStory Et fedt program til præsentation af digitale billeder Version: August 2012 Indholdsfortegnelse Hvad er PhotoStory 3?...4 PhotoStory 3 i undervisningen / på skolen...4 Hvad skal jeg bruge?...4

Læs mere

GSM SMS Modem MODEL: SA RTU-1 V1.01

GSM SMS Modem MODEL: SA RTU-1 V1.01 GSM SMS Modem MODEL: SA RTU1 V1.01 Brugervejledning Indgange: Der er fire indgange på modulet. De kan programmeres som normale indgange. De kan programmeres som tæller. Udgange: Der er en udgang på modulet

Læs mere

IFC Egenskaber. Mohammad Hussain Parsianfar s102951 BYG DTU

IFC Egenskaber. Mohammad Hussain Parsianfar s102951 BYG DTU Mohammad Hussain Parsianfar s102951 Indholdsfortegnelse 1 Introduktion... 3 1.1 Hvorfor er det interessant... 3 1.2 Formål... 4 2 Simplebim... 5 2.1 Præsentation af softwaren... 5 2.1.1 Brugergrænseflade...

Læs mere

Emne: Brug af billedserier på DVD i undervisningen. (udviklet i faget billedkunst)

Emne: Brug af billedserier på DVD i undervisningen. (udviklet i faget billedkunst) Emne: Brug af billedserier på DVD i undervisningen. (udviklet i faget billedkunst) Problemstilling: Jeg ønskede at bruge slideshow til at vise mange forskellige billeder i undervisningen. Jeg har i lokalet

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Det digitale niveau Niveauer af abstrakte maskiner Digitale kredsløb Logiske tilstande: (- V), (2-5 V) Kombinatoriske kredsløb Logiske tilstande: (- V), (2-5 V) Registre Logiske tilstande: (- V), (2-5

Læs mere

Kom godt i gang med. AirTies TV boks. med harddisk

Kom godt i gang med. AirTies TV boks. med harddisk Kom godt i gang med AirTies TV boks med harddisk Tillykke med din nye TV boks med harddisk Det er nemt både at installere og indstille din nye TV boks. Følg guiden og oplev alle de spændende og nye funktioner.

Læs mere

Brugervejledning. OneRemote DVB-T Scart II Modtager. B&O betjening MPEG4 HD FTA. Type 30012663. 30012663u2

Brugervejledning. OneRemote DVB-T Scart II Modtager. B&O betjening MPEG4 HD FTA. Type 30012663. 30012663u2 Brugervejledning OneRemote DVB-T Scart II Modtager MPEG4 HD FTA Type 30012663 B&O betjening 30012663u2 Tastesekvenser til den daglige betjening Beo4, Beo5 eller Beo6 betjening Optage og afspille fra tilsluttet

Læs mere

DENVER DPF-407. Digital Billedramme Betjeningsvejledning

DENVER DPF-407. Digital Billedramme Betjeningsvejledning DENVER DPF-407 Digital Billedramme Betjeningsvejledning 1 INDHOLD : FEATURES:...3 KNAPPER OG KONTROLLER:...4 FJERNBETJENINGEN...5 GRUNDLÆGGENDE BETJENING:...6 1. MENUEN VALG AF FUNKTION...6 2. MENUEN VALG

Læs mere

DENVER DPF-722 Betjeningsvejledning. Digital Fotoramme ADVARSEL. Sørg for, at der altid er fri adgang til den stikkontakt, apparatet er tilsluttet.

DENVER DPF-722 Betjeningsvejledning. Digital Fotoramme ADVARSEL. Sørg for, at der altid er fri adgang til den stikkontakt, apparatet er tilsluttet. DENVER DPF-722 Betjeningsvejledning Digital Fotoramme ADVARSEL Sørg for, at der altid er fri adgang til den stikkontakt, apparatet er tilsluttet. 1 Introduktion Tillykke med købet af din nye Digitale Fotoramme.

Læs mere

Talrækker. Aktivitet Emne Klassetrin Side

Talrækker. Aktivitet Emne Klassetrin Side VisiRegn ideer 3 Talrækker Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Talrækker 2-4 Elevaktiviteter til Talrækker 3.1 Talrækker (1) M-Æ 5-9 3.2 Hanoi-spillet

Læs mere

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

Læs mere

RefWorks Workshop Medicinsk Bibliotek Aalborg Universitetshospital. Oprettelse af konto/log in... 2. RefWorks-databasen... 2

RefWorks Workshop Medicinsk Bibliotek Aalborg Universitetshospital. Oprettelse af konto/log in... 2. RefWorks-databasen... 2 RefWorks vejledning Indhold Oprettelse af konto/log in... 2 RefWorks-databasen... 2 Import af referencer... 2 Pubmed... 3 Embase/Psycinfo/Medline (Ovid)... 4 Cinahl... 5 RefGrab-it... 6 Organisering af

Læs mere

Micro Hi-Fi System. Brugervejledning ENV-1152

Micro Hi-Fi System. Brugervejledning ENV-1152 Micro Hi-Fi System Brugervejledning ENV-1152 Indhold Kom godt i gang... 2 Strømforsyning... 2 Antenne... 2 Højttaler ledningsforbindelse... 2 Brug af fjernbetjening... 2 Knapper... 3 Betjeningsvejledning...

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

BRUGER MANUAL. Model: TK-004 37 TANGENTS MULTI-FUNKTIONS ELEKTRONISK KEYBOARD

BRUGER MANUAL. Model: TK-004 37 TANGENTS MULTI-FUNKTIONS ELEKTRONISK KEYBOARD Model: TK-004 37 TANGENTS MULTI-FUNKTIONS ELEKTRONISK KEYBOARD BRUGER MANUAL 37 tangenter 8 timbre/ 8 rytmer / 4 percussion 8 volume indstillinger 32-level tempo kontrol Optag / afspil /

Læs mere

VoicePilot TSA2100 Elevatoralarm

VoicePilot TSA2100 Elevatoralarm Fire Fighter Communication system - FFK10 og FFP10 Kommunikationssystem for brandelevatorer i henhold til EN 81-72. Giver mulighed for kommunikation imellem elevatorstolen, motorrummet (FFP10) og indsatslederens

Læs mere

Digital Drejeskive Decoder til 7286 / 7686

Digital Drejeskive Decoder til 7286 / 7686 Digital Drejeskive Decoder til 7286 / 7686 7687 Marklin 7687 Drejeskive Decoderen kan anvendes på følgende måder til etablering af Styring til Drejeskiven fra Centralstation 2. (Dette dokument tager udgangspunkt

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

Music hall AV 2.1 Dansk kvik guide. Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront

Music hall AV 2.1 Dansk kvik guide. Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront Music hall AV 2.1 Dansk kvik guide Findes i sort eller silver. Begge med kraftig børstet aluminiumsfront 1 Medier & introduktion: Tillykke med dit nye music hall anlæg. Med AV2.1 har du let adgang til

Læs mere

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring 31-05-2010. Side 1 af 15

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring 31-05-2010. Side 1 af 15 Andreas Nordbek & Kristoffer Skude Jensen DMX Styring 31-05-2010 Side 1 af 15 Indholdsfortegnelse 1 Indledning... 3 2 DMX... 4 3 Arkitektur... 5 4 Hardware design... 6 4.1 SPI... 9 5 Software... 10 5.1

Læs mere

PMR Radio Bruger Manual. electronic

PMR Radio Bruger Manual. electronic PMR Radio Bruger Manual electronic Antenne TOT: Tryk og Tal Knap Tryk og hold inde for at sende Tænd/Sluk Knap Tryk og hold inde, for at tænde eller slukke for PRM Radioen LCD Display Viser hvilke kanal

Læs mere

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Manuel Signal ( Radiosignal ) knap på pult ( Stopursfunktion )

Vejledning til Tidtagningssystem til ridebanespring. Sønderborg. Manuel Signal ( Radiosignal ) knap på pult ( Stopursfunktion ) Model: Sønderborg Valgfri portrækkefølge. Visning af tid for hovedspring / omspring. Visning af fejl Automatisk addering af fejl ved overskridelse af fejlfri tid Mulighed for visning af starttid for næste

Læs mere

Teknisk Notat. Analyser af eksplosioner på lydspor fra indslag i DR Horisont den 16. januar 2006. Rekvirent: Jyllands-Posten

Teknisk Notat. Analyser af eksplosioner på lydspor fra indslag i DR Horisont den 16. januar 2006. Rekvirent: Jyllands-Posten We help ideas meet the real world Teknisk Notat Analyser af eksplosioner på lydspor fra indslag i DR Horisont den 16. januar 2006 Rekvirent: Jyllands-Posten Side 1 af 7 30. august 2007 DELTA Dansk Elektronik,

Læs mere

BeoSound Vejledning. CENTER v/henriksens ELEKTR

BeoSound Vejledning. CENTER v/henriksens ELEKTR BeoSound 3000 1 Vejledning BeoSound 3000 Guide BeoSound 3000 Reference book Denne vejledning indeholder 3 Der findes to vejledninger, du kan læse for at lære dit Bang & Olufsen produkt at kende. Vejledning

Læs mere

Arduino kursus lektion 3:

Arduino kursus lektion 3: Arduino kursus lektion 3: I denne lektion skal vi lave få en diode til at fade op og ned! Herefter skal denne diode bruges sammen med en lysføler til at lave en smart lysfølsom diode som selv justere lyset

Læs mere

Digital stemmeoptager

Digital stemmeoptager Digital stemmeoptager I. Funktionsbeskrivelse 1. REC (optagerknap) 2. STOP (stop/tænd og sluk) 3. UP (spring frem) 4. DOWN (spring tilbage) 5. HOLD (låseknap) 6. VOL+ (lydstyrke op) 7. VOL (lydstyrke ned)

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

Quick Setup Guide SB168-ES og LS9 Dansk version

Quick Setup Guide SB168-ES og LS9 Dansk version Quick Setup Guide SB168-ES og LS9 Dansk version February, 2009 SB168-ES og LS9 Quick Setup Guide Beskrivelse af denne guide. Denne guide indeholder en hurtig og enkelt opsætning af LS932 med SB168ES digital

Læs mere

MCE2040 SERIEL KOMMUNIKATIONSMODUL

MCE2040 SERIEL KOMMUNIKATIONSMODUL Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf.: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE2040 SERIEL KOMMUNIKATIONSMODUL Overførsel af status og vægt for digitale vejeceller via simpel PC/PLC protokol

Læs mere

Audacity. Arbejd med lyd computeren. Version: August 2012

Audacity. Arbejd med lyd computeren. Version: August 2012 Audacity Arbejd med lyd computeren Version: August 2012 Indholdsfortegnelse Audacity...4 Få fat i programmet...4 Brugerfladen...5 Optag fra mikrofon / line in / cd osv...5 Klip...6 Fade-in og fade-out...6

Læs mere

Introduktion Gripit GI1319 Storyboard Detaljering

Introduktion Gripit GI1319 Storyboard Detaljering Produktrapport 7 8 1 16 Introduktion Gripit GI1319 Storyboard Detaljering Asbjørn Maigaard Axelsen Hans Toft Hornemann Ditte Maria Buus Nielsen Betina Røge Jensen Terkel Skou Steffensen 4 Projekttitel

Læs mere

1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4

1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4 Indholdsfortegnelse 1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4 2 Installation 5 2.1 Kontrol Enhed. 5 2.1.1 Tilslutning af forsyning... 5 2.1.2 Tilslutning af højttalere...

Læs mere