ПЗУ (ROM)

Входы (Inputs)

ПинТипОписание
Addrbus8Адрес (0–255)

Выходы (Outputs)

ПинТипОписание
Databus8Данные из ячейки Addr

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

ROM — это зашитая программа, «прошивка» компьютера. Внутри 256 ячеек, и в каждой лежит ровно один байт. Обращаешься к памяти по адресу — и получаешь содержимое нужной ячейки: как в гостинице, где номер комнаты мгновенно говорит, кого искать внутри.

Главное свойство: во время работы схемы ROM только читается. Содержимое записывается один раз — через панель Ассемблера: скомпилировал программу, и байты разложились по ячейкам. Адрес на входе Addr обычно крутится с выхода ProgramCounter, поэтому чтение идёт команда за командой. В каждом байте зашита пара: старшие 4 бита — код операции, младшие — операнд. Например, байт 00010101 означает «код 1, операнд 5».

Нюанс: пустые ячейки хранят нули, а схема у ROM комбинационная — адрес появился, байт тут же на выходе, без всяких тактов. Прошивка живёт до следующей компиляции: перезапустишь симуляцию без перепрошивки — программа останется на месте, в отличие от данных в RAM.

Примеры

AddrData (bin)Старшие биты — код операцииМладшие биты — операнд
00001010100010101
10010001000100010
20001000000010000
25500000000—— (пустая ячейка)

Программа в первых трёх ячейках: каждая строка — одна инструкция, уже превращённая ассемблером в байт. Счётчик команд читает их по порядку: 0, 1, 2…

Применение

ROM — память команд процессора в Гарвардской архитектуре: команды живут отдельно от данных (уровень 16 и все уровни 18–29). Связка простая: ProgramCounter указывает адрес, ROM выдаёт байт команды, Splitter делит его на код операции и операнд, а Decoder превращает код в управляющие сигналы.

Конкретный путь программы: ты пишешь её на ассемблере человеческими словами, компилятор переводит мнемоники в байты и зашивает их в ROM, дальше процессор выполняет их автоматически. Разделение «команды в ROM, данные в RAM» даёт главный бонус Гарварда — процессор читает новую команду и обращается к данным одновременно, по двум независимым шинам.

Собери это сам →

Смежные компоненты

Статьи по теме

Частые вопросы

Можно ли изменить программу в ROM?

Только через редактор ROM до запуска: во время работы схемы ROM только читается.

Зачем хранить команды отдельно от данных?

Это идея Гарвардской архитектуры: процессор читает команду из ROM и обращается к данным в RAM одновременно, по двум разным шинам. Бонус — программа физически не может случайно затереть саму себя записью в память.

Сколько программы помещается в ROM?

256 байт — по одному байту на инструкцию. Этого хватает для учебных программ: вывода на дисплей, змейки, работы с геймпадом.