mirror of
https://github.com/MPSU/APS.git
synced 2025-11-20 15:00:39 +00:00
Compare commits
6 Commits
a51d46faae
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8497d91ffb | ||
|
|
736a4d283b | ||
|
|
9bd2e6665c | ||
|
|
c1b37042a7 | ||
|
|
9516b4714e | ||
|
|
b765e14cb2 |
2
.github/SUMMARY.md
vendored
2
.github/SUMMARY.md
vendored
@@ -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)
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -221,7 +221,7 @@ _Таблица 4. Описание типов форматов кодирова
|
||||
|
||||
Поля `rs1`/`rs2`/`imm` и `rd` декодеру не нужны и используются напрямую для адресации регистров / задания констант.
|
||||
|
||||
Существуют особые инструкции, не имеющие никаких переменных полей (к примеру инструкция ECALL в _таблице 3_). Такие инструкции необходимо проверять целиком (нужно убедиться, что инструкция совпадает вплоть бита).
|
||||
Существуют особые инструкции, не имеющие никаких переменных полей (к примеру инструкция ECALL в _таблице 3_). Такие инструкции необходимо проверять целиком (нужно убедиться, что инструкция совпадает вплоть до бита).
|
||||
|
||||
В _Таблице 5_ представлены все опкоды реализуемых нами инструкций. Представленные в ней коды операций 5-битные потому, что 2 младших бита полноценного 7-битного кода операции в реализуемых нами инструкциях должны всегда быть равны `11`. Если это не так, то вся инструкция уже запрещенная и не нуждается в дальнейшем декодировании.
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
Важно понимать, что ни прерывание, ни исключение не являются обязательно чем-то плохим. И то и другое — это всего лишь события. Например, с помощью исключений может осуществляться системные вызовы и передача управления отладчику программы.
|
||||
|
||||
Как и любой другой вызов функции, при возникновении прерывания или исключения необходимо сохранить адрес возврата, перейти к программе обработчика, выполнить свою работу, восстановить контекст (не оставить никаких следов работы обработчика прерывания) и вернуться к программе, которую прервали.
|
||||
Как и любой другой вызов функции, при возникновении прерывания или исключения необходимо сохранить адрес возврата, перейти к программе обработчика, выполнить свою работу, восстановить контекст и вернуться к программе, которую прервали.
|
||||
|
||||
Благодаря исключениям можно реализовать имитацию наличия каких-то аппаратных блоков программными средствами. Например, при отсутствии аппаратного умножителя, можно написать программу обработчика исключения неподдерживаемой инструкции умножения, реализующую алгоритм умножения через сложение и сдвиг. Тогда, каждый раз, когда в программе попадётся инструкция умножения, будет возникать исключение, приводящее к запуску обработчика, перемножающего числа и размещающего результат в нужные ячейки памяти. После выполнения обработчика управление возвращается программе, которая даже не поймёт, что что-то произошло и умножитель «ненастоящий».
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
- [Как работать с репозиторием](#Как-работать-с-репозиторием)
|
||||
- [Мотивация](#Мотивация)
|
||||
- [Место АПС в Computer Science](#Место-АПС-в-computer-science)
|
||||
- [Как пользоваться репозиторием](#Как-пользоваться-репозиторием)
|
||||
- [История курса и разработчики](#История-курса-и-разработчики)
|
||||
- [](https://ozon.ru/t/63aAzUd)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user