以1秒频率闪烁的LED灯的代码内容如下:
//设计一个以1秒频率闪烁的LED灯(亮灭各500ms)
module led_flash(
Reset_n,//复位端口,加_n是使用低电平复位
Clk,//时钟端口
Led,
);
input Clk;
input Reset_n;
output reg Led;
reg [24:0]counter;
always@(posedge Clk or negedge Reset_n) //posedge Clk 为时序描述的标准格式
// <=是非阻塞赋值的意思
if(!Reset_n)
counter <= 0;
else if(counter == 250000000-1)
counter<=0;
else
counter <= counter+1'd1;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
Led <= 0;
else if(counter == 25000000)
Led <=!Led;
// always@(posedge Clk or negedge Reset_n) //posedge Clk 为时序描述的标准格式
// // <=是非阻塞赋值的意思
// if(!Reset_n)begin
// counter <= 0;
// Led <=0;
// end
// else if(counter == 25000000-1)begin
// Led <=!Led;
// counter<=0;
// end
// else
// counter <= counter+1'd1;
endmodule
仿真测试的代码
`timescale 1ns/1ns
module led_flash_tb();
reg Clk;
reg Reset_n;
wire Led;
led_flash led_flash(
.Reset_n(Reset_n),//复位端口,加_n是使用低电平复位
.Clk(Clk),//时钟端口
.Led(Led)
);
//时钟信号
initial Clk =1;
always #10 Clk=!Clk;
initial begin
Reset_n=0;
#201;
Reset_n=1;
#2000000000;
$stop;
end
endmodule
标签:Reset,Led,FPGA,Clk,flash,reg,LED,led,闪烁
From: https://blog.51cto.com/u_16055951/7463254