mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР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:
@@ -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. После чего, необходимо убедиться, что процессор среагировал на данное прерывание, и в процессе его обработки в контроллер устройства вывода были поданы выходные данные.
|
||||
|
@@ -14,5 +14,5 @@
|
||||
30200073
|
||||
00412403
|
||||
00144413
|
||||
00812023
|
||||
00812223
|
||||
30200073
|
||||
|
@@ -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)
|
||||
# что означает возврат в бесконечный цикл
|
||||
|
Reference in New Issue
Block a user