FPGA之按键控制流水灯实验篇

16 篇文章 1 订阅

  • 按键时常用的控制器件,生活中也随处可见。案件一般有结构简单,成本低廉等特点,在家电 、数码产品、玩具等方面有广泛的应用。
  • 本次实验实现按键控制多个LED的亮灭
    module key_led
    (
    input            sys_clk,
    input            sys_rst_n,
    
    input      [3:0] key,
    output reg [3:0] led
    );
    
    reg [23:0]   time_count;
    reg [1:0]    led_static;
    
    //0.2s计时
    always @(posedge sys_clk or negedge sys_rst_n)begin
         if(!sys_rst_n)
    	  time_count<=24'd0;
    	  else if(time_count<24'd1000_0000)
    	  time_count<=time_count+1'b1;
    	  else
    	  time_count<=24'd0;
    end
    
    always @(posedge sys_clk or negedge sys_rst_n)begin
         if(!sys_rst_n)
    	  led_static<=2'b00;
    	  else if(time_count==24'd1000_0000)
         led_static<=led_static+1'b1;
    	  else
    	  led_static<=led_static;
    end
    
    always @(posedge sys_clk or negedge sys_rst_n)begin
         if(!sys_rst_n)
    	  led<=4'b1111;
    	  else 
    	   if(key[0]==1'b0)
           case(led_static)
    		  2'b00:    led<=4'b1000;
    		  2'b01:    led<=4'b0100;
    		  2'b10:    led<=4'b0010;
    		  2'b11:    led<=4'b0001;
    		  default:  led<=4'b1111;
    		 endcase
    	   else if(key[1]==1'b0)
           case(led_static)
    		  2'b00:    led<=4'b0001;
    		  2'b01:    led<=4'b0010;
    		  2'b10:    led<=4'b0100;
    		  2'b11:    led<=4'b1000;
    		  default:  led<=4'b1111;
    		 endcase
    	    else if(key[2]==1'b0)
           case(led_static)
    		  2'b00:    led<=4'b1111;
    		  2'b01:    led<=4'b0000;
    		  2'b10:    led<=4'b1111;
    		  2'b11:    led<=4'b0000;
    		  default:  led<=4'b1111;
    		 endcase
    	    else if(key[3]==1'b0)
           case(led_static)
    		  2'b00:    led<=4'b0000;
    		  2'b01:    led<=4'b0000;
    		  2'b10:    led<=4'b0000;
    		  2'b11:    led<=4'b0000;
    		  default:  led<=4'b1111;
    		 endcase
    		 else
    		            led<=4'b1111;
    end
    
    endmodule 

    端口配置

最终实现按键控制LED的功能

  • 核心思想:
    • LED的状态转换
    • 定时函数的熟练使用
    • 按键的一般检测方式,其中这里的电路按键采用默认上拉到3.3V,当按键按下是下拉到地,则可以通过检测低电平的方式来检测按键的按下
    • 系统模块设计如图所示

​​​​​​​

下载.sof  代码验证完成

代码坚持手撸!!!

 

话说不学习就把你sha掉!!!!  ---------索大

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值