ПЗУ (ROM)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| Addr | bus8 | Адрес (0–255) |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Data | bus8 | Данные из ячейки Addr |
Логика работы
ROM — это зашитая программа, «прошивка» компьютера. Внутри 256 ячеек, и в каждой лежит ровно один байт. Обращаешься к памяти по адресу — и получаешь содержимое нужной ячейки: как в гостинице, где номер комнаты мгновенно говорит, кого искать внутри.
Главное свойство: во время работы схемы ROM только читается. Содержимое записывается один раз — через панель Ассемблера: скомпилировал программу, и байты разложились по ячейкам. Адрес на входе Addr обычно крутится с выхода ProgramCounter, поэтому чтение идёт команда за командой. В каждом байте зашита пара: старшие 4 бита — код операции, младшие — операнд. Например, байт 00010101 означает «код 1, операнд 5».
Нюанс: пустые ячейки хранят нули, а схема у ROM комбинационная — адрес появился, байт тут же на выходе, без всяких тактов. Прошивка живёт до следующей компиляции: перезапустишь симуляцию без перепрошивки — программа останется на месте, в отличие от данных в RAM.
Примеры
| Addr | Data (bin) | Старшие биты — код операции | Младшие биты — операнд |
|---|---|---|---|
| 0 | 00010101 | 0001 | 0101 |
| 1 | 00100010 | 0010 | 0010 |
| 2 | 00010000 | 0001 | 0000 |
| 255 | 00000000 | — | — (пустая ячейка) |
Программа в первых трёх ячейках: каждая строка — одна инструкция, уже превращённая ассемблером в байт. Счётчик команд читает их по порядку: 0, 1, 2…
Применение
ROM — память команд процессора в Гарвардской архитектуре: команды живут отдельно от данных (уровень 16 и все уровни 18–29). Связка простая: ProgramCounter указывает адрес, ROM выдаёт байт команды, Splitter делит его на код операции и операнд, а Decoder превращает код в управляющие сигналы.
Конкретный путь программы: ты пишешь её на ассемблере человеческими словами, компилятор переводит мнемоники в байты и зашивает их в ROM, дальше процессор выполняет их автоматически. Разделение «команды в ROM, данные в RAM» даёт главный бонус Гарварда — процессор читает новую команду и обращается к данным одновременно, по двум независимым шинам.
Смежные компоненты
Статьи по теме
Частые вопросы
Можно ли изменить программу в ROM?
Только через редактор ROM до запуска: во время работы схемы ROM только читается.
Зачем хранить команды отдельно от данных?
Это идея Гарвардской архитектуры: процессор читает команду из ROM и обращается к данным в RAM одновременно, по двум разным шинам. Бонус — программа физически не может случайно затереть саму себя записью в память.
Сколько программы помещается в ROM?
256 байт — по одному байту на инструкцию. Этого хватает для учебных программ: вывода на дисплей, змейки, работы с геймпадом.