这是第一个实验,内容:小灯闪烁实验(主要参考正点原子的例程)
因为考虑到需要计数的数值较大,所以将计数减少,这样可以更好的进行仿真,下面的代码是修改后的Verilog的设计文件
module led_twinkle(
input sys_clk,
input sys_rst,
output [1:0] led
);
reg [7:0] cnt = 8'd0;
assign led = (cnt<8'd5)?2'b01:2'b10;
always @(posedge sys_clk or negedge sys_rst)
begin
if(!sys_rst)
cnt <= 8'd0;
else if(cnt<8'd9)
cnt <= cnt +1'b1;
else
cnt <= 8'd0;
end
endmodule
接着需要添加仿真文件及testbench文件。
下面的是testbench的代码。
`timescale 1ns / 1ps
module testbench();
reg sys_clk = 0;
reg sys_rst = 0;
wire [1:0] led;
always #10 sys_clk = !sys_clk;
initial
begin
#5
sys_rst = 1;
end
led_twinkle led_twinkle_tb(
.sys_clk(sys_clk),
.sys_rst(sys_rst),
.led(led)
);
endmodule
注:因为这里的cnt没有在testbench中定义,所以需要添加设计Verilog中的信号。