mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 09:40:10 +00:00
ЛР12. Стилистические правки документа
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Лабораторная работа 12 "Периферийные устройства"
|
||||
# Лабораторная работа 12 "Периферийные устройства"
|
||||
|
||||
На прошлой лабораторной работе вы реализовали свой собственный RISC-V процессор. Однако пока что он находится "в вакууме" и никак не связан с внешним миром. Для исправления этого недостатка вами будет реализована системная шина, через которую к процессору смогут подключаться различные периферийные устройства.
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||

|
||||
|
||||
_Рисунок 1. Итоговая структура процессорной системы_
|
||||
_Рисунок 1. Итоговая структура процессорной системы._
|
||||
|
||||
### Активация выбранного устройства
|
||||
|
||||
@@ -131,7 +131,7 @@ sys_clk_rst_gen divider(.ex_clk_i(clk_i),.ex_areset_n_i(resetn_i),.div_i(10),.sy
|
||||
|
||||

|
||||
|
||||
_Рисунок 2. Карта памяти периферийных устройств_
|
||||
_Рисунок 2. Карта памяти периферийных устройств._
|
||||
|
||||
Работа с картой осуществляется следующим образом. Под названием каждого периферийного устройства указана старшая часть адреса (чему должны быть равны старшие 8 бит адреса, чтобы было сформировано обращение к данному периферийному устройству). Например, для переключателей это значение равно `0x01`, для светодиодов `0x02` и т.п.
|
||||
В самом левом столбце указаны используемые/неиспользуемые адреса в адресном пространстве данного периферийного устройства. Например для переключателей есть только один используемый адрес: `0x000000`. Его функциональное назначение и разрешения на доступ указаны в столбце соответствующего периферийного устройства. Возвращаясь к адресу `0x000000` для переключателей мы видим следующее:
|
||||
@@ -168,10 +168,10 @@ _Рисунок 2. Карта памяти периферийных устрой
|
||||
1. Для каждой пары контроллеров в папке `firmware/mem_files` представлены файлы, инициализирующие память инструкций. Обратите внимание, что для пары "PS2-VGA" так же необходим файл, инициализирующий память данных (в модуле `ext_mem` необходимо прописать блок `$readmemh`).
|
||||
2. Исходный код программ с адресами и результирующими инструкциями находится в папке `firmware/software`.
|
||||
3. При моделировании светодиодов лучше уменьшить значение, до которого считает счетчик в режиме "моргания" в 10 раз, чтобы уменьшить время моделирования. Перед генерацией битстрима это значение будет необходимо восстановить.
|
||||
7. Переходить к следующему пункту можно только после того, как вы полностью убедились в работоспособности модуля на этапе моделирования (увидели корректные значения на выходных сигналах периферии, либо (если по сигналам периферии сложно судить о работоспособности), значениям в контрольных/статусных регистрах модуля-контроллера этой периферии). Генерация битстрима будет занимать у вас долгое время, а итогом вы получите результат: заработало / не заработало, без какой-либо дополнительной информации, поэтому без прочного фундамента на моделировании далеко уехать у вас не выйдет.
|
||||
7. Переходить к следующему пункту можно только после того, как вы полностью убедились в работоспособности модуля на этапе моделирования (увидели корректные значения на выходных сигналах периферии, либо (если по сигналам периферии сложно судить о работоспособности), значениям в контрольных/статусных регистрах модуля-контроллера этой периферии). Генерация битстрима будет занимать у вас долгое время, а итогом вы получите результат: заработало / не заработало, без какой-либо дополнительной информации, поэтому без прочного фундамента на моделировании далеко уехать у вас не выйдет.
|
||||
<!-- 1. Для каждой пары контроллеров периферии предложено две программы: с обновлением данных по опросу и по прерываниям. Запустите моделирование сначала для одной программы, затем для другой (для этого необходимо обновить файл, инициализирующий память инструкций). После проверки работоспособности процессора, сравните поведение сигналов LSU для этих программ. -->
|
||||
7. Подключите к проекту файл ограничений ([nexys_a7_100t.xdc](nexys_a7_100t.xdc)), если тот еще не был подключен, либо замените его содержимое данными из файла к этой лабораторной работе.
|
||||
8. Проверьте работу вашей процессорной системы на отладочном стенде с ПЛИС.
|
||||
8. Подключите к проекту файл ограничений ([nexys_a7_100t.xdc](nexys_a7_100t.xdc)), если тот еще не был подключен, либо замените его содержимое данными из файла к этой лабораторной работе.
|
||||
9. Проверьте работу вашей процессорной системы на отладочном стенде с ПЛИС.
|
||||
1. Обратите внимание, что в данной лабораторной уже не будет модуля верхнего уровня `nexys_...`, так как ваш модуль процессорной системы уже полностью самостоятелен и взаимодействует непосредственно с ножками ПЛИС через модули, управляемые контроллерами периферии.
|
||||
|
||||
---
|
||||
@@ -625,13 +625,13 @@ endmodule
|
||||
|
||||

|
||||
|
||||
_Рисунок 3. Пример вывода на экран символьной информации_
|
||||
_Рисунок 3. Пример вывода на экран символьной информации._
|
||||
|
||||
Для управления выводимым на экран содержимым, адресное пространство модуля разделено на следующие диапазоны:
|
||||
|
||||

|
||||
|
||||
_Рисунок 4. Карта памяти vga-модуля_
|
||||
_Рисунок 4. Карта памяти vga-модуля._
|
||||
|
||||
Для того, чтобы вывести символ на экран, необходимо использовать адрес этого символа на сетке `80x30` (диапазон адресов `char_map`). К примеру, мы хотим вывести символ в верхнем левом углу. Это нулевой символ в диапазоне адресов `char_map`. Поскольку данный диапазон начинается с адреса `0x0000_0000`, запись по этому адресу приведет к отображению символа, соответствующего [ASCII-коду](https://www.asciitable.com/), пришедшему на `write_data_i`.
|
||||
|
||||
@@ -649,7 +649,7 @@ _Рисунок 4. Карта памяти vga-модуля_
|
||||
|
||||

|
||||
|
||||
_Рисунок 5. Цветовая палитра vga-модуля_
|
||||
_Рисунок 5. Цветовая палитра vga-модуля._
|
||||
|
||||
Код цвета формируется следующим образом: старший бит определяет яркость оттенка цвета. Оставшиеся 3 бита кодируют используемый канал:
|
||||
|
||||
|
Reference in New Issue
Block a user