Obsah:
- Krok 1: Rozhranie ovládača VGA
- Krok 2: Integrácia ovládača VGA s displejom VGA
- Krok 3: Návrh vyrovnávacej pamäte rámcov
- Krok 4: Poznámky
- Krok 5: Priložené súbory
Video: Dizajn jednoduchého ovládača VGA vo VHDL a Verilog: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
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
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:
Udržiavanie stopky jednoduchého internetového rádia: KISSIR: 13 krokov
Jednoduché webové internetové rádio: KISSIR: Niekedy musí byť iba hmatateľné. Žiadne rozhranie akéhokoľvek druhu. Len tlačidlá. Malina Pi ako prehrávač internetového rádia nie je nič nové a existuje množstvo návodov, ako vytvoriť prehrávač internetového rádia pomocou malinového pi s alebo bez
Výroba jednoduchého robota z vecí, ktoré nájdete vo svojom dome (verzia s horúcim kolesom): 5 krokov
Vytvorenie jednoduchého robota z vecí, ktoré nájdete vo svojom dome (verzia s horúcim kolesom): Tento návod vám ukáže, ako sa robí samotné horúce koleso, ktoré beží na batérie typu A. Budete musieť používať iba veci, ktoré pravdepodobne nájdete vo svojom dome. Upozorňujeme, že tento robot pravdepodobne nepôjde úplne rovno,
Bojujte proti koronavírusu: Časovač jednoduchého umývania rúk: 8 krokov (s obrázkami)
Boj s koronavírusom: Jednoduchý časovač umývania rúk: So súčasnou pandémiou vo svete sa situácia zdá byť strašidelná. Vírus Corona môže byť kdekoľvek. Pokiaľ vieme, jeden by mohol prenášať vírus niekoľko dní bez toho, aby dokonca vykazoval akékoľvek príznaky. Skutočne strašidelné. Ale hej, nebojte sa.
Návrh jednoduchého štvorsmerového radiča asociatívnej vyrovnávacej pamäte vo VHDL: 4 kroky
Návrh jednoduchého štvorsmerového radiča asociatívnej vyrovnávacej pamäte vo VHDL: V mojom predchádzajúcom návode sme videli, ako navrhnúť jednoduchý radič vyrovnávacej pamäte s priamym mapovaním. Tentokrát sa posunieme o krok vpred. Navrhneme jednoduchý štvorsmerový radič asociatívnej vyrovnávacej pamäte. Výhoda? Menšia miera zmeškania, ale za cenu perfo
Návrh jednoduchého radiča vyrovnávacej pamäte vo VHDL: 4 kroky
Návrh jednoduchého ovládača vyrovnávacej pamäte vo VHDL: píšem tento návod, pretože bolo pre mňa trochu ťažké získať nejaký referenčný kód VHDL, aby som sa ho naučil a začal navrhovať radič vyrovnávacej pamäte. A tak som sám navrhol radič vyrovnávacej pamäte od začiatku a úspešne som ho otestoval na FPGA. Mám p