Уровень 24: Ручной пиксель

Открыть уровень →

Задание

Подключите 4 BusConstant к MatrixDisplay и зажгите пиксель в (0,0).

MatrixDisplay — матричный дисплей 16×16. У него 4 входа: - DevAddr (порт 0): номер порта (0x1C = установить X, 0x1D = установить Y, 0x1F = запись пикселя) - DataIn (порт 1): значение (для X/Y — координата 0–15, для записи — 1=зажечь, 0=погасить) - WE (порт 2): разрешение записи (1 = писать) - IO_SEL (порт 3): выбор устройства (1 = дисплей активен)

Материалы по теме

Решение

Здесь дисплей управляется не адресами памяти, а четырьмя отдельными шинами: DevAddr выбирает операцию, DataIn несёт значение, WE разрешает запись, IO_SEL активирует устройство. Это отличается от уровней 28–29, где экран прячется за адресами MMIO (252/253/255) и процессор общается с ним как с памятью.

Изначально X=0, Y=0. Чтобы зажечь пиксель в (0,0):

1. Выставьте первый BusConstant (DevAddr) в 0x1F (31) — режим записи пикселя. 2. Выставьте второй BusConstant (DataIn) в 1 — зажечь. 3. Выставьте третий BusConstant (WE) в 1 — разрешить запись. 4. Четвёртый BusConstant (IO_SEL) уже равен 1 — оставьте.

5. Соедините провода: - BusConstant#1 (Q) → MatrixDisplay (DevAddr, порт 0) - BusConstant#2 (Q) → MatrixDisplay (DataIn, порт 1) - BusConstant#3 (Q) → MatrixDisplay (WE, порт 2) - BusConstant#4 (Q) → MatrixDisplay (IO_SEL, порт 3)

Нажмите чекпойнт — пиксель в левом верхнем углу должен загореться!

Схема решения уровня 24 — Ручной пиксель
Авторское решение уровня 24 в симуляторе (тёмная тема)