vhdl按键消抖程序.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vhdl按键消抖程序一:延时性消抖 在本例子中,input是按键的输入,output是消抖之后的按键输出 是clk经历8个上升沿之后就让output输出一个CLK周期的高电平 library ieee; use ieee.std_logic_1164.all; entity PWlock is port(clk: in std_logic; input: in std_logic; output: out std_logic ); end PWlock; architecture one of PWlock is signal a:std_logic; signal count:integer range 0 to 9; begin process(clk) begin if input=‘0’ then count=0; elsif (clk‘event and clk=’1‘) then if count=9 then count=count; else count=count+1; end if; end if; - if count=8 then a=’0‘; else a=’1‘; end if; end process; output=a; end one; vhdl按键消抖程序二 一般按键延时在20ms左右,根据时钟频率决定你的计数范围。程序非常简单,但经常用到,对于FPGA初学者要好好学习这部分。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity reseter is port(clk,reset_in:in std_logic; --按键按下时为0 reset_out:out std_logic:=‘0’); end reseter; architecture behav of reseter is begin PROCESS(clk,reset_in) VARIABLE COUNT1 :INTEGER RANGE 0 TO 100000; BEGIN IF reset_in=‘0’ THEN IF RISING_EDGE(clk) THEN IF COUNT110000 THEN COUNT1:=COUNT1+1; ELSE COUNT1:=COUNT1; END IF; IF COUNT1=9999 THEN reset_out=‘1’; ELSE reset_out=‘0’; END IF; END IF; ELSE COUNT1:=0; reset_out=‘1’; END IF; END PROCESS ; end behav; vhdl按键消抖程序三:计数器型消抖电路(一) 计数器型消抖电路是设置一个模值为(N+1)的控制计数器,clk在上升沿时,如果按键开关key_in=‘1’,计数器加1,key_in=‘0’时,计数器清零。当计数器值为2时,key_out输出才为1,其他值为0时。计数器值为N时处于保持状态。因此按键key_in持续时间大于N个clk时钟周期时,计数器输出一个单脉冲,否则没有脉冲输出。如果按键开关抖动产生的毛刺宽度小于N个时钟周期,因而毛刺作用不可能使计数器有输出,防抖动目的得以实现。clk的时钟周期与N的值可以根据按键抖动时间由设计者自行设定。 主要程序结构如下: if(clk’event and clk=’1’)then if(key_in=’1’)then if count=N then count=count; else count=count+1; end if; end if; else count=0; end if; vhdl按键消抖程序四:计数器型消抖电路(二) 计数器型消抖电路(二)是控制计数器工作一个循环周期(N+1个状态),且仅在计数器为0时输出为“1”。电路设计了连锁控制设施。在计数器处于状态0时,此时若有按键操作,则计数器进入状态1,同时输出单脉冲(其宽度等于时钟周期)。计数器处于其他状态,都没有单脉冲输出。计数器处于状态N时,控制en=‘0’,导致计数器退出状态N,进入状态0。计数器能否保持状态0,取决于人工按键操作,若按键key_in=‘1’,控制en=‘1’(计数器能正常工作),key_in=‘0’,计数器状态保持。显见计数器处于状态0,人工不按键,则计数器保持状态0。 主要程序结构如下: if count=N then count=0; else count=count+1; end if; if count=0 then key_out=’0’; end if; end if end process; B:pro

您可能关注的文档

文档评论(0)

我思故我在 + 关注
实名认证
内容提供者

部分用户下载打不开,可能是因为word版本过低,用wps打开,然后另存为一个新的,就可以用word打开了

1亿VIP精品文档

相关文档