chapter 5: tasks, functions, and udps · chapter 5: tasks, functions, and udps digital system...
TRANSCRIPT
![Page 1: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/1.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1
Chapter 5: Tasks, Functions, and UDPs
Department of Electronic Engineering
National Taiwan University of Science and Technology
Prof. Ming-Bo Lin
![Page 2: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/2.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-2
Syllabus
ObjectivesTasksFunctionsCombinational UDPsSequential UDPs
![Page 3: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/3.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-3
Objectives
After completing this chapter, you will be able to:Describe the features of tasks and functions Describe how to use tasks and functionsDescribe the features of dynamic tasks and functionsDescribe the features of UDPs (user-defined primitives)Describe how to use combinational and sequential UDPs
![Page 4: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/4.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-4
Syllabus
ObjectivesTasks
Definition and callTypes of tasks
FunctionsCombinational UDPsSequential UDPs
![Page 5: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/5.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-5
Task Definition and Calls
// port list styletask [automatic] task_identifier;[declarations] // include argumentsprocedural_statementendtask
// port list declaration styletask [automatic] task_identifier ([argument_declarations]);[other_declarations] // exclude argumentsprocedural_statementendtask
task [automatic] task_identifier(task_port_list); … endtask
![Page 6: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/6.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-6
A Task Example
// count the zeros in a bytemodule zero_count_task (data, out); input [7:0] data;output reg [3:0] out; always @(data)
count_0s_in_byte(data, out);// task declaration from here task count_0s_in_byte(input [7:0] data, output reg [3:0] count);integer i;begin // task body
count = 0; for (i = 0; i <= 7; i = i + 1)
if (data[i] == 0) count= count + 1;end endtaskendmodule
![Page 7: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/7.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-7
Syllabus
ObjectivesTasks
Definition and callTypes of tasks
FunctionsCombinational UDPsSequential UDPs
![Page 8: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/8.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-8
Types of Tasks
(static) task task … endtaskautomatic (reentrant, dynamic) task task automatic … endtask
![Page 9: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/9.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-9
A Dynamic Task Example
// task definition starts from heretask automatic check_counter;reg [3:0] count;// the body of the taskbegin
$display ($realtime,,"At the beginning of task, count = %d", count);if (reset) begin
count = 0;$display ($realtime,,"After reset, count = %d", count);
endendmodule
![Page 10: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/10.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-10
Syllabus
ObjectivesTasksFunctions
Definition and callTypes of functions
Combinational UDPsSequential UDPs
![Page 11: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/11.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-11
Function Definition and Calls
// port list stylefunction [automatic] [signed] [range_or_type] function_identifier;input_declarationother_declarationsprocedural_statementendfunction
// port list declaration stylefunction [automatic] [signed] [range_or_type]function_identifier (input_declarations);other_declarationsprocedural_statementendfunction
function [automatic] [signed] [range_of_type] … endfunction
![Page 12: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/12.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-12
A Function Example// count the zeros in a bytemodule zero_count_function (data, out); input [7:0] data;output reg [3:0] out; always @(data)
out = count_0s_in_byte(data);// function declaration from here.function [3:0] count_0s_in_byte(input [7:0] data);integer i; begin
count_0s_in_byte = 0;for (i = 0; i <= 7; i = i + 1)
if (data[i] == 0) count_0s_in_byte = count_0s_in_byte + 1;endendfunctionendmodule
![Page 13: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/13.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-13
Syllabus
ObjectivesTasksFunctions
Definition and callTypes of functions
Combinational UDPsSequential UDPs
![Page 14: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/14.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-14
Types of Functions
(static) function function … endfunctionautomatic (recursive, dynamic) function function automatic … endfunction
![Page 15: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/15.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-15
Automatic (Recursive) Functions
// the use of reentrant functionmodule factorial(input [7:0] n, output [15:0] result);// instantiate the fact function
assign result = fact(7);// define fact function
function automatic [15:0] fact;input [7:0] N;
// the body of functionif (N == 1) fact = 1;else fact = N * fact(N - 1);
endfunctionendmodule
![Page 16: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/16.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-16
Constant Functions
module RAM (addr_bus, data_bus);parameter RAM_depth = 1024;input [count_log_b2(RAM_depth)-1:0] addr_bus;output reg [7:0] data_bus;// function declaration from here
function integer count_log_b2(input integer depth);begin // function body
count_log_b2 = 0;while (depth) begin
count_log_b2 = count_log_b2 + 1;depth = depth >> 1;
endend
endfunctionendmodule
![Page 17: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/17.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-17
Syllabus
ObjectivesTasksFunctionsCombinational UDPs
Definition Instantiation
Sequential UDPs
![Page 18: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/18.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-18
Definition of Combinational UDPs
// port list styleprimitive udp_name(output_port, input_ports);output output_port;input input_ports;// UDP state tabletable // the state table starts from here<table rows>endtableendprimitive
![Page 19: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/19.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-19
Definition of Combinational UDPs
State table entries
The <input#> values must be in the same order as in the input list
<input1><input2>……<inputn>:<output>;
![Page 20: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/20.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-20
A Primitive UDP --- An AND Gate
primitive udp_and (out, a, b);output out; input a, b; table// a b : out;
0 0 : 0; 0 1 : 0;1 0 : 0;1 1 : 1;
endtableendprimitive
![Page 21: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/21.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-21
Another UDP Example
xy
z
fa
b
c
g1g2
g3
g4
primitive prog253 (output f, input x, y, z); table // truth table for f(x, y, z,) = ~(~(x | y) | ~x & z); // x y z : f
0 0 0 : 0;0 0 1 : 0; 0 1 0 : 1; 0 1 1 : 0; 1 0 0 : 1; 1 0 1 : 1; 1 1 0 : 1; 1 1 1 : 1;
endtableendprimitive
![Page 22: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/22.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-22
Shorthand Notation for Don’t Cares
primitive udp_and(f, a, b);output f;input a, b;table// a b : f;
1 1 : 1;0 ? : 0;? 0 : 0; // ? expanded to 0, 1, x
endtableendprimitive
![Page 23: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/23.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-23
Syllabus
ObjectivesTasksFunctionsCombinational UDPs
Definition Instantiation
Sequential UDPs
![Page 24: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/24.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-24
Instantiation of Combinational UDPs
// instantiations of UDPsmodule UDP_full_adder(sum, cout, x, y, cin);output sum, cout;input x, y, cin;wire s1, c1, c2;// instantiate udp primitives
udp_xor (s1, x, y);udp_and (c1, x, y);udp_xor (sum, s1, cin);udp_and (c2, s1, cin);udp_or (cout, c1, c2);
endmodule
![Page 25: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/25.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-25
Syllabus
ObjectivesTasksFunctionsCombinational UDPsSequential UDPs
Definition Instantiation
![Page 26: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/26.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-26
Definition of Sequential UDPs
// port list styleprimitive udp_name(output_port, input_ports);output output_port;input input_ports;reg output_port; // unique for sequential UDPinitial output-port = expression; // optional for sequential UDP// UDP state tabletable // keyword to start the state table
<table rows>endtableendprimitive
![Page 27: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/27.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-27
Definition of Sequential UDPs
State table entries
The output is always declared as a regAn initial statement can be used to initialize output
<input1><input2>……<inputn>:<current_state>:<next_state>;
![Page 28: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/28.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-28
Level-Sensitive Sequential UDPs
// define a level-sensitive latch using UDPprimitive d_latch(q, d, gate, clear);output q;input d, gate, clear;reg q;initial q = 0; // initialize output qtable// d gate clear : q : q+;
? ? 1 : ? : 0 ; // clear1 1 0 : ? : 1 ; // latch q = 10 1 0 : ? : 0 ; // latch q = 0? 0 0 : ? : - ; // no change
endtableendprimitive
![Page 29: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/29.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-29
Edge-Sensitive Sequential UDPs
// define a positive-edge triggered T-type flip-flop using UDPprimitive T_FF(q, clk, clear);output q;input clk, clear;reg q;// define the behavior of edge-triggered T_FFtable// clk clear : q : q+;
? 1 : ? : 0 ; // asynchronous clear? (10) : ? : - ; // ignore negative edge of clear
(01) 0 : 1 : 0 ; // toggle at positive edge(01) 0 : 0 : 1 ; // of clk(1?) 0 : ? : - ; // ignore negative edge of clk
endtableendprimitive
![Page 30: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/30.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-30
Shorthand Symbols for Using in UDPs
![Page 31: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/31.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-31
Syllabus
ObjectivesTasksFunctionsCombinational UDPsSequential UDPs
Definition Instantiation
![Page 32: Chapter 5: Tasks, Functions, and UDPs · Chapter 5: Tasks, Functions, and UDPs Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-1 Chapter](https://reader035.vdocuments.us/reader035/viewer/2022070211/6101aa35e34f0d6cb5215bfb/html5/thumbnails/32.jpg)
Chapter 5: Tasks, Functions, and UDPs
Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 5-32
Instantiation of UDPs
// an example of sequential UDP instantiationsmodule ripple_counter(clock, clear, q);input clock, clear;output [3:0] q;
// instantiate the T_FFs.T_FF tff0(q[0], clock, clear);T_FF tff1(q[1], q[0], clear);T_FF tff2(q[2], q[1], clear);T_FF tff3(q[3], q[2], clear);endmodule