消抖电路原理及实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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代码。同时对于各类触发器的工作原理以及约束条件有了更深的认识,基本掌握消抖电路的原理以及实现方法。

八、思考题

相关文档
最新文档