Перевод этой страницы:
ru

Breaking NES Wiki

Данный ресурс содержит исчерпывающую информацию по трём микросхемам : MOS 6502, Ricoh 2A03 и Ricoh 2C02.

Микросхемы 2A03 (APU) и 2С02 (PPU) являются основой игровой приставки Nintendo NES, Famicom и их многочисленных аналогов.

Поскольку процессор 6502 в немного "урезанном" варианте входит в состав микросхемы 2A03, он изучается отдельно.

Процессор 6502:
mos_6502ad_top.jpg

Микросхемы APU и PPU различных ревизий:
2701408_600px.jpg

Источник информации

Источником информации являются микрофотографии микросхем в высоком разрешении.

В то время микросхемы были очень простые и производились по технологии NMOS, с одним поверхностным слоем металла. Поэтому для получения векторных масок достаточно сделать два типа фотографий : фотографию поверхности с металлом и фотографию без металла. Обычно для снятия металла у старых микросхем применяют кипящую серную кислоту.

Микросхемы под микроскопом выглядят примерно вот так :
6502_die_shot.jpg apu_die_shot.jpg ppu_die_shot.jpg
(6502, APU и PPU соответственно)

После получения векторных масок на них производится поиск транзисторов, которые в итоге формируют логическую схему. Процесс создания векторных масок, рисование транзисторных и логических схем подробно освещён в моих стримах.

Структура и назначение вики

Все основные фото и видео-материалы вы можете найти на главном сайте проекта.

В функции вики входит подробное описание всех функциональных блоков микросхем, с результатами программной симуляции каждого блока. Тем самым мы постепенно заменяем раздел "Чтиво" с главного сайта, поскольку там не очень удобно было отслеживать изменения. А тут вы можете сразу узнать что новенького :-)

Вики разделена на 3 раздела, по количеству изучаемых микросхем. Через навигационное меню можно ознакомиться с основными функциональными блоками каждой микросхемы.

Каждый раздел представляет собой подробное рассмотрение вначале транзисторной схемы, потом логической схемы и в результате производится симуляция всего блока, для проверки логики его работы. В качестве "базовой" логики используются следующие "примитивы" на языке Си:

#define BIT(n)     ( (n) & 1 )    // вырезать все лишнее
int NOT(int a) { return (~a & 1); }       // НЕ
int NAND(int a, int b) { return ~((a & 1) & (b & 1)) & 1; }     // И-НЕ
int NOR(int a, int b) { return ~((a & 1) | (b & 1)) & 1; }      // ИЛИ-НЕ

Как обычно, для понимания материала необходимо знание микроэлектроники, программирования и туго набитый косячок :-) Приятного просмотра!

Прогресс

6502

Схема Топология Красивая транзисторная схема Логическая схема Симуляция
Тайминг (PHI0, PHI1, PHI2)
Контакт RDY
Контакт SO
Контакт SYNC
Контакт R/W
Обработка прерываний
Регистр инструкций
Расширенный счетчик циклов
Предварительное декодирование
Декодер
Управление регистрами
Управление АЛУ
Управление счетчиком инструкций (PC)
Управление шинами
Логика исполнения (dispatch)
Логика установки флагов
Флаги
Логика условных переходов
Адресная шина
Шина данных
Регистры X,Y,S
АЛУ
Счетчик инструкций (PC)

Подход к симулированию схем

На протяжении времени с изучением новых материалов меняются также и подходы к симуляции изучаемых схем.

Все мысли и идеи можно почитать тут :

Подходы к симуляции

start.txt · Последние изменения: 2014/01/27 09:41 — org
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki