diff --git a/.github/Intro.md b/.github/Intro.md index 87ef04c..b71b1b8 100644 --- a/.github/Intro.md +++ b/.github/Intro.md @@ -151,7 +151,7 @@ Readme.md Здесь находятся методические материалы ко всем 16 лабораторным работам, разложенные по соответствующим им папкам. -Практически в каждой такой папке находится файл формата _lab_xx.tb_xxx.sv_ — это файл с верификационным окружением для данной лабораторной работы. Такой файл необходимо добавлять в _Simulation Sources_ проекта (подробней в разделе _Vivado Basics_). +Практически в каждой такой папке находится файл формата _lab_xx.tb_xxx.sv_ — это файл с верификационным окружением для данной лабораторной работы. Такой файл необходимо добавлять в _Simulation Sources_ проекта (подробнее в разделе _Vivado Basics_). Кроме того, в папке лабораторной работы могут находиться _xxx_pkg.sv_ и _xxx.mem_ файлы, содержащие соответственно параметры и данные, которыми необходимо проинициализировать память устройства. Такие файлы будет необходимо добавлять в _Design Sources_ проекта. diff --git a/Labs/01. Adder/README.md b/Labs/01. Adder/README.md index 5ad394f..d9ac74e 100644 --- a/Labs/01. Adder/README.md +++ b/Labs/01. Adder/README.md @@ -190,7 +190,7 @@ _Рисунок 5. Схема 4-битного сумматора._ Как же реализовать модуль, состоящий из цепочки других модулей? Половину этой задачи мы уже сделали, когда писали тестбенч к 1-битному полусумматору в _Листинге 2_ — мы создавали модуль внутри другого модуля и подключали к нему провода. Теперь надо сделать то же самое, только с чуть большим числом модулей. -Описание 4-битного сумматора, сводится к описанию межсоединения четырёх экземпляров 1-битного сумматора. Подробней о том, как описывать создание экземпляров модулей рассказано в главе [Описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md#Иерархия-модулей), который вы изучали перед лабораторной работой. +Описание 4-битного сумматора, сводится к описанию межсоединения четырёх экземпляров 1-битного сумматора. Подробнее о том, как описывать создание экземпляров модулей рассказано в главе [Описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md#Иерархия-модулей), который вы изучали перед лабораторной работой. ![../../.pic/Labs/lab_01_adder/fig_06.png](../../.pic/Labs/lab_01_adder/fig_06.png) @@ -280,7 +280,7 @@ example1 instance_array[7:0]( // Создается массив из 8 моду // как есть ко всем модулям в массиве. .c(C[7:0]), // Поскольку разрядность сигнала C не равна - // ни разрядности входа c, ни его увосьмиренной + // ни разрядности входа c, ни его увосьмерённой // разрядности, мы должны выбрать такой диапазон // бит, который будет удовлетворять одному из // этих требований. diff --git a/Labs/02. Arithmetic-logic unit/README.md b/Labs/02. Arithmetic-logic unit/README.md index 59c2763..345f7bc 100644 --- a/Labs/02. Arithmetic-logic unit/README.md +++ b/Labs/02. Arithmetic-logic unit/README.md @@ -1,6 +1,6 @@ # Лабораторная работа №2. Арифметико-логическое устройство -Так как основной задачей процессора является обработка цифровых данных, одним из его основных блоков является арифметико-логическое устройство (АЛУ). Задача АЛУ производить над входными данным арифметические и поразрядно логические операции. +Так как основной задачей процессора является обработка цифровых данных, одним из его основных блоков является арифметико-логическое устройство (АЛУ). Задача АЛУ производить над входными данными арифметические и поразрядно логические операции. ## Цель @@ -234,7 +234,7 @@ endmodule Для удобства чтения, список инструкций разбит на две таблицы. -В первой таблице перечислены операции, вычисляющие значение сигнала `result_o`. **При любом коде операции, не входящим в эту таблицу, сигнал `result_o` должен быть равен нулю**. +В первой таблице перечислены операции, вычисляющие значение сигнала `result_o`. **При получении АЛУ любого кода операции, не входящего в эту таблицу, сигнал `result_o` должен быть равен нулю**. |Операция|={cmp, mod, opcode}|Выражение | Действие | |--------|-------------------|-----------------------|-------------------------------------------------------| @@ -251,7 +251,7 @@ endmodule _Таблица 1. Список вычислительных операций._ -Во второй таблице перечислены операции, вычисляющие значение сигнала `flag_o`. **При любом коде операции, не входящим в эту таблицу, сигнал flag_o должен быть равен нулю**. +Во второй таблице перечислены операции, вычисляющие значение сигнала `flag_o`. **При получении АЛУ любого кода операции, не входящего в эту таблицу, сигнал `flag_o` должен быть равен нулю**. |Операция|={cmp, mod, opcode}| Выражение | Действие | |--------|-------------------|----------------------|-----------------------------------| diff --git a/Labs/03. Register file and memory/README.md b/Labs/03. Register file and memory/README.md index cf5225a..0f1ca79 100644 --- a/Labs/03. Register file and memory/README.md +++ b/Labs/03. Register file and memory/README.md @@ -100,7 +100,7 @@ logic [19:0] memory3 [15:0]; // memory3 будет такой же память // лабораторных работ будет скорее минусом). -logic [19:0] memory3 [1:16]; // А вот memory3 хоть и совпадает по +logic [19:0] memory4 [1:16]; // А вот memory4 хоть и совпадает по // размеру с предыдущими реализациями, // но отличается по адресному пространству // обращение по нулевому адресу выдаст diff --git a/Labs/05. Main decoder/README.md b/Labs/05. Main decoder/README.md index 95b2c7f..cc4705e 100644 --- a/Labs/05. Main decoder/README.md +++ b/Labs/05. Main decoder/README.md @@ -151,7 +151,7 @@ _Таблица 2. Значения сигнала `mem_size_o` при пере Сигнал, который должен принять значение `1`, в случае если пришла инструкция, которая не входит в список поддерживаемых процессором. -Это не единственное, что должен сделать декодер в подобной ситуации. Давайте разберем подробней, что должно происходить по приходу нелегальной инструкции. +Это не единственное, что должен сделать декодер в подобной ситуации. Давайте разберем подробнее, что должно происходить по приходу нелегальной инструкции. ## Обработка нелегальной инструкции diff --git a/Labs/10. Interrupt subsystem/README.md b/Labs/10. Interrupt subsystem/README.md index be244e0..f9da783 100644 --- a/Labs/10. Interrupt subsystem/README.md +++ b/Labs/10. Interrupt subsystem/README.md @@ -97,7 +97,7 @@ _Рисунок 1. Распределение привилегий по уров _Таблица 1. Список регистров, подлежащих реализации в рамках лабораторной работы [[6](https://github.com/riscv/riscv-isa-manual/releases/download/20240411/priv-isa-asciidoc.pdf), стр. 17]._ -По адресу `0x304` должен располагаться регистр, позволяющий маскировать перехваты. Например, если на 5-ом входе системы прерывания генерируется прерывание, то процессор отреагирует на него только в том случае, если 5-ый бит регистра `mie` будет равен 1. Младшие 16 бит этого регистра спецификация RISC-V отводит под маскирование специальных системных прерываний [[6](https://github.com/riscv/riscv-isa-manual/releases/download/20240411/priv-isa-asciidoc.pdf), стр. 36], которые не будут поддерживаться нашим процессором (подробней об этом будет в описании регистра mcause). Поэтому в нашей процессорной системе мы будем использовать только старшие 16 бит регистра `mie`, которые отведены для нужд конкретной платформы. +По адресу `0x304` должен располагаться регистр, позволяющий маскировать перехваты. Например, если на 5-ом входе системы прерывания генерируется прерывание, то процессор отреагирует на него только в том случае, если 5-ый бит регистра `mie` будет равен 1. Младшие 16 бит этого регистра спецификация RISC-V отводит под маскирование специальных системных прерываний [[6](https://github.com/riscv/riscv-isa-manual/releases/download/20240411/priv-isa-asciidoc.pdf), стр. 36], которые не будут поддерживаться нашим процессором (подробнее об этом будет в описании регистра mcause). Поэтому в нашей процессорной системе мы будем использовать только старшие 16 бит регистра `mie`, которые отведены для нужд конкретной платформы. По адресу `0x305` должен располагаться регистр `mtvec`, который состоит из двух полей: BASE[31:2] и MODE. Поле BASE хранит старшие 30 бит базового адреса обработчика перехвата (поскольку этот адрес должен быть всегда равен четырём, младшие два бита считаются равными нулю). Поле MODE кодирует тип системы прерывания: diff --git a/README.md b/README.md index 5e554b5..d697c70 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Readme.md Здесь находятся методические материалы ко всем 16 лабораторным работам, разложенные по соответствующим им папкам. -Практически в каждой такой папке находится файл формата `lab_xx.tb_xxx.sv` — это файл с верификационным окружением для данной лабораторной работы. Такой файл необходимо добавлять в _Simulation Sources_ проекта (подробней в разделе _Vivado Basics_). +Практически в каждой такой папке находится файл формата `lab_xx.tb_xxx.sv` — это файл с верификационным окружением для данной лабораторной работы. Такой файл необходимо добавлять в _Simulation Sources_ проекта (подробнее в разделе _Vivado Basics_). Кроме того, в папке лабораторной работы могут находиться `xxx_pkg.sv` и `xxx.mem` файлы, содержащие соответственно параметры и данные, которыми необходимо проинициализировать память устройства. Такие файлы будет необходимо добавлять в _Design Sources_ проекта.