апкс 2011 02_verilog

1,183 views
1,064 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,183
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

апкс 2011 02_verilog

  1. 1. VERILOG 2. Основные понятия и конструкции языка Verilog Автоматизация проектирования компьютерных систем д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ2/9/2011 e-mail: hahanova@mail.ru 1
  2. 2. Цель лекции и содержаниеЦель – знакомство с базовыми конструкциями языка VerilogПлан 1. Модуль – базовая единица языка Verilog. 2. Уровни абстракции описания моделей 3. Лексические соглашения 4. Классы и типы данных 5. Описание портов модуля 6. Параметры 7. Директивы компилятора 8. Стандартные логические элементы 9. Определенные пользователем примитивы 10. Задержки 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 2 e-mail: hahanova@mail.ru
  3. 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
  4. 4. Диаграмма стандартов Verilog 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 4 e-mail: hahanova@mail.ru
  5. 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. 6. 2. Уровни абстракции моделей поведенческий (или алгоритмический) dataflow-уровень (уровень передачи данных) вентильный уровень транзисторный уровень (switch-level) 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 6 e-mail: hahanova@mail.ru
  7. 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. 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. 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. 10. Транзисторный уровень my_nor my_nor a Vdd out b pwrmodule my_nor(out, a, b); (output out, input a,b); c wire c;//создание линий питания и земли out supply1 pwr; supply0 gnd;// реализации pmos-транзисторов a bpmos (c, pwr, b);pmos (out, c, a);// реализации nmos-транзисторnmos (out, gnd, a); gndnmos (out, gnd, b);endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 10 e-mail: hahanova@mail.ru
  11. 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. 12. Целочисленные значения Синтаксис : [sign] [size] base number где sign – знак, size - число битов для представления значения number, base – система счисления: d или D десятичная, h или H шестнадцатеричная, o или O восьмеричная, b или B двоичная.  Примеры 15h f o 17 d 15 10d 20 ‘b 1111 b 1_1_1_1 -5b1_1011 8h z 8b0 (8b00000000) 8b1 (8b00000001) 4b10?? (4b10zz) 8bz (8bzzzzzzzz) 8bx (8bxxxxxxxx) 8h4? (8b0100zzzz) 12h13x // значение последних 4 битов неизвестно 4d-2 // неправильное описание -8d3 // отрицательное число, // представлено дополнительным кодом 8-ю разрядами 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 12 e-mail: hahanova@mail.ru
  13. 13. Вещественные значения Синтаксис:sign unsigned_number.unsigned_numbersign unsigned_number.unsigned_number e sign unsigned_numbersign 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. 14. Строковые значенияСтроковые значения в Verilog записываются вдвойных кавычках. var = “Hello world!”;В строках могут быть использованыспециальные символы: • n – новая строка • t – табуляция • – символ • ” – символ “ . 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 14 e-mail: hahanova@mail.ru
  15. 15. 5. Классы и типы данных Классы данных Логический Значение уровень 0 логический 0, условие false 1 логический 1, условие true x неизвестное значение z высокий импеданс 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 15 e-mail: hahanova@mail.ru
  16. 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 = 1b0; 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. 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. 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. 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. 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. 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. 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. 23. Правило соединения портов input output net reg/net reg/net net inout net net 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 23 e-mail: hahanova@mail.ru
  24. 24. Структурные модели Синтаксис:module_name [parameter_assignment] instance_name (list_of_connections); Соединение по порядку Пропущенный порт module dff (clk, d, q); dff inst_1 (clock, , net_1); input clk, d; output q; reg q; Соединение по имени ... module top; endmodule reg data, clock; wire q_out, net_1; module top; reg data, clock; dff inst_1 (.d(data), .q(net_1), .clk(clock)); wire q_out, net_1; dff inst_2 (.clk(clock), .d(net_1), .q(q_out)); dff inst_1 (clock, data, net_1); endmodule dff inst_2 (clock, net_1, q_out); endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 24 e-mail: hahanova@mail.ru
  25. 25. Массив копий модулейmodule my_module (input a, b, output c); assign c = a & b;endmodulemodule 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. 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. 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
  28. 28. Параметры.2 Пример использования параметров // Старый стиль module my_module (Clk, D, Q) ; parameter width = 2, delay = 10; input [width - 1:0] D; input Clk; output [width:0] Q; assign #delay Q = D; endmodule // Новый стиль module my_module (Clk, D, Q) #(parameter width = 2, delay = 10) (input [width - 1:0] D, input Clk, output [width:0] Q); assign #delay Q = D; endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 28 e-mail: hahanova@mail.ru
  29. 29. Переопределение параметров в операторе реализации  с помощью оператора копии модуля defparam module top;module top; reg Clk; reg Clk ; reg [7:0] D; reg [7:0] D ; wire [7:0] Q; wire [7:0] Q ; my_module inst_1(Clk, D, Q) endmodulemy_module #(7, 25) module override; inst_1(Clk, D, Q) ; defparam top.inst_1.width = 7;endmodule endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 29 e-mail: hahanova@mail.ru
  30. 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. 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
  32. 32. Директивы компилятора.3 Для проведения условной компиляции:`ifdef и `endif `ifdef MYVAR module if_MYVAR_is_declared; ... endmodule `else module if_MYVAR_is_not_declared; ... endmodule `endif 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 32 e-mail: hahanova@mail.ru
  33. 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. 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. 35. Стандартные логические элементыbuf and or xor bufif1 notif1not 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. 36. Таблицы истинности тристабильных вентилей Control Controlbufif0 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. 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 NotSel1and (Y1, In1, NotSel1, NotSel0); In1not (NotSel0, Sel0); Y1and (Y3, In3, Sel1, Sel0); NotSel0 Sel0 Outor (Out, Y0, Y1, Y2, Y3); In2and (Y0, In0, NotSel1, NotSel0); Y2not (NotSel1, Sel1);and (Y2, In2, Sel1, NotSel0); In3endmodule Y3 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 37 e-mail: hahanova@mail.ru
  38. 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
  39. 39. Определенные пользователем примитивы(UDP) Синтаксисprimitive udp_name ( port_list ) ; output output_port; input list_of_imputs;initial output_port = value;table combinational_input_list : output_value; sequential_input_list: current_state: next_state;endtableendprimitive 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 39 e-mail: hahanova@mail.ru
  40. 40. Примеры описания UDPПримитив мультиплексора 2-в 1 Примитив D-триггераprimitive Mux2to1 (Out, Sel, In0, In1) ; primitive d_ff (q, d, clk, clr) ; output Out; output q; reg q; input d, clk, clr; input Sel, In0, In1; initial q=0;// нет инициализации tabletable // d clk clr : q : q+ // Sel In0 In1 : Out // -------------------------------- 0 0 ? : 0; ? ? 0 : ? : 0; 0 r 1 : ? : 0; 0 1 ? : 1; 1 r 1 : ? : 1; 1 ? 0 : 0; ? n 1 : ? : - ; 1 ? 1 : 1; * ? 1 : ? : -; x ? ? : x; ? ? * : ? : -;endtable endtableendprimitive endprimitive 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 40 e-mail: hahanova@mail.ru
  41. 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. 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. 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. 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. 45. Пример использования задержек`timescale 1 ns / 1 ps module D amodule 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. 46. Тестирование модели`timescale 1ns/1psmodule stimulus_simple; reg A, B, C; // Декларация внутренних переменных wire OUT; D d1(OUT, A, B, C); // Реализация копии модуля initial // Формирование тестовых последовательностей begin A = 1b0; B = 1b0; C = 1b0; #10 A = 1b1; // А=1 в 10 ns #5 B = 1b1; // B=1 в 15 ns #5 A = 1b0; // А=0 в 20 ns #10 $finish; // Моделирование // закончится в 30 nsendendmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 46 e-mail: hahanova@mail.ru
  47. 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. 48. Контрольные вопросы и задания1. Указать название стандартного примитива.2. Сколько выходов может иметь определенный пользователем примитив?3. Как описывается поведение определенного пользователем примитива?4. Чему будут равны задержки следующим образом описанного элемента? and #(5) a1(out, i1, i2); 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 48 e-mail: hahanova@mail.ru
  49. 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. 50. Контрольные вопросы и задания (3) 1. Написать декларацию модуля для следующего 4-разрядного регистра с именем shift_reg. Описать входные порты без внутренней реализации устройства. 2. Создать модуль верхнего уровня reg_in [3:0]stimulus со следующими переменными: shift_regREG_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

×