|
4 | 4 |
|
5 | 5 | Познакомиться с САПР Vivado и научиться реализовывать в нём простейшие схемотехнические модули с помощью конструкций языка SystemVerilog.
|
6 | 6 |
|
7 |
| -## Допуск к лабораторной работе |
| 7 | +## Материал для подготовки к лабораторной работе |
8 | 8 |
|
9 |
| -Изучить [описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md). |
| 9 | +[Описание модулей на языке SystemVerilog](../../Basic%20Verilog%20structures/Modules.md). |
10 | 10 |
|
11 | 11 | ## Ход работы
|
12 | 12 |
|
13 |
| -1. [Тренинг по созданию проекта в Vivado](../../Vivado%20Basics/Vivado%20trainer.md); |
14 |
| -2. Изучение, реализация и проверка полного 1-битного сумматора; |
15 |
| -3. Изучение реализации полного 4-битного сумматора; |
16 |
| -4. Реализация полного 4-битного сумматора; |
17 |
| -5. Реализация 32-битного сумматора. |
| 13 | +1. Изучение 1-битного сумматора; |
| 14 | +2. Воспроизведение примера по реализации и проверке полусумматора. |
| 15 | +3. Реализация и проверка полного 1-битного сумматора |
| 16 | +4. Изучение 4-битного сумматора; |
| 17 | +5. Реализация и проверка полного 4-битного сумматора; |
| 18 | +6. Реализация и проверка полного 32-битного сумматора. |
18 | 19 |
|
19 | 20 | ## Теория
|
20 | 21 |
|
|
38 | 39 |
|
39 | 40 | 
|
40 | 41 |
|
41 |
| -Поскольку в двоичной системе всего две цифры: 0 и 1, один разряд не может превысить 1. Складывая числа 1 и 1, вы получаете 2, что не умещается в один разряд, поэтому мы пишем 0 и держим 1 "в уме". Это снова перенос разряда. Поскольку в двоичной арифметике разряд называют битом, перенос разряда называют переносом бита, а сам разряд, который перенесли — битом переноса. |
| 42 | +Поскольку в двоичной системе всего две цифры: 0 и 1, один разряд не может превысить 1. Складывая числа 1 и 1, вы получаете 2, что не умещается в один разряд, поэтому мы пишем 0 и держим 1 "в уме". Это снова перенос разряда. Поскольку в двоичной арифметике разряд называют битом, перенос разряда можно назвать переносом бита, а сам разряд, который перенесли — битом переноса. |
42 | 43 |
|
43 | 44 | ### Полный 1-битный сумматор
|
44 | 45 |
|
45 |
| -Полный 1-битный сумматор — это цифровое устройство, которое выполняет сложение двух 1-битных чисел и учитывает входной бит переноса. Это устройство имеет три входа: два слагаемых и входной бит переноса, и два выхода: 1-битный результат суммы и выходной бит переноса. |
| 46 | +Полный 1-битный сумматор — это цифровое устройство, которое выполняет сложение двух 1-битных чисел и учитывает входной бит переноса. Это устройство имеет три входа: два слагаемых и входной бит переноса, а также два выхода: 1-битный результат суммы и выходной бит переноса. |
46 | 47 |
|
47 | 48 | Что такое входной бит переноса? Давайте вспомним второй этап сложения чисел 42 и 79:
|
48 | 49 |
|
|
56 | 57 |
|
57 | 58 | ### Реализация одноразрядного сложения
|
58 | 59 |
|
59 |
| -Можно ли как-то описать сложение двух одноразрядных двоичных чисел с помощью логических операций? Давайте посмотрим на таблицу истинности подобной операции и: |
| 60 | +Можно ли как-то описать сложение двух одноразрядных двоичных чисел с помощью логических операций? Давайте посмотрим на таблицу истинности подобной операции: |
60 | 61 |
|
61 | 62 | 
|
62 | 63 |
|
@@ -112,7 +113,7 @@ _Рисунок 2. Цифровая схема полного 1-битного
|
112 | 113 |
|
113 | 114 | <details>
|
114 | 115 |
|
115 |
| - <summary>Прочти меня перед использованием кода из примера.</summary> |
| 116 | + <summary>**Прочти меня перед использованием кода из примера.**</summary> |
116 | 117 |
|
117 | 118 | ### Во все примеры кода намеренно вставлены неподдерживаемые символы. Не копируй, одумайся!
|
118 | 119 |
|
@@ -164,13 +165,13 @@ _Рисунок 3. Цифровая схема модуля half_adder, сген
|
164 | 165 |
|
165 | 166 | Для этого необходимо провести моделирование этой схемы. Во время моделирования на входы подаются тестовые воздействия. Каждое изменение входных сигналов приводит к каскадному изменению состояний внутренних цепей, что в свою очередь приводит к изменению значений на выходных сигналах схемы.
|
166 | 167 |
|
167 |
| -Подаваемые на схему входные воздействия формируются верификационным окружением. Верификационное окружение (или тестбенч) — это особый несинтезируемый модуль, который не имеет входных или выходных сигналов. Ему не нужны входные сигналы, поскольку он сам является генератором всех своих внутренних сигналов, и ему не нужны выходные сигналы, поскольку этот модуль ничего не вычисляет, только подает входные воздействия на проверяемый модуль. |
| 168 | +Подаваемые на схему входные воздействия формируются верификационным окружением. Верификационное окружение (в дальнейшем будет использован термин "**тестбенч**") — это особый несинтезируемый модуль, который не имеет входных или выходных сигналов. Ему не нужны входные сигналы, поскольку он сам является генератором всех своих внутренних сигналов, и ему не нужны выходные сигналы, поскольку этот модуль ничего не вычисляет, только подает входные воздействия на проверяемый модуль. |
168 | 169 |
|
169 | 170 | Внутри тестбенча можно использовать конструкции из несинтезируемого подмножества языка SystemVerilog, в частности программный блок `initial`, в котором команды выполняются последовательно, что делает этот блок чем-то отдаленно похожим на проверяющую программу. Поскольку изменение внутренних цепей происходит с некоторой задержкой относительно изменений входных сигналов, при моделировании есть возможность делать паузы между командами. Это делается с помощью специального символа #, за которым указывается количество времени симуляции, которое нужно пропустить перед следующей командой.
|
170 | 171 |
|
171 |
| -Перед тем как писать верификационное окружение, необходимо составить план того, как будет проводиться проверка устройства (составить верификационный план). |
| 172 | +Перед тем как писать верификационное окружение, необходимо составить план того, как будет проводиться проверка устройства (составить верификационный план). Ввиду предельной простоты устройства, план будет состоять из одного предложения: |
172 | 173 |
|
173 |
| -Поскольку устройство настолько простое, что число всех его возможных входных наборов воздействий равно четырем, и не имеет памяти (т.е. каждый раз, когда модулю подаются на вход одни и те же значения, оно вернет тот же результат), мы можем проверить его работу, перебрав все возможные комбинации его входных сигналов. |
| 174 | +> Поскольку устройство не имеет внутреннего состояния, которое могло бы повлиять на результат, а число всех его возможных входных наборов воздействий равно четырем, мы можем проверить его работу, перебрав все возможные комбинации его входных сигналов. |
174 | 175 |
|
175 | 176 | ```SystemVerilog
|
176 | 177 | module testbench(); // <- Не имеет ни входов, ни выходов!
|
@@ -223,7 +224,7 @@ _Рисунок 5. Схема 4-битного сумматора._
|
223 | 224 |
|
224 | 225 | _Рисунок 6. Схема 4-битного сумматора, сгенерированная САПР Vivado._
|
225 | 226 |
|
226 |
| -Схема может показаться запутанной, но (если присмотреться) вы увидите, как от шин A, B и S отходят линии к каждому из сумматоров, а бит переноса передается от предыдущего сумматора к следующему. |
| 227 | +Несмотря на запутанность схемы, если присмотреться, вы увидите, как от шин A, B и S отходят линии к каждому из сумматоров, а бит переноса передается от предыдущего сумматора к следующему. |
227 | 228 |
|
228 | 229 | ## Задание
|
229 | 230 |
|
|
0 commit comments