17 Verilog C
17 Verilog C
Behavioral Description
• initial:
is executed once at
the beginning.
• always:
is repeated until the
end of simulation.
2
Clock Generation
Two methods:
− 15 cycles of clock.
− clock period = 20 time units.
initial initial
begin begin
clock = 1’b0; clock = 1’b0;
repeat (30) #300 $finish;
#10 clock = ~clock; end
end
always
#10 clock = ~clock;
3
? Description
Output Q must be declared as reg.
Inside initial and always, if-else and
case statements can be used.
4
D Flip-Flop Description
//HDL Example 5-2
//---------------------------
//D flip-flop
module D_FF (Q,D,CLK);
output Q;
input D,CLK;
reg Q;
always @ (posedge CLK)
Q = D;
endmodule
6
D Flip-Flop Description
//HDL Example 5-2
//---------------------------
//D flip-flop
module D_FF (Q,D,CLK);
output Q;
input D,CLK;
reg Q;
always @ (posedge CLK)
Q = D;
endmodule
7
T-FF Description (Structural)
8
JK-FF Description (Behavioral)
case executes one of the statements.
10
A Sequential Circuit:
Schematic Diagram
11
State Diagram (Behavioral)
12
Mealy (Behavioral)
module Mealy_mdl (x,y,CLK,RST);
input x,CLK,RST;
output y;
reg y; parameter defines constants.
reg [1:0] Prstate, Nxtstate;
parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;
always @ (posedge CLK or negedge RST)
if (~RST) Prstate = S0; //Initialize to state S0
else Prstate = Nxtstate; //Clock operations
always @ (Prstate or x) //Determine next state
case (Prstate)
S0: if (x) Nxtstate = S1;
else Nxtstate = S0;
S1: if (x) Nxtstate = S3;
else Nxtstate = S0;
S2: if (~x)Nxtstate = S0;
else Nxtstate = S2;
S3: if (x) Nxtstate = S2;
else Nxtstate = S0;
endcase
always @ (Prstate or x) //Evaluate output
case (Prstate)
S0: y = 0;
S1: if (x) y = 1'b0; else y = 1'b1;
S2: if (x) y = 1'b0; else y = 1'b1;
S3: if (x) y = 1'b0; else y = 1'b1;
endcase
endmodule 13
Moore (Behavioral)
module Moore_mdl (x,AB,CLK,RST);
(One always)
input x,CLK,RST;
output [1:0]AB;
reg [1:0] state;
parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;
always @ (posedge CLK or negedge RST)
if (~RST) state = S0; //Initialize to state S0
else
case (state)
S0: if (~x) state = S1; else state = S0;
S1: if (x) state = S2; else state = S3;
S2: if (~x) state = S3; else state = S2;
S3: if (~x) state = S0; else state = S3;
endcase
assign AB = state; //Output of flip-flops
endmodule
14
Moore (Structural)
15
Moore (Structural)
module Tcircuit (x,y,A,B,CLK,RST);
input x,CLK,RST;
output y,A,B;
wire TA,TB;
//Flip-flip input equations
assign TB = x,
TA = x & B;
//Output equation
assign y = A & B;
//Instantiate T flip-flops
T_FF BF (B,TB,CLK,RST);
T_FF AF (A,TA,CLK,RST);
endmodule
//T flip-flop
module T_FF (Q,T,CLK,RST);
output Q;
input T,CLK,RST;
reg Q;
always @ (posedge CLK or negedge RST)
if (~RST) Q = 1'b0;
else Q = Q ^ T;
endmodule
16
Testbench
//Stimulus for testing sequential circuit
module testTcircuit;
reg x,CLK,RST; //inputs for circuit
wire y,A,B; //output from circuit
Tcircuit TC (x,y,A,B,CLK,RST); // instantiate circuit
initial
begin
RST = 0;
CLK = 0;
#5 RST = 1;
repeat (16)
#5 CLK = ~CLK;
end
initial
begin
x = 0;
#15 x = 1;
repeat (8)
#10 x = ~ x;
end
endmodule
17
Waveforms
18