消抖电路原理及实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实 验 报 告
实验日期: 学 号:
姓 名:
实验名称:
消抖电路
总 分:
一、实验概述
运用LPM 原件定制DFF 触发器,并调用LPM 定制的DFF 触发器,用VHDL 语言的元件例化实现消抖电路并了解其工作原理。
二、实验原理 1、触发器原理
触发器是一种可存储1位二进制码的逻辑电路,是构成各种时序电路的最基本逻辑单元。触发器有一对互补输出端,输出状态不仅与当前输入有关,还与前一输出状态有关。触发器有两个稳定状态,在一定的外界信号作用下会发生状态翻转。
2、消抖电路原理
脉冲按键与电平按键通常采用机械式开关结构,其核心部件为弹性金属簧片。按键信号在开关拨片与触电接触后经多次弹跳才会稳定,而在按键过程中,可能出现了多个脉冲。因此需要根据实际情况进行按键消抖处理以提取稳定脉冲,在按键过程中提取稳定的电平状态,通过对抖动脉冲多次检测信号按键电平值,并提取一前一后两个信号按键电平值来进行比较,以此来获取开关状态。输出一个周期的脉冲时,要求前一次检测到的电平信号为低电平,后一次检测到的电平信号为高电平时。
3、结构图:
三、实验设计
时钟信号 元件记忆当前的按键信号电平 元件记忆上一次按键信号电平 两次按键的电平进行比较 脉冲信号
1、LPM元件定制DFF触发器
(1)设置lpm_ff元件选择Installed Plug-Ins→Storage→lpm_ff项。
(2)LPM元件定制步骤,设置输入data为1位,clock为时钟信号,类型为D 型。
(3)添加异步清零和异步置1。
(4)aclr异步清零且高电平有效,aset异步置1且高电平有效,二者无效时,q输出由clock上升沿触发更新为data。
(5)调出其vhd文件添加至消抖电路的工程中。
(6)仿真验证并下载。
功能仿真波形分析
参数:end time 为2.0ns,grid size为100ns;
信号:alcr 异步清零且高电平有效,二进制;
aset异步置1且高电平有效,二进制;
二者无效,q(二进制)输出由clock(二进制)上升沿触发更新为
data(二进制)。
aclr输入无效,aset
输入有效,q输出1
aclr和aset均无效,q输出1;clock上升时,触发更新为data,q输出0 aclr和
aset均无
效,q输
出1;
clock上
升时,触
发更新
为data,
q输出1;
aclr异步
清零,q
输出0
aclr有
效,aset
无效,清
零得q输
出0;aclr
和aset
均无效,
q输出0;
clock上
升时,触
发更新
为data,
q输出0;
2、VHDL 语言元件例化。 library ieee;
use ieee.std_logic_1164.all; entity xiaodou is
port(clk:in std_logic; d_in:in std_logic; clk_out:out std_logic); end xiaodou;
architecture xiaodou_arch of xiaodou is signal s1,s2,s3:std_logic; component xiaodou0 is port(clock:in std_logic; data:in std_logic; q:out std_logic); end component xiaodou0; begin
g1:xiaodou0 port map(clk,d_in,s1); g2:xiaodou0 port map(clk,s1,s2); s3<=not s2;
clk_out<=s1 and s3; end xiaodou_arch;
仿真波形分析
参数:end time 为2.0ns ,grid size 为10ns 。 信号功能:clk :二进制时钟信号; d_in :二进制脉冲信号; clk_out :二进制输出信号。 ,功能仿真:
时序仿真:
时钟信号上升沿,脉冲信号为0,按键按下后脉冲信号从0→1,q 输出1
时钟信号上升沿,按键按下一段时间后脉冲信号恒定为1,q 输出0
脉冲信号抖动,产
生多个不
稳定脉冲
结论:clk_out输出捕捉时钟信号上升沿的输入值,并保持不变,直至捕捉到下一个时钟信号上升沿的输入值。按键抖动,d_in脉冲信号不稳定时,clk_out 输出保持稳定,实现消除抖动的目的。
四、管脚分配(小实验板)
clk input ---- PIN_125
d_in input ---- PIN_33
clk_out output --- PIN_86
五、下载验证(小实验板)
现象说明:每次按下PIN_33脉冲按键,PIN_86亮灯并且亮一段时间后熄灭,不再重复。
结论:此电路实现消抖作用。
分析:clk的时钟信号的频率要适宜,否则难以判定亮灯现象是否正确。若频率过高,按键后观测到PIN_86发光二极管亮一段时间后,后续亮灯间断明显;若频率过低,按键后PIN_86不会亮灯。
六、实验日志
1、编写消抖电路的vhdl代码时,忘记将DFF的VHDL文件复制到消抖电路的文件夹中,便直接调用DFF,使得编译无法通过;
2、编写代码前,认真仔细的学习了P122的结构式描述和P141的元件例化,通过直接调用and和or,避免再一次对与门和或门进行vhdl的描述;
3、在建立vwf文件时,未重新建立新的工程文件,直接用DFF的工程文件,使得消抖电路的vhdl成功编译后,进行仿真图建立时,List无法找到消抖电路中的输入和输出结点;
七、实验心得
此次实验,让我初步学习了VHDL语言中的元件例化,并通过结构式描述的方法,学习编写与顶层文件相关的VHDL代码。同时对于各类触发器的工作原理以及约束条件有了更深的认识,基本掌握消抖电路的原理以及实现方法。
八、思考题