Talaan ng mga Nilalaman:

Programa sa Pagpipinta ng VGA: 5 Hakbang
Programa sa Pagpipinta ng VGA: 5 Hakbang

Video: Programa sa Pagpipinta ng VGA: 5 Hakbang

Video: Programa sa Pagpipinta ng VGA: 5 Hakbang
Video: EPP 5/ TLE 5 ICT: MS PAINT - PAGGUHIT GAMIT ANG DRAWING TOOLS 2024, Nobyembre
Anonim
Programa sa Pagpipinta ng VGA
Programa sa Pagpipinta ng VGA

Proyekto ni: Adam Klein, Ian Strachan, Brandon Slater

Ang proyekto na itinakda namin upang makumpleto ay ang mag-imbak, mag-parse, at magpakita ng impormasyon mula sa isang USB mouse sa anyo ng isang programa sa pagpipinta. Ang ideya sa likod ng proyekto ay upang mai-plug ang mga cable ng mouse at VGA sa board ng Basys sa mga built-in na port nito, at ipakita ang mouse bilang isang galaw na kuwadradong pagpipinta sa monitor, binabago ang iba't ibang kulay kapag kaliwa at kanang pag-click ay ginamit na Sa esensya, lilikha kami ng isang driver para sa paggamit ng mouse gamit ang basys board, at pagkakaroon ng monitor bilang aming pag-verify ng pagpapaandar. Ang natapos talagang nangyayari ay ang paglikha ng isang programa ng pagguhit gamit ang basys board bilang isang input system, at isang semi-functional na data capture system para sa mouse.

Sa itinuturo na ito, masisira namin ang mga hakbang mula sa pag-input ng mouse hanggang sa output ng vga.

Hakbang 1: Pagganyak at Suliranin

Pagganyak at Suliranin
Pagganyak at Suliranin

Pagganyak:

Ang pangunahing pagganyak para sa aming proyekto ay upang lumikha ng isang driver ng mouse para sa board ng Basys3 na magagamit ng mga mag-aaral sa CPE 133 sa hinaharap para sa kanilang huling proyekto sa hinaharap. Gayunpaman, kinuha namin ang ideyang ito ng isang hakbang sa pamamagitan ng paglikha ng isang programa sa pagpipinta, isa na maaari ding buuin ng mga mag-aaral sa hinaharap.

Problema:

Ang problemang natuklasan namin ay walang malinaw na module ng mouse na handang mag-download at magamit para sa board ng Basys3. Upang malutas ang problemang ito, sinubukan naming lumikha ng isa sa aming sarili. Sa pamamagitan nito, nagsusumikap kaming lumikha ng isang module ng mouse na magpapahintulot sa mga mag-aaral sa hinaharap na mas madaling ipatupad ang pag-input ng mouse sa kanilang mga proyekto.

Hakbang 2: Pagkuha ng Impormasyon ng Raw Bit Mula sa Basys USB

Pagkuha ng Impormasyon ng Raw Bit Mula sa Basys USB
Pagkuha ng Impormasyon ng Raw Bit Mula sa Basys USB
  • Karamihan sa ginawa namin para sa mouse sa proyektong ito ay nagmula sa dokumentasyon ng Basys3. Mula sa maliit na gabay sa port ng Basys USB sa pdf na iyon, nalaman namin na ang Basys board ay may built in na orasan para sa pagbabasa ng mga piraso sa tamang bilis mula sa mga USB device.
  • Mahalaga, ang mouse ay nagpapadala ng mga piraso sa usb na nagsisimula mula sa isang idle na estado, nagbabasa ng 32 bits na kumakatawan sa katayuan ng mouse, x posisyon, at posisyon na y, at sa wakas ay nagtatapos sa isa pang idle bit. Upang gawin ito, ang sangkap ng pag-input ng mouse ay gumagamit ng isang rehistro ng shift at 32 bit counter kung saan ginagamit ang rehistro ng shift upang mag-imbak ng 32 piraso ng papasok na data mula sa mouse at ang 32 bit counter ay ginagamit upang bilangin ang bilang ng mga bit na nakaimbak na nagpapahintulot sa estado magparehistro upang i-reset at iimbak ang susunod na hanay ng 32 papasok na mga piraso.
  • Ang code para sa shift register, 32 bit counter, at data reader ay mai-download sa ibaba, pati na rin ang mga hadlang na file na iniakma sa aming paggamit ng USB port bilang isang input

Hakbang 3: Pag-parse ng Impormasyon sa Usb

Pagpapasa ng Impormasyon sa Usb
Pagpapasa ng Impormasyon sa Usb
Pagpapasa ng Impormasyon sa Usb
Pagpapasa ng Impormasyon sa Usb
  • Matapos likhain ang input ng mouse sa sangkap ng usb, ang susunod na hakbang ay upang likhain ang mga usb bit sa sangkap ng impormasyon ng vector na gagawing mabasa ang data sa mouse para sa vga.
  • Ang sangkap na ito ay gumagamit ng isang machine ng estado na kumukuha ng hanay ng mga piraso na na-output ng pag-input ng mouse sa usb at gumagalaw sa mga estado batay sa kung ang mga bagong piraso na nagbabago ng katayuan at posisyon ng mouse ay na-input.
  • Ang block diagram para sa unang dalawang mga hakbang ng proyekto ay ipinakita dito, at ang dalawang mga vhdl file ay para sa pagsubok ng pagpapatupad ng mouse gamit ang basys LED's (isang pagsubok na sa kasamaang palad ay hindi naipasa) at para sa paghahagis ng bit stream mula sa USB port sa bilis at posisyon ng mga vector na maaaring magamit ng VGA.
  • Ang imahe sa tabi ng block diagram sa itaas ay isang maliit na snapshot (Hindi pinapayagan sa amin ng mga tagubilin na ipakita ang buong malawak na imahe) ng kaunting impormasyon na nakita namin sa dokumentasyon ng basys para sa pagkumpleto ng hakbang na ito.

Hakbang 4: Pagpapakita ng Pinta na Larawan Sa paglipas ng VGA at Pag-edit ng Ano ang Ginagawa

Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
Pagpapakita ng Pininturahang Imahe Higit sa VGA at Pag-edit ng Ano ang Ginaguhit
  • Ang VGA cable ay may 14 na piraso ng output, 4 na piraso para sa bawat isa sa tatlong mga kulay at medyo para sa pahalang na pag-sync at patayong pag-sync.
  • Ang OtherVGA ay ibinigay na module ng VGA at gumagana ito tulad ng sumusunod:

    • Ang monitor ay pinaghiwalay sa 40x30 blocks ng 16x16 pixel para sa isang 640x480 resolusyon na screen tulad ng nakikita sa larawan sa itaas. Ang module ay pipili ng isang block address upang kumatawan sa isa sa mga 1200 bloke sa monitor. Napili ang block address sa pamamagitan ng sumusunod na equation: address = 40y + x
    • Ang kulay ay kinakatawan ng isang 12 bit signal na tumutugma sa isang halagang RRRRGGGGBBBB na kulay sa napiling bloke.
  • Ang aming control code, VGAtest at VGAtestconst, ay gumagana tulad ng sumusunod:

    • Una nitong itinatakda ang napiling bloke sa gitna ng monitor.
    • Ang kulay ng bloke ay natutukoy ng 12 switch sa board, itinatakda ang halaga ng RRRRGGGGBBBB.
    • Ang apat na direksyon na pindutan sa board ay nagbabago ng napiling address. Halimbawa, ang pagpindot sa kanang pindutan ay magdaragdag ng 1 sa address, na pipiliin ang isang bloke sa kanan ng nakaraang bloke. Ang pagpindot sa down button ay magdaragdag ng 40 sa address, na pipiliin ang isang bloke sa ibaba ng nakaraang block.
    • Ginamit ang pindutan ng gitna upang itakda ang lahat ng mga halaga ng kulay sa 0 kapag pinindot. Ito ay sinadya upang kumilos bilang isang burahin na pindutan na madali para magamit ng gumagamit, kaya't hindi kailangang i-flip ng user ang bawat switch sa 0 upang mabura.
  • Ang huling imahe ay ang diagram ng block para sa controller. Ito ay medyo malawak dahil kasama dito ang mga bahagi ng module at maaaring hindi maipakita nang buo.

Hakbang 5: Masiyahan sa Iyong Paglikha

Naka-link dito ay isang mabilis na timelapse ng kasiyahan na maaari mong makuha sa panghuling proyekto, kahit na gamit lamang ang mga switch at pindutan sa basys board bilang input.

Salamat sa pagbabasa!

Inirerekumendang: