486Tang – 486 on a credit-card-sized FPGA board
486Tang — 486 на FPGA размером с банковскую карту.
Вчера выложил на GitHub 486Tang v0.1: порт ядра ao486 (MiSTer) на китайскую Tang Console 138K. Первый запуск x86 вне Altera.
Архитектура
- SDRAM вместо DDR3: 16-бит, читаем по 32 бита за такт (2× частота).
- IDE на SD: BIOS, VGA-BIOS, CMOS и IDENTIFY в первых 128 КБ карты; загрузчик FPGA читает их сам.
- DDR3 отдана только фреймбуферу.
Отладка
- Verilator: загрузка до DOS за минуту, полные вейвформы.
- Bochs-BIOS пишет в порт 0x8888; вывод в терминал симулятора и UART.
- Флаги
--sound,--ideдля быстрого трассирования подсистем. - 90 % багов — новый «клей»; пара сломалась из-за странного поведения синтезатора Gowin.
Производительность
Из коробки — 25 МГц 386-уровня.
Ускоряли:
- Разбили сеть сброса (5 000 фан-аут → репликация вручную).
- Укоротили путь выборки: в
decoder_regs.vвынесли расчётconsume_countиз критического пути, добавив регистр. - Проверяли изменения тестом test386.asm.
Цель — 33 МГц 486DX2.