Оглавление:

Зеркальный дисплей: 8 шагов
Зеркальный дисплей: 8 шагов

Видео: Зеркальный дисплей: 8 шагов

Видео: Зеркальный дисплей: 8 шагов
Видео: Светодиодный LED экран своими руками из 99 модулей размером 2880 на 1760 мм 2024, Ноябрь
Anonim
Зеркальный дисплей
Зеркальный дисплей
Зеркальный дисплей
Зеркальный дисплей
Зеркальный дисплей
Зеркальный дисплей

Целью этого проекта является создание функции отображения изображения Smart Mirror. Зеркало может отображать прогнозы (солнечно, частично солнечно, облачно, ветрено, дождь, гром и снег) и значения температуры от -9999 ° до 9999 °. Значения прогноза и температуры жестко запрограммированы, как если бы они имитировали их анализ из API погоды.

В проекте используется плата Zynq-Zybo-7000 под управлением FreeRTOS и Vivado 2018.2 для разработки и программирования оборудования.

Части:

Zynq-Zybo-7000 (с FreeRTOS)

19-дюймовый ЖК-дисплей (640 x 480)

Кабель VGA

Акриловое зеркало 12 x 18 дюймов

Шаг 1. Настройка Vivado

Настройка Vivado
Настройка Vivado
Настройка Vivado
Настройка Vivado

Загрузите Vivado 2018.2 с Xilinx и используйте лицензию Webpack. Запустите Vivado и «Создать новый проект» и дайте ему имя. Затем выберите «Проект RTL» и отметьте «Не указывать источники в настоящее время». При выборе детали выберите «xc7z010clg400-1» и нажмите «Готово» на следующей странице.

Шаг 2: упаковка IP-адреса драйвера VGA

Упаковка драйвера VGA IP
Упаковка драйвера VGA IP
Упаковка драйвера VGA IP
Упаковка драйвера VGA IP

Добавьте файл vga_driver.sv в Источники дизайна. Затем нажмите «Инструменты» и выберите «Создать и упаковать новый IP-адрес». Выберите «Упаковать текущий проект». Затем выберите IP-адрес и «Включить файлы.xci». Нажмите «ОК» во всплывающем окне, а затем «Готово».

В «Шагах по упаковке» перейдите в «Обзор и упаковка» и выберите «IP-адрес пакета».

Теперь vga_driver должен быть доступен как блок IP.

Шаг 3: Zynq IP

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

В разделе «IP Integrator» выберите «Create Block Design». Добавьте «Систему обработки ZYNQ7» и дважды щелкните блок. Нажмите «Импортировать настройки XPS» и загрузите файл ZYBO_zynq_def.xml.

Затем в разделе «Конфигурация PS-PL» откройте раскрывающийся список для «Включение небезопасности AXI» и отметьте «Интерфейс M AXI GP0».

Затем в разделе «Конфигурация MIO» откройте раскрывающееся меню «Модуль процессора приложений» и отметьте «Таймер 0» и «Сторожевой таймер».

Наконец, в разделе «Clock Configuration» откройте раскрывающийся список «PL Fabric Clocks» и отметьте «FCLK_CLK0» и на 100 МГц.

Шаг 4: GPIO IP

GPIO IP
GPIO IP
GPIO IP
GPIO IP

Добавьте два блока GPIO в конструкцию блока. GPIO будут использоваться для управления адресом пикселя и компонентами RGB пикселей. Настройте блоки, как показано на изображениях выше. После добавления и настройки обоих блоков нажмите «Запустить автоматизацию подключения».

GPIO 0 - канал 1 управляет адресом пикселя, а канал 2 - красным цветом.

GPIO 1 - канал 1 управляет зеленым цветом, а канал 2 - синим.

Шаг 5: заблокируйте память

Блочная память
Блочная память
Блочная память
Блочная память
Блочная память
Блочная память

Добавьте IP-адрес генератора блочной памяти в конструкцию блока и настройте, как показано выше. Цвета пикселей записываются в адреса памяти, которые затем считываются драйвером VGA. Адресная строка должна соответствовать количеству используемых пикселей, поэтому она должна быть 16 бит. Данные также имеют размер 16 бит, поскольку имеется 16 цветных битов. Мы не заботимся о чтении каких-либо битов подтверждения.

Шаг 6: Другой IP

В прилагаемом pdf-формате показан законченный блочный дизайн. Добавьте недостающий IP и завершите подключения. Также "Make Externals" для цветных выходов VGA и выходов вертикальной и горизонтальной синхронизации.

xlconcat_0 - объединяет отдельные цвета для формирования одного 16-битного сигнала RGB, который подается в ОЗУ блока.

xlconcat_1 - объединяет сигналы столбца и строки от драйвера VGA и подается в порт B блочного ОЗУ. Это позволяет драйверу VGA считывать значения цвета пикселей.

VDD - постоянный HIGH, связанный с разрешением записи блочной RAM, так что мы всегда можем прямо к нему.

xlslice_0, 1, 2 - срезы используются для разделения сигнала RGB на отдельные сигналы R, G и B, которые можно подавать в драйвер VGA.

После завершения проектирования блока сгенерируйте оболочку HDL и добавьте файл ограничений.

* Дизайн блоков основан на учебнике, написанном benlin1994 *

Шаг 7: SDK

Код, который запускает этот блочный дизайн, приведен ниже. Init.c содержит функции, которые обрабатывают рисунок (прогнозы, числа, символ градуса и т. Д.). Главный цикл в main.c - это то, что запускается при программировании платы. Этот цикл устанавливает прогноз и значения температуры, а затем вызывает функции рисования в init.c. В настоящее время он просматривает все семь прогнозов и отображает один за другим. Рекомендуется добавить точку останова в строке 239, чтобы вы могли видеть каждое изображение. Код прокомментирован и предоставит вам дополнительную информацию.

Шаг 8: Заключение

Чтобы улучшить текущий проект, можно загружать предварительно загруженные изображения прогнозов в виде файлов COE в генераторы блочной памяти. Таким образом, вместо того, чтобы рисовать прогнозы вручную, как мы это делали в коде C, можно было прочитать изображения. Мы попытались сделать это, но не смогли заставить его работать. Мы могли считывать значения пикселей и выводить их, но это создавало беспорядочные изображения, не похожие на те, которые мы загружали в ОЗУ. Техническое описание генератора блочной памяти полезно прочитать.

По сути, проект наполовину представляет собой Smart Mirror, поскольку в нем отсутствует аспект подключения к Интернету. Добавление этого даст полное Smart Mirror.

Рекомендуемые: