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

View File

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

View File

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

View File

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

View File

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