Здесь я буду выкладывать свои изыскания при построении тактово точной модели Денди для реализации в FPGA. Небольшой дисклаймер:
1. Не спрашивайте, для чего это мне, мне просто нравится этим заниматься. Не загаживайте тему, сделайте одолжение тем, кому будет интересно.
2. Вся фундаментальная информация взята с нашего проекта BreakNES, за что особая благодарность Org'у - он сделал львиную долю по распознаванию транзисторной схемы. Можно посмотреть записи стримов, чтобы узнать, как он это делал. Без него этого проекта бы не было.
3. На данный момент у нас есть декап и транзисторная эквивалентная схема оригинальных NTSC микросхем CPU 2A03 и PPU 2C02 ревизии G. Поэтому, первичная модель будет оригинально NTSC, как USA NES или FamiCom. Но мы уже закинули в очередь декаперу PAL версии NES и, самое главное, 6527/6538 от нашей любимой Денди. Так что в итоге, после нахождения разницы, модель будет мультиформатной.
4. Система делается под разъем картриджей и будет 100% совместима с ними (в пределах родного региона и режима). Она будет содержать весь набор сигналов, который имеет оригинальная консоль.
5. Видеовыход будет сдвоенный, одновременно композит и S-Video. Причем, по всем правилам формирования сигнала оригинального PPU (для композита) и его адаптации под S-Video. Кому нужен RGB - пусть изменяют модель сами.
6. Так как система относительно сложная, то создание модели будет разбито на этапы. И в первую очередь будет запущен PPU, т.е. имея рабочий PPU можно уже ковырять CPU. На стадии обкатки модель будет прогоняться вот в этой приставке:
Не спрашивайте меня, где такую достать, сами догадаетесь. Отличительная особенность этого стенда в том, что набортная VRAM будет уже внутри FPGA.
7. В виду очевидных причин, данная модель будет обкатываться именно на FPGA фирмы Altera. Пользователи Xilinx будут адаптировать проект под свои системы сами.
8. Здесь я буду выкладывать свой личный опыт программирования ПЛИС. Моя философия может отличаться от вашей и/или описанной в книжках по xHDL. Смиритесь с этим.
Данный пост будет в будущем обновляться. Ну, вроде пока все, на первое время. Чтобы не загромождать тред, пожалуйста, спрашивайте строго по теме, остальные вопросы можно в соседнюю "Денди тему".
- - - Добавлено - - -
Итак, начинаем разбор PPU.
В сети гуляет вот такая картинка, выдранная из патента:
На ней абстрактно показаны самые важные узлы PPU. Я буду придерживаться данной блок-схемы, насколько это возможно.
Блок #1: Выбор регистра PPU.
Блок #2: Системные регистры PPU.
Блок #3: Синхрогенератор PPU.
Блок #4: Управление локальной шиной PPU. / Мультиплексор шины данных PPU.