Innholdsfortegnelse:

Speilvisning: 8 trinn
Speilvisning: 8 trinn

Video: Speilvisning: 8 trinn

Video: Speilvisning: 8 trinn
Video: My Trendy Phone / Xiaomi Mi Box S 4K HDR Android 8.1 TV Box - Google Assistant, Chromecast 2024, November
Anonim
Speilvisning
Speilvisning
Speilvisning
Speilvisning
Speilvisning
Speilvisning

Målet med dette prosjektet er å lage bildeskjermfunksjonaliteten til et Smart Mirror. Speilet kan vise prognoser (sol, delvis sol, overskyet, vind, regn, torden og snø) og temperaturverdier fra -9999 ° til 9999 °. Prognoser og temperaturverdier er hardt kodet som for å etterligne dem som blir analysert fra et vær -API.

Prosjektet bruker et Zynq-Zybo-7000-kort som kjører FreeRTOS og bruker Vivado 2018.2 til å designe og programmere maskinvaren.

Deler:

Zynq-Zybo-7000 (med FreeRTOS)

19 LCD (640x480)

VGA -kabel

12 "x 18" akryl speil

Trinn 1: Konfigurering av Vivado

Konfigurerer Vivado
Konfigurerer Vivado
Konfigurerer Vivado
Konfigurerer Vivado

Last ned Vivado 2018.2 fra Xilinx og bruk Webpack -lisensen. Start Vivado og "Lag nytt prosjekt" og gi det et navn. Velg deretter "RTL Project" og merk av for "Ikke spesifiser kilder for øyeblikket." Når du velger en del, velger du "xc7z010clg400-1" og treffet "Fullfør" på neste side.

Trinn 2: Pakking av VGA -driver -IP

Emballasje VGA Driver IP
Emballasje VGA Driver IP
Emballasje VGA Driver IP
Emballasje VGA Driver IP

Legg til filen vga_driver.sv i designkildene. Klikk deretter på "Verktøy" og velg "Opprett og pakk ny IP". Velg "Pakk ditt nåværende prosjekt." Velg deretter en IP -plassering og "Inkluder.xci -filer." Klikk "OK" i forgrunnsvinduet og deretter "Fullfør".

Gå til "Packaging Steps" til "Review and Package" og velg "Package IP".

Nå skal vga_driver være tilgjengelig som en IP -blokk.

Trinn 3: Zynq IP

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

Under "IP Integrator" -delen velger du "Create Block Design". Legg til "ZYNQ7 Processing System" og dobbeltklikk på blokken. Klikk på "Importer XPS -innstillinger" og last opp filen ZYBO_zynq_def.xml.

Deretter åpner du rullegardinlisten for "AXI Non Secure Enablement" under "PS-PL-konfigurasjon" og sjekker "M AXI GP0-grensesnitt."

Deretter åpner du rullegardinlisten for "Applikasjonsprosessorenhet" under "MIO -konfigurasjon" og sjekker "Timer 0" og "Watchdog."

Til slutt, under "Clock Configuration" åpner du rullegardinlisten for "PL Fabric Clocks" og sjekker "FCLK_CLK0" og ved 100 MHz.

Trinn 4: GPIO IP

GPIO IP
GPIO IP
GPIO IP
GPIO IP

Legg til to GPIO -blokker i Block Design. GPIO -ene vil bli brukt til å kontrollere pikseladressen og RGB -komponentene i pikslene. Konfigurer blokkene som vist på bildene ovenfor. Når du har lagt til og konfigurert begge blokkene, klikker du på "Kjør tilkoblingsautomatisering."

GPIO 0 - Kanal 1 kontrollerer pikseladressen og kanal 2 kontrollerer den røde fargen.

GPIO 1 - Kanal 1 kontrollerer den grønne fargen og kanal 2 kontrollerer den blå fargen.

Trinn 5: Blokker minne

Blokker minne
Blokker minne
Blokker minne
Blokker minne
Blokker minne
Blokker minne

Legg til en Block Memory Generator IP i Block Design og konfigurer som vist ovenfor. Pikselfargene skrives til minneadresser som deretter leses av VGA -driveren. Adresselinjen må samsvare med mengden piksler som brukes, så den må være 16 bits. Dataene i er også 16 biter siden det er 16 fargebiter. Vi bryr oss ikke om å lese noen anerkjennelsesbiter.

Trinn 6: Annen IP

Den vedlagte pdf -en viser den ferdige blokkdesignen. Legg til den manglende IP -adressen og fullfør tilkoblingene. Også "Make Externals" for VGA -fargeutgangene og de vertikale og horisontale synkroniseringsutgangene.

xlconcat_0 - Sammenkoble de enkelte fargene for å danne et 16 -bits RGB -signal som mates inn i Block RAM.

xlconcat_1 - kobler sammen kolonne- og rosesignalene fra VGA -driveren og mates inn i Port B i Block RAM. Dette gjør at VGA -driveren kan lese pikselfargeverdier.

VDD - Constant HIGH koblet til skrive -aktiveringen for Block RAM, slik at vi alltid kan gjøre det.

xlslice_0, 1, 2 - Skivene brukes til å bryte RGB -signalet til individuelle R-, G- og B -signaler som kan mates inn i VGA -driveren.

Når blokkdesignen er fullført, genererer du en HDL -innpakning og legger til begrensningsfilen.

*Block Design er basert på opplæringen skrevet av benlin1994*

Trinn 7: SDK

Koden som kjører denne blokkdesignen er inkludert nedenfor. Init.c inneholder funksjonene som håndterer tegningen (prognoser, tall, gradsymbol, etc.). Hovedløkken i main.c er det som blir kjørt når brettet er programmert. Denne sløyfen angir prognosene og temperaturverdiene og kaller deretter trekkfunksjonene i init.c. Den går for tiden gjennom alle syv prognosene og viser den ene etter den andre. Det anbefales at du legger til et brytpunkt på linje 239 slik at du kan se hvert bilde. Koden kommenteres og gir deg mer informasjon.

Trinn 8: Konklusjon

For å forbedre det nåværende prosjektet kan man laste opp forhåndslastede prognosebilder i form av COE -filer til Block Memory Generators. Så i stedet for å tegne prognosene manuelt slik vi gjorde i C -koden, kan man få bildene lest inn. Vi prøvde å gjøre dette, men kunne ikke få det til å fungere. Vi klarte å lese pikselverdier og sende dem ut, men det skapte rotete bilder som ikke lignet de vi lastet opp til RAM. Block Memory Generator -databladet er nyttig å lese.

Prosjektet er i hovedsak et halvt Smart Mirror siden det mangler internettilkoblingsaspektet. Å legge til dette vil gi et komplett Smart Mirror.

Anbefalt: