mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР1. Стилистические правки
This commit is contained in:
@@ -4,17 +4,18 @@
|
||||
|
||||
Познакомиться с САПР Vivado и научиться реализовывать в нём простейшие схемотехнические модули с помощью конструкций языка SystemVerilog.
|
||||
|
||||
## Допуск к лабораторной работе
|
||||
## Материал для подготовки к лабораторной работе
|
||||
|
||||
Изучить [описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md).
|
||||
[Описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md).
|
||||
|
||||
## Ход работы
|
||||
|
||||
1. [Тренинг по созданию проекта в Vivado](../../Vivado%20Basics/Vivado%20trainer.md);
|
||||
2. Изучение, реализация и проверка полного 1-битного сумматора;
|
||||
3. Изучение реализации полного 4-битного сумматора;
|
||||
4. Реализация полного 4-битного сумматора;
|
||||
5. Реализация 32-битного сумматора.
|
||||
1. Изучение 1-битного сумматора;
|
||||
2. Воспроизведение примера по реализации и проверке полусумматора.
|
||||
3. Реализация и проверка полного 1-битного сумматора
|
||||
4. Изучение 4-битного сумматора;
|
||||
5. Реализация и проверка полного 4-битного сумматора;
|
||||
6. Реализация и проверка полного 32-битного сумматора.
|
||||
|
||||
## Теория
|
||||
|
||||
@@ -38,11 +39,11 @@
|
||||
|
||||

|
||||
|
||||
Поскольку в двоичной системе всего две цифры: 0 и 1, один разряд не может превысить 1. Складывая числа 1 и 1, вы получаете 2, что не умещается в один разряд, поэтому мы пишем 0 и держим 1 "в уме". Это снова перенос разряда. Поскольку в двоичной арифметике разряд называют битом, перенос разряда называют переносом бита, а сам разряд, который перенесли — битом переноса.
|
||||
Поскольку в двоичной системе всего две цифры: 0 и 1, один разряд не может превысить 1. Складывая числа 1 и 1, вы получаете 2, что не умещается в один разряд, поэтому мы пишем 0 и держим 1 "в уме". Это снова перенос разряда. Поскольку в двоичной арифметике разряд называют битом, перенос разряда можно назвать переносом бита, а сам разряд, который перенесли — битом переноса.
|
||||
|
||||
### Полный 1-битный сумматор
|
||||
|
||||
Полный 1-битный сумматор — это цифровое устройство, которое выполняет сложение двух 1-битных чисел и учитывает входной бит переноса. Это устройство имеет три входа: два слагаемых и входной бит переноса, и два выхода: 1-битный результат суммы и выходной бит переноса.
|
||||
Полный 1-битный сумматор — это цифровое устройство, которое выполняет сложение двух 1-битных чисел и учитывает входной бит переноса. Это устройство имеет три входа: два слагаемых и входной бит переноса, а также два выхода: 1-битный результат суммы и выходной бит переноса.
|
||||
|
||||
Что такое входной бит переноса? Давайте вспомним второй этап сложения чисел 42 и 79:
|
||||
|
||||
@@ -56,7 +57,7 @@
|
||||
|
||||
### Реализация одноразрядного сложения
|
||||
|
||||
Можно ли как-то описать сложение двух одноразрядных двоичных чисел с помощью логических операций? Давайте посмотрим на таблицу истинности подобной операции и:
|
||||
Можно ли как-то описать сложение двух одноразрядных двоичных чисел с помощью логических операций? Давайте посмотрим на таблицу истинности подобной операции:
|
||||
|
||||

|
||||
|
||||
@@ -112,7 +113,7 @@ _Рисунок 2. Цифровая схема полного 1-битного
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Прочти меня перед использованием кода из примера.</summary>
|
||||
<summary>**Прочти меня перед использованием кода из примера.**</summary>
|
||||
|
||||
### Во все примеры кода намеренно вставлены неподдерживаемые символы. Не копируй, одумайся!
|
||||
|
||||
@@ -164,13 +165,13 @@ _Рисунок 3. Цифровая схема модуля half_adder, сген
|
||||
|
||||
Для этого необходимо провести моделирование этой схемы. Во время моделирования на входы подаются тестовые воздействия. Каждое изменение входных сигналов приводит к каскадному изменению состояний внутренних цепей, что в свою очередь приводит к изменению значений на выходных сигналах схемы.
|
||||
|
||||
Подаваемые на схему входные воздействия формируются верификационным окружением. Верификационное окружение (или тестбенч) — это особый несинтезируемый модуль, который не имеет входных или выходных сигналов. Ему не нужны входные сигналы, поскольку он сам является генератором всех своих внутренних сигналов, и ему не нужны выходные сигналы, поскольку этот модуль ничего не вычисляет, только подает входные воздействия на проверяемый модуль.
|
||||
Подаваемые на схему входные воздействия формируются верификационным окружением. Верификационное окружение (в дальнейшем будет использован термин "**тестбенч**") — это особый несинтезируемый модуль, который не имеет входных или выходных сигналов. Ему не нужны входные сигналы, поскольку он сам является генератором всех своих внутренних сигналов, и ему не нужны выходные сигналы, поскольку этот модуль ничего не вычисляет, только подает входные воздействия на проверяемый модуль.
|
||||
|
||||
Внутри тестбенча можно использовать конструкции из несинтезируемого подмножества языка SystemVerilog, в частности программный блок `initial`, в котором команды выполняются последовательно, что делает этот блок чем-то отдаленно похожим на проверяющую программу. Поскольку изменение внутренних цепей происходит с некоторой задержкой относительно изменений входных сигналов, при моделировании есть возможность делать паузы между командами. Это делается с помощью специального символа #, за которым указывается количество времени симуляции, которое нужно пропустить перед следующей командой.
|
||||
|
||||
Перед тем как писать верификационное окружение, необходимо составить план того, как будет проводиться проверка устройства (составить верификационный план).
|
||||
Перед тем как писать верификационное окружение, необходимо составить план того, как будет проводиться проверка устройства (составить верификационный план). Ввиду предельной простоты устройства, план будет состоять из одного предложения:
|
||||
|
||||
Поскольку устройство настолько простое, что число всех его возможных входных наборов воздействий равно четырем, и не имеет памяти (т.е. каждый раз, когда модулю подаются на вход одни и те же значения, оно вернет тот же результат), мы можем проверить его работу, перебрав все возможные комбинации его входных сигналов.
|
||||
> Поскольку устройство не имеет внутреннего состояния, которое могло бы повлиять на результат, а число всех его возможных входных наборов воздействий равно четырем, мы можем проверить его работу, перебрав все возможные комбинации его входных сигналов.
|
||||
|
||||
```SystemVerilog
|
||||
module testbench(); // <- Не имеет ни входов, ни выходов!
|
||||
@@ -223,7 +224,7 @@ _Рисунок 5. Схема 4-битного сумматора._
|
||||
|
||||
_Рисунок 6. Схема 4-битного сумматора, сгенерированная САПР Vivado._
|
||||
|
||||
Схема может показаться запутанной, но (если присмотреться) вы увидите, как от шин A, B и S отходят линии к каждому из сумматоров, а бит переноса передается от предыдущего сумматора к следующему.
|
||||
Несмотря на запутанность схемы, если присмотреться, вы увидите, как от шин A, B и S отходят линии к каждому из сумматоров, а бит переноса передается от предыдущего сумматора к следующему.
|
||||
|
||||
## Задание
|
||||
|
||||
|
Reference in New Issue
Block a user