Мини-видеокарта TinyGPU v2.0 на кремнии: 1.000 треугольников
Разработчики проекта TinyGPU завершили переход от экспериментальных прототипов на базе FPGA к производству реального кремниевого чипа. Чип получил название TinyGPU v2.0, а его производительность была продемонстрирована в рамках инициативы Tiny Tapeout. Разработчик Pongsagon Vichit подтвердил, что новая версия работает корректно на реальном кремнии, обеспечивая те же результаты, что и предыдущие тесты.
Характеристики и производительность
Новый чип TinyGPU v2.0 не претендует на звание современной игровой видеокарты. Это проект с открытым исходным кодом, демонстрирующий ключевые этапы классической 3D-графикой в компактной реализации на языке Verilog. В базовом наборе функций реализованы трансформация и освещение 3D-геометрии, растреризация, отсечение задних граней (backface culling), буфер глубины и плоское затенение с динамической направленной световой точкой.
Производительность чипа была измерена на разрешении 320 × 240 пикселя. При максимальной загрузке сцена, состоящая из 1.000 треугольников, рендерится со скоростью около 6,5 кадров в секунду (FPS). Цветовая глубина ограничена 4 бита, что позволяет отображать до 16 цветов одновременно. Рабочая частота чипа составляет 25,175 МГц (округляется до 25 МГц).
Для вывода изображения используется двойной буфер на 4 бита, а буфер глубины — на 8 бит. Оба типа памяти расположены во внешнем QSPI-RAM, подключенном к чипу, что позволяет сэкономить площадь кристалла. Модели также загружаются из внешней Flash-памяти. Управление осуществляется через подключенный контроллер SNES.
Важно отметить, что производительность реального кремниевого чипа не превышает показатели FPGA-прототипа. Это ожидаемый результат: успех проекта заключается в том, что вся разработанная логика и архитектура памяти работают без критических ошибок после производства. В отличие от FPGA, где ошибки можно исправить загрузив новую конфигурацию, на ASIC (специализированной интегральной схеме) исправления требуют повторного производства чипа.
Технические детали и код
Исходный код проекта открыт и доступен на GitHub под лицензией Apache 2.0. Основной язык описания логики — Verilog. Репозиторий содержит модули для VGA-вывода, работы с SPI-Flash, управления палитрой цветов, математических операций и подключения геймпада. Такая прозрачность позволяет исследователям изучать пути данных и автоматы состояний напрямую.
Чип TinyGPU v2.0 занимает площадь в 4 × 4 тайлов на фабрике Tiny Tapeout. Эта платформа объединяет множество небольших проектов на одном кристалле, распределяя высокие затраты производства между участниками. В проекте используется около 200 000 транзисторов (по данным разработчика) или до 240 000 (по данным Tom's Hardware). Разница в цифрах может быть связана с разными методами подсчета логики и стандартных ячеек.
Архитектурные особенности
TinyGPU v2.0 не использует программируемые шейдеры, как современные графические процессоры. Вместо этого графические функции реализованы через специализированные аппаратные пути. Архитектура напоминает ранние 3D-ускорители с фиксированной функциональной пайплайном, а не современные GPU с массивами шейдеров и свободными вычислительными блоками.
Эта ограниченность делает архитектуру понятной: можно проследить путь от данных вершин через трансформацию, освещение, построение треугольников, проверку видимости и растреризацию до готового VGA-сигнала. Проект позиционируется не как продукт для встраиваемых устройств, а как рабочая модель минимальной 3D-архитектуры.