AddrDecoder (Дешифратор адреса)

Входы (Inputs)

ПинТипОписание
Addrbus8Адрес (0–255), поступает от операнда инструкции или индексного регистра

Выходы (Outputs)

ПинТипОписание
RAM_SELbit1 = активна RAM, 0 = активен I/O
RAM_SEL8bus80xFF при RAM, 0x00 при I/O — маска для гейтирования выхода RAM через BusAND
IO_SELbit1 = активно I/O-устройство, 0 = не активно
DevAddrbus8Адрес устройства в пространстве I/O (0–31), равен Addr & 0x1F

Логика работы

AddrDecoder — комбинационная схема, разделяющая единое адресное пространство 0–255 на две зоны: RAM и I/O. Основа Memory-Mapped I/O (отображение устройств ввода-вывода на адресное пространство памяти).

Зона RAM: адреса 0x00–0xDF (0–223)

Когда Addr < 0xE0 (адрес меньше 224):

Зона I/O: адреса 0xE0–0xFF (224–255)

Когда Addr ≥ 0xE0 (адрес от 224 до 255):

Карта устройств I/O

АдресDevAddrУстройство
0xE00x00— (резерв)
0xFA0x1ALFSR (генератор случайных чисел)
0xFC0x1CMatrixDisplay — координата X
0xFD0x1DMatrixDisplay — координата Y
0xFE0x1EGamepad (геймпад)
0xFF0x1FMatrixDisplay — значение пикселя

Применение

Используется на уровнях 22–29. AddrDecoder — фундамент Memory-Mapped I/O, без которого процессор не может взаимодействовать с периферией. Типичная схема подключения:

Без AddrDecoder процессор сможет работать только с RAM и не сможет читать геймпад, выводить графику на MatrixDisplay или получать случайные числа от LFSR.