Innehållsförteckning:

Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg
Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg

Video: Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg

Video: Design av en enkel VGA -kontroller i VHDL och Verilog: 5 steg
Video: Телевизор из старого ЖК монитора и приставки DVB-T2 (переходник-конвертер HDMI to VGA audio) 2024, Juni
Anonim
Design av en enkel VGA -kontroller i VHDL och Verilog
Design av en enkel VGA -kontroller i VHDL och Verilog

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

Integrerande VGA -styrenhet med en VGA -skärm
Integrerande 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: