Оглавление:

Программа рисования VGA: 5 шагов
Программа рисования VGA: 5 шагов

Видео: Программа рисования VGA: 5 шагов

Видео: Программа рисования VGA: 5 шагов
Видео: Рассказ про генерацию графики на VGA и упражнение с рисованием на экране разноцветных квадратов 2024, Сентябрь
Anonim
Программа рисования VGA
Программа рисования VGA

Авторы проекта: Адам Кляйн, Ян Страчан, Брэндон Слейтер

Проект, который мы намеревались завершить, заключался в хранении, синтаксическом анализе и отображении информации с USB-мыши в форме программы рисования. Идея, лежащая в основе проекта, состоит в том, чтобы иметь возможность подключать мышь и кабели VGA к плате Basys во встроенных портах и отображать мышь в виде подвижного рисованного квадрата на мониторе, меняющего разные цвета при щелчке левой и правой кнопкой мыши. использовал. По сути, мы должны создать драйвер для использования мыши с доской basys и использовать монитор для проверки работоспособности. Что в итоге произошло, так это создание программы рисования с доской basys в качестве системы ввода и полуфункциональной системы сбора данных для мыши.

В этом руководстве мы разберем шаги от ввода мыши до вывода vga.

Шаг 1: мотивация и проблема

Мотивация и проблема
Мотивация и проблема

Мотивация:

Основной мотивацией для нашего проекта было создание драйвера мыши для платы Basys3, который будущие студенты CPE 133 смогут использовать в своих окончательных проектах в будущем. Тем не менее, мы пошли дальше этой идеи, создав программу рисования, на которой будущие студенты могли бы строить свои собственные.

Проблема:

Проблема, которую мы обнаружили, заключалась в том, что нет ясного модуля мыши, готового для загрузки и использования с платой Basys3. Чтобы решить эту проблему, мы попытались создать ее сами. Поступая таким образом, мы стремились создать модуль мыши, который позволил бы будущим студентам более легко реализовать ввод с помощью мыши в своих проектах.

Шаг 2: Получение исходной битовой информации с USB-накопителя Basys

Получение исходной битовой информации с USB-накопителя Basys
Получение исходной битовой информации с USB-накопителя Basys
  • Многое из того, что мы сделали для мыши в этом проекте, взято из документации Basys3. Из небольшого руководства по USB-порту Basys в этом pdf-файле мы обнаружили, что плата Basys имеет встроенные часы для чтения бит с нужной скоростью с USB-устройств.
  • По сути, мышь отправляет биты на usb, начиная с состояния ожидания, считывает 32 бита, представляющих состояние мыши, положение x и положение y, и, наконец, заканчивается другим битом ожидания. Для этого компонент ввода мыши использует регистр сдвига и 32-битный счетчик, где сдвиговый регистр используется для хранения 32 бита входящих данных от мыши, а 32-битный счетчик используется для подсчета количества хранимых битов, позволяя состояние регистр для сброса и сохранения следующего набора из 32 входящих бит.
  • Код для сдвигового регистра, 32-битного счетчика и считывателя данных можно загрузить ниже, а также файл ограничений, адаптированный для использования нами порта USB в качестве входа.

Шаг 3: Анализ информации USB

Разбор информации USB
Разбор информации USB
Разбор информации USB
Разбор информации USB
  • После создания входа мыши в компонент USB следующим шагом было создание компонента биты USB в векторной информации, который сделает данные, полученные мышью, доступными для чтения для vga.
  • Этот компонент использует конечный автомат, который принимает набор битов, выводимых вводом мыши на usb, и перемещается по состояниям в зависимости от того, были ли введены новые биты, которые изменяют состояние и положение мыши.
  • Блок-схема для первых двух шагов проекта показана здесь, а два файла vhdl предназначены для тестирования реализации мыши с использованием светодиодов basys (тест, который, к сожалению, так и не прошел), и для передачи потока битов с USB. порт для векторов скорости и положения, которые может использовать VGA.
  • Изображение рядом с блок-схемой выше - это небольшой снимок (Instructables не позволяет нам отображать полное изображение) битовой информации, которую мы нашли в документации basys для выполнения этого шага.

Шаг 4: Отображение нарисованного изображения поверх VGA и редактирование того, что рисуется

Отображение нарисованного изображения поверх VGA и редактирование нарисованного
Отображение нарисованного изображения поверх VGA и редактирование нарисованного
Отображение нарисованного изображения поверх VGA и редактирование нарисованного
Отображение нарисованного изображения поверх VGA и редактирование нарисованного
Отображение нарисованного изображения поверх VGA и редактирование нарисованного
Отображение нарисованного изображения поверх VGA и редактирование нарисованного
  • Кабель VGA имеет 14 бит вывода, по 4 бита для каждого из трех цветов и бит для горизонтальной и вертикальной синхронизации.
  • OtherVGA - это входящий в комплект модуль VGA, который выполняет следующие функции:

    • Монитор разбит на блоки 40x30 по 16x16 пикселей для экрана с разрешением 640x480, как показано на рисунке выше. Модуль выбирает адрес блока для представления одного из 1200 блоков на мониторе. Адрес блока выбирается с помощью следующего уравнения: адрес = 40y + x
    • Цвет представлен 12-битным сигналом, который коррелирует со значением RRRRGGGGBBBB, которое окрашивает выбранный блок.
  • Наш управляющий код, VGAtest и VGAtestconst, функционирует следующим образом:

    • Сначала он устанавливает выбранный блок в центр монитора.
    • Цвет блока определяется 12 переключателями на плате, устанавливающими значение RRRRGGGGBBBB.
    • Четыре кнопки со стрелками на плате изменяют выбранный адрес. Например, нажатие правой кнопки добавит 1 к адресу, выбрав блок, расположенный справа от предыдущего блока. Нажатие кнопки вниз добавит 40 к адресу, выбрав блок, расположенный ниже предыдущего.
    • Центральная кнопка используется для установки всех значений цвета на 0 при нажатии. Это предназначено для того, чтобы вести себя как кнопка стирания, которую легко использовать для пользователя, поэтому пользователю не нужно переключать каждый переключатель на 0, чтобы стереть.
  • Последнее изображение - это блок-схема контроллера. Он довольно широкий, поскольку включает в себя компоненты модуля и может не отображаться полностью.

Шаг 5: Наслаждайтесь своим творением

Связанный здесь - это быстрый таймлапс удовольствия, которое вы можете получить с финальным проектом, даже просто используя переключатели и кнопки на доске basys в качестве входных данных.

Спасибо за прочтение!

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