Talaan ng mga Nilalaman:

Pagpapakita ng Salamin: 8 Hakbang
Pagpapakita ng Salamin: 8 Hakbang

Video: Pagpapakita ng Salamin: 8 Hakbang

Video: Pagpapakita ng Salamin: 8 Hakbang
Video: Pagganyak na Gawain para sa Demo Teaching 2024, Nobyembre
Anonim
Pagpapakita ng Salamin
Pagpapakita ng Salamin
Pagpapakita ng Salamin
Pagpapakita ng Salamin
Pagpapakita ng Salamin
Pagpapakita ng Salamin

Ang layunin ng proyektong ito ay upang lumikha ng pagpapaandar ng pagpapakita ng imahe ng isang Smart Mirror. Nagawang ipakita ng salamin ang mga pagtataya (maaraw, bahagyang maaraw, maulap, mahangin, ulan, kulog, at niyebe) at mga halaga ng temperatura mula -9999 ° hanggang 9999 °. Ang mga halaga ng pagtataya at temperatura ay mahirap na naka-code na parang gayahin ang mga ito na na-parse mula sa isang API ng panahon.

Gumagamit ang proyekto ng isang Zynq-Zybo-7000 board na nagpapatakbo ng FreeRTOS at gumagamit ng Vivado 2018.2 upang idisenyo at mai-program ang hardware.

Mga Bahagi:

Zynq-Zybo-7000 (na may FreeRTOS)

19 LCD (640x480)

VGA cable

12 "x 18" acrylic mirror

Hakbang 1: Pag-configure ng Vivado

Pag-configure ng Vivado
Pag-configure ng Vivado
Pag-configure ng Vivado
Pag-configure ng Vivado

I-download ang Vivado 2018.2 mula sa Xilinx at gamitin ang lisensya sa Webpack. Ilunsad ang Vivado at "Lumikha ng Bagong Project" at bigyan ito ng isang pangalan. Susunod na piliin ang "RTL Project" at lagyan ng tsek ang "Huwag tukuyin ang mga mapagkukunan sa oras na ito." Kapag pumipili ng isang bahagi, piliin ang "xc7z010clg400-1" at ang hit na "Tapusin" sa susunod na pahina.

Hakbang 2: Packaging VGA Driver IP

Packaging VGA Driver IP
Packaging VGA Driver IP
Packaging VGA Driver IP
Packaging VGA Driver IP

Idagdag ang vga_driver.sv file sa Mga Pinagmulan ng Disenyo. Susunod, i-click ang "Mga Tool" at piliin ang "Lumikha at Mag-package ng Bagong IP." Piliin ang "I-package ang iyong kasalukuyang proyekto." Pagkatapos pumili ng isang lokasyon ng IP at "Isama ang.xci file." I-click ang "OK" sa popup at pagkatapos ay "Tapusin."

Sa "Mga Hakbang sa Pagbalot" pumunta sa "Suriin at Package" at piliin ang "Package IP."

Ngayon ang vga_driver ay dapat na magagamit bilang isang IP block.

Hakbang 3: Zynq IP

Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP

Sa ilalim ng seksyong "IP Integrator", piliin ang "Lumikha ng Disenyo ng I-block." Idagdag ang "ZYNQ7 Processing System" at i-double click ang block. I-click ang "I-import ang Mga Setting ng XPS" at i-upload ang ZYBO_zynq_def.xml file.

Susunod, sa ilalim ng "Pag-configure ng PS-PL" buksan ang dropdown para sa "AXI Non Secure Enablement" at suriin ang "M AXI GP0 interface."

Susunod, sa ilalim ng "MIO Configuration" buksan ang dropdown para sa "Application Processor Unit" at suriin ang "Timer 0" at "Watchdog."

Panghuli, sa ilalim ng "Clock Configuration" buksan ang dropdown para sa "PL Fabric Clocks" at suriin ang "FCLK_CLK0" at sa 100 MHz.

Hakbang 4: GPIO IP

GPIO IP
GPIO IP
GPIO IP
GPIO IP

Magdagdag ng dalawang bloke ng GPIO sa Disenyo ng Block. Gagamitin ang mga GPIO upang makontrol ang address ng pixel at ang mga bahagi ng RGB ng mga pixel. I-configure ang mga bloke tulad ng ipinakita sa mga imahe sa itaas. Kapag naidagdag at na-configure mo ang parehong mga bloke pagkatapos ay i-click ang "Run Connection Automation."

GPIO 0 - Kinokontrol ng Channel 1 ang address ng pixel at kinokontrol ng Channel 2 ang pulang kulay.

Ang GPIO 1 - Kinokontrol ng Channel 1 ang berdeng kulay at kinokontrol ng Channel 2 ang asul na kulay.

Hakbang 5: I-block ang Memory

I-block ang Memory
I-block ang Memory
I-block ang Memory
I-block ang Memory
I-block ang Memory
I-block ang Memory

Magdagdag ng isang Block Memory Generator IP sa Block Design at i-configure tulad ng ipinakita sa itaas. Ang mga kulay ng pixel ay nakasulat sa mga memory address na pagkatapos ay basahin ng driver ng VGA. Ang linya ng address ay kailangang tumugma sa dami ng mga pixel na ginagamit kaya kailangan itong maging 16 na piraso. Ang data sa ay 16 din bit dahil mayroong 16 na kulay na piraso. Wala kaming pakialam tungkol sa pagbabasa ng anumang kinikilala na mga piraso.

Hakbang 6: Iba Pang IP

Ipinapakita ng nakalakip na pdf ang nakumpleto na Disenyo ng Block. Idagdag ang nawawalang IP at kumpletuhin ang mga koneksyon. Gayundin ang "Gumawa ng Mga Panlabas" para sa mga output ng kulay ng VGA at ang patayo at pahalang na mga output ng pag-sync.

xlconcat_0 - Pinagsasama ang mga indibidwal na kulay upang bumuo ng isang 16 bit RGB signal na pinakain sa Block RAM.

xlconcat_1 - Pinagsasama ang mga signal ng haligi at hilera mula sa driver ng VGA at pinakain sa Port B ng Block RAM. Pinapayagan nito ang driver ng VGA na basahin ang mga halagang kulay ng pixel.

VDD - Patuloy na nakakonekta sa HINDI sa pagsulat na paganahin ang Block RAM upang maaari kaming palaging tama dito.

xlslice_0, 1, 2 - Ginagamit ang mga hiwa upang masira ang signal ng RGB sa indibidwal na mga signal ng R, G, at B na maaaring mapakain sa driver ng VGA.

Kapag nakumpleto na ang Disenyo ng Block, bumuo ng isang HDL wrapper at idagdag ang mga hadlang na file.

* Ang Disenyo ng Block ay batay sa tutorial na isinulat ni benlin1994 *

Hakbang 7: SDK

Ang code na nagpapatakbo ng Disenyo ng Block na ito ay kasama sa ibaba. Naglalaman ang Init.c ng mga pagpapaandar na humahawak sa pagguhit (mga pagtataya, bilang, simbolo ng degree, atbp.). Ang pangunahing loop sa main.c ay kung ano ang tumatakbo kapag ang board ay na-program. Itinatakda ng loop na ito ang mga halaga ng pagtataya at temperatura at pagkatapos ay tawagan ang mga paggana ng pagguhit sa init.c. Kasalukuyan itong nag-loop sa lahat ng pitong mga pagtataya at sunod-sunod na ipinapakita. Inirerekumenda na magdagdag ka ng break point sa linya 239 upang makita mo ang bawat imahe. Ang code ay nagkomento at bibigyan ka ng karagdagang impormasyon.

Hakbang 8: Konklusyon

Upang mapabuti ang kasalukuyang proyekto, maaaring mag-upload ang isang preload na mga imahe ng pagtataya sa mga form ng mga file ng COE sa I-block ang Mga Generator ng Memorya. Kaya sa halip na iguhit nang manu-mano ang mga pagtataya tulad ng ginawa namin sa C code, maaaring mabasa ng isa ang mga imahe. Sinubukan naming gawin ito ngunit hindi namin ito gumana. Nabasa namin ang mga halagang pixel at na-output ang mga ito ngunit lumikha ito ng mga kalat na imahe na hindi katulad ng na-upload namin sa RAM. Ang data ng Block Memory Generator ay kapaki-pakinabang na basahin.

Ang proyekto ay mahalagang kalahati ng isang Smart Mirror dahil nawawala ang aspeto ng pagkakakonekta sa internet. Ang pagdaragdag nito ay magbibigay ng isang kumpletong Smart Mirror.

Inirerekumendang: