Переход к точному хранению игр

Полевые программируемые воротные массивы (FPGA) незаметно изменили ландшафт ретро-игр и аппаратного дизайна. В отличие от процессора, который извлекает инструкции из памяти или графического процессора, который запускает шейдерные программы через сотни ядер, FPGA позволяет инженерам создавать пользовательские цифровые логические схемы непосредственно на чипе. Это означает, что один FPGA может стать идеальной копией центрального процессора классической консоли, контроллера видеодисплея и звукового чипа - все работает на аппаратном обеспечении с точной точностью цикла. Результатом является нулевая задержка, точная графика пикселей и оригинальные звуковые тайминги, которые эмуляторы могут только приблизить.

Игровой мир впервые обратил внимание, когда такие проекты, как Analogue Nt Mini, продемонстрировали, что FPGA может воспроизводить оригинальные картриджи NES с безупречной аутентичностью на современных дисплеях. С тех пор технология расширилась до карманных компьютеров, платформ с открытым исходным кодом и даже экспериментальных современных консолей. Понимание основных принципов и инженерных усилий, стоящих за этими системами, показывает, почему ускорение FPGA — это не просто уловка, но фундаментальный сдвиг в том, как мы создаем и сохраняем игровое оборудование. С помощью инструментов скоростные раны (TAS) давно доказали, что эмуляция программного обеспечения вводит временные различия; ядра FPGA полностью устраняют эти расхождения, предлагая проверяемый аппаратный стандарт.

Как работают FPGA на уровне ворот

FPGA состоит из сетки настраиваемых логических блоков (CLB), окруженных программируемой межсоединительной проводкой. Каждый CLB содержит таблицу поиска (LUT), которая может реализовать любую небольшую булеву функцию, флип-флоп для хранения состояния и мультиплексор для сигналов маршрутизации. Загрузив битовый поток - двоичный файл конфигурации - разработчики определяют, как эти блоки соединены вместе, чтобы сформировать сложные цифровые схемы. Тот же FPGA может быть позже перепрограммирован, чтобы стать совершенно другой системой, просто загрузив новый битовый поток.

Языки описания аппаратного обеспечения (HDL), такие как Verilog или VHDL, используются для описания желаемого поведения цепи. Например, для создания процессора 6502 вы пишете код RTL, который определяет декод команд, операции ALU и регистровый файл. Инструмент синтеза отображает этот код на LUT FPGA и флип-флопс. Анализ времени гарантирует, что каждый сигнал соответствует целевой тактовой частоте. В отличие от эмуляции программного обеспечения, которая добавляет слои абстракции, FPGA физически становится схемой. Это устраняет накладные расходы и гарантирует детерминированное поведение вплоть до наносекунды.

Современные FPGA от AMD Xilinx и Intel также встраивают закаленные блоки, такие как срезы DSP для быстрого многократного накопления, блоки RAM (BRAM) для хранения на чипе, фазовые петли (PLL) для генерации часов и высокоскоростные приемопередатчики для HDMI или USB. Эти закаленные блоки ускоряют общие задачи без использования логики общего назначения, что делает возможным реализацию целых конструкций системы на чипе на одном FPGA-кристалле. Например, срезы DSP48E2 в устройствах Xilinx могут обрабатывать масштабирование видео и преобразование цветового пространства без потребления одного логического элемента.

Технические преимущества игрового оборудования

Создание консоли вокруг FPGA приносит конкретные преимущества, которые выходят за рамки ностальгии. Эти преимущества объясняют, почему как коммерческие продукты, так и сообщества с открытым исходным кодом так с энтузиазмом восприняли платформу.

Циклическая точная подлинность

Программные эмуляторы должны переводить каждую инструкцию винтажного процессора в инструкции хоста, часто используя динамическую перекомпиляцию. Этот процесс вводит неточности синхронизации, которые могут нарушать игры, полагаясь на конкретные сроки сканирования или синхронизацию сопроцессора. Ядро FPGA запускает оригинальную логику точно так же, как и кремний: одинаковое количество тактовых циклов на инструкцию, то же самое соревнование шины DMA, те же границы аудиообразца. Для целей сохранения это единственный известный метод, гарантирующий, что каждая игра ведет себя одинаково с оригинальным оборудованием. Эта точность имеет решающее значение для систем, таких как Super Nintendo, где чип Super FX и сопроцессоры SA-1 раздвигают границы того, что можно эмулировать в программном обеспечении без обнаруживаемых сбоев.

Детерминированная низкая задержка

Отставание ввода накапливается через USB-опрос, буферную очередь и планирование операционной системы. Консоли на основе FPGA полностью обходят их. Контроллерный вход может быть отобран непосредственно аппаратным ядром, а видеопиксели генерируются с фиксированным конвейером, который выводит на дисплей точные часы пикселей. Многие конструкции даже выводят нативное аналоговое видео на ЭЛТ, достигая времени отклика менее одной миллисекунды. Это имеет решающее значение для конкурентных ретро-игр и для современных реализаций, где важны взаимодействия в реальном времени, такие как ритм-игры или события быстрого времени. Шкала RetroTINK 4K, например, использует FPGA для достижения почти нулевой задержки 4K, масштабирование, которое программные решения не могут сопоставить.

Неотъемлемая параллельная казнь

FPGA по своей сути выполняет всю свою логику параллельно. Каждый модуль — процессор, графический процессор, аудиопроцессор, контроллер DMA — работает одновременно на выделенных кремниевых ресурсах. Это аналогично наличию отдельных физических чипов для каждой подсистемы, обмениваясь данными через выделенные провода. В программном эмуляторе главный процессор должен разрезать время и расставлять приоритеты для этих задач, что приводит к накладным расходам. FPGA полностью устраняет это узкое место. Параллельная природа также упрощает интеграцию сложных сопроцессоров. Добавление звукового чипа Yamaha YM2612 к ядру Sega Genesis на основе FPGA — это просто вопрос инстанцирования аппаратного модуля и подключения его к архитектуре шины.

Энергоэффективная производительность

Воссоздание 16-битной консоли на настольном ПК может вытянуть 200 Вт. FPGA, реализующая ту же систему, может работать на 10 Вт или менее. Причина проста: FPGA переключает только те ворота, которые активно необходимы. Нет накладных расходов на операционную систему, нет избыточных конвейеров шейдеров и нет иерархии памяти. Для портативных консолей эта эффективность приводит к часам автономной работы вместо минут. Даже для современных задач ускорения, таких как видеоповышение или вывод ИИ, FPGA может обеспечить более высокие операции на ватт, чем GPU общего назначения для целевых рабочих нагрузок.

Обновляемое оборудование

Поскольку конфигурация FPGA хранится во внешней вспышке, обновление консоли так же просто, как загрузка нового битового потока. Это позволяет разработчикам исправлять аппаратные ошибки, добавлять новые функции или даже поддерживать совершенно новые консольные системы без замены одного компонента. Analogue Pocket использует эту возможность для поддержки экосистемы openFPGA, где сторонние разработчики могут создавать и распространять свои собственные ядра. Устройство, которое началось как клон Game Boy, теперь может эмулировать десятки систем, все через обновления прошивки. Эта модернизация продлевает срок службы аппаратного обеспечения на неопределенный срок, резко контрастирует с ASIC с фиксированной функцией.

Эволюция от ниши к господству

Игры FPGA начались с любителей. Инженер Кевин «Кевтрис» Хортон спроектировал единую FPGA, которая могла бы заменить всю материнскую плату NES, выпустив видео 1080p без отставания. Его работа привлекла внимание Analogue, который коммерциализировал концепцию с Nt Mini. Analogue позже выпустил Super Nt и Mega Sg, доказав, что существует рынок премиальных консолей FPGA. Эти устройства быстро распроданы, показывая, что энтузиасты были готовы платить премию за точность и качество сборки.

Примерно в то же время проект с открытым исходным кодом MiSTer появился в качестве альтернативы, основанной на сообществе. Используя Terasic DE10-Nano Board (Cyclone V FPGA), волонтеры разработали ядра для классических компьютеров (Amiga, C64, MSX), аркадные платы и консоли до эпохи PlayStation. Платформа MiSTer теперь поддерживает более 150 различных систем, с новыми ядрами, появляющимися регулярно. Его модульный дизайн позволяет пользователям добавлять модули RAM, аналоговые платы ввода-вывода и USB-концентраторы. Успех проекта вдохновил аналогичные усилия с использованием более дешевых плат FPGA, таких как Lattice ECP5, и даже привел к коммерческим побочным эффектам, таким как MARS FPGA и Pocket MiSTer . Сообщество справилось с юридическими проблемами распространения файлов BIOS, требуя от пользователей сбрасывать свое собственное оборудование, при этом распространяя аппаратную логику. Основные

Дизайн современной консоли FPGA: от концепции до кремния

Создание полной консоли на основе FPGA требует опыта в цифровом дизайне, макете печатной платы и системной интеграции. Процесс может быть разбит на отдельные этапы, каждый со своими проблемами.

Выбор правильного FPGA и платы

Выбор устройства FPGA диктует, какие системы могут быть реализованы. Для 8-битных и 16-битных консолей достаточно FPGA среднего диапазона с 50 000-100 000 логических элементов. Для ранних 3D-систем, таких как PlayStation или Sega Saturn, вам нужно 200 000 + LE, плюс достаточные блочные ОЗУ и DSP-срезы. Популярными являются Intel Cyclone V (используемый в MiSTer) и Xilinx Artix-7. Для передовых проектов более высокопроизводительные устройства, такие как Xilinx Kintex или Versal, предоставляют ресурсы для высокоскоростной памяти (DDR3 / DDR4), интерфейсы видеовыхода (HDMI, VGA, аналог), аудиокодеки и порты контроллера. Секвенирование мощности имеет решающее значение: современные FPGA требуют нескольких рельсов напряжения (ядро, приемопередатчик, банки ввода-вывода), которые должны наращиваться в определенном порядке, чтобы избежать повреждений и условий защелки.

Написание ядра в Verilog или VHDL

Сердцем консоли является аппаратное описание, которое определяет каждый компонент. Разработчики часто начинают с обратной инженерии оригинальных схем чипов или с использованием логических анализаторов для захвата сигналов от известного рабочего оборудования. Для широко поддерживаемых систем существующие ядра с открытым исходным кодом (например, в репозитории MiSTer) обеспечивают отправную точку. Код структурирован в модули: ядро процессора, видеопроцессор, аудиогенератор, контроллер памяти и шинный арбитр. Каждый модуль моделируется с помощью тестбенчей для проверки функциональности и правильности времени. Для моделирования используются такие инструменты, как ModelSim или Verilator , а закрытие Xilinx Vivado или Intel Quartus для синтеза и определения местоположения и маршрута. Закрытие времени — обеспечение всех путей удовлетворяет целевой тактовой частоте — часто требует нескольких итераций и тщательного управления ограничениями. Разработчики используют статический анализ времени (STA) для проверки того, что время установки и удержания удовлетворяются по углам процесса, напряжения и

Проверка и отладка

Отладка ядра FPGA значительно сложнее, чем отладка программного обеспечения. Вы не можете легко устанавливать точки останова или проверять переменные значения среднего цикла. Разработчики в значительной степени полагаются на интегрированные логические анализаторы (ILA) от Vivado или Quartus, которые используют запасную блоковую оперативную память для буферизации внутренних сигналов и потоковой передачи их по JTAG. Формальные инструменты проверки также набирают тягу; они математически доказывают, что реализация FPGA соответствует золотой эталонной модели. Для консольных ядер запуск фактических ROM-игр через вектор моделирования является окончательным тестом. Этот подход «партийного моделирования» может выполнять миллионы тактовых циклов в одночасье, чтобы поймать неуловимые ошибки. Проект MiSTer использует стандартный набор тестов известных хитрых ROM для проверки новых выпусков ядра.

Дизайн ПХБ и целостность сигнала

Физическая плата должна обрабатывать высокоскоростные сигналы для памяти DDR, HDMI (до 1,65 Гбит/с и более) и USB 2.0/3.0. Контролируемые следы импеданса (обычно 50 Ом одноконтурный, 90 Ом дифференциал для USB, 100 Ом для HDMI) имеют важное значение, как и разъединение конденсаторов рядом с каждым штифтом питания. Для ретро-аутентичности многие дизайнеры включают в себя оригинальные порты контроллера с сдвигателями уровня для обработки логики 5V. Аналоговые видеовыходы (RGB, S-Video, композитный) требуют внешних DAC и антисглаживающих фильтров. Аудио может быть выведено через I2S в HDMI или через отдельный DAC. Изоляция плоскости земли между цифровым и аналоговым секциями предотвращает шум от ухудшения качества видео. Термическое управление также важно; большая FPGA может рассеивать несколько ватт, требуя радиаторов и иногда активного охлаждения. Сеть передачи энергии (PDN) должна быть смоделирована, чтобы обеспечить перепады напряжения, которые вызывают

Интеграция программного обеспечения и пользовательский опыт

Как только аппаратное ядро будет доказано, нужна простая операционная система или загрузчик. Для ретро-систем это часто минимальное ядро Linux, которое загружает битстрим FPGA и представляет меню для выбора ROM. Пользовательский интерфейс должен обрабатывать файловые системы (FAT32, ext4), масштабирование дисплея и отображение контроллеров. Некоторые консоли также поддерживают сохранение состояний, читы и фильтры экрана. Для оригинальной разработки игр разработчики могут использовать мягкий процессор, такой как RISC-V, работающий с голым металлическим кодом, разгрузка графики и аудио на пользовательские ускорители FPGA. Инструменты синтеза высокого уровня (HLS) позволяют писать части дизайна на C++ и конвертировать их в аппаратное обеспечение, ускоряя разработку для программистов, незнакомых с HDL. Экосистема MiSTer использует «основной» двоичный код, который обрабатывает вход USB, меню OSD и доступ к файловой системе, в то время как ядро обрабатывает только аппаратную эмуляцию.

Реальные приложения и будущий потенциал

Ретро-игровая сохранность остается убийственным приложением. Устройства, такие как Analogue Pocket и MiSTer, позволяют игрокам наслаждаться классическими библиотеками, не полагаясь на эмуляторы, которые могут иметь ошибки синхронизации или задержку ввода. Инициатива openFPGA позволяет сообществу портировать ядра на платформах, гарантируя, что даже неясные системы могут быть испытаны подлинно. Недавний взрыв разработки ядра аркады означает, что целые игровые платы сохраняются в форме языка описания аппаратного обеспечения, защищая их от физического распада.

Помимо ретро, FPGA начинают появляться в современной разработке игр. Они могут ускорить вычислительные задачи, такие как моделирование физики, трассировка лучей в реальном времени и масштабирование ИИ (например, FSR или DLSS). Производители консоли экспериментировали с FPGA для обработки ввода-вывода (как в южном мосту PS4) или в качестве гибкой платформы прототипирования для пользовательского кремния. В виртуальной реальности FPGA могут обрабатывать синтез датчиков и асинхронное временное детерминирование с детерминированной задержкой, уменьшая укачивание. Возможность обновления аппаратных блоков с плавающей запятой или пользовательских кодеков после поставки консоли дает OEM-производителям уникальную гибкость.

Заглядывая вперед, чиплетные архитектуры могут позволить главному процессору / графическому процессору быть сопряженным с небольшой плиткой FPGA на том же интерпозиторе. Это даст разработчикам возможность перенастроить часть аппаратного обеспечения консоли после выпуска, позволяя такие функции, как пользовательские кодеки, ускорители безопасности или даже патчи ретро-совместимости. Схема инструментов с открытым исходным кодом Yosys и nextpnr делают разработку FPGA более доступной, уменьшая зависимость от дорогих проприетарных инструментов. Например, семейство Lattice ECP5 теперь имеет отличную поддержку с открытым исходным кодом через проект Trellis , позволяя недорогим платам, таким как OrangeCrab, запускать пользовательские ядра. По мере того, как затраты продолжают падать и программные инструменты улучшаются, ускоренные FPGA игры могут стать стандартной частью консольного ландшафта, преодолевая разрыв между аппаратным обеспечением с фиксированной функцией и постоянно развивающимися требованиями разработчиков игр.

Преодоление барьеров для усыновления

Несмотря на свои преимущества, разработка FPGA остается сложной. HDL-кодирование требует иного мышления, чем программирование программного обеспечения; условия гонки и проблемы с временем трудно отладить. Собственные инструменты, такие как Vivado и Quartus, являются большими и часто требуют дорогостоящих лицензий для высокопроизводительных устройств. Альтернативы с открытым исходным кодом все еще созревают и могут не поддерживать все семейства FPGA. Стоимость способной платы FPGA может быть значительной (DE10-Nano стоит около 200 долларов), а добавление оперативной памяти, видео вывода и контроллеров повышает цену. Полностью оборудованная установка MiSTer может превышать 500 долларов, что делает ее недосягаемой для случайных игроков. Массовое производство будет способствовать ASIC, но нишевый рынок премиального ретро-аппаратного оборудования оправдывает подход FPGA. Проверка задержки, необходимая для конструкций FPGA, требует дорогостоящих осциллографов и логических анализаторов, создавая высокий барьер для входа для отдельных разработчиков.

Однако сообщество достигло больших успехов. Образовательные ресурсы, такие как NANDLAND, предоставляют доступные учебные пособия для начинающих дизайнеров HDL. Веб-сайты, такие как , MiSTer Wiki, предлагают обширную документацию и предварительно построенные ядра. Схемы инструментов с открытым исходным кодом, такие как Yosys и NextPNR, достаточно созрели, чтобы обрабатывать сложные проекты на устройствах Lattice, освобождая разработчиков от блокировки поставщиков. По мере того, как все больше разработчиков знакомятся с цифровым дизайном, пул талантов растет. В ближайшие несколько лет можно увидеть консоли FPGA, которые не только сохраняют прошлое, но и позволяют новые формы интерактивных развлечений, которые были невозможны с фиксированным оборудованием, такие как пользовательские геометрические трубопроводы или двигатели процедурного поколения в реальном времени, реализованные полностью в логике.