1. VERILOG
2. Основные понятия и конструкции
языка Verilog
Автоматизация проектирования
компьютерных систем
д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
2/9/2011 e-mail: hahanova@mail.ru 1
2. Цель лекции и содержание
Цель – знакомство с базовыми конструкциями
языка Verilog
План
1. Модуль – базовая единица языка Verilog.
2. Уровни абстракции описания моделей
3. Лексические соглашения
4. Классы и типы данных
5. Описание портов модуля
6. Параметры
7. Директивы компилятора
8. Стандартные логические элементы
9. Определенные пользователем примитивы
10. Задержки
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 2
e-mail: hahanova@mail.ru
3. Язык Описания аппаратуры: Verilog
1984 -1985 гг. Филип Мурби Стандарты
(Philip Moorby) разрабатывает
язык Verilog, который IEEE Std 1364-95.
принадлежит фирме Gateway IEEE Std 1364-2001
Design Automatiion. значительно переработанный
1985-1987гг. Рост популярности по сравнению с предыдущим.
Verilog.
1990 г.Фирма Cadence покупает IEEE Std 1364-2005 добавил
Gateway и делает язык Verilog небольшие исправления,
общедоступным уточнения.
1993 г. 85% всех ASIC-проектов Verilog проще для анализа
разрабатывается с помощью использования.
Verilog Получил признание в
1995 г. Создается IEEE-1364 - проектировании ASIC схем,
стандарт языка Verilog особенно для проектов низкого
2000 г. Более 10000 уровня.
разработчиков SUN, Apple и Наиболее популярен в
Motorola работают на Verilog Северной Америке и Азии,
2001 г. Стандарт 1364- 2001 особенно в Японии.
“Verilog- 2001” Непопулярен в Европе.
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 3
e-mail: hahanova@mail.ru
5. 1 Модуль – базовая единица языка Verilog
Синтаксис модуля:
module identifier (ports_list) ; module identifier
ports_declaration ; (ports_declaration_list) ;
module_body ; module_body ;
endmodule endmodule
Пример описания модуля:
module module_1(a, b, c) ; • module module_2
input [3: 0] a, b ; • (input [3: 0] a, b,
output [3: 0] c; output [3: 0] c);
assign c = a & b; assign c = a & b;
endmodule endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 5
e-mail: hahanova@mail.ru
6. 2. Уровни абстракции моделей
поведенческий (или алгоритмический)
dataflow-уровень (уровень передачи
данных)
вентильный уровень
транзисторный уровень (switch-level)
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 6
e-mail: hahanova@mail.ru
7. Поведенческий уровень
Поведенческий или алгоритмический – это верхний
уровень описания проектов, отражающий алгоритм
их функционирования без деталей реализации
D-триггер
module dff
module dff (clk, d, q);
input clk, d; (input clk, d,
output q; output reg q);
reg q;
always @(posedge clk) always @(posedge clk)
q = d; q = d;
endmodule endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 7
e-mail: hahanova@mail.ru
8. Dataflow-уровень
Dataflow – описывает процесс изменения данных
при их передаче между регистрами
Модель мультиплексора 4-в-1, заданного уравнением.
Out Sel1' Sel0' In0 Sel1' Sel0 In1 Sel1 Sel0' In2 Sel1 Sel0 In3
module mux4_to_1
//Декларация портов
(output out,
input i0, i1, i2, i3, // Входы данных
input s1, s0); // Управляющие входы
assign out = (~s1 & ~s0 & i0) | (~s1 & s0 & i1) |
(s1 & ~s0 & i2) | (s1 & s0 & i3);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 8
e-mail: hahanova@mail.ru
9. Вентильный уровень
Модели вентильного уровня задаются логическими
элементами и соединениями между ними.
Модель мультиплексора 4-в-1
вентильного уровня In0
Y0
module mux_4_to_1 Sel1
NotSel1
(output Out,
input In0, In1, In2, In3, Sel1, Sel0); In1
Y1
wire NotSel0, NotSel1; NotSel0
wire Y0, Y1, Y2, Y3; Sel0 Out
In2
Y2
and (Y1, In1, NotSel1, NotSel0);
not (NotSel0, Sel0);
and (Y3, In3, Sel1, Sel0); In3
or (Out, Y0, Y1, Y2, Y3); Y3
and (Y0, In0, NotSel1, NotSel0);
not (NotSel1, Sel1);
and (Y2, In2, Sel1, NotSel0);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 9
e-mail: hahanova@mail.ru
10. Транзисторный уровень
my_nor my_nor
a Vdd
out
b pwr
module my_nor(out, a, b);
(output out,
input a,b); c
wire c;
//создание линий питания и земли out
supply1 pwr;
supply0 gnd;
// реализации pmos-транзисторов a b
pmos (c, pwr, b);
pmos (out, c, a);
// реализации nmos-транзистор
nmos (out, gnd, a); gnd
nmos (out, gnd, b);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 10
e-mail: hahanova@mail.ru
11. 4 Лексические соглашения
Идентификатор имен в Verilog:
Может состоять из букв, цифр, $, символа
подчеркивания(_).
Должен начинаться с буквы или символа
подчеркивания.
Не может содержать пробелы.
Чувствителен к регистру символов.
Например,
reg enable; wire _ready;
integer group_a; reg and5;
tri clk$1;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 11
e-mail: hahanova@mail.ru
12. Целочисленные значения
Синтаксис :
[sign] [size] 'base number
где sign – знак, size - число битов для представления значения number,
base – система счисления: d или D десятичная, h или H
шестнадцатеричная, o или O восьмеричная, b или B двоичная.
Примеры
15'h f 'o 17 'd 15 10'd 20
‘b 1111 'b 1_1_1_1 -5'b1_1011 8'h z
8'b0 (8'b00000000) 8'b1 (8'b00000001) 4'b10?? (4'b10zz)
8'bz (8'bzzzzzzzz) 8'bx (8'bxxxxxxxx) 8'h4? (8'b0100zzzz)
12'h13x // значение последних 4 битов неизвестно
4'd-2 // неправильное описание
-8'd3 // отрицательное число,
// представлено дополнительным кодом 8-ю разрядами
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 12
e-mail: hahanova@mail.ru
13. Вещественные значения
Синтаксис:
sign unsigned_number.unsigned_number
sign unsigned_number.unsigned_number e sign unsigned_number
sign unsigned_number.unsigned_number E sign unsigned_number
Пример
17.5 10e5
0.5 0.5694_e-5
1_000_000.0
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 13
e-mail: hahanova@mail.ru
14. Строковые значения
Строковые значения в Verilog записываются в
двойных кавычках.
var = “Hello world!”;
В строках могут быть использованы
специальные символы:
• n – новая строка
• t – табуляция
• – символ
• ” – символ “ .
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 14
e-mail: hahanova@mail.ru
15. 5. Классы и типы данных
Классы данных
Логический
Значение
уровень
0 логический 0, условие false
1 логический 1, условие true
x неизвестное значение
z высокий импеданс
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 15
e-mail: hahanova@mail.ru
16. Типы данных класса цепи (net)
net_type [range] [delay3] list_of_net_identifiers ;
Типы данных
wire/tri – линия
wand/triand и wor/trior – линии с И и ИЛИ элементом
supply0, supply1, tri0, tri1, trireg – описание элементов
низкого уровня
wire/tri wand/triand wor/trior Примеры
0 1 x z 0 1 x z 0 1 x z wire a;
wire b, c;
0 0 x x 0 0 0 0 0 0 0 0 1 x 0
wire d = 1'b0;
1 x 1 x 1 1 0 1 x 1 1 1 1 1 1
tri tristate_buffer;
x x x x x x 0 x x x x x 1 x x
wand #5 sig_1;
z 0 1 x z z 0 1 x z z 0 1 x z
trireg (small) t;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 16
e-mail: hahanova@mail.ru
17. Регистровый класс данных
reg [range] list_of_identifiers;
integer list_of_identifiers; // 32 разряда, знак.
real list_of_identifiers;
time list_of_identifiers; // 64 разряда, беззнак
realtime list_of_identifiers;
Примеры:
reg reset; integer i;
time t; real r;
realtime rt1, rt2;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 17
e-mail: hahanova@mail.ru
18. Векторы
Синтаксис
net_type [msb : lsb] list_of_net_identifiers;
reg [msb : lsb] list_of_register_identifiers;
Примеры:
reg [3:0] addr; // 4-разрядный регистр addr
wire [-3:4] d; // переменная d размером 8 битов состоит
// из элементов: d[-3] (msb), d[-2], d[-1], d[0],
// d[1], d[2], d[3], d[4] (lsb).
tri [5:0] x, y, z;
busA[7] // элемент шины busA с индексом 7
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 18
e-mail: hahanova@mail.ru
19. Знаковые векторы
Синтаксис
net_type signed [msb : lsb] list_of_net_identifiers;
reg signed [msb : lsb] list_of_register_identifiers;
Пример
reg signed [3:0] signed_reg;
// старший бит рассматривается как знак
// задает 4-битовый вектор, который может
// принимать значения в диапазоне от -8 до 7
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 19
e-mail: hahanova@mail.ru
20. Массивы
reg width identifier depth;
integer | time identifier length;
Примеры деклараций массивов:
integer count[0:7] // массив из 8 слов целого типа
reg [4:0] port_id [0:7]; //массив из 8 пятиразрядных слов
count[5]; // 5-й элемент массива
port_id[3]; // 3-й элемент массива port_id
reg [7:0] mem [3:0], r;
mem[0] = 7;
r = mem[3];
reg arrayb[7:0][0:255]; // декларация двумерного
// масссива однобитовых регистровf
wire w_array[7:0][5:0]; // декларация массива линий
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 20
e-mail: hahanova@mail.ru
21. Описание портов модуля (старый стиль)
Синтаксис модуля для декларации портов и
переменных:
module name_of_module ( port, port, … ) ;
[input_declaration] Пример декларации портов
[output_declaration] module module_1(a, b, c) ;
[inout_declaration] input [3: 0] a, b ;
[net_declaration] output [3: 0] c;
[reg_declaration] ...
[time_declaration] endmodule
[integer_declaration]
[real_declaration] module module_1(a, b, c) ;
input [3: 0] a, b ;
other module_body ;
output [3: 0] c;
endmodule wire [3: 0] a, b ;
reg [3: 0] c;
...
endmodule
д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
2/9/2011 21
e-mail: hahanova@mail.ru
22. Описание портов модуля (новый стиль)
Синтаксис модуля для декларации портов и
переменных:
module name_of_module
([input_declaration], Пример декларации портов
[output_declaration], module module_1
[inout_declaration]); (input [3: 0] a, b,
[net_declaration] output [3: 0] c);
[reg_declaration] ...
[time_declaration] endmodule
[integer_declaration]
[real_declaration] module module_1
(input [3: 0] a, b,
other module_body ;
output reg [3: 0] c);
endmodule ...
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 22
e-mail: hahanova@mail.ru
23. Правило соединения портов
input output
net reg/net
reg/net net
inout net
net
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 23
e-mail: hahanova@mail.ru
25. Массив копий модулей
module my_module
(input a, b, output c);
assign c = a & b;
endmodule
module top (input [3:0] a, b,
output [3:0] c);
// создает 4 копии модуля my_module
my_module inst [3:0] (a,b,c);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 25
e-mail: hahanova@mail.ru
26. Иерархические имена
Объекты модуля top будут иметь следующие
иерархические имена:
top.a, top.b, top.c, top.inst,
Объекты модуля my_module представляются
списком:
top.inst.a, top.inst.b, top.inst.c.
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 26
e-mail: hahanova@mail.ru
27. Параметры.1
Синтаксис:
parameter [ signed ] [ range ] identifier = const_expr {, identifier = const_expr};
parameter integer identifier = const_expr{, identifier = const_expr};
parameter real identifier = const_expr{, identifier = const_expr};
parameter realtime identifier = const_expr{, identifier = const_expr};
parameter time identifier = const_expr{, identifier = const_expr};
Примеры определения параметров:
parameter lsb = 7;
parameter size = 8 , word = 32 ;
parameter number = 3.92, frequency = 100;
parameter clk_cycle = frequency / 2;
parameter byte_size = 8, byte_mask = byte_size - 1;
parameter signed [3:0] mux_selector = 0;
parameter real r1 = 3.5e17;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 27
e-mail: hahanova@mail.ru
30. Директивы компилятора.1
Для определения текстовых макросов.
`define <text_macro_name> <MACRO_TEXT>
Например:
`define TESTEQ1 4’b1101 // определен текстовый макрос 1101
`define myzero 0
//использование текстового макроса myzero
//в любом месте Verilog-кода вместо нуля
assign mysig = `myzero;
`define WORDSIZE 64
reg [`WORDSIZE-1 : 0] data_bus;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 30
e-mail: hahanova@mail.ru
31. Директивы компилятора.2
Макросы могут содержать параметры и могут
быть использованы для реализации функций
`define max(a,b) ((a) > (b) ? (a): (b))
n = `max(p+q, r+s);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 31
e-mail: hahanova@mail.ru
33. Директивы компилятора.4
Для использования информации, содержащейся в
другом файле:
`include “path/file-name-to-be-included”
Для описания единиц измерения и точности
вычисления параметров времени
`timescale time_unit / time_precision
Допустимые численные значения: 1, 10 и 100;
Единицы измерения s, ms, us, ns, ps и fs.
Например,
`timescale 10 ns / 100 ps
assign #5 Q = D; // Q получит значение D через 50 ns
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 33
e-mail: hahanova@mail.ru
34. Вентильные модели
a
#5
b e
#4 out
c
a
#5
b e
#4 out
c
a
#5
b e
#4 out
c
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 34
e-mail: hahanova@mail.ru
35. Стандартные логические элементы
buf and or xor bufif1 notif1
not nand nor xnor bufif0 notif0
B
C A wire A, B, C, D, E;
D and (A, B, C, D, E);
E
and
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 35
e-mail: hahanova@mail.ru
36. Таблицы истинности тристабильных вентилей
Control Control
bufif0 bufif1
0 1 x z 0 1 x z Символ L означает,
D 0 0 z L L D 0 z 0 L L что выход может
a 1 1 z H H a 1 z 1 H H принимать одно из
двух значений 0 и Z,
t x x z x x t x z x x x
символ H – 1 и Z.
a z x z x x a z z x x x Задержки символов
H и L подобны
Control Control задержкам при
notif0 notif1
0 1 x z 0 1 x z переходе в X.
D 0 1 z H H D 0 z 1 H H
a 1 0 z L L a 1 z 0 L L
t x x z x x t x z x x x
a z x z x x a z z x x x
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 36
e-mail: hahanova@mail.ru
37. Пример модели вентильного уровня (Вариант 1)
Модель мультиплексора 4-в-1 вентильного уровня
module mux_4_to_1 (Out, In0, In1, In2, In3, Sel1, Sel0);
output Out;
input In0, In1, In2, In3, Sel1, Sel0;
wire NotSel0, NotSel1; In0
Y0
wire Y0, Y1, Y2, Y3; Sel1
NotSel1
and (Y1, In1, NotSel1, NotSel0); In1
not (NotSel0, Sel0); Y1
and (Y3, In3, Sel1, Sel0); NotSel0
Sel0 Out
or (Out, Y0, Y1, Y2, Y3);
In2
and (Y0, In0, NotSel1, NotSel0); Y2
not (NotSel1, Sel1);
and (Y2, In2, Sel1, NotSel0);
In3
endmodule Y3
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 37
e-mail: hahanova@mail.ru
38. Пример модели вентильного уровня (Вариант 2)
Модель мультиплексора 4-в-1 вентильного уровня
module mux_4_to_1
( output Out, input In0, In1, In2, In3, Sel1, Sel0) ;
In0
wire NotSel0, NotSel1; Sel1
Y0
wire Y0, Y1, Y2, Y3; NotSel1
In1
and (Y0, In0, NotSel1, NotSel0), Y1
(Y1, In1, NotSel1, NotSel0), NotSel0
(Y2, In2, Sel1, NotSel0), Sel0 Out
In2
(Y3, In3, Sel1, Sel0); Y2
not (NotSel0, Sel0),
(NotSel1, Sel1);
In3
or (Out, Y0, Y1, Y2, Y3); Y3
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 38
e-mail: hahanova@mail.ru
41. Символы таблиц состояний в UDP
Символ Интерпретация Комментарий
0 Логический 0
1 Логическая 1
x Неизвестное значение
b Заменяет 0 и 1 Не разрешается для выходов
? Заменяет 0, 1 и x
- Отсутствие изменений Разрешается использование только с
выходами последовательностных UDP
Следующие символы используются только для входов последовательностных UDP
(v w) Переключение из значения v в w Значения v и w могут быть равны 0, 1, b и ?
* Эквивалентно (??) Любое изменение значения
r Эквивалентно (01) Передний фронт
f Эквивалентно (10) Задний фронт
p Эквивалентно (01), ( 0x), ( x1) Положительный фронт
n Эквивалентно (1 0 ), (1 x), (x0) Отрицательный фронт
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 41
e-mail: hahanova@mail.ru
42. Пример использования UDP
Q0 Q1 Q2 Q3
CLR CLR CLR CLR
J Clk K J Clk K J Clk K J Clk K
Clr
Clk
JK3
JK2
JK1
En
module Count4En (Q, Clr, Clk, En);
output [3:0] Q; wire [3:0] Q;
input Clr, Clk, En;
wire JK1, JK2, JK3;
JKMS Bit0 (Q[0], Clr, Clk, En, En);
JKMS Bit1 (Q[1], Clr, Clk, JK1, JK1);
JKMS Bit2 (Q[2], Clr, Clk, JK2, JK2);
JKMS Bit3 (Q[3], Clr, Clk, JK3, JK3);
and (JK1, Q[0], En); and (JK2, Q[1], JK1); and (JK3, Q[2], JK2);
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 42
e-mail: hahanova@mail.ru
43. Задержки элементов
1
Задержка переднего 0, х или z
фронта (rise delay)
t_rise
Задержка заднего 1, х или z
фронта (fall delay) 0
t_fall
Задержка отключения
(turn-off) 1, 0, х z
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 43
e-mail: hahanova@mail.ru
44. Описание задержек элементов
При описании логических элементов задержка
указывается после его имени в формате:
#(delay) | #(rise_delay, fall_delay) | #(rise_delay,
fall_delay, turn-off_delay)
Каждое значение задержки может быть задано:
# (number)| # (identifier)| # ( mintypmax: mintypmax: mintypmax)
Примеры описания задержек:
and #(5) a1(out, i1, i2);
and #(4, 6) a2(out, i1, i2); // rise_delay=4, fall_delay=6,
// turn-off_delay=4
`timescale 1 ns / 1 ps . . .
and #(3, 4, 5) a3(out, i1, i2); // rise_delay=3 ns, fall_delay=4 ns,
// turn-off_delay=5 ns
and #(4:5:6) a1(out, i1, i2);
and #(3:4:5, 5:6:7) a2(out, i1, i2);
and #(2:3:4, 3:4:5, 4:5:6) a3(out, i1, i2);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 44
e-mail: hahanova@mail.ru
45. Пример использования задержек
`timescale 1 ns / 1 ps
module D
a
module D(out, a, b, c); #5
b e
// декларация входных портов
#4 out
output out; c
input a, b, c;
wire e; // внутренняя линия
// реализация копии примитивов вентилей
and #(5) a1(e, a, b); // задержка вентиля 5 ед. времени
or #(4) o1(out, e, c); // задержка вентиля 4 ед. времени
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 45
e-mail: hahanova@mail.ru
46. Тестирование модели
`timescale 1ns/1ps
module stimulus_simple;
reg A, B, C; // Декларация внутренних переменных
wire OUT;
D d1(OUT, A, B, C); // Реализация копии модуля
initial // Формирование тестовых последовательностей
begin
A = 1'b0; B = 1'b0; C = 1'b0;
#10 A = 1'b1; // А=1 в 10 ns
#5 B = 1'b1; // B=1 в 15 ns
#5 A = 1'b0; // А=0 в 20 ns
#10 $finish; // Моделирование
// закончится в 30 ns
end
endmodule
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 46
e-mail: hahanova@mail.ru
47. Контрольные вопросы и задания (1)
1. Какой из языков лучше подходит для создания сложных иерархичных
проектов цифровых устройств?
2. Какой организацией был разработан стандарт языка Verilog?
3. Что описывают модели поведенческого уровня описывают?
4. Что описывают модели dataflow-уровня описывают?
5. Что описывают модели поведенческого уровня описывают?
6. Что описывают модели вентильного уровня описывают?
7. Какие классы переменных существуют в Verilog ?
8. Какой из идентификаторов не является правильным Verilog–
идентификатором?
9. Какое описание соответствует 8-битовому вектору типа линия?
10. Какая из деклараций описывает память из 20 элементов целого типа?
11. Какое описание соответствует памяти из 20 слов целого типа?
12. Записан следующий оператор присваивания: A=23456; Какой формат
имеет данное число в Verilog HDL?
13. Какое выражение описывает 16-битовое двоичное число?
14. Какой элемент вектора (reg [7:0] bus) содержит самый старший бит
значения?
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 47
e-mail: hahanova@mail.ru
48. Контрольные вопросы и задания
1. Указать название стандартного примитива.
2. Сколько выходов может иметь
определенный пользователем примитив?
3. Как описывается поведение определенного
пользователем примитива?
4. Чему будут равны задержки следующим
образом описанного элемента?
and #(5) a1(out, i1, i2);
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 48
e-mail: hahanova@mail.ru
49. Контрольные вопросы и задания (2)
1. К переменной какого типа может быть подключен выход
модуля при построении структурных моделей устройств?
2. Указать название стандартного примитива.
3. Сколько выходов может иметь определенный пользователем
примитив?
4. Как описывается поведение определенного пользователем
примитива?
5. Как можно переопределить значение параметра?
6. Каким образом может быть переопределено значение
параметра?
7. Чему будет равно значение параметров для копии inst модуля
my_module?
module my_module (Clk, D, Q) ;
parameter width = 16, delay = 7;
...
my_module #(32, 7) inst (Clk, D, Q) ;
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 49
e-mail: hahanova@mail.ru
50. Контрольные вопросы и задания (3)
1. Написать декларацию модуля для следующего 4-разрядного
регистра с именем shift_reg. Описать входные порты без внутренней
реализации устройства.
2. Создать модуль верхнего уровня reg_in [3:0]
stimulus со следующими переменными: shift_reg
REG_IN(4 бита) и CLK(1-бит) типа reg и (4 разряда) reg_out [3:0]
REG_OUT(4 бита) типа wire. Создать в clock
нем копию модуля shift_reg с именем sr1.
Использовать способ соединения портов по порядку.
3. Выполнить предыдущее задание, используя для соединения портов
– соединение по имени.
4. Записать иерархическое имя переменных REG_IN и REG_OUT.
5. Написать иерархическое имя для копии компонента sr1. Написать
иерархическое имя для копии его портов.
2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 50
e-mail: hahanova@mail.ru