Skip to content

Память: SRAM и первая программа руками

Паспорт модуля

ПараметрЗначение
Аудитория🟡🔴; 🟢 — экскурс «записать и прочитать байт» на занятии 2; пройдены М7–М8
Аутентичная задачасобрать модуль памяти с ручным программированием и вписать в неё первую программу процессора байт за байтом — как это делали на первых ЭВМ
Объём4 занятия × 90 мин
ОборудованиеSRAM 32К×8 (62256/CY62256-класс; используем младшие 256 адресов), 74HC173 ×2 (MAR), 74HC245, DIP ×2, кнопка WRITE с антидребезгом (М5!), тумблер RUN/PROG, RP2350-монитор
Ограничения5 В; SRAM энергозависима — «программа живёт, пока есть питание» проговаривается явно
Аутентичная задача. После модуля обучающиеся смогут: вручную записать в RAM программу из М13 (машинные коды из таблицы Я74-ISA) и прочитать её обратно без ошибок — навык, который делает осмысленным и ассемблер (М14), и загрузчик (М17).

Цели

Обучающиеся …Блум—АндерсонМиллерПроверка
1объясняют роль сигналов /CE, /OE, /WE и цикл записипониматьзнаетквиз + временная диаграмма от руки
2собирают тракт MAR→RAM→шина в дисциплине М7применятьпоказывает какприёмка узла
3записывают и верифицируют 16-байтовую последовательностьприменятьпоказывает какверификация RP2350
4диагностируют типовые сбои памяти (перепутанные адресные линии, «затирание»)анализироватьпоказывает какдебаг-кейс

Оценивание

ЗанятиеЦельСредствоТип
21, 2приёмка: чтение возвращает записанное по трём произвольным адресамформирующее
33«золотой дамп»: 16 байт записаны, RP2350 читает и сравнивает — 0 расхожденийформирующее
44дебаг-кейс: заложены обмен A0↔A3 и /WE без антидребезга; протокол локализацииитоговое

Путь и разборы

ТемаРазминкаЯдро
1Устройство SRAMсценарии PC (М8)worked example: матрица ячеек-защёлок (мост к М5!), дешифратор адреса (мост к М2!) — память «собрана» из уже пройденного; сигналы /CE, /OE, /WE и почему /OE и /WE не бывают активны одновременно
2MAR и тракт3 вопроса зан. 1регистр адреса MAR слушает шину (MI); данные RAM ходят в шину через 245 (RO) и из шины при записи (RI)
3Ручное программированиевременная диаграмма записирежим PROG: адрес и байт с DIP, короткий /WE кнопкой (антидребезг из М5 — иначе «одна запись» затирает соседние такты); запись контрольного паттерна 0x00,0xFF,0xAA,0x55 + адресный марш
4Дебаг памятикумулятивный квиз М7–М9кейс: почему паттерн 0xAA/0x55 и адресный марш ловят замыкания соседних линий данных и обмен адресных линий
    flowchart LR
    BUS(("ШИНА")) -- MI --> MAR[MAR 8 бит]
    MAR --> ADDR[A0..A7 SRAM\nA8..A14 = GND]
    BUS -- RI --> DIN[Данные записи]
    DIN --> RAM[(SRAM 32К×8)]
    RAM -- RO --> BUS
    CTRL["/CE /OE /WE\nот тумблера PROG или УУ"] --> RAM
  
Почему тестовые паттерны именно такие: 0xAA/0x55 — шахматка соседних бит, ловит замыкания линий данных; адресный марш «записать в адрес N его номер, потом проверить всё» ловит перепутанные/закороченные адресные линии (два адреса «смотрят» в одну ячейку). Это настоящая производственная методика самотестирования памяти, доступная на макетке.
Типичные ошибки: /WE дребезжит — одна «запись» портит несколько ячеек (симптом: сосед по адресу изменился); чтение при активном /WE — конфликт на линиях данных; неиспользуемые старшие адреса A8–A14 висят — «программа исчезает» при касании платы (строго на GND); выключили питание «на минутку» — SRAM всё забыла (это не ошибка, это физика: обсудить FRAM как современную альтернативу).

Уровни

Глоссарий