Innehållsförteckning:
- Steg 1: Gränssnitt för en VGA -kontroller
- Steg 2: Integrering av VGA -styrenhet med en VGA -skärm
- Steg 3: Frame Buffer Design
- Steg 4: Anteckningar
- Steg 5: Bifogade filer
Video: Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I denna instruerbara kommer vi att designa en enkel VGA -styrenhet i RTL. VGA Controller är den digitala kretsen som är utformad för att driva VGA -skärmar. Den läser från Frame Buffer (VGA Memory) som representerar ramen som ska visas och genererar nödvändiga data och synkroniseringssignaler för visningsändamål.
Om du letar efter Verilog/System verilog -kod: Besök min blogg VGA Controller och Videosystem i Verilog
Steg 1: Gränssnitt för en VGA -kontroller
Följande är de viktigaste gränssnittssignalerna i en VGA -styrenhet
- Pixel Clock eller VGA Clock
- HSYNC- och VSYNC -signaler
För den valda VGA -skärmen måste du först beräkna frekvensen för Pixel Clock som behövs för att driva den. Det beror på tre parametrar: Totala horisontella pixlar, totala vertikala pixlar, skärmuppdateringshastighet.
Vanligtvis är F = THP * TVP * Uppdateringshastighet
Hitta dokumentationen om pixelklocka som behövs för olika VGA -skärmar i bifogade RAR.
HSYNC- och VSYNC -signaler genereras från Pixel -klockan. Tidpunkten för HSYNC- och VSYNC -signaler beror på antalet parametrar: Horisontell och vertikal frontport, horisontell och vertikal bakport, horisontell och vertikal bildpunkt, horisontell och vertikal synkroniseringspulsbredd och polaritet.
Dessa parametrar är standardiserade för en vald VGA -skärm. Hitta dessa dokument i bifogade RAR.
Dessa parametrar är konfigurerbara parametrar i vår VGA Controller IP.
Steg 2: Integrering av VGA -styrenhet med en VGA -skärm
Figuren visar hur man integrerar VGA -styrenheten med en VGA -skärm. Du behöver ytterligare två komponenter för att slutföra systemet:
- Frame Buffer: Minne som rymmer ramen som ska visas.
- Video DAC: DAC som konverterar digital RGB -data och driver VGA -skärmen med analoga RGB -signaler vid lämplig spänningsnivå.
En av de enklaste och populära Video DAC: erna är ADV7125. Det är en 8-bitars DAC som konverterar digitala RGB-ord till 0-0,7 V analoga signaler och driver VGA-displayen.
Steg 3: Frame Buffer Design
Det är minnet som "lagrar" bilden som ska visas. Det är vanligtvis ett RAM -minne eller ibland ROM. Vi kommer att diskutera hur man utformar en rambuffert för att representera en bild. Rambuffert skickar denna digitala information till en Video DAC på kommando från VGA -kontrollen.
Först måste vi bestämma vilket pixeldjup som behövs. Det avgör bildkvaliteten, de olika färger som en pixel kan representera. För en 8-bitars DAC måste vi representera de primära färgkomponenterna i en pixel: R, G och B i 8 bitar vardera. Det betyder att en pixel är 24-bitars.
Varje pixel lagras på ett sammanhängande sätt i Frame Buffer -minnesplatser.
Antag att en bild som ska visas är 800x600 pixlar.
Därför är Frame Buffer som behövs 800x600 = 480000 x 24 bitars minne
Minnets totala storlek är 800x600x24 = 1400 kB ca.
Om svartvitt bild, 800x600x1 = 60 kB ca.
Block -RAM kanske används för att representera en rambuffert i Xilinx FPGA.
Steg 4: Anteckningar
- Ytterligare signaler behövs på VGA -styrenheten beroende på vilken DAC som valts. Jag har använt ADV7125.
- Lägg till cykelfördröjningar genom flip-flops på VSYNC och HSYNC innan du kör VGA-skärm. Detta beror på DAC och minnesfördröjningar. Pixelsignalerna bör synkroniseras med HSYNC och VSYNC. I mitt fall var det 2 cykelfördröjning.
- Om rambuffert av given storlek inte kan utformas på FPGA på grund av blockstorleksbegränsning, använd mindre minne för att representera bilden och redigera helt enkelt koden för att rulla över adressen på det tillgängliga minnets gräns, snarare än hela ramens gräns. Detta kommer att replikera samma bild om och om igen längs hela skärmen. En annan metod är pixelskalning där varje pixel replikeras för att visa hela bilden i helskärm, i en mindre upplösning. Detta kan göras genom att justera adressinkrementeringslogiken i koden.
- IP-adressen är helt portabel för alla FPGA: er och är tidsbestämd upp till 100 MHz på Virtex-4 FPGA.
Steg 5: Bifogade filer
RAR innehåller:
- VGA -styrenhetskod
- PDF -filer med VGA -standarder.
Rekommenderad:
Design av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: 4 steg
Utformning av en enkel fyrvägsuppsättning associerad cachekontroller i VHDL: I min tidigare instruerbarhet såg vi hur man utformar en enkel direktkartad cachekontroller. Den här gången går vi ett steg framåt. Vi kommer att utforma en enkel fyrvägsuppsättning associerad cache-kontroller. Fördel? Mindre missfrekvens, men på bekostnad av perfo
Design av en enkel cachekontroller i VHDL: 4 steg
Design av en enkel cachekontroller i VHDL: Jag skriver detta instruerbart, eftersom jag tyckte att det var lite svårt att få lite referens -VHDL -kod att lära sig och börja designa en cachekontroller. Så jag designade själv en cachekontroller från början och testade den framgångsrikt på FPGA. Jag har p
Enkel och enkel Spider-Man Web-Shooter: 12 steg
Simple & Easy Spider-Man Web-Shooter: Har du sett en Spider-Man-film? En Spider-Man-serietidning? Något vagt Spider-Man-relaterat? Spider-Man är till synes överallt. Varför inte göra en enkel webb-shooter? Efter lite övning skapade jag en design av husmaterial som kunde skapas
UPPDATERAD !!!! Billig och enkel WIFI -antenn Signalförstärkare som är bättre och snabbare än papperet !!!: 9 steg
UPPDATERAD !!!! Billig och enkel WIFI -antenn Signalförstärkare som är bättre och snabbare än papperet !!!: En ny sväng på en gammal idé för att förbättra din WIFI -signal
En enkel, billig och enkel LED-blinkande krets med CMOS 74C14: 5 steg
En lätt att göra, billig och enkel LED-blinkande krets med CMOS 74C14: Ibland behöver du bara några blinkande lysdioder, för juldekoration, blinkande konstverk eller bara för att ha kul med blink blink blink. Jag ska visa dig hur du gör en billig och enkel krets med upp till 6 blinkande lysdioder. Obs: Detta är min första instuktiv och