100% found this document useful (1 vote)
189 views19 pages

CPLD and Verilog

The document discusses CPLDs and Verilog HDL. It describes CPLDs as programmable logic devices with macrocells. It then discusses Verilog HDL, describing it as a hardware description language used to model digital circuits, along with its basic elements like modules. It provides examples of a simple AND gate module. It also describes various data types, operators, and modeling approaches in Verilog like dataflow, behavioral, and structural modeling. It gives examples of a 2-to-1 multiplexer and D flip-flop module in Verilog.

Uploaded by

Suraj Goel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
189 views19 pages

CPLD and Verilog

The document discusses CPLDs and Verilog HDL. It describes CPLDs as programmable logic devices with macrocells. It then discusses Verilog HDL, describing it as a hardware description language used to model digital circuits, along with its basic elements like modules. It provides examples of a simple AND gate module. It also describes various data types, operators, and modeling approaches in Verilog like dataflow, behavioral, and structural modeling. It gives examples of a 2-to-1 multiplexer and D flip-flop module in Verilog.

Uploaded by

Suraj Goel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

CPLD and Verilog HDL

ELP 201: Digital Electronic Circuits Laboratory


Programmable Logic Device (PLD)
Programmable Logic Device (PLD)
Complex Programmable Logic Device (CPLD)

Macrocell
Hardware Description Language (HDL) :
• VHDL
• Verilog HDL
Concept of Verilog “Module”

• InVerilog, the basic unit of hardware is called a module.


– A module cannot contain definition of other modules.
– A module can, however, be instantiated within another
module.
– Instantiation allows the creation of a hierarchy in Verilog
description.
Example : AND gate

module and_gate(f, x, y);

input x, y;
output f;

assign f = x & y;

endmodule
Data Types in Verilog
A variable in Verilog belongs to one of two data types:

a) Net
• Must be continuously driven.
• Cannot be used to store a value.
• Used to model connections between continuous assignments and
instantiations.
- wire, wor, wand, tri, supply0, supply1

b) Register
• Retains the last value assigned to it.
• Often used to represent storage elements, but sometimes it can translate to
combinational circuits also.
- reg, integer, real, time
Vectors
Nets or Register type variable can be declared as vectors, of multiple bit
widths.
• Vectors are declared by specifying a range [range1:range2], where
range1 is always the most significant bit and range2 is the least significant
bit.
• Examples:
wire x, y, z; // Single bit variables
wire [7:0] sum; // MSB is sum[7], LSB is sum[0]
reg [31:0] MDR;
reg [1:10] data; // MSB is data[1], LSB is data[10]
reg clock;
Operators
Arithmetic Operators: Examples:
+ unary (sign) plus – (b + c)
– unary (sign) minus (a – b) + (c * d)
(a + b) / (a – b)
+ binary plus (add) a%b
– binary minus (subtract) a ** 3
* multiply
/ divide
% modulus
** exponentiation
Operators
Logical Operators:
! logical negation
&& logical AND
|| logical OR
Relational Operators:
!= not equal
== equal
>= greater or equal
<= less or equal
> greater
< less
Operators
Bitwise Operators:
~ bitwise NOT
& bitwise AND
| bitwise OR
^ bitwise exclusive-OR
~^ bitwise exclusive-NOR
Shift Operators:
>> shift right
<< shift left
>>> arithmetic shift right
Operators

Examples:
Conditional Operator: wire a, b, c;
cond_expr ? true_expr : false_expr; wire [7:0] x, y, z;
assign a = (b > c) ? b : c;
assign z = (x == y) ? x+2 : x-2;

Concatenation Operator: Examples:


assign f = {a, b};
{…, …, …} assign f = {a, 3’b101, b};
Joins together bits from two or more comma- assign f = {x[2], y[0], a};
separated expressions. assign f = {2’b10, 3{2’b01}, x};
Operators

Reduction Operators: Examples:


wire [3:0] a, b, c; wire f1, f2, f3;
& bitwise AND assign a = 4’b0111;
| bitwise OR assign b = 4’b1100;
assign c = 4’b0100;
~& bitwise NAND assign f1 = ^a; // gives a 1
~| bitwise NOR assign f2 = & (a ^ b); // gives a 0
^ bitwise exclusive-OR assign f3 = ^a & ~^b; // gives a 1

~^ bitwise exclusive-NOR
Dataflow Modeling

module mux2to1 (in, sel, out);

input [1:0] in;


input sel;
output out;

assign out = (!sel & in[0]) | (sel &in[1]);

endmodule
Behavioral Modeling

module mux2to1 (in, sel, out);

input [1:0] in;


input sel;
output out;

assign out = in[sel];

endmodule
Structural Modeling
module mux4to1 (in, sel, out);
input [3:0] in;
input [1:0] sel;
output out;
wire [1:0] t;

mux2to1 M0 (in[1:0],sel[0],t[0]);
4-to-1 multiplexer using 2-to-1 multiplexers
mux2to1 M1 (in[3:2],sel[0],t[1]);
mux2to1 M2 (t,sel[1],out);
endmodule
D Flip Flop
module D_flip_flop(q,q1,d,clk);
output q,q1;
input d,clk;
reg q,q1;

always @ (posedge clk)


begin
q = d;
q1= !d;
end
endmodule
Reference

Verilog HDL : A Guide to Digital Design and Synthesis


Samir Palnitkar

You might also like