Bärbar spelkonsol (GPU Team) (1 / 10 steg)
Steg 1: En flexibel övergripande arkitektur
Vårt team utformat den övergripande arkitekturen av GPU
Vi började med en bibliografisk forskning på kommersiella eller academical mönster används för 2D-grafikacceleration.
Punkterna där fokus var:
- Hur video data överförs till display output?
- hur olika moduler för bildbehandling kan fungera parallellt utan korrumperar varandra? Hur tillgången till video data ska hanteras?
- Hur bör MCU konfigurera olika moduler av GPU?
- Vad bör den valda bildpunktsformat för att uppfylla kraven?
Vi har valt en arkitektur som är både generiska och flexibla, ger plats för ytterligare förbättringar på projektet, och ger oss möjlighet att enkelt lägga till eller ta bort olika moduler. Arkitekturen i bilden är inspirerad från några befintliga sådana från som vi höll aspekterna som verkade bra att våra specifikationer.
I denna arkitektur användningen av ett delat grafikminne är buss och användningen av en enande register buss de viktigaste komponenterna som ger stor flexibilitet för förändringar i GPU.
För att sammanfatta rollerna av olika moduler, kan MCU gränssnitt (MCU team) STM32 att skriva in i registren av flera moduler, genom en enda hanterare, flera slavar Instruktion buss, skriftliga uppgifter kan konfigurera olika aspekter av GPU eller starta en bildbehandling drift. Bland dessa moduler har vi Video Display Controller, som ger de rätta synkronisering signalerna för antingen VGA eller LCD-utgång, och Rambuffert kommer också synkroniseras till den här modulen.
Rambuffert ansvarar för att hämta rader som ska visas från minnet, tillämpa vissa blandning och prydande funktionellitet och, viktigast, det är ansvarig för att ge rätt RGB data i rätt ögonblick (synkroniserad med VDC). Linje hämtning sker genom en grafik optimerad minne buss, som tillhandahålls av den RAM Controller. Pixel storleken och upplösningen är valt att tillåta FB att hämta fyra rader i en enda övergripande förbikoppling (detaljerat senare), lämnar den längre vertikala förbikoppling och display perioderna för bild bearbetningen.
Den här domänkontrollanten innehåller en prioritet-orienterade delat minne buss som används av alla moduler som kräver åtkomst till RAM. Bland dem vi har Block bearbetningen enhet, som kan fungera på rektangulär bild delar, ger Primitiva Generator enhet, som kan generera geometriska figurer på angiven bestämmelseort och DMA-styrenheten ett sätt att snabbt överföra bilddata till ombord RAM.
Och slutligen, LCD konfigureringsenheten (MCU team) används för att göra SPI dataöverföringar till den
LCD-Controller-enhetens interna register. dessa register kan ändras för att ställa in ljusstyrka, kontrast och många andra funktioner i LCD-displayen.
Vi lyckades med den här strukturen ger följande huvudsakliga funktioner:
- 16-bitars RBGA (Röd grön blå Alpha) pixlar visas på 24-bitars LCD eller på 8-bitars VGA,
- Frame Buffer stöder upp till 4 oberoende, bläddringsbar, display lager, konfigurerbara i storlek,
- Fullt anpassningsbara 16 MB RAM, skärm lager och sprite adresser är användardefinierade,
- SRAM-liknande gränssnitt med STM32 MCU tack vare FSMC-enhet
- Registrera dig buss för att enkelt konfigurera olika moduler från en MCU,
- BPU: Bit-blit, fyllning, tydlig, alfa komponent ändring
- PGU: primitiva generator som ger prixels, linjer och cirklar och också tecken,
- DMA: snabb data överför mot RAM-minne för att ladda konsistens, sprites osv.
- LCD: konfigurerbara ljusstyrka, kontrast, färg filtrering genom ett SPI buss.