[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)

[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)

ID:6687439

大小:928.50 KB

页数:24页

时间:2018-01-22

[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)_第1页
[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)_第2页
[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)_第3页
[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)_第4页
[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)_第5页
资源描述:

《[电子设计精品] vhdl任意整数的分频器的设计(从1到任意位)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1、按键去抖电路的设计一、按键电路   常用的非编码键盘,每个键都是一个常开开关电路。   计数器输入脉冲最好不要直接接普通的按键开关,因为记数器的记数速度非常快,按键、触点等接触时会有多次接通和断开的现象。我们感觉不到,可是记数器却都记录了下来。例如,虽然只按了1下,记数器可能记了3下。因此,使用按键的记数电路都会增加单稳态电路避免记数错误。二、按键消抖   通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一

2、连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。   按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。24三、硬件消抖   在键数较少时可用硬件方法消除键抖动。下图所示的RS触发器为常用的硬件去抖。图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下

3、时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。   利用电容的放电延时,采用并联电容法,也可以实现硬件消抖:四、软件延时消抖24如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测

4、到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。五、VHDL按键去抖按键检测需要消抖,一般有硬件和软件两种方式。硬件就是加去抖动电路,这样从根本上解决按键抖动问题。除了用专用电路以外,用可编程FPGA或者CPLD设计相应的逻辑和时序电路,对按键信号进行处理,同样可以达到去抖动的目的。本例中用状态机实现了消抖电路:端口描述:clk输入检测时钟;reset复位信号;din原始按键信号输入;dout去抖动输出信号。VHDL源码如下:LIBRARYieee;USEieee.std_logic_1164.all;USEieee.st

5、d_logic_unsigned.all;ENTITYxiaodISPORT(clk:INSTD_LOGIC;reset:INSTD_LOGIC;din:INSTD_LOGIC;dout:OUTSTD_LOGIC);ENDENTITY;ARCHITECTURERTLOFxiaodISTYPEstateIS(s0,s1,s2,s3);24SIGNALpre_s,next_s:state;BEGINP0:PROCESS(reset,clk)BEGINifreset='0'thenpre_s<=s0;elsifrising_edge(clk)thenpre_s<=

6、next_s;elsenull;endif;ENDPROCESSP0;P1:PROCESS(pre_s,next_s,din)BEGINcasepre_siswhens0=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s1;endif;whens1=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s2;endif;whens2=>dout<='1';ifdin='1'thennext_s<=s0;elsenext_s<=s3;endif;whens3=>dout<=

7、'0';ifdin='1'thennext_s<=s0;elsenext_s<=s1;endif;endcase;ENDPROCESSP1;ENDRTL;多按键去抖动电路VHDL源码,按键个数参数化,每个按键处理调用了上面的模块:LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith.all;USEieee.std_logic_unsigned.all;ENTITYNxiaodISGENERIC(width:positive:=5);PORT24(clk:INSTD_LOGIC;reset

8、:INSTD_LOGIC;din:INSTD_LOG

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。