eee2243 digital system design chapter 3: verilog hdl (combinational) by muhazam mustapha, january...

20
EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Upload: hubert-dennis

Post on 17-Jan-2016

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

EEE2243Digital System Design

Chapter 3: Verilog HDL (Combinational)

by Muhazam Mustapha, January 2011

Page 2: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Learning Outcome

• By the end of this chapter, students are expected to be able to:– Quartus II– Verilog

Page 3: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Chapter Content

• Why HDL?

• Verilog

• Boolean Equation Modeling

• Behavior Modeling

Page 4: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Why HDL?

Page 5: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Hardware Description Language• A drawing of a circuit, or schematic, contains graphical information about a design– Inverter is above the OR

gate, AND gate is to the right, etc.

• Such graphical information may not be useful for large designs

• Can use textual language instead

DoorOpener

c

h

p

f

Vahid Slide

Page 6: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Hardware Description Language• Hardware description language (HDL)

– Intended to describe circuits textually, for a computer to read

– Evolved starting in the 1970s and 1980s

• Popular languages today include:– VHDL –Defined in 1980s by U.S. military; Ada-like

language– Verilog –Defined in 1980s by a company; C-like

language– SystemC –Defined in 2000s by several companies;

consists of libraries in C++

Vahid Slide

Page 7: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Verilog

Page 8: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

General Structure

Mohamed Khalil Hani

module module_name(ports)

{ parameter declaration }

input port_list;

output port_list;

wire list;

reg (or integer) list;

{ assign continuous_statement; }

{ initial block; }

{ always block; }

{ gate instantiations; }

{ module instantiations; }

endmodule

Page 9: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

General Structure

module CircuitA(Cin, x, y, X, Y, Cout, s, Bus, S)

input Cin, x, y;

input [3:0] X, Y;

output Cout, s;

output [3:0] S;

inout [7:0] Bus;

wire d;

reg e;

...

endmodule

Mohamed Khalil Hani

• Example:

Page 10: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

• Format:

Constant Representation

Mohamed Khalil Hani

<size_in_bit>’<base_id><significant_digit>

8 bit binary: 8’b0011101012 bit hex: 12’habc7 bit decimal: 7’d50

Negative 5 bit binary: -5’b01010Negative 8 bit hex: -8’h8c

• Example:

• Negative numbers are internally represented as 2’s complement, but in the code we just use signed magnitude:

Page 11: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

• High-Z output is represented as z• Undefined output is represented as x

Constant Representation

Mohamed Khalil Hani

8 bit binary with 4 bit z: 8’bzzzz10108 bit binary with 4 bit x: 8’b1010xxxx

Page 12: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Operators

Mohamed Khalil Hani

Operator Type Operator Symbol

Operation

Bitwise ~, &, |, ^, ~^ not, and, or, xor, xnor

Logical !, &&, || not, and, or

Arithmetic +, -, *, / add, sub, mul, div

Relational >, <, >=, <= gt, lt, gt or eq, lt or eq

Equality ==, !=, ===, !==

eq, not eq, case eq, case not eq

Shift >>, <<, >>>, <<<

unsigned rs, unsigned ls, signed rs, signed ls

Concatenation { , }

Conditional ? :

Page 13: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Modeling Style• There are 3 coding styles in Verilog• Boolean Equation

– Done by writing Verilog version of Boolean equation to define output

• Behavioral– Done by writing the output arithmetical definition

instead of the direct Boolean equation

• Structural– Done writing Verilog in multiple modules

• We will first cover Boolean equation and Behavioral

Mohamed Khalil Hani

Page 14: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Boolean Equation Modeling

Page 15: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

assign Keyword• The pure Boolean combinational style modeling

is signified by the use of assign keyword

Mohamed Khalil Hani

module functionA(x1, x2, x3, f); input x1, x2, x3; output f;

assign f = (~x1 & ~x2 & x3) | (x1 & ~x2 & ~x3) | (x1 & ~x2 & x3) | (x1 & x2 & ~x3);endmodule

Logic Function

x1

x2

x3

f

321321321321 xxxxxxxxxxxxf

Page 16: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Example – AND Gate

module ANDGate(x, y, f); input x, y; output f;

assign f = x & y;endmodule

y f

Quartus II version 9 Demo

x

Page 17: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Example – Boolean Half Adder

Mohamed Khalil Hani

module HalfAdder(a, b, sum, carry); input a, b; output sum, carry;

assign sum = a ^ b; assign carry = a & b;endmodule

x1

x2

sum

carry

Quartus II version 9 Demo

Page 18: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Behavior Modeling

Page 19: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

always Keyword• The behavioral style

modeling is signified by the use of always keyword

• Many C-like keywords can also be used

• For a complex design, behavioral style is more favorable

Mohamed Khalil Hani

module ORGate(x, y, f); input x, y; output f; reg f;

always@(x or y) begin if (x == 0) && (y == 0) f = 0; else f = 1; endendmodule

Also read Vahid pg 496

Page 20: EEE2243 Digital System Design Chapter 3: Verilog HDL (Combinational) by Muhazam Mustapha, January 2011

Example – Behavioral Half Adder

module HalfAdder(a, b, sum_carry); input a, b; output [1:0] sum_carry; reg [1:0] sum_carry;

always@(a or b) begin sum_carry = a + b; endendmodule

Quartus II version 9 Demo