
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

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

Мотивация:
Основной мотивацией для нашего проекта было создание драйвера мыши для платы Basys3, который будущие студенты CPE 133 смогут использовать в своих окончательных проектах в будущем. Тем не менее, мы пошли дальше этой идеи, создав программу рисования, на которой будущие студенты могли бы строить свои собственные.
Проблема:
Проблема, которую мы обнаружили, заключалась в том, что нет ясного модуля мыши, готового для загрузки и использования с платой Basys3. Чтобы решить эту проблему, мы попытались создать ее сами. Поступая таким образом, мы стремились создать модуль мыши, который позволил бы будущим студентам более легко реализовать ввод с помощью мыши в своих проектах.
Шаг 2: Получение исходной битовой информации с USB-накопителя Basys

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


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



- Кабель VGA имеет 14 бит вывода, по 4 бита для каждого из трех цветов и бит для горизонтальной и вертикальной синхронизации.
-
OtherVGA - это входящий в комплект модуль VGA, который выполняет следующие функции:
- Монитор разбит на блоки 40x30 по 16x16 пикселей для экрана с разрешением 640x480, как показано на рисунке выше. Модуль выбирает адрес блока для представления одного из 1200 блоков на мониторе. Адрес блока выбирается с помощью следующего уравнения: адрес = 40y + x
- Цвет представлен 12-битным сигналом, который коррелирует со значением RRRRGGGGBBBB, которое окрашивает выбранный блок.
-
Наш управляющий код, VGAtest и VGAtestconst, функционирует следующим образом:
- Сначала он устанавливает выбранный блок в центр монитора.
- Цвет блока определяется 12 переключателями на плате, устанавливающими значение RRRRGGGGBBBB.
- Четыре кнопки со стрелками на плате изменяют выбранный адрес. Например, нажатие правой кнопки добавит 1 к адресу, выбрав блок, расположенный справа от предыдущего блока. Нажатие кнопки вниз добавит 40 к адресу, выбрав блок, расположенный ниже предыдущего.
- Центральная кнопка используется для установки всех значений цвета на 0 при нажатии. Это предназначено для того, чтобы вести себя как кнопка стирания, которую легко использовать для пользователя, поэтому пользователю не нужно переключать каждый переключатель на 0, чтобы стереть.
- Последнее изображение - это блок-схема контроллера. Он довольно широкий, поскольку включает в себя компоненты модуля и может не отображаться полностью.
Шаг 5: Наслаждайтесь своим творением
Связанный здесь - это быстрый таймлапс удовольствия, которое вы можете получить с финальным проектом, даже просто используя переключатели и кнопки на доске basys в качестве входных данных.
Спасибо за прочтение!
Рекомендуемые:
Два способа создания приложения для рисования: 10 шагов

Два способа создания приложения для рисования: я знаю, что это приложение для рисования имеет экран только 5x5 пикселей, так что вы действительно не можете много сделать, но это все равно весело
Начало рисования света (без Photoshop): 5 шагов (с изображениями)

Начало рисования светом (без Photoshop): недавно я купил новую камеру и исследовал некоторые ее особенности, когда наткнулся на световую живопись или фотографию с длительной выдержкой в Интернете. Большинство из нас видели основную форму светописи с фотографией в городе с дорогой
Программа рисования Arduino TFT: 4 шага

Программа рисования Arduino TFT: в этой инструкции подробно описывается код, который используется для создания программы рисования для экрана Arduino TFT. Однако эта программа уникальна тем, что позволяет сохранять рисунок на SD-карту и загружать его позже для внесения дополнительных правок
MXY Board - низкобюджетная роботизированная доска для рисования XY-плоттеров: 8 шагов (с изображениями)

Доска MXY - низкобюджетная доска для рисования XY-плоттера: Моей целью было разработать плату mXY, чтобы сделать низкобюджетную чертежную машину для XY-плоттера. Итак, я разработал доску, которая упростит задачу тем, кто хочет сделать этот проект. В предыдущем проекте при использовании 2 шаговых двигателей Nema17 эта плата использовала
Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: 6 шагов (с изображениями)

Ручки для рисования со светодиодной подсветкой: инструменты для рисования световых рисунков: Моя жена Лори - ярый рисовальщик, и я много лет играл с фотографией с длинной выдержкой. Вдохновленные группой художников по свету PikaPika и простотой цифровых фотоаппаратов, мы взяли на вооружение искусство рисования светом, чтобы увидеть, что мы можем сделать. У нас есть большой