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 liste...6 Side 1 af 8
1 Introduktion AVR MP3 29-05-08 1 Introduktion Projektet AVR MP3, går ud på at få en Atmel mega 16 til at kommuniker med at en VS1001k fra VSLI. Grunden til at jeg har valgt at bruge VS1001k chippen, er fordi jeg havde den liggende og fordi den bruger SPI bussen til kommunikation med mikroprocessoren. 2 Udviklingsmiljø Som udviklingsmiljø har jeg valgt at bruge linux som styresystemet, nærmere Ubuntu 8.04. Dette er et personlig valg at jeg bruger linux, men efter min mening giver det nogle nemmere muligheder med hensyn til valg af kompilere og programmerings programmer. Desuden har jeg valgt at få projektet hosted på en ekstern server. Hele projektet er hosted ved google code, i det de tilbyder subversion understøttelse og det er gratis at få hosted ved dem så længe det er opensource eller til studie projekter. Kompilere : gcc avr 4.2.2 (shell kommand : avr-gcc - version) Make : make 3.81 (shell kommand : make --version) Programmer : avrdude 5.5 (kompileret 22:36:39 Nov 11 2007)(shell kommand : avrdude -v) Editor : gedit 2.22.3 (shell kommand : gedit --version) Diagram program : Dia 0.96.1 (kompileret 16:56:49 Jan 25 2008)(shell kommand : dia --version) Version styring : subversion 1.4.6 r28521 (kompileret 08:53:49 Mar 11 2008) (shell kommand : svn --version) Rapport skrivningsprogram : OpenOffice.org 2.4.0 Kode host : Google code web page url : http://code.google.com/p/mtk-avrmp3/ Man kan hente hele projektet ned via subversion det vil sige Rapport, Kildekode, Hardware, Datablade. For at få en kopi af projekt ned på din harddisk kan det gøres via denne shell kommando, bemærk det giver kun læse rettigheder : svn checkout http://mtk-avrmp3.googlecode.com/svn/trunk/ mtk-avrmp3 Side 2 af 8
3 Beskrivelse af systemet AVR MP3 29-05-08 3 Beskrivelse af systemet Illustration 1:Systems oversigt På illustration 1 vises system diagrammet som er der bliver arbejde ud fra. Systemet streamer mp3 filen igennem RS232/USB, microcontrolleren sender så mp3 data via SPI bussen til VS1001k chippen, som driver et par høretelefoner eller et par højtaler. For at få sende hastigheden op, mellem de enkelt lag, har jeg valgt at implantere en cache mellem det som sendes fra computeren til atmega16 og fra atmega16 til vs1001k dekoderen. Dette gøres ved at cache X antal bytes i atmega16'en, og når den er fyldt, påbegynder den at sende bytes af sted til vs1001k dekoder og mens modtager den stadig bytes fra computeren. Side 3 af 8
3.1 VS1001k AVR MP3 29-05-08 3.1 VS1001k Illustration 2:Oversigt over VS1001k mp3 decoder chip VS1001k chippen er produceret af firmaet VLSK, er en MPEG layer 3 lyd dekoder. Med en DSP processor, 4 KB program RAM, 0.5 KB data RAM til bruger programmer. Den understøtter MPEG 1, 2 og 2.5 alle sample rater og bit rater i mono og stereo lyd samt variable bit rate. Vs1001k bruger en clock med følgende frekvenser 12-13 Mhz eller 24-26 Mhz. Illustration 2 viser en oversigt over vs1001k MP3 dekoder chippens opbygning. Illustration 3:vs1001k mp3 dekoder chip opstillingsdiagram Vs1001k skal have en maksimalt have en 3,6 volts spænding på analog (AVDD) og digital (DVDD) delen. I databladet er der et diagram over hvordan den typiske måde at Side 4 af 8
3.1 VS1001k AVR MP3 29-05-08 opstille vs1001k chippen i et system, se illustration 3. 3.1.1 Kommunikation med vs1001k SPI bussen bruges til at kommunikere med vs1001k chippen, der er en Serial Data Interface (SDI) og en Serial Control Interface (SCI). Hvori kommunikationen med begge er beskrevet i kapitel 5 i databladet for vs1001k chippen. For at begynde en kommunikationen med vs1001k skal chip select benet (XCS) trækkes lav i det den er aktiv lav (0 volt), ved høj (3.6 volt) går Spi interfacet i standby mode og afslutter den i gang værende process. Dette er kun gældende ved SCI kommunikation, da der ikke er nogle chip select ved SDI kommunikation som er konstant aktiv. SDI kan enten være slave eller master og er i stand til at genere en 512 eller 1024 khz clock frekvens, som slave er det SPI masteren som genere clock signalet. Det skal dog siges at SPI master mode ikke er anbefalet fra producentenside da, jvf databladet kapitel 6.5.1 MODE, den del ikke er afprøvet. Vs1001k chippen antager at der bruges byte-synkronisering, selve dekoderen søger ikke efter byte-synkronisering af data strømmen, men antager at dataen er korrekt placeret i forhold til byte placeringen. Når BSYNC benet trækkes høj ved den første bit af den byte som sendes, hvis vs1001k chippen er sat til at modtage LSB først er det den byte og hvis den er sat til at modtage MSB først er den byte. Man kan dog også vælge at sætte BSYNC til VCC (maksimalt 3.6 volt) hvilket kræver at man altid bruger den valgte byte rækkefølge. Fra producentenside anbefales at der bruges BSYNC benet. DREQ benet bliver brugt når vs1001k chippen er opstillet i en SPI slave, og bruges til at indikere hvor når der vs1001k chippen ikke kan modtage mere data. Når DREQ er høj kan der minimum sendes 32 byte af data til vs1001k chippen, hvis DREQ bliver lav så skal masteren stoppe med at sende data. Fordi der en sikkerhedsområde på 32 bytes kan der sendes 32 bytes uden at der behøves at tjekkes på DREQ benet. DREQ burde ikke bruges til at afbryde en overførelse, men til at afgøre om der skal sendes mere af sted. Som beskrevet tidligere i dette afsnit så skal XCS benet trækkes lav for at kunne i SCI mode, selve SCI protokollen består af en instruktions byte, en adresse byte og en 16 bit data word. Dataen bliver læst på den opadgående flanke, og bør derfor ikke opdatere på opadgående flanker. Instruktionensbyten kan enten være skriv, som har koden 0x2 eller læs som har koden 0x3. Det skal dog bemærkes efter brug af SCI kommandoer må man ikke sende SDI eller SCI data til vs1001k chippen for 5 micro sekunder. For at læse dataen på en bestemt adresse sendes instruktions byten læs (0x3) og derefter adressen, der ville derefter blive shiftet ud 16-bit data, som passer med den data som er på den bestemte adresse. XCS bør blive trukket høj når de 16-bit data er overføret, derefter vil der blive lagt en til adressen, dataen der på vil bliver shiftet ud. Illustration 4 er en figur som viser hvordan det foregår. Side 5 af 8
3.1 VS1001k AVR MP3 29-05-08 Illustration 4:Viser hvordan SCI læsningen foregår For at skrive til data på en bestemt adresse, skal det ske i denne sekvens, XCS bliver trukket lav for at vælge enheden, der efter sendes der skriv koden (0x2) efterfulgt en adresse og 16-bit data, efter dataen er blevet shiftet ind, skal XCS trækkes høj for at afslutte skrive sekvensen. Illustration 5 viser det grafisk hvor det foregår. Illustration 5:Viser hvor SCI skrivning foregår 3.2 Systemet Side 6 af 8
3.2 Systemet AVR MP3 29-05-08 4 Konklusion Side 7 af 8
5 Litteratur liste AVR MP3 29-05-08 5 Litteratur liste vs1001k datablad findes på cd-rommen under datablade, eller på url: http://www.vlsi.fi/datasheets/vs1001.pdf Atmega16 datablad findes på cd-rommen under datablade, eller på url: http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf 6 Illustrations liste Forside illustrationen er dels hjemmelavet, billedet af vs1001k chippen er taget fra vs1001k databladet og billede af stk500 kittet er taget fra url: http://www.avrfreaks.net/images/wallpapers/stk500_b_1600x1200.jpg Illustration 1 (på side 3) er hjemmelavet. Illustration 4 (på side 6) er hjemmelavet. Illustration 2 (på side 4) er taget fra vs1001k databladet. Illustration 3 (på side 4) er taget fra vs1001k databladet. Illustration 4 (på side 6) er taget fra vs1001k databladet. Illustration 5 (på side 6) er taget fra vs1001k databladet. Side 8 af 8