0% found this document useful (0 votes)
7 views

17 Verilog C

The document provides a comprehensive overview of Verilog programming, focusing on behavioral descriptions, clock generation, and various flip-flop implementations including D, T, and JK flip-flops. It also includes examples of sequential circuits, both Mealy and Moore state machines, along with their structural representations. Additionally, a testbench for simulating the sequential circuit is presented, along with waveform illustrations.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

17 Verilog C

The document provides a comprehensive overview of Verilog programming, focusing on behavioral descriptions, clock generation, and various flip-flop implementations including D, T, and JK flip-flops. It also includes examples of sequential circuits, both Mealy and Moore state machines, along with their structural representations. Additionally, a testbench for simulating the sequential circuit is presented, along with waveform illustrations.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Verilog

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.

//HDL Example 5-1


//--------------------------------------
//Description of xxxx (See Fig.5-6)
module xxxx (Q,D,control);
output Q;
input D,control;
reg Q;
always @ (control or D)
if (control == 1) Q = D; //Same as: if (control)
endmodule

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

//D flip-flop with asynchronous reset.


module DFF (Q,D,CLK,RST);
output Q;
input D,CLK,RST;
reg Q;
always @(posedge CLK or negedge RST)
if (RST == 0) Q = 1'b0; // Same as: if (~RST)
else Q = D;
endmodule

7
T-FF Description (Structural)

//HDL Example 5-3


//----------------------------------------
//T flip-flop from D flip-flop and gates
module TFF (Q,T,CLK,RST);
output Q;
input T,CLK,RST;
wire DT;
assign DT = Q ^ T ;
//Instantiate the D flip-flop
DFF TF1 (Q,DT,CLK,RST);
endmodule

8
JK-FF Description (Behavioral)
 case executes one of the statements.

//HDL Example 5-4


//----------------------------------
// Functional description of JK flip-flop
module JK_FF (J,K,CLK,Q,Qnot);
output Q,Qnot;
input J,K,CLK;
reg Q;
assign Qnot = ~ Q ;
always @ (posedge CLK)
case ({J,K})
2'b00: Q = Q;
2'b01: Q = 1'b0;
2'b10: Q = 1'b1;
2'b11: Q = ~ Q;
endcase
endmodule

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

You might also like