Четыре библиотеки ниже — BaseLogicLib, BaseBoardLib, JsonLib и
SharpTools — находятся в папке Common/ репозитория и содержат код, общий для всего
проекта: BaseLogicLib предоставляет базовые логические примитивы, используемые в N-MOS чипах,
BaseBoardLib содержит компоненты, которые встречаются на симулируемых материнских платах,
JsonLib — универсальная библиотека для работы с JSON, а SharpTools собирает остальные
общие инструменты проекта.
Базовая логика
Базовые логические примитивы, используемые в N-MOS чипах.
Принципы реализации похожи на SystemC, но без использования SystemC :)
Симуляция фронтов
В буквальном смысле фронт не симулируется (в смысле временного интервала).
Вместо этого используется подход со сравнением предыдущего значения CLK с текущим.
Для целей эмуляции (M6502Core, APUSim, PPUSim) этот приём не
применяется, потому что большинство схем этих чипов сделано по NMOS-технологии с динамической логикой на
защёлках (DLatch).
Если вдруг понадобится симулировать фронт, в библиотеке есть два вызова (IsPosedge и
IsNegedge).
BaseBoardLib
Эта библиотека содержит компоненты, которые встречаются на симулируемых материнских платах.
Это не обязательно реальные чипы: это могут быть специальные отладочные компоненты, например
Fake6502.
40H368 — привязка ввода-вывода
Массив элементов notif0 (в терминах Verilog), используемый для привязки портов ввода-вывода.
Соединение внешних портов и CPU различается между Famicom/NES.
LS139 — «северный мост» Famicom/NES
Этот сдвоенный декодер используется для выбора адресного пространства интерфейса регистров PPU, внутренней S-RAM («Work RAM») или внешней ROM.
Отличительная особенность в том, что выход одной половины подаётся на этот же чип :-)
LS373 — защёлка адреса PPU VRAM
Используется для мультиплексирования шины адреса/данных PPU. «Запоминает» младшие 8 бит шины адреса PPU, когда PPU ALE=1.
SRAM — типичная S-RAM из 90-х
Ну, тут всё просто.
JsonLib
Универсальная библиотека для работы с JSON.
SharpTools
Readme.md этой библиотеки — просто заглушка: кроме заголовка в нём нет содержимого.