Annons

Styr grafiken utan styrkrets

Ett populärt sätt att skapa grafiska inbyggnadstillämpningar är att lägga till en intern eller extern grafikstyrkrets. Problemet är att det innebär en extra kostnad och kan leda till onödigt komplicerade konstruktioner; för ett enkelt grafiskt användargränssnitt behövs i de flesta fallen inte en sådan styrkrets. I artikeln från Microchip visas hur en virtuell styrkrets kan minska kostnaden och CPU-tiden vid grafisk återgivning.

11mchipgraph04

Ett alternativ är att använda kringutrustning till en styrkrets för att skapa en virtuell grafikstyrkrets för återgivning av grafik, vilket inte upptar stora mängder CPU-tid, utan faktiskt mindre än fem procent.

I allmänhet måste ett grafiksystem utan styrkrets skicka bildrutor med pixel-information till en skärm med en viss frekvens. Uppdateringsfrekvensen ligger normalt på runt 60 Hz. För att göra det måste systemet kontinuerligt skicka bilddata till LCD-skärmen. Det är lätt att tro att den uppgiften skulle uppta merparten av CPU-tiden i en MCU. Men så är inte fallet med styrkretsar som exempelvis Microchips PIC32-MCUer, som har kringutrustning för direktminnesaccess (DMA) för överföring av data. Med en DMA som överför bilddata kan mindre än fem procent av CPU-tiden användas för att åstadkomma en virtuell grafikstyrkrets.

DMA-kringutrustningen kan överföra data från ett ställe till ett annat utan CPU-inblandning. Med en sådan styrkretsfri grafikmetod kan DMA ställas in att överföra en linje av bilddata åt gången via den parallella masterporten (PMP). Varje linje består av många pixlar. DMA sänder en del av bildbufferten under en överföring. En PMP eller begäran om timer-avbrott triggar sedan nästa DMA-överföring tills en hel linje har överförts. I utrustningar med icke beständiga avbrott kan en timer utnyttjas som trigger-källa för DMA.

För utrustningar med ett externt bussgränssnitt (EBI) kan den modulen användas som en pixel-klockkälla. En sådan klockkälla kan uppnå snabbare klockhastighet för pixlarna än PMP-kringutrustningen, trots att EBIn delar samma anslutningsben som PMPn.

Under dataöverföringen utsänder PMP eller EBI en läs- eller skrivsignal efter varje pixel-överföring. Läs- och skrivstroberna fungerar som pixel-klocka för skärmglaset. Efter att en linje av pixeldata har överförts avbryts CPUn av DMA och uppdatering sker av vissa timing-signaler – som exempelvis HSYNC, VSYNC och DEN-(data enable)-linjen – som behövs för LCD-skärmar. Detta upprepas kontinuerligt tills en hel bildruta har ritats. Bildrutan lagras i ett flyktigt minne så att bilden kan bli dynamisk.

I denna uppställning används SRAM och konfigurationen är grunden för ett styrkretsfritt grafiskt system. Systemet kan använda antingen interna eller externa SRAM, såsom visas i figur 1 och 2.

11mchipgraph01
Figur 1: Metod som utnyttjar externt minne

11mchipgraph02
Figur 2: Metod som utnyttjar internt minne

TFT LCD-paneler
Trots att den styrkretsfria grafikmetoden har utformats för att fungera med TFT LCD-paneler fungerar den även med CSTN- eller MSTN-glas med smärre modifiering. Datalinjerna består av färginformation för pixlarna. Flertalet LCD-paneler kan ha mellan åtta och 24 färgdatalinjer beroende på LCD-panelens färgdjup. Dessa datalinjer förser LCD-panelen med rå färgdata för varje pixel.

Klocksignalerna HSYNC, VSYNC, DEN och PCLK synkroniserar pixeldatan med grafikens bildruta och LCD-panelen. Synkroniseringslinjerna meddelar LCD-panelen när data är i början eller i slutet av en linje (HSYNC) eller en bildruta (VSYNC). DEN låter LCD-panelen veta när giltig pixeldata sänds till LCD-panelen och krävs för vissa TFT LCD-paneler på grund av den tid det tar att ställa in LCD-panelen för ordentlig lokalisering av pixlar.

Data sänds en linje i taget tills hela bildrutan ritats. PCLK-signalen är klockkälla för hela systemet. En klockpuls från PCLK uppdaterar LCD-panelen. Alla andra klocklinjer måste synkroniseras till pixelklockan för att åstadkomma ordentlig bildutgång. LCD-paneler som inte har HSYNC- och VSYNC-signaler kan fortfarande användas med den styrkretsfria grafikuppställningen.

Microchips billiga PICtail Plus-dotterkort för styrkretsfri grafik (LCC-grafikkort) har utformats för att demonstrera denna teknik och fungerar med många existerande PIC32-startsatser. Programvarubaserade LCC-drivrutiner kan hjälpa till med synkronisering som kräver vissa timing-parametrar, som exempelvis pulsbredd och s k ”front porch” och ”back porch” för horisontella och vertikala pulser. Efter att dessa värden kompilerats in i LCC-drivrutinen, visas bildrutan på LCD-panelen.

Figur 3 visar vad som händer inne i PIC32-styrkretsen när en grafisk bildruta skickas till skärmen. DMA- och PMP-blocket visar vad som utförs av DMA- och PMP-kringutrustningen, som delar databuss med CPUn. CPU-blocket visar de uppgifter som krävs för grafisk återgivning. DMAs avbrottsrutin (ISR) är den enda koden som måste skrivas, utöver inställning av DMA- och PMP-kringutrustningen, för att en grafisk bildruta ska skickas till skärmen.

11mchipgraph03
Figur 3: Flödesschema för PIC32-styrkretsens LCC-grafik (klicka för större bild)

Återgivning av nya pixlar
Återgivningen av nya pixlar i bildrutebufferten är lika viktig som uppdateringen av skärmen. Det utförs genom att CPUn skriver till skärmbufferten. Om bildrutan är externt lagrad avbryts DMA-överföringen medan bildrutan uppdateras. Detta är nödvändigt eftersom det bara finns en PMP-kringutrustning och den delas mellan den virtuella grafikstyrkretsen och DMA-överföringen. Den metoden påverkar skärmens uppdateringsfrekvens. Mängden pixel-uppdateringar måste övervakas för att förhindra en för stor förändring av uppdateringsfrekvensen, annars kan förändringen komma att uppfattas av det mänskliga ögat. Detta sker med hjälp av en variabel för antalet pixlar i den virtuella grafikstyrkretsen, som uppdateras varje gång en pixel skrivs och raderas vid varje DMA-avbrott.

Med introduktionen av EBI-kringutrustning minskar dramatiskt den avbrottstid som krävs för uppdatering av en bildruta. När EBI används för skrivning behöver mindre data lagras och hämtas eftersom PMP-registren inte längre används för läs- och skrivuppgifter. Dessutom är EBI-modulen en mer effektiv kringutrustning för kommunikation till extern SRAM.

Programvara
Metoden med intern SRAM utnyttjar PMPs skrivstrob som pixelklocka. Den första och andra raden av anslutningar på LCC-grafikkortet måste ställas in för denna konfiguration. I den uppställningen utnyttjas all färg i 8BPP och ingen extern SRAM. SRAM från insidan av MCUn skriver kontinuerligt sina pixelvärden till PMPn.

För 8BPP-färg utnyttjas ett 332 RGB-färgformat, vilket är tre färgvärden för rött, tre för grönt och två för blått. Detta är ett vanligt färgformat, eftersom rött detekteras lättare av det mänskliga ögat än blått.

Metoden med extern SRAM utnyttjar PMPs lässtrob som pixelklocka. Den andra och tredje raden av anslutningar på LCC-grafikkortet måste ställas in för denna konfiguration. I den uppställningen är all färg 16BPP och den grafiska bildruta som kontinuerligt läses finns i en extern SRAM. För 16BPP-färg utnyttjas ett 565 RGB-format med fem färgvärden för rött, sex för grönt och fem för blått.

För båda metoderna gäller att vid anslutning till en LCD-panel med fler än 16 färglinjer knyts de outnyttjade färglinjerna till de viktigaste bitarna av den sista färgbiten som utnyttjats. Det tillser att en fullständig färgskala from vitt till svart kan åstadkommas.

Leave a Reply