DSD_Lab_Solutions
DSD_Lab_Solutions
Part A:
Verilog Code:
module random_sequence_generator(
);
if (reset)
counter <= 0;
else if (enable)
end
case (counter)
endcase
end
endmodule
Part B:
Testbench:
module testbench;
random_sequence_generator uut(
.clk(clk),
.reset(reset),
.enable(enable),
.switch(switch),
.seq_out(seq_out),
.display(display)
);
initial begin
#10 enable = 1;
#50 switch = 1;
end
endmodule
Part A:
Verilog Code:
module up_down_counter(
);
if (reset)
count <= 0;
else
end
end
endmodule
Part B:
Testbench:
module testbench;
up_down_counter uut(
.clk(clk),
.reset(reset),
.enable(enable),
.up_down(up_down),
.display_select(display_select),
.count(count),
.display(display)
);
initial begin
#10 reset = 0;
#10 enable = 1;
end
endmodule
Part A:
Verilog Code:
module modulo_6_counter(
);
if (reset)
count <= 0;
else if (count == 5)
count <= 0;
else
end
end
endmodule
Part B:
Testbench:
module testbench;
modulo_6_counter uut(
.clk(clk),
.reset(reset),
.select(select),
.count(count),
.led(led)
);
initial begin
clk = 0; reset = 1; select = 0;
#10 reset = 0;
#10 select = 1;
end
endmodule
Part A:
Verilog Code:
module random_sequence_push(
);
reg slow_clk;
if (reset)
slow_clk <= 0;
else
slow_clk <= ~slow_clk;
end
if (reset)
counter <= 0;
else if (button)
end
case (counter)
endcase
end
endmodule
Part B:
Testbench:
module testbench;
.clk(clk),
.reset(reset),
.button(button),
.seq_out(seq_out)
);
initial begin
#10 reset = 0;
#10 button = 1;
#10 button = 0;
#20 button = 1;
end
endmodule