Indholdsfortegnelse:

Design af en simpel VGA -controller i VHDL og Verilog: 5 trin
Design af en simpel VGA -controller i VHDL og Verilog: 5 trin

Video: Design af en simpel VGA -controller i VHDL og Verilog: 5 trin

Video: Design af en simpel VGA -controller i VHDL og Verilog: 5 trin
Video: Проектирование и моделирование логических элементов в Verilog с помощью Xilinx ISE 2024, Juni
Anonim
Design af en simpel VGA -controller i VHDL og Verilog
Design af en simpel VGA -controller i VHDL og Verilog

I denne instruktive vil vi designe en simpel VGA -controller i RTL. VGA Controller er det digitale kredsløb designet til at drive VGA -skærme. Den læser fra Frame Buffer (VGA -hukommelse), der repræsenterer den ramme, der skal vises, og genererer nødvendige data og synkroniseringssignaler til visningsformål.

Hvis du leder efter Verilog/System verilog -kode: Besøg min blog VGA -controller og videosystem i Verilog

Trin 1: Grænseflade til en VGA -controller

Følgende er de vigtigste grænsefladesignaler i en VGA -controller

  • Pixel Clock eller VGA Clock
  • HSYNC og VSYNC signaler

For den valgte VGA -skærm skal du først beregne frekvensen af Pixel Clock, der er nødvendig for at køre den. Det afhænger af 3 parametre: Total vandrette pixels, Total lodrette pixels, Skærmopdateringshastighed.

Typisk er F = THP * TVP * Opdateringshastighed

Find den dokumentation om pixelur, der er nødvendig til forskellige VGA -skærme, i den vedhæftede RAR.

HSYNC- og VSYNC -signaler genereres fra Pixel -uret. Tidspunktet for HSYNC- og VSYNC -signaler afhænger af antallet af parametre: Horisontal og lodret frontporch, vandret og lodret bagporch, vandret og lodret displaypixel, vandret og lodret synkroniseringspulsbredde og polaritet.

Disse parametre er standardiseret for et valgt VGA -display. Find disse dokumenter i den vedhæftede RAR.

Disse parametre er konfigurerbare parametre i vores VGA Controller IP.

Trin 2: Integrering af VGA -controller med en VGA -skærm

Integrering af VGA -controller med en VGA -skærm
Integrering af VGA -controller med en VGA -skærm

Figuren viser, hvordan man integrerer VGA -controlleren med et VGA -display. Du har brug for yderligere to komponenter for at fuldføre systemet:

  • Frame Buffer: Hukommelse, der holder rammen, der skal vises.
  • Video DAC: DAC, der konverterer digitale RGB -data og driver VGA -skærmen med analoge RGB -signaler ved passende spændingsniveau.

En af de enkleste og mest populære Video DAC'er er ADV7125. Det er en 8-bit DAC, der konverterer digitale RGB-ord til 0-0,7 V analoge signaler og driver VGA-displayet.

Trin 3: Design af rammebuffer

Det er hukommelsen, der 'gemmer' det billede, der skal vises. Det er typisk en RAM eller nogle gange ROM. Vi vil diskutere, hvordan man designer en rammebuffer til at repræsentere et billede. Rammebuffer videregiver disse digitale oplysninger til en Video DAC på kommando fra VGA Controller.

Først skal vi bestemme den nødvendige pixeldybde. Det bestemmer billedkvaliteten, de forskellige farver en pixel kan repræsentere. For en 8-bit DAC skal vi repræsentere de primære farvekomponenter i en pixel: R, G og B i hver 8 bits. Det betyder, at en pixel er 24-bit.

Hver pixel gemmes på en sammenhængende måde i Frame Buffer -hukommelsessteder.

Antag, at et billede, der skal vises, er 800x600 pixels.

Derfor er Frame Buffer nødvendig 800x600 = 480000 x 24 bit hukommelse

Hukommelsens samlede størrelse er 800x600x24 = 1400 kB ca.

Hvis sort -hvidt billede, 800x600x1 = 60 kB ca.

Blok -RAM'er bruges måske til at repræsentere en rammebuffer i Xilinx FPGA'er.

Trin 4: Noter

  • Yderligere signaler er nødvendige på VGA -controlleren afhængigt af den valgte DAC. Jeg har brugt ADV7125.
  • Tilføj cyklusforsinkelser gennem flip-flops på VSYNC og HSYNC, før du kører VGA-skærm. Dette er på grund af DAC og hukommelsesforsinkelser. Pixelsignalerne skal synkroniseres med HSYNC og VSYNC. I mit tilfælde var det 2 cyklus forsinkelse.
  • Hvis rammebuffer af en given størrelse ikke kan designes på FPGA på grund af blokrammestørrelsesbegrænsning, skal du bruge mindre hukommelse til at repræsentere billedet og blot redigere koden for at rulle adressen på den tilgængelige hukommelsesgrænse frem for hele rammens grænse. Dette vil replikere det samme billede igen og igen langs hele skærmen. En anden metode er pixelskalering, hvor hver pixel replikeres for at vise hele billedet i fuld skærm i en mindre opløsning. Dette kan gøres ved at tilpasse adressens inkrementationslogik i koden.
  • IP'en er fuldstændig bærbar på tværs af alle FPGA'er og er timing-verificeret op til 100 MHz på Virtex-4 FPGA.

Trin 5: Vedhæftede filer

RAR'en indeholder:

  • VGA -controller -kode
  • PDF -filer med VGA -standarder.

Anbefalede: