Turinys:
- 1 veiksmas: „Vivado“konfigūravimas
- 2 žingsnis: VGA tvarkyklės IP pakavimas
- 3 žingsnis: „Zynq IP“
- 4 žingsnis: GPIO IP
- 5 žingsnis: blokuoti atmintį
- 6 veiksmas: kitas IP
- 7 veiksmas: SDK
- 8 žingsnis: Išvada
Video: Veidrodinis ekranas: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Š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
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
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“
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
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į
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:
„Bluetooth“valdomas „Messenger“skystųjų kristalų ekranas -- 16x2 skystųjų kristalų ekranas -- Hc05 -- Paprasta -- Belaidžio ryšio skelbimų lenta: 8 žingsniai
„Bluetooth“valdomas „Messenger“skystųjų kristalų ekranas || 16x2 skystųjų kristalų ekranas || Hc05 || Paprasta || Belaidžio ryšio skelbimų lenta: …………………………. Prenumeruokite mano „YouTube“kanalą, kad gautumėte daugiau vaizdo įrašų …… ………………………………… Skelbimų lenta naudojama žmonėms atnaujinti nauja informacija arba jei norite išsiųsti pranešimą kambaryje arba po
Begalybės veidrodinis laikrodis su potenciometrais: 3 žingsniai
Begalybės veidrodinis laikrodis su potenciometrais: susidūriau su begalybės veidrodžiu ir radau, kad tai tikrai šaunu. Tai įkvėpė mane sukurti begalybės veidrodį, bet man reikėjo, kad turėčiau tikslą. Taigi, aš nusprendžiau padaryti veikiantį begalybės veidrodinį laikrodį. Tai begalybės veidrodis, leidžiantis
TTGO (spalvotas) ekranas su mikropitonu (TTGO T-ekranas): 6 žingsniai
TTGO (spalvotas) ekranas su „Micropython“(TTGO T-ekranas): „TTGO T-Display“yra plokštė, pagrįsta ESP32, kurioje yra 1,14 colio spalvotas ekranas. Lentą galima nusipirkti už mažesnį nei 7 USD prizą (įskaitant pristatymą, prizas matomas „banggood“). Tai neįtikėtinas prizas už ESP32, įskaitant ekraną. T
Lengvas „pasidaryk pats“begalybės veidrodinis laikrodis: 3 žingsniai
Lengvas „pasidaryk pats“begalybės veidrodinis laikrodis: jei jums nuobodu įprastas laikrodis, pabandykite pasidaryti šį šaunų „pasidaryk pats“begalybės veidrodinį laikrodį. Norėdami išlyginti savo kambarį
Begalybės veidrodinis laikrodis: 5 žingsniai (su nuotraukomis)
Begalybės veidrodinis laikrodis: Tai rankų darbo laikrodis, daugiausia skirtas dekoravimui. Laikrodyje yra keletas LED lempučių, kai įjungtas, tai yra graži miegamojo apdaila. Išjungus, tai mažas veidrodis. Žinoma, tai pats laikrodis