1.6FPGA电容按键点亮LED

原理图

波形图

理解:

1.电容按键本身具有消抖的作用

2.两个flag为了找出key的下降沿

3.是的都是延时到下一个上升沿不过2相对1明显一些

trl(边沿检测下降沿)

module touch_ctrl_led
(
    input wire sys_clk,
    input wire sys_rst_n,
    input wire touch_key,
    output reg led
);

wire touch_flag;
reg touch_key1;
reg touch_key2;

//边沿检测

always@(posedge sys_clk or negedge sys_rst_n) 
    if(sys_rst_n==1'b0)
        begin
            touch_key1<=1'b1;
            touch_key2<=1'b1;
        end
    else
        begin
            touch_key1<=touch_key;
            touch_key2<=touch_key1;
        end
        
assign touch_flag=((touch_key1==1'b0)&&(touch_key2==1'b1));

always@(posedge sys_clk or negedge sys_rst_n) 
    if(sys_rst_n==1'b0)
        led<=1'b0;
    else if (touch_flag==1'b1)
        led<= ~led;
    else
        led<=led;
        
        

endmodule

sim

`timescale 1ns/1ns

module tb_touch_ctrl_led();

reg sys_clk;
reg sys_rst_n;
reg touch_key;

wire led;

initial
    begin
        sys_clk=1'b1;
        sys_rst_n <= 1'b0;
        touch_key <= 1'b1;
        #20
        sys_rst_n <= 1'b1;
        #200
        touch_key <= 1'b0;
        #2000
        touch_key <= 1'b1;
        #1000
        touch_key <= 1'b0;
        #3000
        touch_key <= 1'b1;
    end
    
always #10 sys_clk=  ~sys_clk;  
 
touch_ctrl_led touch_ctrl_led_inst
(
    .sys_clk   (sys_clk) ,
    .sys_rst_n (sys_rst_n) ,
    .touch_key (touch_key) ,
    .led       (led)
); 
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值