Stap 1: Een flexibele algehele architectuur
Ons team heeft de algemene architectuur van de GPU speciaal ontworpen
We begonnen met een bibliografisch onderzoek op commerciële of academisch ontwerpen voor 2D grafische versnelling gebruikt.
De punten van aandacht zijn:
- hoe de videogegevens worden overgezet naar de vertoningsoutput?
- hoe verschillende modules voor beeldverwerking parallel zonder beschadiging van elkaar kan functioneren? Hoe moet de toegang tot de videogegevens worden beheerd?
- Hoe moet de MCU verschillende modules van de GPU configureren?
- Wat moet de geselecteerde pixelindeling om te voldoen aan de eisen?
Wij hebben besloten een architectuur die zowel generiek is en flexibel, waardoor plaats voor verdere verbeteringen op het project, en waardoor wij gemakkelijk toevoegen of verwijderen van de verschillende modules. De architectuur waarin de afbeelding is geïnspireerd door een paar bestaande uit leek die we gehouden de aspecten die nuttig zijn voor onze specificaties.
In deze architectuur het gebruik van een gedeelde video geheugen zijn bus en het gebruik van een verenigende register bus de belangrijkste onderdelen die enorme flexibiliteit voor veranderingen in de GPU leveren.
Om samen te vatten de rollen van de verschillende modules, laat de MCU Interface (MCU team) de STM32 te schrijven in de registers van verschillende modules, door middel van een enkelvoudige master, meerdere slaven Instructie Bus, de geschreven gegevens kan configureren van verschillende aspecten van de GPU of een afbeelding verwerking starten. Onder deze modules hebben we Video Display Controller, waarmee de juiste synchronisatie signalen voor VGA- of LCD-uitgang, en de Frame Buffer zullen ook worden gesynchroniseerd naar deze module.
De Frame Buffer is verantwoordelijk voor het ophalen van regels moeten worden weergegeven uit het geheugen, toepassing van sommige mengen en scrollen functionaliteiten en, het belangrijkst, is verantwoordelijk voor het verstrekken van de juiste RGB-gegevens op het juiste moment (gesynchroniseerd met de VDC). Het ophalen van de lijn gebeurt door middel van een grafische geoptimaliseerd geheugenbus, geboden door de Controller van de RAM. De pixelgrootte en resolutie worden gekozen om de FB te halen vier lijnen in één enkele horizontale blanking periode (zie verderop), waardoor de meer verticale blanking periode en de perioden van de vertoning voor afbeelding verwerkingen.
Deze controller biedt een prioriteit georiënteerde gedeeld geheugenbus die door alle modules waarvoor de toegang tot het RAM-geheugen wordt gebruikt. Onder die we de Blok Processing Unit, die kan worden toegepast op rechthoekige afbeelding delen hebben, biedt Primitieve Generator eenheid, die tot geometrische figuren op de opgegeven bestemming en DMA-Controller leiden kan een manier om snel beeldgegevens overbrengen naar de RAM aan boord.
En ten slotte LCD configuratie eenheid (MCU team) wordt gebruikt voor het maken van de overdracht van de gegevens van de SPI in de
LCD Controller van interne registers; Deze register kan worden gewijzigd als u wilt instellen van de helderheid, contrast en vele andere functies van de LCD display.
Met deze structuur, die wij kunnen bieden na belangrijkste functionaliteiten:
- 16-bits RBGA (Rood groen blauw Alpha) pixels weergegeven in 24-bits LCD, of op 8-bits VGA,
- Frame Buffer ondersteuning biedt voor maximaal 4 lagen van onafhankelijke, waarin kan worden gebladerd, scherm, configureerbare in grootte,
- Volledig aanpasbare 16 MB RAM-geheugen, display laag en sprite adressen zijn door de gebruiker gedefinieerd,
- SRAM-achtige interface met de STM32 MCU dankzij FSMC adres vertaler,
- Bus registreren voor verschillende modules van een MCU, gemakkelijk te configureren
- BPU: Bits-blit, opvulling, duidelijk, alpha component wijziging
- PGU: primitieve generator prixels, lijnen en cirkels en ook teksttekens,
- DMA: snelle gegevensoverdracht naar RAM om te laden de textuur, sprites enz.
- LCD: configureerbare helderheid, contrast, kleur filteren door middel van een bus SPI.