0% found this document useful (0 votes)
58 views17 pages

SYEN 3330 Digital Systems: Chapters 4 - Part3: Verilog - Part 1

This document provides an overview of Verilog, a hardware description language. It describes Verilog basics like notation, keywords, constructs and operators. It also describes different types of Verilog descriptions including structural, dataflow, behavioral, hierarchical and procedural. Specific examples are given to illustrate structural, dataflow and behavioral descriptions. The objectives of learning Verilog and how it can be used to specify digital designs are also outlined.

Uploaded by

anjanappa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views17 pages

SYEN 3330 Digital Systems: Chapters 4 - Part3: Verilog - Part 1

This document provides an overview of Verilog, a hardware description language. It describes Verilog basics like notation, keywords, constructs and operators. It also describes different types of Verilog descriptions including structural, dataflow, behavioral, hierarchical and procedural. Specific examples are given to illustrate structural, dataflow and behavioral descriptions. The objectives of learning Verilog and how it can be used to specify digital designs are also outlined.

Uploaded by

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

SYEN 3330

Digital Systems

Chapters 4 – Part3:
Verilog – Part 1

SYEN 3330 Digital Systems Jung H. Kim Chapter 4-3 1


Overview of Verilog – Part 1
• Objectives
• Verilog Basics
 Notation
 Keywords & Constructs
 Operators
• Types of Descriptions
 Structural
 Dataflow
• Boolean Equations
• Conditions using Binary Combinations
• Conditions using Binary Decisions
 Behavioral & Hierarchical
 Process (Procedural)

SYEN 3330 Digital Systems Chapter 4-3 Page 2


Objectives
• To become familiar with the hardware
description language (HDL) approach to
specifying designs
 Be able to read a simple Verilog HDL
description
 Be able to write a simple Verilog HDL
description using a limited set of syntax and
semantics
 Understanding the need for a “hardware
view” when reading and writing an HDL

SYEN 3330 Digital Systems Chapter 4-3 Page 3


Verilog Notation - 1
• Verilog is:
 Case sensitive
 Based on the programming language C
• Comments
 Single Line
// [end of line]
 Multiple Line
/*
*/
• List element separator: ,
• Statement terminator: ;

SYEN 3330 Digital Systems Chapter 4-3 Page 4


Verilog Notation - 2
• Binary Values for Constants and Variables
 0
 1
 X,x - Unknown
 Z,z – High impedance state (open circuit)
• Constants
 n’b[integer]: 1’b1 = 1, 8’b1 = 000000001, 4’b0101=
0101, 8’bxxxxxxxx, 8’bxxxx = 0000xxxx
 n’h[integer]: 8’hA9 = 10101001, 16’hf1=
0000000011110001
• Identifier Examples
 Scalar: A,C,RUN,stop,m,n
 Vector: sel[0:2], f[0:5], ACC[31:0], SUM[15:0],
sum[15:0]

SYEN 3330 Digital Systems Chapter 4-3 Page 5


Verilog Keywords & Constructs - 1
• Keywords are lower case
• module – fundamental building block for Verilog
designs
 Used to construct design hierarchy
 Cannot be nested
• endmodule – ends a module – not a statement
=> no “;”
• Module Declaration
 module module_name (module_port, module_port, …);
 Example: module full_adder (A, B, c_in,
c_out, S);
SYEN 3330 Digital Systems Chapter 4-3 Page 6
Verilog Keywords & Constructs - 2
• Input Declaration
 Scalar
• input list of input identifiers;
• Example: input A, B, c_in;
 Vector
• input[range] list of input identifiers;
• Example: input[15:0] A, B, data;
• Output Declaration
 Scalar Example: output c_out, OV, MINUS;
 Vector Example: output[7:0] ACC, REG_IN,
data_out;

SYEN 3330 Digital Systems Chapter 4-3 Page 7


Verilog Keywords & Constructs - 3
• Primitive Gates
 buf, not, and, or, nand, nor, xor, xnor
 Syntax: gate_operator instance_identifier
(output, input_1, input_2, …)
 Examples:
and A1 (F, A, B); //F = A B
or O1 (w, a, b, c)
O2 (x, b, c, d, e); //w=a+b+c,x=b+c+d+e

SYEN 3330 Digital Systems Chapter 4-3 Page 8


Verilog Operators - 1
• Bitwise Operators
~ NOT
& AND
| OR
^ XOR
^~ or ~^ XNOR
• Example: input[3:0] A, B;
output[3:0] Z ;
assign Z = A | ~B;

SYEN 3330 Digital Systems Chapter 4-3 Page 9


Verilog Operators - 2
• Arithmetic Operators
+, -, (plus others)
• Logical & Relational Operators
!, &&, | |, = =, !=, >=, <=, >, < (plus others)
• Concatenation & Replication Operators
{identifier_1, identifier_2, …}
{n{identifier}}
 Examples: {REG_IN[6:0],Serial_in},
{8 {1’b0}}

SYEN 3330 Digital Systems Chapter 4-3 Page 10


SYEN 3330 Digital Systems Chapter 4-3 Page 11
Structural Verilog
• Circuits can be described by a netlist as a text alternative to
a diagram - Example (See Figure 5-19 in text):
module fig519s (A0, B0, C0, C1, S0);
input A0, B0, C0;
output C1, S0;
//Seven internal wires needed
wire[1:7] N;
//Ports on primitive gates listed output port first
not G1 (N[3],C0), G2 (N[5],N[2]), G3 (N[6],N[3]);
nand G4 (N[1],A0,B0);
nor G5 (N[2],A0,B0), G6 (C1,N[2],N[4]);
and G7 (N[4],N[1],N[3]), G8 (N[7],N[1],N[5]);
xor G9 (S0,N[6],N[7]);
endmodule

SYEN 3330 Digital Systems Chapter 4-3 Page 12


Dataflow Verilog - 1
• Circuit function can be described by assign statements
using Boolean equations (See Figure 5-19 in text):
module fig519d (A0, B0, C0, C1, S0);
input A0, B0, C0;
output C1, S0;
wire[1:2] N;
assign N[1] = ~(A0 & B0); /*Note: Cannot write ~& for
NAND */
assign N[2] = ~(A0 | B0);
assign C1 = ~((N[1] & ~C0) | N[2]);
assign S0 = (~N[2] & N[1])^(~(~C0));
endmodule
SYEN 3330 Digital Systems Chapter 4-3 Page 13
Dataflow Verilog - 2
• Circuit function can be described by assign statements using the conditional
operator with binary combinations as in a truth table (See Figure 4-10 in
text):
module fig410dm (A, E_n, D_n);
input[1:0] A;
input E_n;
output[3:0] D_n;
//Conditional: (X) ? Y: Z - if X is true, then Y,else Z
assign D_n = {4{E_n}}&(
(A == 2'b00) ? 4'b1110:
(A == 2'b01) ? 4'b1101:
(A == 2'b10) ? 4'b1011:
(A == 2'b11) ? 4'b0111:
4'bxxxx);
endmodule
SYEN 3330 Digital Systems Chapter 4-3 Page 14
Dataflow Verilog - 3
• Circuit function can be described by assign statements using
the conditional operator for binary decisions on inputs(See
Figure 4-10 in text):
module fig410dc (A, E_n, D_n);
input[1:0] A;
input E_n;
output[3:0] D_n;
/* Conditional: (X) ? Y: Z - if X is true, then Y,else Z */
assign D_n = {4{E_n}} & (A[1] ? (A[0] ? 4'h7 : 4'hB): (A[0] ?
4'hD : 4'hE));
endmodule

SYEN 3330 Digital Systems Chapter 4-3 Page 15


Behavioral & Hierarchical Verilog
• Circuit function can be described by assign statements at
higher than the logic level (See Figure 5-8 in text):
module addsub (A, B, R, sub) ;
input [3:0] A, B ;
output [3:0] R ;//See Fig. 5-18 for carry out
input sub ;
wire [3:0] data_out;
add A1 (A, data_out, sub, R);
M1comp C1 (B, data_out, sub);
endmodule

SYEN 3330 Digital Systems Chapter 4-3 Page 16


Behavioral & Hierarchical Verilog
module add (X, Y, C_in, S);
input [3:0] X, Y;
input C_in;
output [3:0] S;
assign S = X + Y + {3'b0, C_in};
endmodule
module M1comp (data_in, data_out, comp);
input[3:0] data_in;
input comp;
output [3:0] data_out;
assign data_out = {4{comp}} ^ data_in;
endmodule
SYEN 3330 Digital Systems Chapter 4-3 Page 17

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy