Cuprins:

Afișare oglindă: 8 pași
Afișare oglindă: 8 pași

Video: Afișare oglindă: 8 pași

Video: Afișare oglindă: 8 pași
Video: In Oglinda (06.09.2021) - "Nu te-ai pocait!" Jador, marturisiri incredibile din copilaria sa! 2024, Noiembrie
Anonim
Afișare oglindă
Afișare oglindă
Afișare oglindă
Afișare oglindă
Afișare oglindă
Afișare oglindă

Scopul acestui proiect este de a crea funcționalitatea de afișare a imaginii unui Smart Mirror. Oglinda poate afișa prognozele (însorit, parțial însorit, noros, vânt, ploaie, tunet și zăpadă) și valori ale temperaturii de la -9999 ° la 9999 °. Valorile de prognoză și temperatură sunt greu codificate ca și cum ar fi pentru a le imita fiind analizate dintr-un API meteo.

Proiectul utilizează o placă Zynq-Zybo-7000 care rulează FreeRTOS și folosește Vivado 2018.2 pentru a proiecta și programa hardware-ul.

Părți:

Zynq-Zybo-7000 (cu FreeRTOS)

LCD de 19 (640x480)

Cablu VGA

Oglindă acrilică de 12 "x 18"

Pasul 1: Configurarea Vivado

Configurarea Vivado
Configurarea Vivado
Configurarea Vivado
Configurarea Vivado

Descărcați Vivado 2018.2 din Xilinx și utilizați licența Webpack. Lansați Vivado și „Creați un proiect nou” și dați-i un nume. Apoi selectați „Proiect RTL” și bifați „Nu specificați surse în acest moment”. Când selectați o piesă, selectați „xc7z010clg400-1” și apăsați „Finalizare” în pagina următoare.

Pasul 2: Ambalarea IP a driverului VGA

Ambalare IP driver VGA
Ambalare IP driver VGA
Ambalare IP driver VGA
Ambalare IP driver VGA

Adăugați fișierul vga_driver.sv la Surse de proiectare. Apoi, faceți clic pe „Tools” și selectați „Create and Package New IP”. Selectați „Pachetează-ți proiectul curent”. Apoi alegeți o locație IP și „Includeți fișiere.xci”. Faceți clic pe „OK” în fereastra pop-up și apoi pe „Finalizare”.

În „Pași de ambalare” accesați „Revizuire și pachet” și selectați „Pachet IP”.

Acum, vga_driver ar trebui să fie disponibil ca bloc IP.

Pasul 3: Zynq IP

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

Sub secțiunea „Integrator IP”, selectați „Creați design bloc”. Adăugați „Sistemul de procesare ZYNQ7” și faceți dublu clic pe bloc. Faceți clic pe „Importați setările XPS” și încărcați fișierul ZYBO_zynq_def.xml.

Apoi, sub „Configurare PS-PL”, deschideți meniul derulant pentru „AXI Non Secure Enablement” și bifați „Interfața M AXI GP0”.

Apoi, sub „Configurare MIO”, deschideți meniul derulant pentru „Unitatea procesorului aplicației” și bifați „Timer 0” și „Caine de supraveghere”.

În cele din urmă, sub „Configurarea ceasului”, deschideți meniul derulant pentru „Ceasuri fabric PL” și bifați „FCLK_CLK0” și la 100 MHz.

Pasul 4: IP GPIO

IP GPIO
IP GPIO
IP GPIO
IP GPIO

Adăugați două blocuri GPIO la Block Design. GPIO-urile vor fi utilizate pentru a controla adresa pixelilor și componentele RGB ale pixelilor. Configurați blocurile așa cum se arată în imaginile de mai sus. După ce adăugați și configurați ambele blocuri, faceți clic pe „Rulați automatizarea conexiunii”.

GPIO 0 - Canalul 1 controlează adresa pixelilor și Canalul 2 controlează culoarea roșie.

GPIO 1 - Canalul 1 controlează culoarea verde, iar Canalul 2 controlează culoarea albastră.

Pasul 5: Blocați memoria

Blocați memoria
Blocați memoria
Blocați memoria
Blocați memoria
Blocați memoria
Blocați memoria

Adăugați un bloc generator de memorie IP la blocul de proiectare și configurați așa cum se arată mai sus. Culorile pixelilor sunt scrise în adrese de memorie care sunt apoi citite de driverul VGA. Linia de adresă trebuie să se potrivească cu cantitatea de pixeli utilizați, deci trebuie să fie de 16 biți. Datele din ele sunt, de asemenea, de 16 biți, deoarece există 16 biți de culoare. Nu ne pasă să citim biți de confirmare.

Pasul 6: Alte IP

PDF-ul atașat arată proiectarea blocului finalizată. Adăugați adresa IP lipsă și finalizați conexiunile. De asemenea, „Make External” pentru ieșirile de culoare VGA și ieșirile de sincronizare verticale și orizontale.

xlconcat_0 - Concatenează culorile individuale pentru a forma un semnal RGB de 16 biți care este alimentat în blocul RAM.

xlconcat_1 - Concatenează semnalele de coloană și rând de la driverul VGA și este alimentat în portul B al blocului RAM. Acest lucru permite driverului VGA să citească valorile culorii pixelilor.

VDD - Constant HIGH conectat la activarea de scriere a blocului RAM, astfel încât să putem face întotdeauna dreptate la el.

xlslice_0, 1, 2 - Feliile sunt folosite pentru a sparge semnalul RGB în semnale R, G și B individuale care pot fi introduse în driverul VGA.

Odată ce proiectarea blocului este completă, generați un înveliș HDL și adăugați fișierul de constrângeri.

* Block Design se bazează pe tutorialul scris de benlin1994 *

Pasul 7: SDK

Codul care rulează acest Block Design este inclus mai jos. Init.c conține funcțiile care gestionează desenul (prognoze, numere, simbol de grad etc.). Bucla principală din main.c este ceea ce se execută atunci când placa este programată. Această buclă setează valorile de prognoză și temperatură și apoi apelează funcțiile de extragere în init.c. În prezent, parcurge toate cele șapte prognoze și se afișează una după alta. Este recomandat să adăugați un punct de întrerupere la linia 239, astfel încât să puteți vedea fiecare imagine. Codul este comentat și vă va oferi mai multe informații.

Pasul 8: Concluzie

Pentru a îmbunătăți proiectul curent, s-ar putea încărca imagini de prognoză preîncărcate sub formă de fișiere COE în Block Memory Generators. Deci, în loc să desenăm manual previziunile, așa cum am făcut în codul C, s-ar putea să citim imaginile. Am încercat să facem acest lucru, dar nu am reușit să funcționeze. Am reușit să citim valorile pixelilor și să le redăm, dar a creat imagini dezordonate care nu seamănă cu cele pe care le-am încărcat pe RAM. Foaia de date Block Memory Generator este utilă pentru citire.

Proiectul este în esență o jumătate de oglindă inteligentă, deoarece lipsește aspectul de conectivitate la internet. Adăugarea acestui lucru ar oferi o oglindă inteligentă completă.

Recomandat: