Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:59
Šioje instrukcijoje mes suprojektuosime paprastą VGA valdiklį RTL. VGA valdiklis yra skaitmeninė grandinė, skirta VGA ekranams valdyti. Jis nuskaito iš kadrų buferio (VGA atmintis), rodančio rodomą rėmelį, ir generuoja reikiamus duomenis bei sinchronizavimo signalus rodymui.
Jei ieškote „Verilog“/sistemos verilog kodo: apsilankykite mano tinklaraštyje „VGA“valdiklis ir vaizdo sistema „Verilog“
1 žingsnis: VGA valdiklio sąsaja
Toliau pateikiami pagrindiniai sąsajos signalai VGA valdiklyje
- „Pixel Clock“arba „VGA“laikrodis
- HSYNC ir VSYNC signalai
Norėdami pasirinkti VGA ekraną, pirmiausia turite apskaičiuoti „Pixel Clock“dažnį, reikalingą jam valdyti. Tai priklauso nuo 3 parametrų: viso horizontalių pikselių, viso vertikalių pikselių, ekrano atnaujinimo dažnio.
Paprastai F = THP * TVP * atnaujinimo dažnis
Pridedamame RAR rasite pikselių laikrodžio dokumentaciją, reikalingą įvairiems VGA ekranams.
HSYNC ir VSYNC signalai generuojami iš „Pixel“laikrodžio. HSYNC ir VSYNC signalų laikas priklauso nuo parametrų skaičiaus: horizontalus ir vertikalus „Frontporch“, horizontalus ir vertikalus „backporch“, horizontalūs ir vertikalūs ekrano taškai, horizontalaus ir vertikalaus sinchronizavimo pulso pločiai ir poliškumai.
Šie parametrai yra standartizuoti pasirinktam VGA ekranui. Šiuos dokumentus rasite pridedamame RAR.
Šie parametrai yra konfigūruojami parametrai mūsų VGA valdiklio IP.
2 žingsnis: integruokite VGA valdiklį su VGA ekranu
Paveikslėlyje parodyta, kaip integruoti VGA valdiklį su VGA ekranu. Norėdami užbaigti sistemą, jums reikia dar dviejų komponentų:
- Kadrų buferis: atmintis, kurioje yra rodomas kadras.
- Vaizdo DAC: DAC, konvertuojantis RGB skaitmeninius duomenis ir valdantis VGA ekraną su RGB analoginiais signalais esant tinkamam įtampos lygiui.
Vienas iš paprasčiausių ir populiariausių vaizdo DAC yra ADV7125. Tai 8 bitų DAC, kuris RGB skaitmeninius žodžius paverčia 0-0,7 V analoginiais signalais ir valdo VGA ekraną.
3 žingsnis: rėmo buferio dizainas
Tai atmintis, kuri „saugo“rodomą vaizdą. Paprastai tai yra RAM arba kartais ROM. Mes aptarsime, kaip sukurti rėmo buferį vaizdui atvaizduoti. Kadro buferis perduoda šią skaitmeninę informaciją vaizdo DAC, gavus VGA valdiklio komandą.
Pirmiausia turime nuspręsti, kokio pikselių gylio reikia. Tai lemia vaizdo kokybę, pikselių spalvų įvairovę. 8 bitų DAC atveju mes turime pavaizduoti pagrindinius pikselio spalvų komponentus: R, G ir B po 8 bitus. Tai reiškia, kad pikselis yra 24 bitų.
Kiekvienas pikselis yra saugomas gretimai kadrų buferio atminties vietose.
Tarkime, kad rodomas vaizdas yra 800x600 pikselių.
Todėl reikia kadrų buferio 800x600 = 480000 x 24 bitų atminties
Bendras atminties dydis yra 800x600x24 = maždaug 1400 kB.
Jei vaizdas nespalvotas, 800x600x1 = 60 kB apytiksliai.
Blokuoti RAM gali būti naudojami kadrų buferiui Xilinx FPGA vaizduoti.
4 žingsnis: pastabos
- Priklausomai nuo pasirinkto DAC, VGA valdiklyje reikia papildomų signalų. Aš naudoju ADV7125.
- Prieš važiuodami VGA ekranu, pridėkite ciklo uždelsimus per šlepetes VSYNC ir HSYNC. Taip yra dėl DAC ir atminties delsos. Pikselių signalai turi būti sinchronizuoti su HSYNC ir VSYNC. Mano atveju tai buvo 2 ciklų vėlavimas.
- Jei tam tikro dydžio kadrų buferis negali būti suprojektuotas FPGA dėl bloko atminties dydžio apribojimų, naudokite mažesnę atmintį vaizdui atvaizduoti ir tiesiog redaguokite kodą, kad jis pereitų ant turimos atminties ribos esančio adreso, o ne viso kadro ribos. Tai pakartos tą patį vaizdą per visą ekraną. Kitas metodas yra pikselių mastelio keitimas, kai kiekvienas pikselis yra atkartojamas, kad būtų rodomas visas vaizdas visame ekrane, mažesne raiška. Tai galima padaryti pakeitus kodo adreso didinimo logiką.
- IP yra visiškai nešiojamas visuose FPGA, o laikas patikrintas iki 100 MHz „Virtex-4 FPGA“.
5 veiksmas: pridedami failai
RAR sudėtyje yra:
- VGA valdiklio kodas
- VGA standartų PDF failai.
Rekomenduojamas:
Paprasto keturių krypčių asociatyvaus talpyklos valdiklio VHDL dizainas: 4 žingsniai
Paprasto keturių krypčių rinkinio asociatyvaus talpyklos valdiklio dizainas VHDL: Ankstesniame nurodyme pamatėme, kaip sukurti paprastą tiesioginį žemėlapio talpyklos valdiklį. Šį kartą žengiame žingsnį į priekį. Mes sukursime paprastą keturių krypčių asociatyvaus talpyklos valdiklį. Privalumas? Mažesnis praleidimo procentas, bet už perfo kainą
VHDL programuojamo pertraukimo valdiklio dizainas: 4 žingsniai
VHDL programuojamo pertraukimo valdiklio dizainas: esu priblokštas tokio pobūdžio atsakymų, kuriuos gaunu šiame tinklaraštyje. Ačiū vaikinai, kad lankotės mano tinklaraštyje ir paskatinote mane pasidalinti su jumis savo žiniomis. Šį kartą pristatysiu dar vieno įdomaus modulio, kurį matome visuose SOC, dizainą - „Interrupt C
Paprasto talpyklos valdiklio VHDL dizainas: 4 žingsniai
Paprasto talpyklos valdiklio VHDL dizainas: Rašau šį nurodymą, nes man buvo šiek tiek sunku gauti tam tikrą nuorodinį VHDL kodą, kad išmokčiau ir pradėčiau kurti talpyklos valdiklį. Taigi aš pats nuo pat pradžių sukūriau talpyklos valdiklį ir sėkmingai išbandžiau jį FPGA. Turiu p
„I2C Master“dizainas VHDL: 5 žingsniai
„I2C Master“dizainas VHDL: Šioje instrukcijoje aptariamas paprasto I2C meistro kūrimas VHDL. PASTABA: spustelėkite visą vaizdą, kad pamatytumėte visą vaizdą
„SPI Master“dizainas VHDL: 6 žingsniai
„SPI Master“dizainas VHDL: Šioje instrukcijoje mes suprojektuosime „SPI Bus Master“nuo pat pradžių VHDL