//Program simulates a D FLIP FLOP chip
module D_FLIPFLOP(CLR,PRST,CLK,D,Q,QNOT);
output Q,QNOT;
input CLR,PRST,CLK,D;
reg Q,QNOT;
always @ (CLR or PRST or posedge CLK)
if ((~CLR) & (~PRST))
begin
Q=1'b1;
QNOT=1'b1;
end
else if (~CLR)
begin
Q=1'b0;
QNOT=1'b1;
end
else if (~PRST)
begin
Q=1'b1;
QNOT=1'b0;
end
else
begin
Q=D ;
QNOT=~D;
end
endmodule
//Provides stimulation to latch chip
module stimckt;
reg [1:0]A;
reg CLK,D;
wire Q,QNOT;
D_FLIPFLOP DFF(A[1],A[0],CLK,D,Q,QNOT);
initial
begin
A=2'b00;
repeat(3)
#10 A=A+1'b1;
//#40 $finish;
end
initial
begin
#5 CLK=1;
repeat(9)
#5 CLK=~CLK;
end
initial
begin
#5 D=1'b1;
repeat(5)
#10 D=~D;
end
initial
$monitor("time=%0d, clear=%b, preset=%b, D=%b, Q=%b, QNOT=%b",$time,A[1],A[0],D,Q,QNOT);
endmodule