Hardware Description
Language - Verilog
Sequential Circuits
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Outline
Review
Module Instantiation
Ports Connection
Number Representation
Assignments
Operators
Sequential Circuit
Introduction
Counter
Sequential Verilog Syntax
Procedural Assignment
Non-blocking
Example
P2
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
REVIEW
P3
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Module Instantiation
Adder
instance
example
A d d e r _0 A d d e r _1
A d d e r_ tre e
instance name IO interface
P4
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Ports Declaration
Two port types Two net types
Input port wire
input a; wire c;
Output port reg
output b; reg d;
a ab
b
b bc
co
c
c ac
a
P5
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Ports Connection
in1
adder out
in2
• Connect module ports by name (Recommended!!!!!)
– Usage: .PortName (NetName)
– adder adder_1 ( .out(C) , .in1(A) , .in2(B) );
• Connect module ports by order list
– adder adder_0 ( C , A , B ); // C = A + B
• Not fully connected
– adder adder_2 ( .out(C) , .in1(A) , .in2() );
P6
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Number Representation
Format: <size>’<base_format><number>
<size> - decimal specification of number of bits
<base format> - ' followed by arithmetic base of number
<number> - value given in base of <base_format>
Examples:
6’b010_111 gives 010111
8’b0110 gives 00000110
4’bx01 gives xx01
16’H3AB gives 0000_0011_1010_1011
24 gives 0…0011000
5’O36 gives 11_100
16’Hx gives xxxxxxxxxxxxxxxx
8’hz gives zzzzzzzz
P7
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Values Assignment
Assignment: Drive value onto nets and registers
There are two basic forms of assignment
continuous assignment, which assigns values to wire type
procedural assignment, which assigns values to reg type
Basic form
Assignments Left Hand Side Example
Continuous wire a;
wire
Assignment assign a = 1’b1;
Procedural reg a;
reg
Assignment always@(*) a = 1’b1;
P.S. Left hand side (LHS) = Right hand side (RHS)
P8
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Operators
Operator Sign Example
Concatenation and replications {,} {{8{byte[7]},byte}, {a[1:0],b[0]}
Negation !,~ !2’01 //0 , ~2’b01 // 10
Bitwise ~,&,|,^ 2’b01 | 2’b11 // 2’b11
Arithmetic +,-,*,/,% 3%2 //1
Shift >> , << 3’b011 >> 2 // 3’b000
Relational < , <= , > , >=
Equality == , !=
Conditional ?: assign out = sel ? 1’b1 : 1’b0
P9
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
SEQUENTIAL CIRCUIT
P10
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Introduction
Combinational Circuits (without memory)
A
B F(A,B,C)
F(A,B,C)
C
Sequential Circuit (with memory)
A
B F F(t+1) = F(A,B,C, D(t))
C
D(t) D(t+1)
MEM
P11
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Edge-triggered D Flip-Flop
Positive (Rising edge) trigger
Negative (Falling edge) trigger
to align with clock edges
DQ Q+ Q+ = D
0 0 0
0 1 0
1 0 1
1 1 1
Figure 11-18 Timing for D Flip-Flop (Falling-Edge Trigger)
P12
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
4-bit D Flip-Flop Registers
P13
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Binary Counters using D F/F (1/2)
Present State Next State Flip-Flop Inputs
C B A C+ B+ A+ DC DB DA
0 0 0 0 0 1 0 0 1
0 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1
0 1 1 1 0 0 1 0 0
1 0 0 1 0 1 1 0 1
1 0 1 1 1 0 1 1 0
1 1 0 1 1 1 1 1 1
1 1 1 0 0 0 0 0 0
State Table As Function of (A,B,C)!
P14
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Binary Counters using D F/F (2/2)
K-map
DC = AB ⊕C DB= A⊕B DA= A’
Circuit Implement
P15
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
SEQUENTIAL
VERILOG SYNTAX
P16
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Procedural Assignment
Procedure blocks
always block
Only reg type can be LHS in procedure blocks
It’s syntax. Not relevant to whether it’s a flip-flop or a metal wire!
RHS is not restricted.
Variable is updated by procedural assignment
For combinational circuit
Pure logic circuit
Use blocking assignment (=)
Use always @ (*)
For sequential circuit
D-FF circuit
Use non-blocking assignment (<=)
Edge trigger of clock or reset signal
P17
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Blocking or Non-Blocking?
Blocking assignment (=) Combinational!!!!
Evaluation and assignment are immediate
Nonblocking assignment (<=) Sequential!!!!!
All assignment deferred until all right-hand sides have been
evaluated (end of the virtual timestamp)
P18
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
3-bits Counter – Gate Level
DFF DFF DFF
XOR XOR XOR
AND
P19
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
4-bits Counter – RTL Level
clk reset
state
0
nxt_cnt cnt
MUX DFF
4 4
4 + 1
P20
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Header/Comment
Module instantiation
Input/output declaration
Combinational
Parameter
Continuous
Sensitivity list Assignment
Number Representation
Reg/WIre
Operator
FSM Procedure Block
Procedure Assignment
If statement
Sequential
case statement
P21
ACCESS IC LAB Graduate Institute of Electronics Engineering, NTU
Thanks! Feel free to ask
me any questions!
P22