ЛР13. Исправление варианта ps2+led (#86)

* ЛР13. Исправление программы

Вместо записи по адресу  значения, выводимого на светодиоды, должна производиться запись по адресу режима мигания.

* ЛР 13. Уточнение рекомендации

При уменьшении значения, до которого считает счётчик, только в 10 раз (то есть с 20 млн. до 2 млн.) светодиоды не успевают моргнуть ни одного раза за всё время симуляции. Чтобы мигания стали видны это значение нужно уменьшать до порядка тысяч.

* Update Labs/13. Peripheral units/README.md

---------

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
This commit is contained in:
NikanorovVD
2024-06-12 14:15:34 +03:00
committed by GitHub
parent 1ff71c55ea
commit 8f910e6f5f
3 changed files with 3 additions and 3 deletions

View File

@@ -167,7 +167,7 @@ _Рисунок 2. Карта памяти периферийных устрой
6. Проверьте работу процессорной системы с помощью моделирования.
1. Для каждой пары контроллеров в папке `firmware/mem_files` представлены файлы, инициализирующие память инструкций. Обратите внимание, что для пары "PS2-VGA" также необходим файл, инициализирующий память данных (в модуле `ext_mem` необходимо прописать блок `$readmemh`).
2. Исходный код программ с адресами и результирующими инструкциями находится в папке `firmware/software`.
3. При моделировании светодиодов лучше уменьшить значение, до которого считает счетчик в режиме "моргания" в 10 раз, чтобы уменьшить время моделирования. Перед генерацией битстрима это значение будет необходимо восстановить.
3. При моделировании светодиодов лучше уменьшить значение, до которого считает счетчик в режиме "моргания" в 1000 раз, чтобы сократить время моделирования до очередного переключения светодиодов. Перед генерацией битстрима это значение будет необходимо восстановить.
4. Для проверки тестбенч имитирует генерацию данных периферийных устройств ввода. При реализации контроллера клавиатуры или uart_rx рекомендуется ознакомиться с тем, какие именно данные тестбенч подает на вход.
5. Для того, чтобы понять, что устройство работает должным образом, в первую очередь необходимо убедиться, что контроллер устройства ввода успешно осуществил прием данных (сгенерированные тестбенчем данные оказались в соответствующем регистре контроллера периферийного устройства) и сгенерировал запрос на прерывание.
6. После чего, необходимо убедиться, что процессор среагировал на данное прерывание, и в процессе его обработки в контроллер устройства вывода были поданы выходные данные.

View File

@@ -14,5 +14,5 @@
30200073
00412403
00144413
00812023
00812223
30200073

View File

@@ -43,6 +43,6 @@ trap_handler:
change_mode:
38: 00412403 lw x8, 4(x2) # считываем значение текущего режима
3c: 00144413 xori x8, x8, 1 # инвертируем его младший бит
40: 00812023 sw x8, 0(x2) # записываем инвертированный режим
40: 00812223 sw x8, 4(x2) # записываем инвертированный режим
44: 30200073 mret # возвращаем управление программе (pc = mepc)
# что означает возврат в бесконечный цикл