Sequential Logic in Verilog: Taken From Digital Design and Computer Architecture
Sequential Logic in Verilog: Taken From Digital Design and Computer Architecture
Sequential Logic in Verilog: Taken From Digital Design and Computer Architecture
4-<1>
Sequential Logic
4-<2>
Always Statement
General Structure:
always @ (sensitivity list)
statement;
4-<3>
D Flip-Flop
module flop(input
clk,
input
[3:0] d,
output reg [3:0] q);
always @ (posedge clk)
q <= d;
// pronounced q gets d
endmodule
4-<4>
Resettable D Flip-Flop
module flopr(input
clk,
input
reset,
input
[3:0] d,
output reg [3:0] q);
// synchronous reset
always @ (posedge clk)
if (reset) q <= 4'b0;
else
q <= d;
endmodule
clk
d[3:0]
reset
[3:0]
[3:0]
D[3:0]
R
Q[3:0]
[3:0]
[3:0]
q[3:0]
q[3:0]
4-<5>
Resettable D Flip-Flop
module flopr(input
clk,
input
reset,
input
[3:0] d,
output reg [3:0] q);
// asynchronous reset
always @ (posedge clk, posedge reset)
if (reset) q <= 4'b0;
else
q <= d;
endmodule
clk
d[3:0]
[3:0]
[3:0]
D[3:0]
Q[3:0]
[3:0]
[3:0]
q[3:0]
R
reset
q[3:0]
4-<6>
4-<7>
Latch
module latch(input
clk,
input
[3:0] d,
output reg [3:0] q);
always @ (clk, d)
if (clk) q <= d;
endmodule
d[3
:0
]
clk
[3:0] [3:0]
l
a
t
D[3:0]
[3:0]
C Q
q[3:0]
Warning: We wont use latches in this course, but you might write code that
inadvertently implies a latch. So if your synthesized hardware has latches in it,
this indicates an error.
Copyright 2007 Elsevier
4-<8>
inputs
next
state
logic
CLK
next
k state
k
state
output
logic
outputs
4-<9>
S2
S0
S1
The double circle indicates the reset state
Copyright 2007 Elsevier
4-<10>
4-<11>
1
0
S1
0
S2
0
1
S3
0
0
S4
1
0
snailMoore.v
4-<13>
4-<14>
State Diagram
NS
00 (S0) 0
00 (S0)
00 (S0) 1
01 (S1)
01 (S1) 0
00 (S0)
01 (S1) 1
10 (S2)
10 (S2) 0
11 (S3)
10 (S2) 1
10 (S2)
11 (S3) 0
00 (S0)
11 (S3) 1
01 (S1)
4-<15>
Transition Tables
S1 S0
A S1+S0+
J1
K1
J0
K0
0 0 (S0)
0 0 0 (S0)
0 0 (S0)
1 0 1 (S1)
~Q
0 1 (S1)
0 0 0 (S0)
0 1 (S1)
1 1 0 (S2)
Q+
1
1
Transition
1 0 (S2)
0 1 1 (S3)
0 => 0
1 0 (S2)
1 1 0 (S2)
0 => 1
1 1 (S3)
0 0 0 (S0)
1 => 0
1 1 (S3)
1 0 1 (S1)
1 => 1
4-<16>
Verilog
Verilog Implementation 1
4-<17>
Verilog 2
Verilog Implementation 2
JK FlipFlop in Verilog
testBench in Verilog
4-<18>