ch05_II
ch05_II
Part II
1
State Reduction and Assignment
• In the design process of sequential circuits, certain
techniques are useful in reducing the circuit complexity
– state reduction
– state assignment
• State reduction
– Fewer states fewer number of flip-flops
– m flip-flops 2m states
– Example: m = 5 2m = 32
• If we reduce the number of states to 21 do we reduce the
number of flip-flops?
2
Example: State Reduction
0/0
a
0/0
1/0 Note that we use
0/0 0/0
letters to designate
b c 0/0 the states for
1/0 the time being
1/0
1/1 0/0
g d e
1/1
1/1
0/0 f
1/1
3
State Reduction Technique 1/7 0/0
a
1/0
• Step 1: get a state table b
6
State Reduction Technique 3/7
present state next state Output
x=0 x=1 x=0 x=1
a a b 0 0
b c d 0 0
c c f 0 0
d e f 0 1
e a f 0 1
f g f 0 1
g a f 0 1
8
State Reduction Technique 5/7
present state next state Output
x=0 x=1 x=0 x=1
a a b 0 0
b c d 0 0
c c d 0 0
d e d 0 1
e a d 0 1
9
State Reduction Technique 6/7
1/0
1/0
0/0
d e
state a a b b d e d d e a a
input 0 1 0 1 0 1 1 0 0 0 0
11
output 0 0 0 0 0 1 1 0 0 0
State Assignments 1/4
• We have to assign binary values to each state
• If we have m states, then we need a code with
minimum n bits, where n = log2m
• There are different ways of encoding
• Example: Eight states: S0, S1, S2, S3, S4, S5, S6, S7
State Binary Gray One-hot
S0 000 000 00000001
S1 001 001 00000010
S2 010 011 00000100
S3 011 010 00001000
S4 100 110 00010000
S5 101 111 00100000
S6 111 101 01000000
S7 111 100 10000000 12
State Assignments 2/4
• The circuit complexity depends on the state encoding
(assignment) scheme
• Previous example: binary state encoding
13
0/0
State Assignments 3/4 a
0/0 0/0
1/0
• Gray encoding
0/0 b
1/0
1/0 0/0
d e
1/1
• One-hot encoding
17
Design Steps (cont.)
4. Obtain the encoded state table
5. Derive the simplified flip-flop input equations
6. Derive the simplified output equations
7. Draw the logic diagram
• Example: Verbal description
– “we want a (sequential) circuit that detects three or more
consecutive 1’s in a string of bits”
– Input: string of bits of any length
– Output:
• “1” if the circuit detects the pattern in the string
• “0” otherwise
18
Example: State Diagram
• Step 1: Derive the state diagram
0
1
S0 /0 S1/0
0 1 Moore Machine
0
S3/1 S2/0
1
1
19
Synthesis with D Flip-Flops 1/5
• The number of flip-flops
– Four states
0
– 2 or 4 flip-flops 1
0
– not possible in this case
0 1
• State Assignment 0
0
1
21
Synthesis with D Flip-Flops 3/5
• Step 5: Choose the flip-flops
– D flip-flops
• Step 6: Derive the simplified flip-flop input equations
– Boolean expressions for DA and DB
Bx
• Step 7: Derive the simplified A 00 01 11 10
output equations 0 0 0 0 0
– Boolean expressions for y. 1 0 0 1 1
y = AB 23
Synthesis with D Flip-Flops 5/5
• Step 8: Draw the logic diagram
DA = Ax + Bx DB = Ax + B’x y = AB
x DA A
D Q
C
R
y
DB B
D Q
C
R
clock reset 24
Sequential Circuit Timing 1/3
• It is important to analyze the timing behavior of a
sequential circuit
– Ultimate goal is to determine the maximum clock frequency
clk
D Q
ts th
C
R
D
tp, FF 38
Sequential Circuit Timing 2/3
tp
clk
tp,FF tp,COMB ts
current
state Flip-Flop
Flip-Flops inputs
Q D
tp,FF
ts
clock C 39
Sequential Circuit Timing 2/3
tp
clk
tp,FF tp,COMB ts
current
state Flip-flop
Flip-flops inputs
Q D
tp,FF
clock C 40
Sequential Circuit Timing 3/3
• Minimum clock period (or maximum clock frequency)
tp
clk
tp,FF tp,COMB ts
tp
clk
tp,FF tp,COMB ts
41
Example
Binary encoding
S0 S3
D Q x1
C
S1 S2
tp,XOR = 2.0 ns D Q x0
C
tp,FF = 2.0 ns x0’
ts = 1.0 ns
43
State-Diagram Based HDL Models
• always @ () statement
– For clocked sequential circuits we use “always @ ()” statement
– Inside we have signals such as “clock” and “reset”
– always @ () statement may have a number of “edge events”
• Examples:
// D flip-flop
module DFF(output reg Q, input D, clk, reset);
always @(posedge clk, posedge reset)
if (reset == 1) Q <= 1’b0;
else Q <= D;
endmodule
49
State-Diagram Based HDL Models
// T flip-flop
module TFF(output reg Q, input T, clk, reset);
always @(posedge clk, negedge reset)
if (reset == 0) Q <= 1’b0;
else Q <= T ^ Q;
endmodule
module T (output reg Q, input T, input C);
always @(C or T)
if (C == 1)
Q <= T ^ Q;
endmodule
50
Sequential Circuit Design with Verilog
• Zero detector circuit
– The circuit detects a 0 following a sequence of 1s in a serial bit
stream.
– For instance,
• …10 1,
• …110 1,
• …00 0
• …01 ? 1/0
0/1 51
Zero Detector Circuit
module zero_detector(output reg y, input x, clk, reset);
reg state, next_state;
parameter LBZ = 1’b0, LBO = 1’b1; 1/0
0/0 1/0
always @(posedge clk, negedge reset)
if (reset == 0) state <= LBZ; LBZ LBO
Sequential
else state <= next_state; Part
0/1
always @(state, x)
case(state) inputs outputs
0/1
0 1
ZAZ/0 LBO/0
1
0
OAZ/1 0
53
Zero Detector Circuit (Moore Model)
module zero_detector(output reg y, input x, clk, reset);
reg[1:0] state;
parameter ZAZ = 2’b00, LBO = 2’b01, OAZ = 2’b10;
1
always @(posedge clk, negedge reset) 0 1
if (~reset) state <= ZAZ;
ZAZ/0 LBO/0
else case(state) 1
ZAZ: if(~x) state <= ZAZ; else state <= LBO;
LBO: if(~x) state <= OAZ; else state <= LBO;
0 OAZ/1 0
OAZ: if(~x) state <= ZAZ; else state <= LBO;
endcase
always @(state)
case(state)
ZAZ, LBO: y = 0;
OAZ: y = 1;
endcase
54
endmodule