МАРСОХОД

Open Source Hardware Project

FPGA & CPLD блог

Все о плате Марсоход, Марсоход2, программировании ПЛИС, о Verilog HDL и среде проектирования Altera Quartus II

 

Копирование экрана виртуальной машины на терминал 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.

Новогодние слайды на плате Марсоход3bis

Продолжаю работать над проектом USB терминала в плате Марсоход3bis.

В принципе, уже есть какой-то результат: я могу через USB кабель, через FTDI в синхронном режиме с ноутбука загружать картинки в плату и отображать их на мониторе, подключенном к плате.

Оно у меня так еще неделю назад работало, но как-то не очень стабильно, да и очень сложно тогда получилось. Контроллер SDRAM, который я взял на opencores когда-то давно по умолчанию работает с 32-х бинтыми данными не зависимо от шины SDRAM. Видимо из-за того, что автор контроллера использовал его с wishbon bus. Мне же сейчас в этом проекте 32 бита данных не очень удобно. Я использую 16-ти битный видео режим high-color ( R5-G6-B5 ). Микросхема SDRAM у меня на плате Марсоход3bis одна и так же 16-ти битная. Пришлось немного исправлять контроллер.

Еще трудность с которой столкнулся - неудобство с burst mode. Я микросхему памяти программирую на пакетное чтение слов данных из памяти SDRAM, по 8 слов за один запрос на чтение. Burst mode / пакетная передача существенно повышает производительность памяти. Но на запись это не очень удобно. Вспомнил, что SDRAM можно запрограммировать в режим одиночной записи и пакетного чтения. Переделал проект и стало гораздо надежней и проще.

Ну и, конечно, сделал в Visual Studio программу, которая из командной строки берет имя файла изображения (bitmap или jpeg) и считывает и посылает на плату.

ПОлучилось прямо новогоднее настроение.

Весь проект можно взять на GitHub https://github.com/marsohod4you/UsbHwThinClient4Vm

Конечно, еще не все работает идеально. Запись пока работает не очень быстро - нужно разбираться почему. Может просто более длинными пакетами нужно писать в плату? Буду смотреть.

Еще проблемка - иногда на экране нет нет да и появится непрорисованная линия - где-то редко почему-то глючит запись. Нужно разбираться.

 

 

Покупайте платы Марсоход3 и Марсоход3bis!

Реклама платы Марсоход3

Покупайте наши платы Марсоход3 и Марсоход3bis!!!

Теперь у нас есть много печатных плат и есть чипы Altera MAX10 - так что производство разворачивается и расширяется.

Подробнее о платах можно почитать вот здесь.

Сделать заказ можно в нашем интернет магазине. Спешите оформить заказ: к сожалению, в новом году возможно повышение цены на платы (сами знаете почему)...

 


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