当前位置:网站首页>Hardware and software solution of FPGA key chattering elimination
Hardware and software solution of FPGA key chattering elimination
2022-07-05 08:01:00 【Drink more hot water-】
Catalog
RS trigger
When the number of keys is small, hardware methods can be used to eliminate key jitter . Pictured Shown RS The trigger is used for common hardware to shake .
In the figure, two NAND gates form a RS trigger . When the key is not pressed , Output is 0;
When the key is pressed , Output is 1. At this time, the mechanical performance of the key is used , Make the key momentarily disconnected due to elastic jitter ( Jitter jump B), As long as the key does not return to the original state A, The state of the bistable circuit does not change , The output remains 0, Waveform without jitter . in other words , Even if B The voltage waveform of point is jittery , But after bistable circuit , Its output is normal rectangular wave . This point is analyzed RS The working process of the trigger can be easily verified

Software deblurring
If there are many keys , Commonly used software methods to shake , That is, execute a delay program after detecting that the key is closed , According to the shaking time 5ms~10ms, We produce a 20ms Time delay of , Let the leading edge jitter disappear and then check the state of the key again , If the closed state level is still maintained , Then confirm that there is a real key press .
We add a name called cnt_20ms Used to count 20ms Time counter , Whenever the system detects that the key input signal is low cnt_20ms The counter starts counting , stay cnt_20ms During the counter counting period , If the key is detected to be high again, it means that the low level detected last time must be a jitter , Then we will clear this counter , This ensures the maximum delay 20ms Time will not be too short . Because we can't guarantee 20ms Applicable to every key press .
in addition , In order to avoid long level in the result of detecting keys , Instead of pulses, see the figure below

The fundamental reason is that cnt_20ms The counter counts to 999_999 Keep at 999_999 For too long . (999999 yes 20ms Of clk Count value )
And found out cnt_20ms The counter counts to 999_998 The number of times is only one , And closest 999_999, Make key_flag The signal only produces a pulse signal . The final waveform result is shown in the figure Shown .

Enclosed Verilog
module key
#(
parameter MAX_CNT = 20'd99_9999
)
(
input wire sys_clk,
input wire sys_rst_n,
input wire key_in, // Key in
output reg key_flag // Key value judgment bit
);
reg [19:0] clk_cnt_20ms; //20ms Of CLK The counter is stored here
// Clear every high level 0, The low level will increase itself
always @(posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
clk_cnt_20ms <= 20'b0;
else if(key_in == 1'b1)
clk_cnt_20ms <= 20'b0;
else
clk_cnt_20ms <= clk_cnt_20ms + 1'b1;
// Low level 20ms after , The key is still low , It means that there is really a button pressed
always @(posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
key_flag <= 1'b0;
else if(clk_cnt_20ms == (MAX_CNT - 1'b1) && (key_in == 1'b0))
key_flag <= 1'b1;
else
key_flag <= 1'b0;
endmoduleThe method comes from brother fire , thank
边栏推荐
- Cadence simulation encountered "input.scs": can not open input file change path problem
- How to excavate and research ideas from the paper
- 研究发现,跨境电商客服系统都有这五点功能!
- [professional literacy] specific direction of analog integrated circuits
- Mlperf training v2.0 list released, with the same GPU configuration, the performance of Baidu PaddlePaddle ranks first in the world
- Global and Chinese market of peeled bourdon tubes 2022-2028: Research Report on technology, participants, trends, market size and share
- mysql 盲注常见函数
- Global and Chinese markets for medical oxygen machines 2022-2028: Research Report on technology, participants, trends, market size and share
- Global and Chinese market of core pallets 2022-2028: Research Report on technology, participants, trends, market size and share
- Extended application of single chip microcomputer-06 independent key
猜你喜欢

The printer encountered an abnormal configuration problem 0x8007007e (win10)

Programming knowledge -- assembly knowledge

C, Numerical Recipes in C, solution of linear algebraic equations, LU decomposition source program

Reasons for rapid wear of conductive slip rings
![Measurement fitting based on Halcon learning [i] fuse Hdev routine](/img/91/34c92065e797c87d6ce5ea13903993.jpg)
Measurement fitting based on Halcon learning [i] fuse Hdev routine

Hardware 1 -- relationship between gain and magnification

The firmware of the connected j-link does not support the following memory access

Consul安装

Altium designer 19.1.18 - clear information generated by measuring distance

Hardware 3 -- function of voltage follower
随机推荐
Consul installation
The research found that the cross-border e-commerce customer service system has these five functions!
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
C WinForm [display real-time time in the status bar] - practical exercise 1
导电滑环磨损快的原因
[professional literacy] specific direction of analog integrated circuits
Altium designer 19.1.18 - clear information generated by measuring distance
mysql 盲注常见函数
[professional literacy] core conferences and periodicals in the field of integrated circuits
Global and Chinese market for blood typing 2022-2028: Research Report on technology, participants, trends, market size and share
C language enhancement -- pointer
Define in and define out
Train your dataset with yolov4
Altium designer 19.1.18 - Import frame
Introduction of air gap, etc
Matlab2018b problem solving when installing embedded coder support package for stmicroelectronic
Improve lighting C program
Ads usage skills
Pointnet++ classification practice
C # joint configuration with Halcon