Compare commits

..

6 Commits

Author SHA1 Message Date
Andrei Solodovnikov
8497d91ffb ЛР10. Уточнение формулировки
Removed redundant phrase in the explanation of interrupts and exceptions.
2025-11-14 13:58:09 +03:00
Andrei Solodovnikov
736a4d283b Update README.md 2025-11-14 10:28:22 +03:00
Andrei Solodovnikov
9bd2e6665c Update SUMMARY.md 2025-11-14 10:08:40 +03:00
Andrei Solodovnikov
c1b37042a7 ЛР3. Уточнение формулировки в порядке выполнения задания 2025-11-14 10:07:23 +03:00
Andrei Solodovnikov
9516b4714e ЛР5. Добавление пропущенного предлога 2025-11-14 10:04:22 +03:00
Andrei Solodovnikov
b765e14cb2 Update SUMMARY.md 2025-11-14 09:28:29 +03:00
5 changed files with 5 additions and 4 deletions

2
.github/SUMMARY.md vendored
View File

@@ -21,6 +21,7 @@
- [Лабораторная №2. АЛУ](Labs/02.%20Arithmetic-logic%20unit/README.md)
- [Лабораторная №3. Регистровый файл и внешняя память](Labs/03.%20Register%20file%20and%20memory/README.md)
- [Лабораторная №4. Простейшее программируемое устройство](Labs/04.%20Primitive%20programmable%20device/README.md)
- [Написание программы под процессор CYBERcobra](Labs/04.%20Primitive%20programmable%20device/Индивидуальное%20задание/README.md)
- [Лабораторная №5. Декодер инструкций](Labs/05.%20Main%20decoder/README.md)
- [Лабораторная №6. Основная память](Labs/06.%20Main%20memory/README.md)
- [Лабораторная №7. Тракт данных](Labs/07.%20Datapath/README.md)
@@ -63,4 +64,5 @@
# Дополнительные материалы
- [RV32I - Стандартный набор целочисленных инструкций RISC-V](Other/rv32i.md)
- [О регистрах контроля и статуса](Other/CSR.md)
- [Список типичных ошибок при работе с Vivado и SystemVerilog](Other/FAQ.md)

View File

@@ -345,7 +345,7 @@ module register_file(
3. Не забывайте, что у вас 2 порта на чтение и 1 порт на запись, при этом каждый порт не зависит от остальных (в модуле 3 независимых входа адреса).
4. Чтение из нулевого регистра (чтение по адресу 0) всегда должно возвращать нулевое значение. Этого можно добиться двумя путями:
1. Путем добавления мультиплексора перед выходным сигналом чтения (мультиплексор будет определять, пойдут ли на выход данные из ячейки регистрового файла, либо, в случае если адрес равен нулю, на выход пойдет константа ноль).
2. Путем инициализации нулевого регистра нулевым значением и запретом записи в этот регистр (при записи и проверки write_enable добавить дополнительную проверку на адрес).
2. Путем инициализации нулевого регистра нулевым значением и запретом записи в этот регистр (в логике порта на запись помимо проверки `write_enable` добавить дополнительную проверку на адрес).
3. Каким образом будет реализована эта особенность регистрового файла не важно, выберите сами.
4. Проверьте модуль с помощью верификационного окружения, представленного в файле [`lab_03.tb_register_file.sv`](lab_03.tb_register_file.sv). В случае, если в TCL-консоли появились сообщения об ошибках, вам необходимо [найти](../../Vivado%20Basics/05.%20Bug%20hunting.md) и исправить их.
1. Перед запуском моделирования убедитесь, что у вас выбран корректный модуль верхнего уровня в `Simulation Sources`.

View File

@@ -221,7 +221,7 @@ _Таблица 4. Описание типов форматов кодирова
Поля `rs1`/`rs2`/`imm` и `rd` декодеру не нужны и используются напрямую для адресации регистров / задания констант.
Существуют особые инструкции, не имеющие никаких переменных полей (к примеру инструкция ECALL в аблице 3_). Такие инструкции необходимо проверять целиком (нужно убедиться, что инструкция совпадает вплоть бита).
Существуют особые инструкции, не имеющие никаких переменных полей (к примеру инструкция ECALL в аблице 3_). Такие инструкции необходимо проверять целиком (нужно убедиться, что инструкция совпадает вплоть до бита).
В _Таблице 5_ представлены все опкоды реализуемых нами инструкций. Представленные в ней коды операций 5-битные потому, что 2 младших бита полноценного 7-битного кода операции в реализуемых нами инструкциях должны всегда быть равны `11`. Если это не так, то вся инструкция уже запрещенная и не нуждается в дальнейшем декодировании.

View File

@@ -33,7 +33,7 @@
Важно понимать, что ни прерывание, ни исключение не являются обязательно чем-то плохим. И то и другое — это всего лишь события. Например, с помощью исключений может осуществляться системные вызовы и передача управления отладчику программы.
Как и любой другой вызов функции, при возникновении прерывания или исключения необходимо сохранить адрес возврата, перейти к программе обработчика, выполнить свою работу, восстановить контекст (не оставить никаких следов работы обработчика прерывания) и вернуться к программе, которую прервали.
Как и любой другой вызов функции, при возникновении прерывания или исключения необходимо сохранить адрес возврата, перейти к программе обработчика, выполнить свою работу, восстановить контекст и вернуться к программе, которую прервали.
Благодаря исключениям можно реализовать имитацию наличия каких-то аппаратных блоков программными средствами. Например, при отсутствии аппаратного умножителя, можно написать программу обработчика исключения неподдерживаемой инструкции умножения, реализующую алгоритм умножения через сложение и сдвиг. Тогда, каждый раз, когда в программе попадётся инструкция умножения, будет возникать исключение, приводящее к запуску обработчика, перемножающего числа и размещающего результат в нужные ячейки памяти. После выполнения обработчика управление возвращается программе, которая даже не поймёт, что что-то произошло и умножитель «ненастоящий».

View File

@@ -6,7 +6,6 @@
- [Как работать с репозиторием](#Как-работать-с-репозиторием)
- [Мотивация](#Мотивация)
- [Место АПС в Computer Science](#Место-АПС-в-computer-science)
- [Как пользоваться репозиторием](#Как-пользоваться-репозиторием)
- [История курса и разработчики](#История-курса-и-разработчики)
- [![Печатный экземпляр](https://img.shields.io/badge/📘-Печатный_экземпляр-blue)](https://ozon.ru/t/63aAzUd)