一、LED闪烁实验
实验任务
使用开发板上PL上的两个LED灯,实现交替闪烁。
程序设计
- 赫兹的倒数就是秒。50MHZ就是20ns,即一个周期。1s = 10_0000_0000 ns 。
- LED灯 高电平点亮。这里每隔0.5s灯交替一次。因为2500_0000 * 20ns = 0.5s
设计文件
`timescale 1ns / 1ps
module led_twinkle (sys_clk, sys_rst_n, led);
// sys_rst_n 这里的n代表低电平有效
// parameter TOTAL = 26'd50_000_000;
parameter TOTAL = 26'd50;
input sys_clk;
input sys_rst_n;
output [1:0] led;
reg [25:0] count;
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n) begin
// reset
count <= 26'd0;
end
else if(count < TOTAL)begin
count <= count + 1'b1;
end
else begin
count <= 26'd0;
end
end
assign led = count < (TOTAL / 2) ? 2'b01 : 2'b10;
endmodule
tb文件
`timescale 1ns / 1ps
module tb_led_twinkle();
reg clk;
reg sys_rst_n;
wire [1:0] led;
led_twinkle inst_led_twinkle (
.sys_clk (clk),
.sys_rst_n (sys_rst_n),
.led (led)
);
initial begin
clk = 1'd0;
sys_rst_n = 1'd0;
#40
sys_rst_n = 1'd1;
forever begin
#10
clk = ~clk;
end
end
endmodule