Context
Onze docenten gezocht voor ons project voor procestechniek, ons om de uitdagingen van het ontwerpen van een real-time systeem met relatief hoge prestaties op beperkte bronnen (geheugen, bandbreedte).
De specificaties vereisen een gokkenplatform met behulp van de volgende hardware:
- van een Digilent Nexys 3 Raad (voor de uitvoering van een GPU op de FPGA).
- een Keil's MCBSTM32F400 board (voor het OS van het platform hosting en spel gegevens op te slaan).
- een Display Tech DT035TFT, LCD met een Novatek NT39016-stuurprogramma (protable ware kleurenscherm).
Er zijn twee teams van twee studenten die aan dit project werken. Één team is gericht op de ARM MCU, de andere op de GPU.
Specificaties
Het platform moet overeenkomen met de prestaties van een 16-bits commerciële gokkenplatform zoals SNES, Sega MegaDrive, met de multilayer frames en schuiven. Het platform bestaat uit twee hoofdonderdelen: de MCU van het moederbord en de GPU aangesloten op de video-uitgang.
- De specifieke vereisten van MCU zijn graphics API voor de GPU, audio API voor de onboard audio-codec gebruiker IO, MCU/GPU interface, SD card-interface. Programmering van de video game. Een module voor het configureren van de LCD-scherm (helderheid, contrast, enz.) wordt ook beschouwd als binnen de GPU.
- De specifieke eisen van de GPU zijn gelaagde display, mengen van verschillende lagen met transparantie, 16-bits RGBA kleuren, multilayer scrollen, 2D Basishandelingen (bitblit (kopie), kleur vulling, transparantie aanpassen, en hun combinatie (heldere, beweging, enz.), primitieve generatie (lijnen, cirkels, tekst), LCD- en VGA-video-uitgangen. Grafische georiënteerde geheugencontroller met DMA-toegang.
Uitvoeringsplannen
De twee teams zullen moeten regelmatig samenwerken voor de ontwikkeling van de twee belangrijkste onderdelen eerder vermeldden. De architectuur van het platform om dit te waarborgen hebben wij ontworpen.
Ons team vertrekt de uitvoering door het verstrekken van alle vereiste interfaces rondom de GPU, zoals de steun voor het LCD-scherm en de verbinding naar de MCU-bestuur. Dit zal in parallel met het ontwerp van de HDL-modules gekoppeld aan deze interfaces worden ontwikkeld. Op dit punt zal een voorontwerp integratie met de GPU plaatsvinden met het oog op de samenhang en de interoperabiliteit van beide modules. Dit zal worden gevolgd door softwareontwerp op de MCU van benodigde randapparatuur chauffeurs, audio- en video-API en ten slotte de RTO's. Na de definitieve integratie met het team van graphics, waarbij alle GPU modules, zal het geplande spel worden geïmplementeerd en getest.
YouTube Video
Alvorens in te gaan door middel van de details, kunt u kijken op deze Youtube link met een korte samenvatting van ons project en een video die laat zien wat we erin geslaagd om dit te doen veel. Het project is nog niet compleet maar we zullen houden actualisering deze pagina op elk gewenst moment een nieuwe functie is toegevoegd aan het project.
Eerste demonstratie: animatie
In deze demo zijn er twee lagen van de display in de framebuffer, de achtergrond is een afbeelding van de sterren op 320 x 240 en de voorgrondafbeelding is een 3200 x 240 met een vaste achtergrondkleur die is ingesteld op een transparante kleur terwijl het bmp-bestand converteren naar onze indeling. De MCU verrolt periodiek op de voorgrondafbeelding maken de geanimeerde beweging.
Tweede demonstratie: een korte gameplay
In deze demo geven wij een korte gameplay met behulp van sprites en achtergronden van de straat of Rage (abandonware). In dit geval animaties zijn gemaakt met behulp van bitblits op de voorgrond en de beweging van het teken dat is gemaakt met behulp van scrollen. U kunt ook zien dat primitieve generatie aan het eind een bericht weergeven.