Converting among Representations
Can convert from any representation to any other Common conversions
Equation to circuit (we did this earlier) Truth table to equation (which we can convert to circuit)
Easy -- just OR each input term that should output 1
Inputs a 0 0 1 1 b 0 1 0 1 Outputs F 1 1 0 0 Term F = sum of ab ab
F = ab + ab
Equation to truth table
Easy -- just evaluate equation for each input combination (row) Creating intermediate columns helps
Q: Convert to equation
a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 F
0 0 0 0 0 1 1 1
Q: Convert to truth table: F = ab + ab
Inputs
a
Output a' b' 1 0 0 0 a' b 0 1 0 0 F 1 1 0 0
Digital Design Copyright 2006 Frank Vahid
a 0 0 1 1
b 0 1 0 1
abc abc abc
F = abc + abc + abc
1
Decoder Example
New Years Eve Countdown Display
Microprocessor counts from 59 down to 0 in binary on 6-bit output Want illuminate one of 60 lights for each binary number Use 6x64 decoder
4 outputs unused
210
0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
i0 i1 i2 i3 i4 i5 d0 d1 d2 d3
21 0
0 0 1 0 0 1 0 0 1 0 0 0
0 1 2 3
Happy New Year
essor c o r op r ic M e
d58 d59 d60 d61 6x64 d62 dcd d63
0 0 0 0 0 0
58 59
Digital Design Copyright 2006 Frank Vahid
Controller Design: Laser Timer Example
Step 1: Capture the FSM
Already done
Step 2: Create architecture
2-bit state register (for 4 states) Input b, output x Next state signals n1, n0
Inputs: b; Outputs: x x=0 00 b Off
a
b x=1 01 On1 x=1 10 On2 x=1 11 On3
b
Combinational n1 logic n0 s1 s0
Any encoding with each state unique will work
FSM outputs
3
FSM inputs
Step 3: Encode the states
outpu FSM
a
clk
State register
Digital Design Copyright 2006 Frank Vahid
Controller Design: Laser Timer Example (cont)
Step 4: Create state table
Inputs: b; Outputs: x x=0 00 b Off b x=1 01 On1 x=1 10 On2 x=1 11 On3
a
FSM outputs
FSM inputs
b
Combinational n1 logic n0 s1 s0 clk
State register
Digital Design Copyright 2006 Frank Vahid
Controller Design: Laser Timer Example (cont)
Step 5: Implement combinational logic
FSM outputs
FSM inputs
b
Combinational n1 logic n0 s1 s0 clk
State register
x = s1 + s0 (note from the table that x=1 if s1 = 1 or s0
= 1)
n1 = s1s0b + s1s0b + s1s0b + s1s0b n1 = s1s0 + s1s0 n0 = s1s0b + s1s0b + s1s0b n0 = s1s0b + s1s0
Digital Design Copyright 2006 Frank Vahid
Controller Design: Laser Timer Example (cont)
FSM inputs
Step 5: Implement combinational logic (cont)
b
b
Combinational Logic x
FSM outputs
FSM ou
a
x
Combinational n1 logic n0 s1 s0
FSM inputs
clk
n1
State register
n0
s1 clk
s0
State register
x = s1 + s0 n1 = s1s0 + s1s0 n0 = s1s0b + s1s0
Digital Design Copyright 2006 Frank Vahid
Register Example using the Load Input:
Weight Sampler
Scale has two displays
Present weight Saved weight Useful to compare present item with previous item
Scale Weight Sampler
0010 1
Save 3 pounds 2 Present weight b clk
Use register to store weight
Pressing button causes present weight to be stored in register
Register contents always displayed as Saved weight, even when new present weight appears
Digital Design Copyright 2006 Frank Vahid
load
I3 I2 I1 I0 Q3 Q2 Q1 Q0
0011
3 pounds Saved weight
Carry-Ripple Adders Behavior
000 a b ci F A co 0 s 0 10 0 a b ci F A co 0 s 1 101 a b ci F A co s 1 co1 0 1 1 0
0111+0001
(answer should be 01000)
a b ci F A co 1 s 0
Outputs after 4ns (2 FA delays)
(b) 000
a b ci F A co 0 s 0
101 0
a b ci F A co s 1 co2 0 10 1
101
a b ci F A co 1 (c) s 0 101
1 1
a b ci F A co 1 s
a
0 1 1 0
Outputs after 6ns (3 FA delays)
0 00 1
a b ci F A
co s
a b ci F A
co 1 s 0
a b ci F A
co 1 (d) s 0
a b ci F A
co 1 s 0 Output after 8ns (4 FA delays)
Digital Design Copyright 2006 Frank Vahid
Correct answer appears after 4 FA delays
Magnitude Comparator
How does it work?
1011 = 1001 ?
1 = 1 a3 b3 0 0 a2 b2 1 0 a1 b1 a b 1 1 a0 b0 a b AgtB AeqB AltB
Ieq=1 causes this stage to compare
a b a b 0 0 Igt in_gt out_gt in_gt out_gt 1 1 Ieq in_eq out_eq in_eq out_eq 0 0 in_lt out_lt in_lt out_lt Ilt S tage3 S tage2 (a) 0 = 0 a2 b2 a b
in_gt out_gt in_eq out_eq in_lt out_lt S tage1
in_gt out_gt in_eq out_eq in_lt out_lt S tage0
1 1 a3 b3 a b 0 Igt in_gt out_gt 1 Ieq in_eq out_eq 0 in_lt out_lt Ilt
1 0 a1 b1
1 1 a0 b0 a b AgtB AeqB AltB
a b 0 in_gt out_gt in_gt out_gt 1 in_eq out_eq in_eq out_eq 0 in_lt out_lt in_lt out_lt
in_gt out_gt in_eq out_eq in_lt out_lt
Digital Design Copyright 2006 Frank Vahid
S tage3
S tage2
(b)
S tage1
S tage0
Magnitude Comparator
1011 = 1001 ?
1 1 0 0 1 > 0 a1 b1 1 a0 1 b0 a3 b3 a2 b2 a Igt 0 in_gt in_lt 1 Ieq 0 Ilt b out_gt out_lt a in_gt in_lt b out_gt out_lt a in_gt b out_gt 1 a b
in_eq out_eq
in_eq out_eq
in_gt out_gt 0 in_eq out_eq in_eq out_eq 0 in_lt out_lt in_lt out_lt S tage1 (c) S tage0
S tage3
S tage2
1 a0
1 b0
a3 b3
a2 b2
a1 b1
a Igt 0
b out_gt out_lt
a in_gt in_lt
b out_gt out_lt
a in_gt in_lt
b out_gt out_lt
a in_gt
b out_gt 1
Final answer appears on the right AgtB Takes time for AeqB answer to AltB ripple from left to right Thus called carry-ripple style after the carry-ripple adder
Even though theres no carry involved
10
1 Ieq 0 Ilt
in_gt in_lt
in_eq out_eq
in_eq out_eq
in_eq out_eq
AgtB 0 in_eq out_eq AeqB 0 in_lt out_lt AltB S tage0
S tage3 Digital Design Copyright 2006 Frank Vahid
S tage2 (d)
S tage1
Counter Example: Light Sequencer
Illuminate 8 lights from right to left, one at a time, one per second Use 3-bit up-counter to counter from 0 to 7 Use 3x8 decoder to illuminate appropriate light Note: Used 3-bit counter with 3x8 decoder
NOT an 8-bit counter why not?
1 clk (1 Hz)
cnt
3-bit u p -cou nt er tc unused c2 c1 c0
0 0 1 0 0 1
i2 i1 i0
3x 8 dcd
d7 d6 d5 d4 d3 d2 d1 d0
a
lig hts
Digital Design Copyright 2006 Frank Vahid
11
RTL Example: Bus Interface
Inputs: rd (bit); Q (32 bits); A, Faddr (4 bits) Outputs: D (32 bits) Local register: Q1 (32 bits) rd ((A = Faddr) and rd) SendData WaitMyAddress (A = Faddr) D = Q1 and rd D = Z Q1 = Q
A Faddr 4 Q1_ld 4 Q 32 ld Q1 = (4-bit) A_eq_ Faddr D_en
rd
32
32
Step 2: Create a datapath
(a) Datapath inputs/outputs (b) Instantiate declared registers (c) Instantiate datapath components and connections
Digital Design Copyright 2006 Frank Vahid
Datapath
Bus interface D
12
State Reduction Example
Given FSM on the right
Step 1: Mark state pairs having different outputs as nonequivalent
Inputs: x; Outputs: y x x S0 y=0 S1 y=1 x x S2 y=1 x x S3 y=1 x x
S1
S2
S3
S0
S1
S2
Digital Design Copyright 2006 Frank Vahid
13
State Reduction Example
Given FSM on the right
Step 1: Mark state pairs having different outputs as nonequivalent Step 2: For each unmarked state pair, write the next state pairs for the same input values
Inputs: x; Outputs: y x x S0 y=0 S1 y=1 x x S2 y=1 x x S3 y=1 x x
S1
S2
S3
(S2, S2) (S3, S1)
x=0 x=1
(S0, S2) (S0, S2) (S3, S1) (S3, S3)
S0
S1
S2
Digital Design Copyright 2006 Frank Vahid
14
State Encoding: One-Hot Encoding
One-hot encoding
One bit per state a bit being 1 corresponds to a particular state Alternative to minimum bit-width encoding in previous example For A, B, C, D: A: 0001, B: 0010, C: 0100, D: 1000
Inputs: none; Outputs: x x=0 x=1
A 00 0001
D 11 1000
B 01 0010 x=1
C 10 0100 x=1
Example: FSM that outputs 0, 1, 1, 1
Equations if one-hot encoding:
n3 = s2; n2 = s1; n1 = s0; x = s3 + s2 + s1
Fewer gates and only one level of logic less delay than two levels, so faster clock frequency
n1
x x
8 binary 6 4 one-hot 2
Digital Design Copyright 2006 Frank Vahid
s3 s1 clk s0 n0 clk State register
s2
s1
s0
State register n0 n1
n2
1 2 3 4 delay (gate-delays)
n3
15