Съдържание:
- Стъпка 1: Конфигуриране на Vivado
- Стъпка 2: Опаковане на IP адреса на VGA драйвера
- Стъпка 3: Zynq IP
- Стъпка 4: GPIO IP
- Стъпка 5: Блокирайте паметта
- Стъпка 6: Друг IP
- Стъпка 7: SDK
- Стъпка 8: Заключение
Видео: Огледален дисплей: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Целта на този проект е да създаде функционалност за показване на изображения на Smart Mirror. Огледалото може да показва прогнози (слънчево, частично слънчево, облачно, ветровито, дъжд, гръмотевици и сняг) и температурни стойности от -9999 ° до 9999 °. Прогнозните и температурните стойности са кодирани трудно, сякаш за да се подражават на тяхното анализиране от метеорологичния API.
Проектът използва платка Zynq-Zybo-7000 с FreeRTOS и използва Vivado 2018.2 за проектиране и програмиране на хардуера.
Части:
Zynq-Zybo-7000 (с FreeRTOS)
19 LCD (640x480)
VGA кабел
12 "x 18" акрилно огледало
Стъпка 1: Конфигуриране на Vivado
Изтеглете Vivado 2018.2 от Xilinx и използвайте лиценза Webpack. Стартирайте Vivado и „Създаване на нов проект“и му дайте име. След това изберете „RTL Project“и поставете отметка „Не посочвайте източници в момента“. Когато избирате част, изберете „xc7z010clg400-1“и натиснете „Готово“на следващата страница.
Стъпка 2: Опаковане на IP адреса на VGA драйвера
Добавете файла vga_driver.sv към източниците на дизайн. След това щракнете върху „Инструменти“и изберете „Създаване и пакетиране на нов IP“. Изберете „Опаковайте текущия си проект“. След това изберете IP местоположение и „Включване на.xci файлове“. Кликнете върху „OK“в изскачащия прозорец и след това върху „Край“.
На „Стъпки за опаковане“отидете на „Преглед и пакет“и изберете „IP на пакета“.
Сега vga_driver трябва да е наличен като IP блок.
Стъпка 3: Zynq IP
В секцията „IP интегратор“изберете „Създаване на дизайн на блок“. Добавете „Обработваща система ZYNQ7“и щракнете двукратно върху блока. Кликнете върху „Импортиране на XPS настройки“и качете файла ZYBO_zynq_def.xml.
След това под „Конфигурация на PS-PL“отворете падащото меню за „AXI Non Secure Enablement“и проверете „M AXI GP0 интерфейс“.
След това под „MIO Configuration“отворете падащото меню за „Application Processor Unit“и проверете „Timer 0“и „Watchdog“.
И накрая, под „Clock Configuration“отворете падащото меню за „PL Fabric Clocks“и проверете „FCLK_CLK0“и на 100 MHz.
Стъпка 4: GPIO IP
Добавете два GPIO блока към дизайна на блока. GPIO ще се използват за управление на пикселния адрес и RGB компонентите на пикселите. Конфигурирайте блоковете, както е показано на изображенията по -горе. След като добавите и конфигурирате двата блока, кликнете върху „Стартиране на автоматизацията на връзката“.
GPIO 0 - Канал 1 контролира адреса на пиксела, а канал 2 контролира червения цвят.
GPIO 1 - Канал 1 контролира зеления цвят, а канал 2 контролира синия цвят.
Стъпка 5: Блокирайте паметта
Добавете IP генератор на блокова памет към дизайна на блока и конфигурирайте, както е показано по -горе. Цветовете на пикселите се записват в адресите на паметта, които след това се четат от VGA драйвера. Адресният ред трябва да съответства на количеството пиксели, които се използват, така че трябва да е 16 бита. Данните също са 16 бита, тъй като има 16 цветни бита. Ние не се интересуваме от четенето на битове за потвърждение.
Стъпка 6: Друг IP
Приложеният pdf показва завършения блок дизайн. Добавете липсващия IP и завършете връзките. Също така "Направете външни" за цветните изходи VGA и вертикалните и хоризонталните изходи за синхронизация.
xlconcat_0 - Свързва отделните цветове, за да образува един 16 -битов RGB сигнал, който се подава в блоковата RAM.
xlconcat_1 - Свързва сигналите на колоната и реда от VGA драйвера и се подава в порт B на блоковата RAM. Това позволява на VGA драйвера да чете стойностите на цветовете на пикселите.
VDD - Константа HIGH, свързана с възможността за запис на блоковата RAM, така че винаги да имаме право до нея.
xlslice_0, 1, 2 - Срезовете се използват за разбиване на RGB сигнала в отделни R, G и B сигнали, които могат да се подават във VGA драйвера.
След като дизайнът на блока приключи, генерирайте HDL обвивка и добавете файла с ограничения.
*Block Design се основава на урока, написан от benlin1994*
Стъпка 7: SDK
Кодът, който изпълнява този блок дизайн, е включен по -долу. Init.c съдържа функциите, които обработват чертежа (прогнози, числа, символ на степента и т.н.). Основният цикъл в main.c е това, което се изпълнява, когато платката е програмирана. Този цикъл задава прогнозни и температурни стойности и след това извиква функциите за теглене в init.c. В момента той преглежда всичките седем прогнози и се показва една след друга. Препоръчително е да добавите точка на прекъсване на ред 239, за да можете да видите всяко изображение. Кодът е коментиран и ще ви даде повече информация.
Стъпка 8: Заключение
За да се подобри текущият проект, може да се качват изображения с предварително зареждане под формата на COE файлове в блокове за генератор на памет. Така че вместо да изготвяме прогнозите ръчно, както направихме в C кода, може да се прочетат изображенията. Опитахме се да направим това, но не успяхме да работи. Успяхме да прочетем стойностите на пикселите и да ги изведем, но създадохме разхвърляни изображения, които не приличаха на тези, които качихме в RAM. Информационният лист за генератора на блокова памет е полезен за четене.
Проектът е по същество наполовина интелигентно огледало, тъй като липсва аспектът на интернет свързаност. Добавянето на това ще даде пълно Smart Mirror.
Препоръчано:
Направете безкраен огледален часовник: 15 стъпки (със снимки)
Направете безкраен огледален часовник: В предишен проект изградих безкрайно огледало, където крайната ми цел беше да го превърна в часовник. (Направете цветно огледало за безкрайност) Не го преследвах, след като го построих, защото макар да изглеждаше готино, имаше няколко неща с
Направете безкраен огледален куб: 12 стъпки (със снимки)
Направете безкраен огледален куб: Докато търсех информация, когато правех първото си безкрайно огледало, попаднах на някои изображения и видеоклипове с безкрайни кубчета и определено исках да направя едно от моите. Основното, което ме спираше, беше, че исках да го направя по различен начин
Огледален часовник Infinity с потенциометри: 3 стъпки
Безкраен огледален часовник с потенциометри: Попаднах на безкрайно огледало и открих, че е наистина страхотно. Това ме вдъхнови да направя безкрайно огледало, но имах нужда от него, за да има цел. И така, реших да направя функциониращ безкраен огледален часовник. Това е безкрайно огледало, което ви позволява да
Лесен огледален часовник безкрайност: 3 стъпки
Лесен DIY Infinity огледален часовник: Ако сте отегчени от нормалния си часовник, опитайте да направите този готин DIY Infinity Mirror Clock. За да изравните стаята си
Огледален часовник Infinity: 5 стъпки (със снимки)
Огледален часовник Infinity: Това е ръчно изработен часовник предимно за декорация. Има няколко LED светлини в часовника, когато е включен, той е красива декорация за спалня. Когато е изключен, това е малко огледало. Разбира се, това е самият часовник