Obsah:

Dizajn jednoduchého ovládača VGA vo VHDL a Verilog: 5 krokov
Dizajn jednoduchého ovládača VGA vo VHDL a Verilog: 5 krokov

Video: Dizajn jednoduchého ovládača VGA vo VHDL a Verilog: 5 krokov

Video: Dizajn jednoduchého ovládača VGA vo VHDL a Verilog: 5 krokov
Video: XHTML CSS - 7. lekcia - farby - pozadia 2024, Jún
Anonim
Dizajn jednoduchého VGA radiča vo VHDL a Verilogu
Dizajn jednoduchého VGA radiča vo VHDL a Verilogu

V tomto návode navrhneme jednoduchý ovládač VGA v RTL. VGA Controller je digitálny obvod navrhnutý tak, aby poháňal displeje VGA. Číta z vyrovnávacej pamäte snímok (pamäť VGA), ktorá predstavuje rámec, ktorý sa má zobraziť, a generuje potrebné údaje a synchronizačné signály na účely zobrazenia.

Ak hľadáte kód Verilog/System verilog: Navštívte môj blog VGA radič a video systém vo Verilogu

Krok 1: Rozhranie ovládača VGA

Nasledujú hlavné signály rozhrania VGA ovládača

  • Pixel hodiny alebo VGA hodiny
  • Signály HSYNC a VSYNC

Pre zvolený VGA displej musíte najskôr vypočítať frekvenciu pixelových hodín potrebných na jeho pohon. Závisí to od 3 parametrov: celkový počet horizontálnych pixelov, celkový počet vertikálnych pixelov a obnovovacia frekvencia obrazovky.

Obvykle F = THP * TVP * obnovovacia frekvencia

V priloženom dokumente RAR nájdete dokumentáciu k taktu pixelov potrebnú pre rôzne VGA displeje.

Signály HSYNC a VSYNC sú generované z hodín Pixel. Načasovanie signálov HSYNC a VSYNC závisí od počtu parametrov: horizontálna a vertikálna predná časť, horizontálna a vertikálna zadná strana, horizontálne a vertikálne zobrazovacie pixely, horizontálne a vertikálne synchronizačné šírky a polarity pulzu.

Tieto parametre sú štandardizované pre zvolený VGA displej. Tieto dokumenty nájdete v priloženom dokumente RAR.

Tieto parametre sú konfigurovateľné parametre v našom VGA radiči IP.

Krok 2: Integrácia ovládača VGA s displejom VGA

Integrácia ovládača VGA s displejom VGA
Integrácia ovládača VGA s displejom VGA

Obrázok ukazuje, ako integrovať ovládač VGA s displejom VGA. Na dokončenie systému potrebujete ďalšie dve súčasti:

  • Vyrovnávacia pamäť rámcov: Pamäť, ktorá obsahuje rámček, ktorý sa má zobraziť.
  • Video DAC: DAC, ktorý prevádza digitálne údaje RGB a poháňa VGA displej analógovými signálmi RGB na príslušnej úrovni napätia.

Jeden z najjednoduchších a najobľúbenejších video DAC je ADV7125. Jedná sa o 8-bitový DAC, ktorý prevádza digitálne slová RGB na analógové signály 0-0,7 V a poháňa VGA displej.

Krok 3: Návrh vyrovnávacej pamäte rámcov

Je to pamäť, ktorá „ukladá“obrázok, ktorý sa má zobraziť. Obvykle je to RAM alebo niekedy ROM. Budeme diskutovať o tom, ako navrhnúť vyrovnávaciu pamäť rámcov tak, aby predstavovala obrázok. Vyrovnávacia pamäť rámcov prenáša tieto digitálne informácie na video DAC na príkaz z ovládača VGA.

Najprv sa musíme rozhodnúť o potrebnej hĺbke pixelov. Rozhoduje o kvalite obrazu, rozmanitosti farieb, ktoré môže pixel predstavovať. Pre 8-bitový DAC musíme reprezentovať primárne farebné komponenty pixelu: R, G a B v 8 bitoch. To znamená, že pixel je 24-bitový.

Každý pixel je uložený súvislým spôsobom v miestach pamäte vyrovnávacej pamäte rámcov.

Predpokladajme, že obrázok, ktorý sa má zobraziť, má veľkosť 800 x 600 pixlov.

Preto je potrebná vyrovnávacia pamäť rámcov 800x600 = 480000 x 24 bitov pamäte

Celková veľkosť pamäte je 800x600x24 = 1400 kB cca.

Ak je čiernobiely obrázok, 800 x 600 x 1 = 60 kB približne.

Blokové pamäte RAM môžu byť použité na reprezentáciu vyrovnávacej pamäte rámcov v FPGA Xilinx.

Krok 4: Poznámky

  • V závislosti od zvoleného DAC sú na ovládači VGA potrebné ďalšie signály. Použil som ADV7125.
  • Pred jazdou VGA displejom pridajte oneskorenia cyklu cez žabky na VSYNC a HSYNC. Je to spôsobené latenciami DAC a pamäte. Signály pixelov by mali byť synchronizované s HSYNC a VSYNC. V mojom prípade to bolo oneskorenie 2 cyklov.
  • Ak rámcovú vyrovnávaciu pamäť danej veľkosti nie je možné navrhnúť na serveri FPGA z dôvodu obmedzenia veľkosti blokového pamäte RAM, na zobrazenie obrázka použite menšiu pamäť a jednoducho upravte kód tak, aby sa prevalil cez adresu na hranici dostupnej pamäte, a nie na hranici celého rámca. Toto bude replikovať rovnaký obrázok znova a znova na celej obrazovke. Ďalšou metódou je škálovanie pixelov, v ktorom sa každý pixel replikuje, aby sa celý obrázok zobrazil na celej obrazovke, v menšom rozlíšení. To sa dá dosiahnuť vyladením logiky prírastku adresy v kóde.
  • IP je úplne prenosný cez všetky FPGA a časovanie je overené až do 100 MHz na Virtex-4 FPGA.

Krok 5: Priložené súbory

RAR obsahuje:

  • Kód ovládača VGA
  • PDF súbory štandardov VGA.

Odporúča: