9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems...
-
date post
20-Dec-2015 -
Category
Documents
-
view
219 -
download
2
Transcript of 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems...
![Page 1: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/1.jpg)
9/13/07 EECS150 F07 Culler Lec 6 1
EECS 150 - Components and Design Techniques for Digital Systems
Lec 06 – Using FSMs9-13-07
David CullerElectrical Engineering and Computer Sciences
University of California, Berkeley
http://www.eecs.berkeley.edu/~cullerhttp:/inst.eecs.berkeley.edu/~cs150
![Page 2: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/2.jpg)
9/13/07 EECS150 F07 Culler Lec 6 2
Outline
• Review FSMs
• Mapping to FPGAs
• Typical uses of FSMs
• Synchronous Seq. Circuits – safe composition
• Timing
• FSMs in verilog
![Page 3: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/3.jpg)
9/13/07 EECS150 F07 Culler Lec 6 3
Review: Typical Controller: state
Combinational
Logic
state
state(t+1) = F ( state(t) )
state Next state
i2 i1 i0 o2 o1 o0
0 0 0 0 0 1
0 0 1 0 1 1
0 1 0 1 1 0
0 1 1 0 1 0
1 0 0 0 0 0
1 0 1 1 0 0
1 1 0 1 1 1
1 1 1 1 0 1
Example: Gray Code
Sequence
000 001 011 010 110 111 101 100
![Page 4: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/4.jpg)
9/13/07 EECS150 F07 Culler Lec 6 4
Typical Controller: state + output
Combinational
Logic
state
state(t+1) = F ( state(t) )
state Next state
i2 i1 i0 o2 o1 o0
0 0 0 0 0 1
0 0 1 0 1 1
0 1 0 1 1 0
0 1 1 0 1 0
1 0 0 0 0 0
1 0 1 1 0 0
1 1 0 1 1 1
1 1 1 1 0 1
Output (t) = G( state(t) )
0
1
1
0
1
0
0
1
odd
000/0 001/1 011/0 010/1 110/0 111/1 101/0 100/1
![Page 5: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/5.jpg)
9/13/07 EECS150 F07 Culler Lec 6 5
Typical Controller: state + output + input
Combinational
Logic
state
state(t+1) = F ( state(t), input (t) )
state Next state
i2 i1 i0 o2 o1 o0
0 0 0 0 0 1
0 0 1 0 1 1
0 1 0 1 1 0
0 1 1 0 1 0
1 0 0 0 0 0
1 0 1 1 0 0
1 1 0 1 1 1
1 1 1 1 0 1
Output (t) = G( state(t) )
0
0
0
0
0
0
0
0
1 x x x 0 0 0
clr
000/0 001/1 011/0 010/1 110/0 111/1 101/0 100/1
Input
0
1
1
0
1
0
0
1
odd
clr=1
clr=0
clr=?
![Page 6: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/6.jpg)
9/13/07 EECS150 F07 Culler Lec 6 6
Review: Two Kinds of FSMs
• Moore Machine vs Mealy Machine
Combinational
Logicstate
state(t+1) = F ( state(t), input)
Output (t) =
G( state(t), Input )
Input
state
state(t+1) = F ( state(t), input(t))
Output (t) = G( state(t))
Input
State / outInput State
Input / Out
![Page 7: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/7.jpg)
9/13/07 EECS150 F07 Culler Lec 6 7
In = 0
In = 1
In = 0In = 1
100
010
110
111001
Review: Finite State Machine Representations• States: determined by possible values in
sequential storage elements• Transitions: change of state• Clock: controls when state can change by
controlling storage elements
• Sequential Logic– Sequences through a series of states– Based on sequence of values on input signals– Clock period defines elements of sequence
![Page 8: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/8.jpg)
9/13/07 EECS150 F07 Culler Lec 6 8
Review: Formal Design Process
• Circuit Diagram:
– XOR gate for ns calculation
– DFF to hold present state
– no logic needed for output
Logic equations from table:
OUT = PS
NS = PS xor IN
nsps
• Review of Design Steps:
1. Circuit functional specification
2. State Transition Diagram
3. Symbolic State Transition Table
4. Encoded State Transition Table
5. Derive Logic Equations
6. Circuit DiagramFFs for state
CL for NS and OUT
Take this seriously!
![Page 9: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/9.jpg)
9/13/07 EECS150 F07 Culler Lec 6 9
Formal Design Process
• “State Transition Diagram”– circuit is in one of two states.
– transition on each cycle with each new input, over exactly one arc (edge).
– Output depends on which state the circuit is in.
ParityChecker
IN OUTbit stream
0 if even parity1 if odd parity
example: 0 0 1 1 1 0 1 even even odd even odd odd even
CLK
time
![Page 10: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/10.jpg)
9/13/07 EECS150 F07 Culler Lec 6 10
Formal Design Process• State Transition Table:
• Invent a code to represent states:Let 0 = EVEN state, 1 = ODD state
present nextstate OUT IN state
EVEN 0 0 EVEN EVEN 0 1 ODD ODD 1 0 ODD ODD 1 1 EVEN
present state (ps) OUT IN next state (ns) 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0
Derive logic equations from table (how?):
OUT = PS
NS = PS xor IN
![Page 11: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/11.jpg)
9/13/07 EECS150 F07 Culler Lec 6 11
Review: What’s an FSM?
• Next state is function of state and input
• Moore Machine: output is a function of the state
• Mealy Machine: output is a function of state and input
Often PLAs
State / outputinputA
inputB
State inputA/outputA
inputB/outputB
Which is which?
![Page 12: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/12.jpg)
9/13/07 EECS150 F07 Culler Lec 6 12
How to quickly implement the State Transition Diagram?
![Page 13: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/13.jpg)
9/13/07 EECS150 F07 Culler Lec 6 13
One Answer: Xilinx 4000 CLB
![Page 14: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/14.jpg)
9/13/07 EECS150 F07 Culler Lec 6 14
Two 4-input functions, registered output
![Page 15: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/15.jpg)
9/13/07 EECS150 F07 Culler Lec 6 15
5-input function, combinational output
![Page 16: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/16.jpg)
9/13/07 EECS150 F07 Culler Lec 6 16
Recall: Parallel to Serial Converter
//Parallel to Serial convertermodule ParToSer(LD, X, out, CLK);
input [3:0] X;input LD, CLK;output out; reg out;reg [3:0] Q;assign out = Q[0];always @ (posedge CLK) begin
if (LD) Q <= X;else Q <= {1’b0,Q[3:1]};
endendmodule // ParToSer
One common use of FSMs is in adapters from one subsystem to another.
• different data widths
• different bit rates
• different protocols, …
![Page 17: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/17.jpg)
9/13/07 EECS150 F07 Culler Lec 6 17
Example: Byte-bit stream
Byte FIFO
pop
Serial link
Shift register
controller
LD
bit 0/pop
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7 / LD
init / LD
![Page 18: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/18.jpg)
9/13/07 EECS150 F07 Culler Lec 6 18
Byte-bit stream with Rate Matching
• How would you implement this FSM?
Byte FIFO
pop
Serial link
Shift register
controller
LD
bit 0/pop
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7 / LD
init / LD
rdy
bit 0’
~rdy
~rdyrdy
~rdyrdy
~rdyrdy
~rdyrdy
~rdyrdy
~rdyrdy
~rdyrdy
~rdyrdy
![Page 19: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/19.jpg)
9/13/07 EECS150 F07 Culler Lec 6 19
Another example: bus protocols• A bus is:
– shared communication link
– single set of wires used to connect multiple subsystems
• A Bus is also a fundamental tool for composing large, complex systems (more later in the term)
– systematic means of abstraction
Control
Datapath
Memory
ProcessorInput
Output
![Page 20: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/20.jpg)
9/13/07 EECS150 F07 Culler Lec 6 20
Example: Pentium System Organization
Processor/MemoryBus
PCI Bus
I/O Busses
![Page 21: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/21.jpg)
9/13/07 EECS150 F07 Culler Lec 6 21
Arbitration for the bus…
• Central arbitration shown here– Used in essentially all processor-memory busses and in high-
speed I/O busses
BusArbiter
Device 1 Device NDevice 2
Grant Req
![Page 22: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/22.jpg)
9/13/07 EECS150 F07 Culler Lec 6 22
Simple Synchronous Protocol
• Even memory busses are more complex than this– memory (slave) may take time to respond
– it need to control data rate
BReq
BG
Rd+AddrCMDAddress
Data1 Data2Data
I want the bus
nopeYou got it
I still want the bus
Mem grabs addr
Proc grabs data
I’m done after this
![Page 23: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/23.jpg)
9/13/07 EECS150 F07 Culler Lec 6 23
Processor Side of Protocol - sketch
• Memory waits?
• Additional outputs?
• Memory side?
Idle
~BR
Request bus
BR
Address
BR,RD, addr_enable
proc read
BG
Data 1
BR, MDR_enable
Data 2
~BR, MDR_enable
~BG
![Page 24: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/24.jpg)
9/13/07 EECS150 F07 Culler Lec 6 24
Simple Synchronous Protocol (cont)
BReq
BG
Rd+AddrCMDAddress
Data1 Data2Data
I want the bus
nopeYou got it
I still want the bus
Mem grabs addr
Proc grabs data
I’m done after this
idle req req w-addr r-data1 r-data2 idle
![Page 25: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/25.jpg)
9/13/07 EECS150 F07 Culler Lec 6 25
Announcements
• Reading 8.1-4 (slight change in ordering)
• HW 2 due tomorrow
• HW 3 will go out today
• Lab lecture on Verilog synthesis
• Next week feedback survey
• Input on discussion sections
• Technology in the News– iPhone “unlocked”
– iPhone price drops by $200
![Page 26: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/26.jpg)
9/13/07 EECS150 F07 Culler Lec 6 26
Fundamental Design Principle
• Divide circuit into combinational logic and state
• Localize feedback loops and make it easy to break cycles
• Implementation of storage elements leads to various forms of sequential logic
CombinationalLogic
Storage Elements
Outputs
State OutputsState Inputs
Inputs
![Page 27: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/27.jpg)
9/13/07 EECS150 F07 Culler Lec 6 27
Forms of Sequential Logic
• Asynchronous sequential logic – “state” changes occur whenever state inputs change (elements may be simple wires or delay elements)
• Synchronous sequential logic – state changes occur in lock step across all storage elements (using a periodic waveform - the clock)
Clock
![Page 28: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/28.jpg)
9/13/07 EECS150 F07 Culler Lec 6 28
General Model of Synchronous Circuit
• All wires, except clock, may be multiple bits wide.
• Registers (reg)– collections of flip-flops
• clock– distributed to all flip-flops
– typical rate?
• Combinational Logic Blocks (CL)– no internal state (no feedback)
– output only a function of inputs
• Particular inputs/outputs are optional
• Optional Feedback
• ALL CYCLES GO THROUGH A REG!
reg regCL CL
clock input
output
option feedback
input output
![Page 29: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/29.jpg)
9/13/07 EECS150 F07 Culler Lec 6 29
Composing FSMs into larger designs
CL
FSM FSM
CL
![Page 30: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/30.jpg)
9/13/07 EECS150 F07 Culler Lec 6 30
Composing Moore FSMs
• Synchronous design methodology preserved
CL
Moore Moore
CLstate
outputnext
state
state
outputnext
state
![Page 31: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/31.jpg)
9/13/07 EECS150 F07 Culler Lec 6 31
Composing Mealy FSMs …
• Synchronous design methodology violated!!!• Why do designers used them?
– Few states, often more natural in isolation– Safe if latch all the outputs
» Looks like a mealy machine, but isn’t really» What happens to the timing?
CL
Mealy FSM
CLstate
Output
Next
state
state
Output
Next
state
![Page 32: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/32.jpg)
9/13/07 EECS150 F07 Culler Lec 6 32
Recall: What makes Digital Systems tick?
Combinational
Logic
time
clk
![Page 33: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/33.jpg)
9/13/07 EECS150 F07 Culler Lec 6 33
Recall 61C: Single-Cycle MIPS
PC
inst
ruct
ion
me
mor
y
+4
regi
ste
rs
ALU
Da
tam
em
ory
imm
3
1
x
LW
r3
, 17
(r1
)17
reg[1]
reg[1]+17
ME
M[r
1+1
7]
1. InstructionFetch
2. RegisterRead
3. Execute 4. Memory5. Reg.Write
![Page 34: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/34.jpg)
9/13/07 EECS150 F07 Culler Lec 6 34
Recall 61C: 5-cycle Datapath - pipeline
PC
inst
ruct
ion
me
mor
y
+4
regi
ste
rs
ALU
Da
tam
em
ory
imm
3
1
x
LW
r3
, 17
(r1
)
1. InstructionFetch
17
reg[1]
2. RegisterRead
reg[1]+17
3. Execute
ME
M[r
1+1
7]
4. Memory5. Reg.Write
IR
![Page 35: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/35.jpg)
9/13/07 EECS150 F07 Culler Lec 6 35
FSM timing
Clock
Inputs
Outputs
State Time (Clock Period)
State register propagation delay
Output logic propagation delay
How long must this be?
State (internal)
• What determines min FSM cycle time (max clock rate)?
What determines this?
![Page 36: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/36.jpg)
9/13/07 EECS150 F07 Culler Lec 6 36
Finite State Machines in Verilog
inputsMoore outputs
Mealy outputs
next state
current state
combinationallogic
combinationallogic
![Page 37: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/37.jpg)
9/13/07 EECS150 F07 Culler Lec 6 37
module Reduce(Out, Clock, Reset, In);output Out;input Clock, Reset, In;
reg Out;reg [1:0] CurrentState; // state registerreg [1:0] NextState;
// State assignmentlocalparam STATE_Zero = 2’h0,
STATE_One1 = 2’h1,STATE_Two1s = 2’h2,STATE_X = 2’hX;
Verilog FSM - Reduce 1s example
• Change the first 1 to 0 in each string of 1’s– Example Moore machine implementation
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
![Page 38: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/38.jpg)
9/13/07 EECS150 F07 Culler Lec 6 38
always @(In or CurrentState) beginNextState = CurrentState;Out = 1’b0;case (CurrentState)
STATE_Zero: begin // last input was a zeroif (In) NextState = STATE_One1;
endSTATE_One1: begin // we've seen one 1
if (In) NextState = STATE_Two1s;else NextState = STATE_Zero;
endSTATE_Two1s: begin // we've seen at least 2 ones
Out = 1;if (~In) NextState = STATE_Zero;
enddefault: begin // in case we reach a bad state
Out = 1’bx;NextState = STATE_X;
endendcase
end
Moore Verilog FSM: combinational part
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
include all signals that are input to state and output equations
Compute: output = G(state)
next state = F(state, in)
![Page 39: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/39.jpg)
9/13/07 EECS150 F07 Culler Lec 6 39
// Implement the state registeralways @ (posedge Clock) begin
if (Reset) CurrentState <= STATE_Zero;else CurrentState <= NextState;
endendmodule
Moore Verilog FSM: state part
1
0
0
0
11
zero[0]
one1[0]
two1s[1]Note: posedge Clock requires NONBLOCKING ASSIGNMENT.
Blocking Assignment <-> Combinational Logic
Nonblocking Assignment <-> Sequential Logic (Registers)
![Page 40: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/40.jpg)
9/13/07 EECS150 F07 Culler Lec 6 40
7
module Reduce(Clock, Reset, In, Out);input Clock, Reset, In;output Out;reg Out;reg CurrentState; // state registerreg NextState;
localparam STATE_Zero = 1’b0,STATE_One = 1’b1;
always @(posedge Clock) beginif (Reset) CurrentState <= STATE_Zero;else CurrentState <= NextState;
end
always @ (In or CurrentState) beginNextState = CurrentState;Out = 1’b0;
case (CurrentState)zero: if (In) NextState = STATE_One;one: begin // we've seen one 1
if (In) NextState = STATE_One;else NextState = STATE_Zero;Out = In;
endendcase
endendmodule
Mealy Verilog FSM for Reduce-1s example
1/00/0
0/0
1/1
zero[0]
one1[0]
Note: smaller state machine
Output = G(state, input)
![Page 41: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/41.jpg)
9/13/07 EECS150 F07 Culler Lec 6 41
Restricted FSM Implementation Style
• Mealy machine requires two always blocks– Register needs posedge Clock block
– Input to output needs combinational block
• Moore machine can be done with one always block, but….– E.g. simple counter
– Very bad idea for general FSMs
» This will cost you hours of confusion, don’t try it
» We will not accept labs with this style for general FSMs
– Use two always blocks!
• Moore outputs– Share with state register, use suitable state encoding
![Page 42: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/42.jpg)
9/13/07 EECS150 F07 Culler Lec 6 42
module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg [1:0] state; // state register parameter zero = 0, one1 = 1, two1s = 2;
Single-always Moore Machine (Not Allowed!)
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
![Page 43: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/43.jpg)
9/13/07 EECS150 F07 Culler Lec 6 43
always @(posedge clk) case (state) zero: begin
out <= 0; if (in) state <= one1; else state <= zero; end
one1: if (in) begin
state <= two1s; out <= 1;
end else begin state <= zero;
out <= 0; end
two1s: if (in) begin
state <= two1s; out <= 1;
end else begin state <= zero;
out <= 0; end default: begin
state <= zero;out <= 0;
end endcaseendmodule
This is confusing: theoutput does not changeuntil the next clock cycle
Single-always Moore Machine (Not Allowed!)
All outputs are registered
![Page 44: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/44.jpg)
9/13/07 EECS150 F07 Culler Lec 6 44
Finite State Machines
•
• Recommended FSM Verilog implementation style– Implement combinational logic using one always block
– Implement an explicit state register using a second always block
inputsMoore outputs
Mealy outputs
next state
current state
combinationallogic
combinationallogic
![Page 45: 9/13/07EECS150 F07 Culler Lec 6 1 EECS 150 - Components and Design Techniques for Digital Systems Lec 06 – Using FSMs 9-13-07 David Culler Electrical.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d4c5503460f94a2ab30/html5/thumbnails/45.jpg)
9/13/07 EECS150 F07 Culler Lec 6 45
Summary
• FSMs are critical tool in your design toolbox– Adapters, Protocols, Datapath Controllers, …
• They often interact with other FSMs
• Important to design each well and to make them work together well.
• Keep your verilog FSMs clean– Separate combinational part from state update
• Good state machine design is an iterative process