mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
Удаление лишней запятой в порядках выполнения лабораторных
This commit is contained in:
@@ -340,7 +340,7 @@ mоdulе rf_r𝚒sсv(
|
||||
1. Путем добавления мультиплексора перед выходным сигналом чтения (мультиплексор будет определять, пойдут ли на выход данные из ячейки регистрового файла, либо, в случае если адрес равен нулю, на выход пойдет константа ноль).
|
||||
2. Путем инициализации нулевого регистра нулевым значением и запретом записи в этот регистр (при записи и проверки write_enable добавить дополнительную проверку на адрес).
|
||||
3. Каким образом будет реализована эта особенность регистрового файла не важно, выберите сами.
|
||||
3. После описания регистрового файла, его необходимо проверить с помощью [`тестового окружения`](../../Basic%20Verilog%20structures/Testbench.md).
|
||||
3. После описания регистрового файла его необходимо проверить с помощью [`тестового окружения`](../../Basic%20Verilog%20structures/Testbench.md).
|
||||
1. Тестовое окружение находится [`здесь`](tb_rf_riscv.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что в качестве top-level модуля выбран корректный (`tb_rf_riscv`).
|
||||
|
@@ -353,7 +353,7 @@ endmodule
|
||||
3. Сигнала разрешения записи в регистровый файл
|
||||
4. Мультиплексор, выбирающий слагаемое для программного счетчика
|
||||
5. Мультиплексор, выбирающий источник записи в регистровый файл.
|
||||
3. После описания модуля, его необходимо проверить с помощью [`тестового окружения`](../../Basic%20Verilog%20structures/Testbench.md).
|
||||
3. После описания модуля его необходимо проверить с помощью [`тестового окружения`](../../Basic%20Verilog%20structures/Testbench.md).
|
||||
1. Тестовое окружение находится [`здесь`](tb_cybercobra.sv).
|
||||
2. Программа, которой необходимо проинициализировать память инструкций находится в файле [program.mem](program.mem). Алгоритм работы программы приведен в разделе [`Финальный обзор`](#финальный-обзор).
|
||||
3. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
|
@@ -428,7 +428,7 @@ endmodule
|
||||
6. Определив тип операции, вы сможете определить какая конкретно операция по полям `func3` и `func7` (если данный тип имеет такие поля).
|
||||
7. Не забывайте, что в случае, если на каком-то из этапов (определения типа, или определения конкретной операции) вам приходит непредусмотренное ISA значение какого-либо поля, необходимо выставить сигнал `illegal_instr_o`.
|
||||
8. В случае некорректной инструкции, вы должны гарантировать, что не произойдет условный/безусловный переход, а во внешнюю память, регистровый файл, а также регистры контроля и статуса ничего не запишется. Не важно, что будет выполняться на АЛУ, не важно какие данные будут выбраны на мультиплексоре источника записи. Важно чтобы не произошел сам факт записи в любое из устройств (подумайте какие значения для каких сигналов необходимо для этого выставить).
|
||||
3. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
3. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [`здесь`](tb_decoder_riscv.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что выбран правильный модуль верхнего уровня.
|
||||
|
@@ -119,7 +119,7 @@ _Рисунок 3. Операции запросов на запись._
|
||||
4. Обратите внимание что работа с памятью должна осуществляться только когда сигнал `mem_req_i == 1`. В противном случае запись не должна производиться, а на шине `read_data_o` должен оставаться результат предыдущего чтения.
|
||||
5. При этом запись должна вестись только в те байты выбранной ячейки памяти, которым соответствуют биты сигнала `byte_enable_i`, выставленные в `1`.
|
||||
6. У памяти есть дополнительный выход `ready_o`, который всегда равен единице.
|
||||
3. После описания памяти данных, её необходимо проверить с помощью тестового окружения.
|
||||
3. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [`здесь`](tb_data_mem.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что в качестве top-level модуля выбран корректный (`tb_data_mem`).
|
||||
|
@@ -61,7 +61,7 @@ _Рисунок 1. Микроархитектура ядра процессор
|
||||
|
||||
Кроме того, в данной микроархитектуре используется пять различных видов констант (соответствующих определенным типам инструкций).
|
||||
|
||||
Константы `I`, `U`, `S` используются для вычисления адресов и значений. Поэтому все эти константы должны быть подключены к АЛУ. А значит теперь, для выбора значения для операндов требуются мультиплексоры, определяющие что именно будет подаваться на АЛУ.
|
||||
Константы `I`, `U`, `S` используются для вычисления адресов и значений. Поэтому все эти константы должны быть подключены к АЛУ. А значит теперь, для выбора значения для операндов требуются мультиплексоры, определяющие, что именно будет подаваться на АЛУ.
|
||||
|
||||
Обратите внимание на константу `imm_U`. В отличие от всех остальных констант, она не знакорасширяется, вместо этого к ней "приклеивается" справа 12 нулевых бит.
|
||||
|
||||
@@ -205,7 +205,7 @@ _Листинг 2. Программа из Листинга 1, представ
|
||||
6. В конце останется описать логику работы программного счетчика.
|
||||
3. Создайте в проекте новый `SystemVerilog`-файл `riscv_unit.sv` и опишите в нем модуль `riscv_unit`, объединяющий ядро процессора (`riscv_core`) с памятями инструкция и данных.
|
||||
1. **При создании объекта модуля `riscv_core` в модуле `riscv_unit` вы должны использовать имя сущности `core` (т.е. создать объект в виде: `riscv_core core(...`)**.
|
||||
3. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
3. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [`здесь`](tb_riscv_unit.sv).
|
||||
2. Программа, которой необходимо проинициализировать память инструкций находится в файле [`program.mem`](program.mem).
|
||||
3. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
|
@@ -236,7 +236,7 @@ _Рисунок 6. Структурная схема модуля `riscv_lsu`._
|
||||
1. При описании обратите внимание на то, что большая часть модуля является чисто комбинационной. В этом плане реализация модуля будет частично похожа на реализацию декодера.
|
||||
1. При описании мультиплексоров, управляемых сигналом core_size_i посредством конструкции `case`, не забывайте описать блок `default`, иначе вы получите защелку!
|
||||
2. Однако помимо комбинационной части, в модуле будет присутствовать и один регистр.
|
||||
3. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
3. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [здесь](tb_lsu.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что в качестве top-level модуля выбран корректный (`tb_lsu`).
|
||||
|
@@ -391,7 +391,7 @@ endmodule
|
||||
1. В `Design Sources` проекта с предыдущих лаб, создайте `SystemVerilog`-файл `csr_controller.sv`.
|
||||
2. Опишите в нем модуль `csr_controller` с таким же именем и портами, как указано в [задании](#задание).
|
||||
3. Обратите внимание на наличие импорта пакета `csr_pkg`, данный пакет содержит адреса используемых регистров контроля и статуса, которыми будет удобно пользоваться при реализации модуля.
|
||||
3. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
3. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [здесь](tb_csr.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что в качестве top-level модуля выбран корректный (`tb_csr`).
|
||||
@@ -400,7 +400,7 @@ endmodule
|
||||
5. Реализуйте модуль `interrupt_controller`. Для этого:
|
||||
1. В `Design Sources` проекта с предыдущих лаб, создайте `SystemVerilog`-файл `interrupt_controller.sv`.
|
||||
2. Опишите в нем модуль `interrupt_controller` с таким же именем и портами, как указано в [задании](#задание).
|
||||
6. После описания модуля, его необходимо проверить с помощью тестового окружения.
|
||||
6. После описания модуля его необходимо проверить с помощью тестового окружения.
|
||||
1. Тестовое окружение находится [здесь](tb_irq.sv).
|
||||
2. Для запуска симуляции воспользуйтесь [`этой инструкцией`](../../Vivado%20Basics/Run%20Simulation.md).
|
||||
3. Перед запуском симуляции убедитесь, что в качестве top-level модуля выбран корректный (`tb_irq`).
|
||||
|
@@ -26,4 +26,4 @@ _Рисунок 1. Схема без выделения новых частей
|
||||
1. Обратите внимание, что что в модуле `riscv_core` появились новые входные и выходные сигналы: `irq_req_i` и `irq_ret_o`. Эти сигналы должны быть использованы при подключении `riscv_core` в модуле `riscv_unit`.
|
||||
1. Ко входу `irq_req_i` должен быть подключен провод `irq_req`, другой конец которого пока не будет ни к чему подключен (в следующей лабораторной это будет изменено).
|
||||
2. К выходу `irq_ret_o` необходимо подключить провод `irq_ret`, который также пока не будет использован.
|
||||
2. После интеграции модулей, проверьте процессорную систему с помощью [программы](irq_program.mem), текст которой [был представлен](../10.%20Interrupt%20subsystem#пример-обработки-перехвата) в ЛР10 с помощью предоставленного [тестбенча](tb_irq_unit.sv).
|
||||
2. После интеграции модулей проверьте процессорную систему с помощью [программы](irq_program.mem), текст которой [был представлен](../10.%20Interrupt%20subsystem#пример-обработки-перехвата) в ЛР10 с помощью предоставленного [тестбенча](tb_irq_unit.sv).
|
Reference in New Issue
Block a user