Breaking NES Wiki
Данный ресурс содержит исчерпывающую информацию по трём микросхемам : MOS 6502, Ricoh 2A03 и Ricoh 2C02.
Микросхемы 2A03 (APU) и 2С02 (PPU) являются основой игровой приставки Nintendo NES, Famicom и их многочисленных аналогов.
Поскольку процессор 6502 в немного "урезанном" варианте входит в состав микросхемы 2A03, он изучается отдельно.
Источник информации
Источником информации являются микрофотографии микросхем в высоком разрешении.
В то время микросхемы были очень простые и производились по технологии NMOS, с одним поверхностным слоем металла. Поэтому для получения векторных масок достаточно сделать два типа фотографий : фотографию поверхности с металлом и фотографию без металла. Обычно для снятия металла у старых микросхем применяют кипящую серную кислоту.
Микросхемы под микроскопом выглядят примерно вот так :
(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; } // ИЛИ-НЕ
Как обычно, для понимания материала необходимо знание микроэлектроники и программирования.
Приятного просмотра!