МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

САПР Altera Quartus II / Quartus Prime, язык Verilog HDL, ПЛИС Cyclone III, Cyclone IV, MAX II, MAX10.
Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Демонстрация работы USB хоста для платы Марсоход3bis

Компьютерный хаос на столе

В предыдущей статье я рассказывал, как делал USB хост, как симулировал его с помощью тестбенча. Сейчас я встроил его уже в реальный проект квартуса. Сделал интеграцию verilog модуля usb11ctrl.v в свой проект USBTerm для среды Altera Quartus.

Это фото показывает весь ужас разработки USB11 хоста на плате Марсоход3bis.

  • сама плата Марсоход3bis подключена к ноутбуку кабелем USB2 для скоростной передачи данных в плату (отрисовка изображений на экране и команды в USB11 хост) и передачи данных из платы в ноутбук (результат исполнения USB команд на шине);
  • так же, к плате подсоединен программатор MBFTDI для программирования ПЛИС и отладки проектов в среде Quartus SignalTap;
  • к плате, через разъем HDMI, подключен монитор (на самом деле телевизор) для отображения изображений переданных из ноутбука в плату;
  • на плату Марсоход3bis установлен шилд разъемов для подключения USB мыши и (в будущем) клавиатуры;
  • для контроля и отладки контроллера USB используется аппаратный USB анализатор - устройство подслушивающее весь USB трафик и показывающей его на ноутбуке; подключается по третьему кабелю USB к ноутбуку.

Сложности разработки USB хоста для проекта USBTerm.

mouse+Marsohod3bis

Мне для проекта USBTerm нужен USB11 хост, так как к моему тонкому клиенту я собираюсь подключить USB мышь и USB клавиатуру. В принципе, я думал, ничего особо сложного там быть не должно. Я ведь уже когда-то занимался USB проектами: когда-то делал и простое USB устройство в плате Марсоход, и USB трекер из платы Марсоход2. В общем, тема мне довольно знакомая, хоть и не любимая.

Почему не любимая? Слишком уж сложен USB протокол. Даже для USB11 низкоскоростных устройств слишком все сложно и запутанно. Если пытаться сделать машину состояний по обслуживанию этого протокола, то получается очень много состояний, много условий, вариантов движения данных, правила очередности пакетов. В общем не просто это. Вот зарылся я с головой в реализацию хоста и потратил на это очень много времени. Прямо неприлично много.. Жаль.

Ну вот попытаюсь рассказать, что и как я делаю.

Копирование экрана виртуальной машины на терминал USBTerm



Только что прошел еще один очень важный этап в своем проекте USBTerm.

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

Как работает видеоадаптер проекта USBTerm

Хочу поподробнее рассказать, как работает видеодаптер, используемый в проекте USBTerm.

Мы уже не раз писали про всякие видеоконтроллеры на нашем сайте, вот хотя бы некоторые из статей:

Здесь же, в этой статье, я хочу сделать акцент на расчет пропускной способности и согласования записи и чтения в видеопамяти.

Итак, видеорежим.
Я делаю, так называемый HD-Ready: 1280x720 60Hz, 16 бит на пиксел, выход HDMI платы Марсоход3.
Выбор этого режима не случаен. Этот режим поддерживается большинством современных телевизоров и мониторов и у него не такие уж и высокие частоты. Спецификацию беру из VESA стандарта:

vesa

Тактовая частота для вывода пикселов 74,250 МГц. Это в общем-то не очень высокая частота для ПЛИС, но поскольку пикселы будут кодироваться для HDMI в сигналы TMDS (Transition-Minimized Differential Signaling), то выходная частота будет уже в 5 раз выше, то есть 370 МГц - это уже довольно много.

Передача видео кадров в плату Марсоход3


Вот закончил очередной этап моего проекта USBTerm. На этом видео показано, как видеофайл декодируется на ноутбуке c с помощью программы FFMPEG, а отображается на плате Марсоход3.


GitHub YouTube Twitter
Вы здесь: Начало