diff --git a/.pic/Labs/lab_02_alu/fig_01.drawio.png b/.pic/Labs/lab_02_alu/fig_01.drawio.png new file mode 100644 index 0000000..7bc8a0d Binary files /dev/null and b/.pic/Labs/lab_02_alu/fig_01.drawio.png differ diff --git a/.pic/Labs/lab_02_alu/fig_01.png b/.pic/Labs/lab_02_alu/fig_01.png deleted file mode 100644 index 739ae21..0000000 Binary files a/.pic/Labs/lab_02_alu/fig_01.png and /dev/null differ diff --git a/.pic/Labs/lab_02_alu/fig_02.drawio.png b/.pic/Labs/lab_02_alu/fig_02.drawio.png new file mode 100644 index 0000000..8e4e59a Binary files /dev/null and b/.pic/Labs/lab_02_alu/fig_02.drawio.png differ diff --git a/.pic/Labs/lab_02_alu/fig_02.png b/.pic/Labs/lab_02_alu/fig_02.png deleted file mode 100644 index 0720c3b..0000000 Binary files a/.pic/Labs/lab_02_alu/fig_02.png and /dev/null differ diff --git a/.pic/Labs/lab_02_alu/fig_03.drawio.png b/.pic/Labs/lab_02_alu/fig_03.drawio.png new file mode 100644 index 0000000..5010a23 Binary files /dev/null and b/.pic/Labs/lab_02_alu/fig_03.drawio.png differ diff --git a/.pic/Labs/lab_02_alu/fig_03.png b/.pic/Labs/lab_02_alu/fig_03.png deleted file mode 100644 index bccbbbb..0000000 Binary files a/.pic/Labs/lab_02_alu/fig_03.png and /dev/null differ diff --git a/Labs/02. Arithmetic-logic unit/README.md b/Labs/02. Arithmetic-logic unit/README.md index e69e468..29ba46d 100644 --- a/Labs/02. Arithmetic-logic unit/README.md +++ b/Labs/02. Arithmetic-logic unit/README.md @@ -26,9 +26,9 @@ Обычно АЛУ представляет собой комбинационную схему (то есть без элементов памяти), на входы которой поступают информационные (операнды) и управляющие (код операции) сигналы, в ответ на что на выходе появляется результат заданной операции. АЛУ бывает не комбинационной схемой, но это скорее исключение. -![../../.pic/Labs/lab_02_alu/fig_01.png](../../.pic/Labs/lab_02_alu/fig_01.png) +![../../.pic/Labs/lab_02_alu/fig_01.drawio.png](../../.pic/Labs/lab_02_alu/fig_01.drawio.png) -*Рисунок 1. Структурное обозначение элемента АЛУ* +*Рисунок 1. Структурное обозначение элемента АЛУ[1, стр. 305].* На рис. 1 изображен пример АЛУ, используемый в книге "Цифровая схемотехника и архитектура компьютера" Харрис и Харрис. На входы `A` и `B` поступают операнды с разрядностью *N*. На трехбитный вход `F` подается код операции. Например, если туда подать `000`, то на выходе `Y` появится результат операции *логическое И* между битами операндов `A` и `B`. Если на `F` подать `010`, то на выходе появится результат сложения. Это лишь пример, разрядность и коды могут отличаться в зависимости от количества выполняемых операций и архитектуры. @@ -38,15 +38,15 @@ К одному из входов этих операционных устройств подключен `A` без изменений, а ко второму подключен выход двухвходового мультиплексора, управляемого оставшимся битом *F*. То есть `F[2]` определяет, что будет вторым операндом: `B` или `~B`. Вдобавок `F[2]` подается на входной перенос сумматора, то есть, когда `F[2] == 1` на выходе сумматора появляется результат операции `A + ~B + 1`, что (с учетом [дополнительного кода](https://ru.wikipedia.org/wiki/Дополнительный_код)) эквивалентно `A – B`. -![../../.pic/Labs/lab_02_alu/fig_02.png](../../.pic/Labs/lab_02_alu/fig_02.png) +![../../.pic/Labs/lab_02_alu/fig_02.drawio.png](../../.pic/Labs/lab_02_alu/fig_02.drawio.png) -*Рисунок 2. Структурная схема АЛУ MIPS* +*Рисунок 2. Структурная схема АЛУ MIPS[1, стр. 305].* Посмотрим, что произойдет, если на вход `F` такого АЛУ подать `111`. Будет выполняться операция `SLT`(сокращение от `Set Less Then`) – выдать `1`, если `A` меньше `B`, в противном случае — выдать `0`. Биты `F[1:0]` переключат мультиплексор на выход блока Zero Extend. На вход Zero Extend поступает старший бит выхода сумматора, этот бит отвечает за знак результата. Так как `F[2] == 1`, сумматор вычисляет `A + ~B + 1`, то есть `A – B`, значит, если `A < B`, то результат вычитания будет отрицательный, а старший бит `Y[N-1] == 1`. Если `A` не меньше `B`, то разность будет неотрицательна, а `Y[N-1] == 0`, как и требуется от этой операции. -![../../.pic/Labs/lab_02_alu/fig_03.png](../../.pic/Labs/lab_02_alu/fig_03.png) +![../../.pic/Labs/lab_02_alu/fig_03.drawio.png](../../.pic/Labs/lab_02_alu/fig_03.drawio.png) -*Рисунок 3. Пример исполнения операции АЛУ* +*Рисунок 3. Пример исполнения операции АЛУ.* Преимущество такой организации АЛУ в его простой модификации, настройке под нужные коды операций, читаемости кода и масштабируемости. Можно легко добавить или убрать требуемые операции. Подумайте, как бы вы обновили данную схему, если бы от вас потребовалось расширить её функционал операциями XOR (Исключающее ИЛИ) и (SGE операция "больше либо равно")? @@ -288,3 +288,7 @@ endmodule 5. Добавьте в проект модуль верхнего уровня ([nexys_alu.sv](board%20files/nexys_alu.sv)), соединяющий АЛУ с периферией в ПЛИС. Описание модуля находится [здесь](board%20files) 6. Подключите к проекту файл ограничений ([nexys_a7_100t.xdc](board%20files/nexys_a7_100t.xdc), файл ограничений, добавленный в первой лабораторной содержит другие данные, вам необходимо вставить содержимое файла для текущей лабы). 7. Проверьте работу АЛУ в ПЛИС. + +## Список использованной литературы + +1. Д.М. Харрис, С.Л. Харрис / Цифровая схемотехника и архитектура компьютера / пер. с англ. Imagination Technologies / М.: ДМК Пресс, 2018.