Turinys:

Veidrodinis ekranas: 8 žingsniai
Veidrodinis ekranas: 8 žingsniai

Video: Veidrodinis ekranas: 8 žingsniai

Video: Veidrodinis ekranas: 8 žingsniai
Video: Kaip perduoti vaizdą be laidų į televizorių iš Mobilaus, plančetės ir kompiuterio 2024, Lapkritis
Anonim
Veidrodinis ekranas
Veidrodinis ekranas
Veidrodinis ekranas
Veidrodinis ekranas
Veidrodinis ekranas
Veidrodinis ekranas

Šio projekto tikslas yra sukurti „Smart Mirror“vaizdo rodymo funkcionalumą. Veidrodis gali rodyti prognozes (saulėtas, iš dalies saulėtas, debesuotas, vėjuotas, lietus, griaustinis ir sniegas) ir temperatūros reikšmes nuo -9999 ° iki 9999 °. Prognozės ir temperatūros vertės yra užkoduotos taip, tarsi imituotų jas analizuojant iš orų API.

Projekte naudojama „Zynq-Zybo-7000“plokštė, kurioje veikia „FreeRTOS“, o programinei įrangai kurti ir programuoti naudojama „Vivado 2018.2“.

Dalys:

„Zynq-Zybo-7000“(su „FreeRTOS“)

19 colių LCD (640x480)

VGA kabelis

12 x 18 colių akrilo veidrodis

1 veiksmas: „Vivado“konfigūravimas

Vivado konfigūravimas
Vivado konfigūravimas
Vivado konfigūravimas
Vivado konfigūravimas

Atsisiųskite „Vivado 2018.2“iš „Xilinx“ir naudokitės „Webpack“licencija. Paleiskite „Vivado“ir „Sukurti naują projektą“ir suteikite jam pavadinimą. Tada pasirinkite „RTL projektas“ir pažymėkite „Šiuo metu nenurodykite šaltinių“. Rinkdamiesi dalį, pasirinkite „xc7z010clg400-1“ir kitame puslapyje spustelėkite „Baigti“.

2 žingsnis: VGA tvarkyklės IP pakavimas

Pakuotė VGA tvarkyklės IP
Pakuotė VGA tvarkyklės IP
Pakuotė VGA tvarkyklės IP
Pakuotė VGA tvarkyklės IP

Pridėkite failą vga_driver.sv prie dizaino šaltinių. Tada spustelėkite „Įrankiai“ir pasirinkite „Sukurti ir pakuoti naują IP“. Pasirinkite „Supakuoti dabartinį projektą“. Tada pasirinkite IP vietą ir „Įtraukti.xci failus“. Iššokančiajame lange spustelėkite „Gerai“, tada - „Baigti“.

Skiltyje „Pakavimo veiksmai“eikite į „Peržiūra ir paketas“ir pasirinkite „Paketo IP“.

Dabar „vga_driver“turėtų būti prieinamas kaip IP blokas.

3 žingsnis: „Zynq IP“

„Zynq IP“
„Zynq IP“
„Zynq IP“
„Zynq IP“
„Zynq IP“
„Zynq IP“
„Zynq IP“
„Zynq IP“

Skiltyje „IP integratorius“pasirinkite „Sukurti bloko dizainą“. Pridėkite „ZYNQ7 Processing System“ir dukart spustelėkite bloką. Spustelėkite „Importuoti XPS nustatymus“ir įkelkite failą ZYBO_zynq_def.xml.

Tada skiltyje „PS-PL Configuration“atidarykite išskleidžiamąjį meniu „AXI Non Secure Enablement“ir pažymėkite „M AXI GP0 interface“.

Tada skiltyje „MIO konfigūracija“atidarykite išskleidžiamąjį meniu „Programų procesoriaus blokas“ir pažymėkite „Laikmatis 0“ir „Sargybinis“.

Galiausiai, skiltyje „Laikrodžio konfigūracija“atidarykite „PL Fabric Clocks“išskleidžiamąjį meniu ir patikrinkite „FCLK_CLK0“ir esant 100 MHz dažniui.

4 žingsnis: GPIO IP

GPIO IP
GPIO IP
GPIO IP
GPIO IP

Pridėkite du GPIO blokus prie bloko dizaino. GPIO bus naudojami pikselių adresui ir pikselių RGB komponentams valdyti. Konfigūruokite blokus, kaip parodyta aukščiau esančiuose paveikslėliuose. Pridėję ir sukonfigūravę abu blokus, spustelėkite „Vykdyti ryšio automatizavimą“.

GPIO 0 - 1 kanalas valdo pikselių adresą, o 2 kanalas - raudoną spalvą.

GPIO 1 - 1 kanalas valdo žalią spalvą, o 2 kanalas - mėlyną spalvą.

5 žingsnis: blokuoti atmintį

Blokuoti atmintį
Blokuoti atmintį
Blokuoti atmintį
Blokuoti atmintį
Blokuoti atmintį
Blokuoti atmintį

Pridėkite blokų atminties generatoriaus IP prie bloko dizaino ir sukonfigūruokite, kaip parodyta aukščiau. Pikselių spalvos įrašomos į atminties adresus, kuriuos vėliau skaito VGA tvarkyklė. Adreso eilutė turi atitikti naudojamų pikselių kiekį, todėl ji turi būti 16 bitų. Duomenys taip pat yra 16 bitų, nes yra 16 spalvų bitų. Mums nerūpi skaityti jokių pripažinimo bitų.

6 veiksmas: kitas IP

Pridedamame pdf yra paruoštas blokų dizainas. Pridėkite trūkstamą IP ir užbaikite ryšius. Taip pat „Make Externals“VGA spalvų išėjimams ir vertikaliems bei horizontaliems sinchronizavimo išėjimams.

xlconcat_0 - Sujungia atskiras spalvas ir sudaro vieną 16 bitų RGB signalą, kuris tiekiamas į blokinę RAM.

xlconcat_1 - Sujungia stulpelių ir eilučių signalus iš VGA tvarkyklės ir tiekiamas į blokinio RAM B prievadą. Tai leidžia VGA tvarkyklei nuskaityti pikselių spalvų vertes.

VDD - „Constant HIGH“prijungtas prie „Block RAM“įrašymo įgalinimo, kad visada galėtume tai padaryti.

xlslice_0, 1, 2 - Skiltelės naudojamos RGB signalui suskaidyti į atskirus R, G ir B signalus, kuriuos galima tiekti į VGA tvarkyklę.

Kai bloko dizainas bus baigtas, sukurkite HDL įvyniojimą ir pridėkite apribojimų failą.

*Bloko dizainas pagrįstas pamoka, parašyta benlin1994*

7 veiksmas: SDK

Kodas, kuriuo vykdomas šis bloko dizainas, pateiktas žemiau. „Init.c“yra brėžinį tvarkančios funkcijos (prognozės, skaičiai, laipsnių simbolis ir kt.). Pagrindinė kilpa main.c yra tai, kas paleidžiama, kai lenta yra užprogramuota. Ši kilpa nustato prognozės ir temperatūros reikšmes ir tada iškviečia traukimo funkcijas init.c. Šiuo metu ji seka visas septynias prognozes ir rodoma viena po kitos. Rekomenduojama 239 eilutėje pridėti lūžio tašką, kad galėtumėte matyti kiekvieną vaizdą. Kodas yra komentuojamas ir suteiks daugiau informacijos.

8 žingsnis: Išvada

Norint patobulinti dabartinį projektą, į blokų atminties generatorius galima įkelti išankstinio įkėlimo prognozės vaizdų COE failų pavidalu. Taigi, užuot rankiniu būdu nubrėžę prognozes, kaip tai darėme C kode, galima būtų nuskaityti vaizdus. Bandėme tai padaryti, bet nepavyko. Mes galėjome nuskaityti pikselių reikšmes ir jas išvesti, tačiau tai sukūrė netvarkingus vaizdus, kurie nebuvo panašūs į tuos, kuriuos įkėlėme į RAM. „Block Memory Generator“duomenų lapą naudinga perskaityti.

Projektas iš esmės yra pusė išmaniojo veidrodžio, nes trūksta interneto ryšio aspekto. Tai pridėjus, būtų sukurtas visas išmanusis veidrodis.

Rekomenduojamas: