触摸按键主要分为四大类:电阻式、电容式、红外感应式、表面声波式。
电容式:手指接触到触摸按键时,总容值增加
硬件设计:
实验任务
使用触摸按键控制LED灯亮灭,上电后为点亮状态,手指触摸后LED熄灭;再次触摸,LED点亮
系统框图
代码
module touch_led(
input clk,
input rst_n,
input touch_key,
output reg led
);
//实现上升沿判断功能
reg touch_key_d0;
reg touch_key_d1;
wire touch_key_flag;
assign touch_key_flag = (~touch_key_d1) & touch_key_d0;
/*下降沿检测为
assign touch_key_flag = touch_key_d1 & (~touch_key_d0); */
always @ (posedge clk or negedge rst_n)begin
if(!rst_n) begin
touch_key_d0 <= 1'd0;
touch_key_d1 <= 1'd0;
end
else begin
touch_key_d0 <= touch_key;
touch_key_d1 <= touch_key_d0;
end
end
always @ (posedge clk or negedge rst_n)begin
if(!rst_n)
led <= 1'b1;
else
if(touch_key_flag)
led <= ~led;
else
led <= led;
end
endmodule
分析
下降沿:
理解:
https://blog.csdn.net/qq_26652069/article/details/100555881
关于同步/异步实现边沿检测:
打拍:
https://blog.csdn.net/kebu12345678/article/details/80669549
还是没有完全理解,先码住。
疑惑:
①reg和wire的使用没有完全理解
②并行执行没有完全理解
③一般标志位信号都为wire类型?