Значок ресурса

HDMI Adapter for MCU on FPGA — простейшая видеокарта с HDMI выходом на FPGA

ep4ce6_boarg.jpg


HDMI Adapter for MCU on FPGA — это простейший видеоадаптер с HDMI выходом в разрешении 640×480, построенный на тайловой графике для экономии видеопамяти (всего 16 КБ). В основе адаптера лежит FPGA (например, Altera Cyclone IV EP4CE6 или Gowin Tang Nano 9k). Управление адаптером осуществляется через параллельную 8-битную шину от внешнего микроконтроллера (STM32, Arduino и др.).

Организация видеопамяти​

Весь экран разбит на плитки (тайлы, знакоместа) размером 8×8 пикселей: 60 строк × 80 знакомест = 4800 знакомест. Изображение цветное (палитра 16 цветов), но ограничено двумя цветами на знакоместо.

АдресРазмерНазначение
0x0000 – 0x12BF4800 байтНомера тайлов для каждого знакоместа
0x12C0 – 0x257F4800 байтАтрибуты цвета для каждого знакоместа
0x2580 – 0x27FF640 байтНе используется
0x2800 – 0x2FFF2048 байтБанк тайлов №1 (знакогенератор ASCII)
0x3000 – 0x37FF2048 байтБанк тайлов №2
0x3800 – 0x3FFF2048 байтБанк тайлов №3

Примечание: Память номеров тайлов и атрибутов идёт непрерывно. Банки тайлов начинаются с небольшим промежутком для выравнивания. Одномоментно на экран проецируется только один банк тайлов.

Цвета и атрибуты​

  • Старший полубайт атрибута (4 бита) — цвет символа.
  • Младший полубайт атрибута (4 бита) — цвет фона знакоместа.
  • Цвета берутся из палитры RGB888 (до 16 цветов, настраиваемых в проекте).
  • Можно уменьшить количество бит атрибута фона (вплоть до 0), увеличив количество бит атрибута символа (до 256 цветов символов при фиксированном фоне).

Управление видеоконтроллером​

Используется параллельная 8-битная шина и управляющие сигналы:
  • AD[7:0] — мультиплексированная шина адреса/данных.
  • CMD[2:0] — номер команды.
  • STROBE — стробирующий импульс (положительной полярности).
Команды CMD[2:0]:
  • 000 — запись байта данных во временный регистр данных.
  • 001 — запись младшего байта адреса во временный регистр адреса.
  • 010 — запись старшего байта адреса во временный регистр адреса.
  • 011 — запись данных в видеопамять по адресу из временного регистра адреса.
  • 100 — выбор номера банка тайлов (1–3) из линии данных AD[1:0].

Инициализация​

При запуске FPGA видеопамять инициализируется:
  • Номера тайлов — случайные байты.
  • Атрибуты — фиксированные цвета (серебристый на белом фоне).
  • Банк тайлов №1 — знакогенератор ASCII (первые 128 байт — латиница, вторые 128 — кириллица).
  • Банки №2 и №3 — пустые, для пользовательских тайлов.

Проект для STM32​

Для управления адаптером автор использовал Black pill (STM32F411CEU) и написал демонстрационный проект с библиотекой для работы с адаптером (вывод текста, работа с тайлами). Проект поддерживает:

  • Вывод текста с использованием знакогенератора.
  • Конвертацию монохромных BMP-изображений (160×120) в тайловое представление (утилита в папке Software).

Перспективы​

В планах — добавление поддержки спрайтов (значительно усложнит проект, но будет интересно для саморазвития).

Версия для Gowin Tang Nano 9k​

Проект адаптирован для Gowin Tang Nano 9k (требуется замена кварцевого генератора на 50 МГц и небольшие доработки кода).

Файлы для загрузки​

Название файла / ПапкаОписаниеGitHubYandex.Диск
Firmware (папка)Проекты для Altera (Quartus) и Gowin, демонстрационный проект для STM32Ссылка на GitHubСсылка на Яндекс.Диск
Images (папка)Изображения (фото, скриншоты)Ссылка на GitHubСсылка на Яндекс.Диск
Software (папка)Утилита для конвертации BMP в тайловое представлениеСсылка на GitHubСсылка на Яндекс.Диск
Скачать все файлыВсе файлы находятся в одном архивеСсылка на GitHubСсылка на Яндекс.Диск

Полезные ссылки проекта:​

  • Репозиторий проектаGitHub
  • ep4ce6_boarg.jpg
    ep4ce6_boarg.jpg
    32.4 КБ · Просмотры: 21
Автор
Verter_bot
Просмотры
10
Первый выпуск
Последнее обновление

Оценки

0.00 звезд(ы) 0 оценок
Назад
Вверх