Bärbar spelkonsol (ARM MCU Team) (4 / 6 steg)

Steg 4: MCU gränssnitt - FPGA Xilinx Spartan 6



Vi utformade MCU gränssnittet på ett sätt att dela data mellan STM32 mikrokontroller och Nexys 3 FPGA. För att försäkra en fullt fungerande grafikerna kort, måste uppgifter från STM32 vara riktad mot rätt registret eller mot DMA controller utan någon diskontinuitet eller förlorade data. STM32 bör också kunna läsa data från register utan att äventyra skrivprocessen.

MCU gränssnitt protokoll

LCD-kontakt för att ansluta STM32 mikrokontroller till Nexys 3 FPGA är en 17 av 2 styrelsen att styrelsen kontakter.

För att använda FSMC asynkron SRAM protokollet, behöver vi:

  • En 16-bitars databuss, tillgänglig direkt från LCD-kontakten (D0 till D15)
  • NOE, NWE och NE4 signaler, finns även från LCD-kontakten (RD, WR och CS)
  • En 26 bitars adress inte tillgänglig på LCD-kontakten, där endast A [0] lite. Detta varför vi var tvungna att skapa våra egna protokoll så att vi kan använda FSMC för att överföra data från STM32 mikrokontroller.

För att täcka för avsaknaden av 26 bit adress bussen, beslutat vi att dela en transaktion (läsa och skriva) i tre på varandra följande transaktioner. Den första är en skriva transaktion som innehåller registret vi vill läsa eller skriva adress. Den andra är en läsa eller skriva transaktion beroende på vilken typ av operation som vi behöver göra. Vid en skriva transaktion, databussen kommer att vara som innehåller de data som vi vill skriva i registren vilken adress har angetts i den föregående transaktionen. Eftersom GPU registren är 32-bitars register, vi behöver två skriva (eller Läs) 16-bitars transaktion.

Om du vill återuppta i protokollet, för att skriva i ett register, behöver vi tre skriva transaktion. Den första som innehar adress och de två andra som innehåller 32 bit data (LSB sedan MSB). Om vi vill läsa data från registren, kommer att den första transaktionen vara en skriva en som innehåller adressen. De andra två håller data från register (LSB sedan MSB).

Data- och buss management

Data- och buss management blocket
uppdaterar databufferten 32-bitars och 16-bitars adress bufferten. På den första transaktionen från STM32 överförs 16-bitars data till adress bufferten. Följande två transaktioner överförs till 32-bitars databufferten.

Vid en DMA controller dataöverföring finns det inget behov av en tre skriva transaktionen eftersom det finns ingen adress och databussen är endast 16-bitars. I så fall STM32 16 bitars databuss överförs till databussen DMA. Vi använde LSB av 26 bit adress bussen av FSMC, heter RS, för att identifiera platsen för överföringen av uppgifter (DMA-styrenheten eller registrera karta).

Data överförs från buffertar till den tillgängliga bussen beroende på typ av överföring, detekteras med hjälp av NOE, NWE signaler från FSMC, som visas i föregående avsnitt. Eftersom dessa signaler är asynkron som, vi lagt till MCU gränssnittet en synkron signalgenerator som kan användas för att synkronisera andra block, men med en fördröjning på 10 till 20 ns.

Buss hantering av ändringsförfrågan


Vid en dataöverföring till eller från blocket registrerar karta har databussen för transaktionen behandlas framgångsrikt. Om bussen inte är tillgänglig, en begäran skall skickas till RegisterMap och STM32 måste förbli sysslolösa till bussen blir tillgänglig.

Det är därför använda en av de generella indata/utdata (GPIO), tillgänglig från LCD-kontakten, är konfigurerad för att skicka en signal som heter upptagen som berättar STM32 att FPGA är upptagen och inte kan fullfölja transaktionen tills upptagetton sätts igen på '0'. Detta enkla förfarande garanterar att varje överföring till eller från registrerar karta kommer att behandlas framgångsrikt och utan förlust av data. När bussen är tillgängliga, skickas en output enable till registren en Läs transaktion. Om det är en skriva transaktion, är belastning en signal till register i samtidigt som adress bussen.

Demo

I denna demo visas hur vi lyckades slå på och av lysdioder på Nexys 3 styrelsen från MCU styrelsen.

Se Steg
Relaterade Ämnen

Bärbar spelkonsol (GPU Team)

SammanhangFör vårt engineering projekt ville vår handledare vi att möta utmaningar för att utforma en verklig-tid system med relativt hög prestanda på begränsade resurser (minne, bandbredd).Specifikationerna kräver en spelplattform med följande hårdv...

Raspberry Pi bärbara spelkonsol

Bygga denna bärbara spelkonsol är kanske det roligaste jag haft med en Raspberry Pi. Och det är inte bara att bygga som är kul; Jag har nu fått en fullt fungerande spelkonsol, så jag kan spela alla mina favorit gamla arkad spel, on-the-go!Det finns e...

Raspi Pip-boy, bärbar spelkonsol / dator

Hej, skulle jag vilja presentera min första hallon-pi projekt.En Pip-boy som personlig computern (om du är en Fallout fläkt, du ser vad jag menar)! :Översikt :- Hallon-pi modell B + en 2,8 LCD 8bits parallella TouchScreen ansluten på GPIOS.-Lxde Desk...

Hur man bygger ett Nintendo N64 bärbar spelkonsol System

N64 emulatorer fungerar inte bra, förvänta stamning med video, framerate frågor kompatibilitetsproblem. Det enda sättet att spela N64 spel ordentligt är på original hårdvara; faktum.Att göra en handheld bärbar i grunden innebär följande:* ta bort all...

Hur man gör en handheld bärbar Nintendo 64 N64 spelkonsol - iNto64

någonsin velat göra din Nintendo 64 (N64) gaming konsolen till en handheld bärbar enhet för "på språng" spela?Detta system kör av Li-ion batterier som är kraftfull nog att köra systemet och är även laddningsbara celler.Med denna serie av omfatta...

Bärbara RetroGame konsolen (Raspberry Pi)

Detta instructable är skriven för FabLab att göra kursen för Rotterdam University of Applied Sciences.För denna kurs ska jag göra en bärbar spelkonsol i kombination med en Raspberry Pi och ett anpassat skal.För en skoluppgift tvungen jag att göra obj...

Göra ett bärbara spelsystem-i Photoshop!

Detta är min första instructable som besöker den kraftfulla och extraordinära världen av photoshop, jag hoppas du gillar det!Jag blev förvånad att det fanns inget som detta på instructables förrän nu, så jag tänkte jag skulle visa er mitt projekt som...

Bärbar allt-i-ett spel konsol rutan

bygga den här All-i-en bärbar spelkonsol du var ett bra beslut! Inte bara gör det lätt att transportera, det skyddar min spelsystem och håller den organiserade.Detta är bara en beskrivning, Visa den kompletta Instructable här!Varför bygga något sådan...

Hur du sätter din dator (eller annan enhet) till en Retro Arcade med Lakka

Om du letar efter ett roligt sätt för att använda en gammal PC, Lakka kan förvandla det till en fantastisk retro gaming maskin. Denna lätt installation kräver inte någon avancerad Linux kunskap, och du kan även använda de domänkontrollanter som du re...

Planet lander på 4D Systems' PoGa

4D system PoGa - bärbara spelkonsol - är en sofistikerad spelkonsol som innehåller en uLCD skärm, en Goldelox mikrokontroller, en uSD-kortläsare och de regelbundna kontrollerna för spel (upp/ner/vänster/höger för din vänstra hand, och A / B för din r...

Smarta hem med arduino och jubito

jubito är en programvara som jag utvecklar jaNETramverk. En smart home server som skapas gränssnitt mellan olika hårdvara (som arduino) och programvarukomponenter, att förmågan att interagera varandra och låt mig tillgång automatiseringar och mer öve...

Raspberry Pi Solar väderstation

Sporrad av slutförandet av mina två tidigare projekt, den kompaktkamera och bärbar spelkonsol, ville jag hitta en ny utmaning. Det naturliga förloppet var ett utomhus remote system...Jag ville bygga en Raspberry Pi väderstation som kunde hålla sig ut...

Avlägsen kontrollerade relay

I detta projekt ska jag visa dig hur man gör en billig fjärr kontrollerade relä med en sändare och mottagare. Denna trådlösa relay kan användas på något och du kan upptåg dina vänner genom att ansluta den till en lampa och skrämma dem ;)Steg 1: Delar...

Öppna och modding ett Li-ion batteri och ansluter i en gadget att ladda vid behov

varför är detta användbart? När du gör en elektronik projekt, som en bärbar handhållen video spel konsolen system, det är inte lätt att hysa ett stort batteripaket innanför höljet; men om batteriet kan delas upp i två delar, det innebär att det är my...

Hur man gör en Sega DreamCast-konsol till en ackumulatorn driv handheld portable

första pic är av den färdiga artikeln, enligt sista sidan i guiden.INLEDNING:Det har bara varit om ett dussin sådana enheter i förflutnan från olika datorbyggare, en av dem var min för några år sedan. Därför tänkte jag det skulle vara trevligt att gö...

Namnet ritning CNC

Detta instructable skapades enlighet projektet kravet på Makecourse vid University of South Florida (www.makecourse.com).Med detta i åtanke är slutresultatet av detta projekt en CNC som helt klarar av att köra bort av GRBL, utan att uppfylla kraven i...

Driva din Arduino/AVR med ett Hand-Cranked batteri

om du någonsin velat driva din Arduino eller AVR från ett batteri för utveckling testning (batterierna har olika makt leverans kvaliteter än, säg, transformerad AC eller ens en reglerad vägg vårta i DC) testning men var trötta för att gå igenom batte...

En annan Arduino Counter

Adaptiv rapportering delar batch räknareEn räknare som kan anpassas till maskinen är monterad och rapportera data tillbaka till andra platser t.ex. handledare skrivbordHär är counter jag byggt som en fungerande prototyp för ett företag jag arbetade e...

DIY LED-tecken med MAX7219 Dot Matrix modul STM8S003F3 MCU för AVR PIC MSP430 Arduino ARM STM32

för att tillfredsställa DIY elektronikhobby, ICStation har utvecklat MAX7219 Dot Matrix modul. Det använder Max7219 chip som gör ett bra jobb på besparingen av MCU i /. Det inte bara kan kontrollera varje punkt individuellt, men också kan förlängas u...