主要功能:按下按键0,从左到右点亮led;按下按键1,从右到左点亮led;按下按键2时,四个led间隔亮灭;按下按键3时,点亮全部led。亮灭间隔时间为0.5s,时钟为50MHz.
//author :bronceyang
//time :2020年4月16日
//version: 1.0
//功能:实现按键控制led的亮灭
module key_led(
input sys_clk,
input sys_rst_n,
input [3:0]key,
output reg [3:0]led
);
//parameter define
parameter COUNTER_T=25'd25_000_000;
//reg define
reg [24:0]cnt_time;
reg [1:0]led_control;
//wire define
//*******************************************
// main()
//*******************************************
//产生0.5s的计数器
always @(posedge sys_clk or negedge sys_rst_n)begin
if(!sys_rst_n)
cnt_time<=25'd0;
else if (cnt_time<COUNTER_T)
cnt_time<=cnt_time+1'b1;
else
cnt_time<=25'd0;
end
//led 状态的选择
always @(posedge sys_clk or negedge sys_rst_n)begin
if (!sys_rst_n)
led_control<=2'b00;
else if (cnt_time==COUNTER_T)
led_control<=led_control+1'b1;
else
led_control<=led_control;
end
//识别按键输入,输出相应的led状态
always@(posedge sys_clk or negedge s

本文介绍了一种基于按键输入控制LED灯状态的模块设计,通过不同的按键操作,可以实现LED灯从左到右点亮、从右到左点亮、间隔亮灭及全部点亮的功能,每个状态切换间隔为0.5秒。
最低0.47元/天 解锁文章
1750

被折叠的 条评论
为什么被折叠?



