Sisällysluettelo:
- Vaihe 1: VGA -ohjaimen käyttöliittymä
- Vaihe 2: VGA -ohjaimen integrointi VGA -näytöllä
- Vaihe 3: Kehyspuskurin suunnittelu
- Vaihe 4: Huomautuksia
- Vaihe 5: Liitetyt tiedostot
Video: Yksinkertaisen VGA -ohjaimen suunnittelu VHDL- ja Verilog -järjestelmissä: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tässä ohjeessa aiomme suunnitella yksinkertaisen VGA -ohjaimen RTL: ssä. VGA -ohjain on digitaalinen piiri, joka on suunniteltu ohjaamaan VGA -näyttöjä. Se lukee kehyspuskurista (VGA -muisti), joka edustaa näytettävää kehystä, ja luo tarvittavat tiedot ja synkronointisignaalit näyttötarkoitusta varten.
Jos etsit Verilog/järjestelmän verilog -koodia: Käy blogissani VGA -ohjain ja videojärjestelmä Verilogissa
Vaihe 1: VGA -ohjaimen käyttöliittymä
Seuraavassa on VGA -ohjaimen tärkeimmät rajapintasignaalit
- Pixel- tai VGA -kello
- HSYNC- ja VSYNC -signaalit
Valitun VGA -näytön osalta sinun on ensin laskettava sen ajamiseen tarvittava Pixel Clock -taajuus. Se riippuu kolmesta parametrista: vaakasuuntaiset pikselit yhteensä, pystysuuntaiset pikselit yhteensä, näytön virkistystaajuus.
Yleensä F = THP * TVP * virkistystaajuus
Löydät eri VGA -näyttöjen tarvitsemat pikselikellon asiakirjat liitteenä olevasta RAR: sta.
HSYNC- ja VSYNC -signaalit luodaan Pixel -kellosta. HSYNC- ja VSYNC -signaalien ajoitus riippuu parametrien lukumäärästä: vaakasuora ja pystysuora etuportti, vaaka- ja pystysuora takaportti, vaaka- ja pystysuuntaiset näyttöpikselit, vaakasuuntaiset ja pystysuuntaiset synkronointipulssien leveydet ja napaisuudet.
Nämä parametrit on standardoitu valitulle VGA -näytölle. Löydät nämä asiakirjat liitteenä olevasta RAR: sta.
Nämä parametrit ovat konfiguroitavia parametreja VGA -ohjaimen IP -osoitteessa.
Vaihe 2: VGA -ohjaimen integrointi VGA -näytöllä
Kuvassa näytetään, miten VGA -ohjain integroidaan VGA -näyttöön. Tarvitset kaksi muuta komponenttia järjestelmän täydentämiseksi:
- Kehyspuskuri: Muisti, joka pitää näytettävän kehyksen.
- Video DAC: DAC, joka muuntaa RGB -digitaalidataa ja ohjaa VGA -näyttöä analogisilla RGB -signaaleilla sopivalla jännitetasolla.
Yksi yksinkertaisimmista ja suosituimmista DAC -videoista on ADV7125. Se on 8-bittinen DAC, joka muuntaa RGB-digitaaliset sanat 0-0,7 V: n analogisignaaleiksi ja ohjaa VGA-näyttöä.
Vaihe 3: Kehyspuskurin suunnittelu
Muisti "tallentaa" näytettävän kuvan. Se on tyypillisesti RAM tai joskus ROM. Keskustelemme siitä, miten suunnitella kehyspuskuri edustamaan kuvaa. Kehyspuskuri välittää nämä digitaaliset tiedot Video DAC: lle VGA -ohjaimen komennolla.
Ensin meidän on päätettävä tarvittava pikselisyvyys. Se päättää kuvan laadusta ja pikselin edustamasta värivalikoimasta. 8-bittisessä DAC: ssä meidän on edustettava pikselin ensisijaisia värikomponentteja: R, G ja B 8 bittiä. Se tarkoittaa, että pikseli on 24-bittinen.
Jokainen pikseli tallennetaan vierekkäin Frame Buffer -muistipaikkoihin.
Oletetaan, että näytettävä kuva on 800 x 600 pikseliä.
Siksi kehyspuskuri on 800x600 = 480000 x 24 bittiä
Muistin koko on noin 800x600x24 = 1400 kt.
Jos kuva on mustavalkoinen, 800x600x1 = 60 kB noin.
Lohko -RAM -muistia voidaan käyttää edustamaan kehyspuskuria Xilinx FPGA -laitteissa.
Vaihe 4: Huomautuksia
- Lisäsignaaleja tarvitaan VGA -ohjaimessa valitusta DAC: sta riippuen. Olen käyttänyt ADV7125.
- Lisää jakson viivästyksiä VSYNC- ja HSYNC-varvastossuilla ennen VGA-näytön ajamista. Tämä johtuu DAC- ja muistiviiveistä. Pikselisignaalit tulee synkronoida HSYNC: n ja VSYNC: n kanssa. Minun tapauksessani se oli 2 syklin viive.
- Jos tietyn kokoista kehyspuskuria ei voida suunnitella FPGA: lle lohkoyksikön kokorajoituksen vuoksi, käytä pienempää muistia kuvan esittämiseen ja muokkaa vain koodi vierittämään käytettävissä olevan muistin rajalla olevan osoitteen yli koko kehyksen rajan sijaan. Tämä toistaa saman kuvan uudestaan ja uudestaan koko näytön. Toinen menetelmä on pikselin skaalaus, jossa jokainen pikseli kopioidaan näyttämään koko kuva koko näytössä pienemmällä tarkkuudella. Tämä voidaan tehdä säätämällä koodin osoitteen lisäyslogiikkaa.
- IP-osoite on täysin kannettava kaikissa FPGA-laitteissa, ja sen ajoitus on vahvistettu 100 MHz: iin asti Virtex-4 FPGA: lla.
Vaihe 5: Liitetyt tiedostot
RAR sisältää:
- VGA -ohjaimen koodi
- PDF -tiedostot VGA -standardeista.
Suositeltava:
Yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen suunnittelu VHDL: ssä: Edellisessä ohjeessani näimme kuinka suunnitella yksinkertainen suoraan kartoitettu välimuistiohjain. Tällä kertaa mennään askel eteenpäin. Suunnittelemme yksinkertaisen nelisuuntaisen yhdistetyn välimuistiohjaimen. Etu? Vähemmän miss -korkoa, mutta perfo -kustannuksella
Ohjelmoitavan keskeytysohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Ohjelmoitavan keskeytysohjaimen suunnittelu VHDL: ssä: Olen hämmästynyt siitä, millaisia vastauksia saan tästä blogista. Kiitos kaverit vierailustani blogissani ja kannustivat minua jakamaan tietoni kanssanne. Tällä kertaa aion esitellä toisen mielenkiintoisen moduulin suunnittelun, jonka näemme kaikissa SOC -järjestelmissä - Keskeytä C
Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: 4 vaihetta
Yksinkertaisen välimuistiohjaimen suunnittelu VHDL: ssä: Kirjoitan tämän ohjeellisen, koska minusta oli hieman vaikeaa saada viite -VHDL -koodi oppia ja aloittaa välimuistiohjaimen suunnittelu. Joten suunnittelin välimuistiohjaimen itse tyhjästä ja testasin sen onnistuneesti FPGA: lla. Minulla on p
I2C Masterin suunnittelu VHDL: ssä: 5 vaihetta
I2C Masterin suunnittelu VHDL: ssä: Tässä ohjeessa käsitellään yksinkertaisen I2C -masterin suunnittelua VHDL: ssä
SPI Masterin suunnittelu VHDL: ssä: 6 vaihetta
SPI Masterin suunnittelu VHDL: ssä: Tässä ohjeessa aiomme suunnitella SPI Bus Masterin alusta alkaen VHDL: ssä