Verilog HDL Lab Manual
Verilog HDL Lab Manual
Design Specifications
Design Entry
Functional
Simulation RTL Model
(Zero Delay)
Target Device
Libraries (Vender
Synthesis
T Specific)
Gate level Gate level
E description using
S Simulation
target library cells Design Constraints
T
Area / Speed
B
E Gate level Model
N
C Timing Mapping +
H Simulation Translation Target Device
(Gate + Gate level model to Libraries (Vender
Interconnect device architecture Specific)
Delays)
Place and Route
Placing the design in Design Constraints
device while optimizing Area / Speed
it for speed and area
Programming file
generation
Libraries Bit Stream
(Simprims
and
Unisims) Download onto
FPGA/ CPLD
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
FPGA Design Flow for Xilinx
The Design flow followed by Xilinx devices is as shown as under:
Xilinx FPGAs are reprogrammable and when combined with an HDL design flow can greatly reduce
the design and verification cycle.
VERILOG HDL/Verilog
Code Design Entry
Functional Simulation
Synthesis
Implementation
Timing Simulation
Design Entry
The first stage of Xilinx design flow is a design entry process. A design must be specified by using
either a schematic editor or HDL text-based tool.
Functional Simulation
Upon the finish of the design entry stage, the functional simulation of the design is being performed,
which is used to verify functionality of the design assuming no delays, whatsoever. This assumes no target
technology selection at this stage and hence assumes zero delay in simulation.
Complex designs must be intensively simulated, at different simulation points, during the design flow.
Simulation verifies the operation of the design before it is actually implemented as hardware. One of the most
prevalent methods for simulation is testbenching. Testbenches (VERILOG HDL) or text fixtures (Verilog) are
used to specify circuit stimuli and responses.
Roughly, simulation can be divided as functional and timing simulation. Primarily, the functional simulation
verifies that the design’s specifications are correctly understood and coded. Timing information, produced
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
during the device implementation stage, is not available during the functional simulation. Functional simulation
can be used after synthesis, too.
Comparison between the pre- and post-synthesis simulations’ results checks the results of the HDL compiler’s
work and the HDL code’s correctness.
Timing simulation operates with the real delays (results of device implementation) and is used for verification
of implemented design. Timing data are given in an .sdf file (Standard Delay Format).
Xilinx supports functional and timing simulations at different points of the design flow:
Ø Register Transfer Level (RTL) simulation.
Ø Post-synthesis functional simulation (Pre-NGDBuild).
Ø Post-implementation back-annotated timing simulation.
Design Synthesis
After this process, the synthesis is performed. Here for the first time in the design flow the target
technology (choice of a particular FPGA device family) is being performed. This target technology selection
will remain the same, henceforth in the design flow, upto the final implementation stage, where finally
generated Bit stream file gets downloaded onto that FPGA.
The output of the synthesis process is creation of gate level netlist. This refers to the EDIF
implementation netlist of the FPGA design. Besides the EDIF implementation netlist, the XNF (Xilinx netlist
format) netlist can be used as well.
Although the XNF is now becoming rather obsolete. The EDIF netlist is used as an input file to the
Xilinx Implementation tool and specifies how the core will be implemented.
The Electronic Design Interchange Format (EDIF) is a format used to exchange design data between different
CAD systems. In the world of FPGA design, it is used for interchange of data between different EDA
(Electronic Design Automation) software tools. EDIF files are used for FPGA implementation only. They are
the result of design synthesis and can be generated from different design entry EDA tools: schematic or HDL
design tools. EDIF files are inputs to the Xilinx implementation tools during the translation step (NGDBuild).
Design Implementation
Design Implementation includes the following steps:
i) Translate
ii) Map
iii) Place and Route
In the Translate step, which is the first step in the implementation process, EDIF netlist must be further
converted into Native Generic Database file (NGD), by means of a program called NGDBuild. The NGD file
resulting from an NGDBuild run contains the logical description of the design that can be mapped into a
targeted Xilinx FPGA device family. It is important to stress that NGDBuild merges all available EDIF netlists
from the working directory. This is actually the step where the black-box netlist becomes merged with the rest
of FPGA design.
In the next stage, the Map stage, the NGD file is an input into a MAP program that maps logical design
to a Xilinx FPGA. The output of the MAP program is an NCD (Native Circuit Description) file. The NCD is a
physical representation of the design mapped to the components of internal FPGA architecture.
The mapped design is ready to be placed and routed. The PAR program does this job. The input to PAR
is a mapped (not routed) NCD file, while the output is a fully routed NCD file.
Review reports are generated by the Implement Design process, such as the Map Report or Place &
Route Report, and change any of the following to improve your design:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Ø Process properties
Ø Constraints
Ø Source files
Synthesis and again implementation of the design is being made until design requirements are met.
Timing verification of the design can be made at different points in the design flow as follows:
i) Run static timing analysis at the following points in the design flow:
Ø After Map.
Ø After Place and Route.
ii) Running Timing Simulations at the following points in the design flow:
Ø After Map (for a partial timing analysis of CLB and IOB delays).
Ø After Place and Route (for full timing analysis of block and net delays).
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 1
Simulation using all the modeling styles and Synthesis of all the logic gates using
Verilog HDL
AIM:
Perform Zero Delay Simulation of all the logic gates
written in behavioral, dataflow and structural modeling style in Verilog using a Test bench. then,
Synthesize each one of them on two different EDA tools.
Block Diagram:
A And, Nand,
Or, Nor, C
Xor, Xnor
B
Truth table:
And Gate: Or Gate:
A B Y A B Y
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Boolean Equation:
Module andg(a,b,c);
input a,b;
output c;
assign c = a & b;
endmodule
Module andg1(a,b,c);
input a,b;
always(a,b)
begin
if (a==1’b0 or b == 1’b0)
c = 1’b0;
else if (a==1’b0 or b == 1’b1)
c = 1’b0;
else if (a==1’b1 or b == 1’b0)
c = 1’b0;
else if (a==1’b1 or b == 1’b1)
c = 1’b1;
end
endmodule
assign c = a | b;
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
assign c = a ^ b;
endmodule
wire c;
nandg uut (
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
.a(a),
.b(b),
.c(c)
);
initial
begin
a = 0;
b = 0;
#100 a = 0;
b = 1;
#100 a = 1;
b = 0;
#100 a = 1;
b = 1;
end
endmodule
Simulation Waveform:
Nand Gate:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EDA Tool Name: Xilinx Project Navigator – 8.1
===============================================================
* Synthesis Options Summary *
===============================================================
---- Source Parameters
Input File Name : "xorg.prj"
Input Format : mixed
Ignore Synthesis Constraint File : NO
* Final Report *
===============================================================
Final Results
RTL Top Level Output File Name : xorg.ngr
Top Level Output File Name : xorg
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : NO
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Design Statistics
# IOs :3
Cell Usage :
# BELS :1
# LUT2 :1
# IO Buffers :3
# IBUF :2
# OBUF :1
=========================================================================
Timing Summary:
---------------
Speed Grade: -5
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 2
Simulation using all the modeling styles and Synthesis of 1-bit half adder and 1-bit
Full adder using verilog HDL
AIM:
Perform Zero Delay Simulation of 1-bit half adder and 1-bit Full adder written in behavioral, dataflow and
structural modeling style in VERILOG HDL using a Test bench. Then, Synthesize each one of them on two
different EDA tools.
Block Diagram:
1-bit Half Adder:
Truth table:
Half Adder:
A B Sum Carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Full Adder:
A B Cin Sum Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Boolean Equation:
Half Adder:
Sum = A B
Carry = A.B
Full Adder:
Sum = A B Cin
Cout = A.B + A.Cin + B.Cin
assign s = a ^ b;
assign co = a &b;
endmodule
always @(a or b)
begin
s = a ^ b;
co = a &b;
end
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
endmodule
endmodule
ha ha_i1 (.a(a),
.b(b),
.s(w1),
.co(w3)
);
ha ha_i2 (.a(w1),
.b(cin),
.s(sum),
.co(w2)
);
endmodule
Half Adder:
module ha_tst_v;
reg a;
reg b;
wire s;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
wire co;
ha1 uut (
.a(a),
.b(b),
.s(s),
.co(co)
);
initial
begin
a = 0;
b = 0;
#100 a = 0;
b = 1;
#100 a = 1;
b = 0;
#100 a = 1;
b = 1;
end
endmodule;
Full Adder:
module fa_tst_v;
reg a;
reg b;
reg cin;
wire sum;
wire cout;
fa uut (
.a(a),
.b(b),
.cin(cin),
.sum(sum),
.cout(cout)
);
initial
begin
a = 0;
b = 0;
cin = 0;
#100 a = 0;
b = 0;
cin = 1;
#100 a = 0;
b = 1;
cin = 0;
#100 a = 0;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
b = 1;
cin = 1;
#100 a = 1;
b = 0;
cin = 0;
#100 a = 1;
b = 0;
cin = 1;
#100 a = 1;
b = 1;
cin = 0;
#100 a = 1;
b = 1;
cin = 1;
end
endmodule
Simulation Waveform:
Half Adder:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Full Adder:
Synthesis:
Half Adder:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Full Adder:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis Report (Xilinx Project Navigator):
Full Adder:
======================================================* Synthesis Options
Summary *
---- Source Parameters
Input File Name : "fa2.prj"
Input Format : mixed
Ignore Synthesis Constraint File : NO
===============================================================*
HDL Analysis *
===============================================================Analyzing top module
<fa2>.
Module <fa2> is correct for synthesis.
===============================================================* HDL
Synthesis *
===============================================================
Performing bidirectional port resolution...
Macro Statistics
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
# Xors :2
1-bit xor2 :2
======================================================
* Advanced HDL Synthesis *
======================================================
Loading device for application Rf_Device from file '3s50.nph' in environment C:\Xilinx.
======================================================
Advanced HDL Synthesis Report
Macro Statistics
# Xors :2
1-bit xor2 :2
======================================================
* Final Report *
=====================================================================
Final Results
RTL Top Level Output File Name : fa2.ngr
Top Level Output File Name : fa2
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : NO
Design Statistics
# IOs :5
Cell Usage :
# BELS :2
# LUT3 :2
# IO Buffers :5
# IBUF :3
# OBUF :2
=====================================================================
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 3
Simulation using all the modeling styles and Synthesis of 2:1 Multiplexer and 4:1
Multiplexer using VERILOG HDL
Aim:
Perform Zero Delay Simulation of 2:1 Multiplexer and 4:1 Multiplexer written in behavioral, dataflow and
structural modeling style in VERILOG HDL using a Test bench. Then, Synthesize each one of them on two
different EDA tools.
Block Diagram:
2:1 Multiplexer:
A
2:1
Y
B Multiplexer
4:1 Multiplexer:
A
4:1
B Multiplexer Y
C
D
S1 S0
Truth table:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
2:1 Multiplexer:
S A B Y
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
4:1 Multiplexer:
A B Y
0 0 A
0 1 B
1 0 C
1 1 D
Boolean Equation:
2:1 Multiplexer:
Y = A.S’ + B.S
4:1 Multiplexer:
Y = A.S1’.S0’ + B.S1’.S0 + C.S1.S0’ + D.S1.S0
assign c = s ? a : b;
endmodule
always @(a or b or s)
begin
if (s)
c = a;
else
c = b;
end
endmodule
assign c = (!s[0] & !s[1] & a[0]) | (s[0] & !s[1] & a[1]) | (!s[0] & s[1] & a[2]) | (s[0] &
s[1] & a[3]);
endmodule
always @(a or s)
begin
case(s)
2'b00: c = a[0];
2'b01: c = a[1];
2'b10: c = a[2];
2'b11: c = a[3];
default: c = a[0];
endcase
end
endmodule
mux21 uut (
.a(a),
.b(b),
.s(s),
.c(c) );
initial
begin
a = 0;
b = 1;
s = 0;
#100
s = 1;
end
endmodule
4: 1 Multiplexer:
module mux41_tst_v;
reg [3:0] a;
reg [1:0] s;
wire c;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
mux41 uut (
.a(a),
.s(s),
.c(c)
);
initial
begin
a = 4'b0101;
s = 2'b00;
#100 s = 2'b00;
#100 s = 2'b01;
#100 s = 2'b10;
#100 s = 2'b11;
end
endmodule
Simulation Waveform:
Mux41:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
2 :1 Multiplexer:
4 :1 Multiplexer:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis Report:
===============================================================*
Synthesis Options Summary *
===============================================================---- Source Parameters
Input File Name : "mux41.prj"
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Input Format : mixed
Ignore Synthesis Constraint File : NO
===============================================================
* HDL Compilation *
===============================================================
Compiling verilog file "mux21.v" in library work
Module <mux21> compiled
Compiling verilog file "mux41.v" in library work
Module <mux21a> compiled
Module <mux41> compiled
Module <mux41a> compiled
Module <mux41b> compiled
No errors in compilation
Analysis of file <"mux41.prj"> succeeded.
===============================================================
* Final Report *
===============================================================
Final Results
RTL Top Level Output File Name : mux41.ngr
Top Level Output File Name : mux41
Output Format : NGC
Optimization Goal : Speed
Keep Hierarchy : NO
Design Statistics
# IOs :7
Cell Usage :
# BELS :3
# LUT3 :2
# MUXF5 :1
# IO Buffers :7
# IBUF :6
# OBUF :1
===============================================================
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Number of Slices: 1 out of 768 0%
Number of 4 input LUTs: 2 out of 1536 0%
Number of IOs: 7
Number of bonded IOBs: 7 out of 124 5%
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 4
Aim:
Perform Zero Delay Simulation 1:4 Demultiplexer in VERILOG HDL using a Test bench. Then, Synthesize
on two different EDA tools.
Block Diagram:
1:4
A Demultiplexer Y
Truth Table:
Boolean Equation:
Y(3) = A.S.(1)’.S(0)’
Y(2) = B.S.(1)’.S(0)
Y(1) = C.S.(1).S(0)’
Y(0) = D.S.(1).S(0)
reg a;
reg s;
wire [1:0] c;
demux12 uut (
.a(a),
.s(s),
.c(c) );
initial
begin
a = 0;
s = 0;
#10; s = 1;
end
endmodule
Simulation Waveform:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 5
Aim:
Perform Zero Delay Simulation 2:4 Decoder in VERILOG HDL using a Test bench. Then, Synthesize on two
different EDA tools.
Block Diagram:
2:4
A Decoder Y
Truth Table:
A Y
00 0001
01 0010
10 0100
11 1000
Boolean Equation:
always @(a)
begin
b[3] = a[1] & a[0];
b[2] = !a[1] & a[0];
b[1] = a[1] & !a[0];
b[0] = !a[1] & !a[0];
end
endmodule
reg [1:0] a;
wire [3:0] b;
decoder24 uut (
.a(a),
.b(b)
);
initial
begin
a = 2'b00;
#100 a = 2'b01;
#100 a = 2'b10;
#100 a = 2'b11;
end
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
Synthesis:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 6
Aim:
Perform Zero Delay Simulation 4:2 Encoder in VERILOG HDL using a Test bench. Then, Synthesize on two
different EDA tools.
Block Diagram:
A 4:2 Y
Encoder
Truth Table:
A Y
1000 00
0100 01
0010 10
0001 11
Boolean Equation:
Y(1) = A(1) + A(0)
Y(0) = A(2) + A(0)
always @(a)
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
begin
case (a)
4'b0001: b = 2'b00;
4'b0010: b = 2'b01;
4'b0100: b = 2'b10;
4'b1000: b = 2'b11;
default: b = 2'b00;
endcase
end
endmodule
decoder24 uut (
.a(a),
.b(b)
);
initial
begin
a = 4'b0001;
#100 a = 4'b0010;
#100 a = 4'b0100;
#100 a = 4'b1000;
#100 $stop;
end
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
Synthesis:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 7
Aim:
Perform Zero Delay Simulation 4:2 Priority Encoder in VERILOG HDL using a Test bench. Then, Synthesize
on two different EDA tools.
Block Diagram:
4:2 Y
A Priority
Encoder
Truth Table:
Boolean Equation:
Y(1) = A(3) + A(2)
Y (0) = A(2)’.A(1) + A(3).A(2) + A(3).A(0)
always @(a)
begin
if (a[3])
b = 2'b00;
else if (a[2])
b = 2'b01;
else if(a[1])
b = 2'b10;
else if (a[0])
b = 2'b11;
end
endmodule
VERILOG HDL Test Bench:
module pri_encoder_tst_v;
reg [3:0] a;
wire [1:0] b;
pri_encoder42 uut (
.a(a),
.b(b)
);
initial
begin
a = 4'b0001;
#10 a = 4'b0010;
#10 a = 4'b0011;
#10 a = 4'b0100;
#10 a = 4'b0101;
#10 a = 4'b0110;
#10 a = 4'b0111;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
#10 a = 4'b1000;
#10 a = 4'b1001;
#10 a = 4'b1010;
#10 a = 4'b1011;
#10 a = 4'b1100;
#10 a = 4'b1101;
#10 a = 4'b1110;
#10 a = 4'b1111;
#10 $stop;
end
endmodule
Simulation Waveform:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 8
Aim:
Perform Zero Delay Simulation of magnitude comparator 1-bit in VERILOG HDL using a Test bench. Then,
Synthesize on two different EDA tools.
Block Diagram:
AgtB
A Magnitude
Comparator AltB
B
1-bit AeqB
Truth Table:
Boolean Equation:
AgtB = A.B’
AltB = A’.B
AeqB = A’.B’ + A.B
endmodule
magcomp1 uut (
.a(a),
.b(b),
.agtb(agtb),
.aeqb(aeqb),
.altb(altb) );
initial
begin
a = 0;
b = 0;
#100 a = 0; b = 1;
#100 a = 1; b = 0;
#100 a = 1; b = 1;
end
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
Synthesis:
EDA Tool Name: Xilinx Project Navigator – 8.1:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 9
Aim:
Perform Zero Delay Simulation of d flip flop in VERILOG HDL using a Test bench. Then, Synthesize on
EDA tool.
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
VERILOG HDL Test Bench:
Test Bench of D flip flop asynchronous/synchronous reset:
module dff_tst_v;
reg d;
reg clk;
reg reset;
wire q;
dff uut (
.d(d),
.clk(clk),
.reset(reset),
.q(q)
);
initial
begin
d = 0;
clk = 1;
reset = 1;
#20 reset = 0;
d = 1;
#10 d = 0;
#20 d = 1;
#10 d = 0;
end
always
#5 clk = ~ clk;
endmodule
Simulation Waveform:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
EDA Tool Name: Xilinx Project Navigator – 8.1
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 10
Aim:
Perform Zero Delay Simulation of JK, T, Flip flop in VERILOG HDL using a Test bench. Then, Synthesize
on EDA tools.
T-flip flop:
module tff(t, clk, reset, q);
input t;
input clk;
input reset;
output q;
reg q;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
jkff uut (
.j(j),
.k(k),
.clk(clk),
.reset(reset),
.q(q) );
initial
begin
j = 0;
k = 0;
clk = 1;
reset = 1;
#20 reset = 0;
#10 j = 0;
k = 1;
#10 j = 1;
k = 0;
#10 j = 1;
k = 1;
end
always
#5 clk = ~ clk;
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Test Bench of T flip flop:
module tff_tst_v;
reg t;
reg clk;
reg reset;
wire q;
tff uut (
.t(t),
.clk(clk),
.reset(reset),
.q(q)
);
initial
begin
t = 0;
clk = 1;
reset = 1;
#20 reset = 1'b0;
t = 1'b1;
#20 t = 1'b0;
#30 t = 1'b1;
end
always
#5 clk = ~ clk;
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
JKFF:
TFF:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
JKFF:
TFF:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 11
Simulation and Synthesis of SISO, SIPO, PIPO shift registers using VERILOG
HDL
Aim:
Perform Zero Delay Simulation of SISO, SIPO, PIPO shift registers in VERILOG HDL using a Test bench.
Then, Synthesize on EDA tools.
wire w1,w2,w3;
dff abc1 (.d(sin),
.clk(clk ),
.reset(reset),
.q(w1)
);
endmodule
endmodule
dff a2 (.d(pout[0]),
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
.clk(clk),
.reset(reset),
.q(pout[1])
);
dff a3 (.d(pout[1]),
.clk(clk),
.reset(reset),
.q(pout[2])
);
dff a4 (.d(pout[2]),
.clk(clk),
.reset(reset),
.q(pout[3])
);
endmodule
PIPO:
always
#5 clk = ~ clk;
endmodule
initial
begin
sin = 0;
clk = 1;
reset = 1;
#300
reset = 1'b0;
sin = 1'b1;
#100 sin = 1'b0;
#100 sin = 1'b1;
#100 sin = 1'b1;
end
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
always
#50 clk = ~ clk;
endmodule
initial
begin
pin = 4'b0000;
clk = 1;
reset = 1;
#100 reset = 0;
pin = 4'b1010;
#100 pin = 4'b0110;
end
always
#50 clk = ~ clk;
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
SISO:
SIPO:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
PIPO:
Synthesis:
SISO:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
SIPO:
PIPO:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
EXPERIEMENT NO. 12
Aim:
Perform Zero Delay Simulation of asynchronous and synchronous counter in VERILOG HDL using a Test
bench. Then, Synthesize on EDA tools.
Asynchronous up counter:
tff a1 (.t(1'b1),
.clk (clk),
.reset (reset),
.q(count[0]) );
tff a2 (.t(1'b1),
.clk (count[0]),
.reset (reset),
.q (count[1]) );
tff a3 (.t(1'b1),
.clk (count[1]),
.reset (reset),
.q (count[2]) );
endmodule
Synchronous up counter:
module synccntr3(clk, reset, cnt_en, load, load_val, count);
input clk;
input reset;
input cnt_en;
input load;
input [2:0] load_val;
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
output [2:0] count;
reg [2:0] count;
module asynccnt3_tst_v;
reg clk;
reg reset;
wire [2:0] count;
asynccnt3 uut ( .clk(clk),
.reset(reset),
.count(count)
);
initial
begin
clk = 1;
reset = 1;
#10 reset = 0;
#150;
end
always
#5 clk = ~ clk;
endmodule
synccntr3 uut (
.clk(clk),
.reset(reset),
.cnt_en(cnt_en),
.load(load),
.load_val(load_val),
.count(count)
);
initial
begin
clk = 1;
reset = 1;
load = 0;
load_val = 0;
cnt_en = 0;
#10 reset = 0;
load = 1'b1;
load_val = 3'b011;
#10 cnt_en = 1'b1;
load = 1'b0;
#80 cnt_en = 1'b0;
end
always
#5 clk = ~ clk;
endmodule
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Simulation Waveform:
Asynchronous up counter:
Synchronous up counter:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Synthesis:
Asynchronous up counter:
Synchronous up counter:
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]
Verilog HDL Lab Manual Dated: 29/04/2011
Prepared By:
Parag Parandkar Asst. Prof. ECE Dept., CDSE, Indore (M.P.)
[email protected]