Verilog Code For SERIAL
Verilog Code For SERIAL
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Design Name:
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module lab5(
input clk,
input reset,
input E,
output reg A
);
reg B,C,D;
begin
if (reset)
begin
A <= 0;
B <= 0;
C <= 0;
D <= 0;
end
else
begin
A <= B;
B <= C;
C <= D;
D <= E;
end
end
endmodule
TEXT BENCH:
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Target Device:
// Tool versions:
// Description:
//
//
// Dependencies:
//
// Revision:
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module LAB_5;
reg clk;
reg reset;
reg E;
wire A;
lab5 uut (
.clk(clk),
.reset(reset),
.E(E),
.A(A)
);
integer i,j;
initial
begin
clk=0;
for(i=0;i<=40;i=i+1)
#10 clk=~clk;
end
initial
begin
$dumpfile("test.vcd");
$dumpvars(0,LAB_5);
E = 0; reset = 0;
#1 E = 0; reset = 1;
#1 reset = 0;
for(j=0;j<=10;j=j+1)
begin
#20 E=~E;
end
#20 E=1;
#20 E=0;
#20 E=1;
#20 E=0;
#20 E=1;
#20 E=0;
#20 E=1;
#20 E=1;
#20 E=0;
end
initial
begin
$monitor("clk=%b,E=%b,A=%b",clk,E,A);
end
endmodule
ISIM SIMULATION:
if (reset)
out <= 0;
else begin
if (en)
case (srl)
endcase
else
end
jkk
initial begin
// Initialize Inputs
d <= 'h1;
clk <= 0;
en <= 0;
srl <= 0;
reset <= 0;
end
initial begin
reset<=0;
#20 reset<=1;
en <= 1;
repeat(7)@(posedge clk)
d <= ~d;
#10 srl<= 1;
repeat(7)@(posedge clk)
d <=~d;
repeat(7)@(posedge clk);
end
initial
$monitor("reset=%0b,en=%0b,d=%b,srl=%0b,out=%b",reset,en,d,srl,out);