【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)

 本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处

适用于板卡型号:

紫光同创PGL22G开发平台(盘古22K)

一、实验目的

机械式弹片按键,在按下或松开时会有机械抖动,导致在按下或松开时按键的状态不稳定,在快速的变化,在使用按键输入信号时如果采集了抖动时的状态(也可称之为毛刺),会导致工程运行出现不可控的变化,故而我们需要将这段时间的抖动信号给滤除掉,所以需要进行按键消抖。

二、实验要求

前后抖动时间约为5~10ms,预留20ms做设计,使用计数到N归零的计数器来做时间刻度计时;以20ms的间歇对按键输入信号进行采集,从而避开按键的抖动引起的信号快速变化。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第1张图片

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第2张图片

 

四、实验源码设计

首先,建立模块头部输入时钟、复位、按键输入信号和输出按键有效标志信号。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第3张图片

其次,使用参数parameter定义系统输入时钟和实际用、仿真用的延时。定义一个计数器用于对按键的保持时间进行计数,如果按键按下,那么计数器开始自加,直到等于或大于设定条件后计数器保持当前值不变,否则计数器清零。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第4张图片

 

当计数器等于或大于设定条件是,按键有效标志保持置1,直到条件不满足(即释放按键)。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第5张图片

 

五、仿真文件源码设计及仿真分析

双击Simulation建立仿真文件

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第6张图片

 在仿真文件中例化源文件模块,注意在仿真文件头部手动添加时间尺度语句,否则在运行modelsim后会报如下错误。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第7张图片

编写仿真代码

仿真开始先对输入复位

延迟10ns后清除复位

延迟10ns后按键有效

延迟30ns后释放按键

延迟10ns后按键有效

延迟100ns后释放按键

完成仿真文件的编写

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第8张图片

仿真文件编写完成后,需要对PDS与modelsim联合仿真进行设置方能正常使用。

打开工程,点击 PDS 的【tools】 菜单下的【Compile Simulation Libraries】。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第9张图片

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第10张图片

 

【Simulator】:第三方仿真工具,目前支持ModelSim和QuestaSim,本教程选择ModelSim。

【Language】:仿真库用的语言。

【Library】:选择 usim 则是 GTP 前仿库,vsim 则是 VOP 后仿库,ALL 则包括这两种仿真库,默认选择 ALL。

【Family】: 指定芯片系列对应的仿真库进行编译,可支持一次编译多个系列,默认选择ALL。

【Compiled Library Location】:编译出来的库的位置,默认是在当前工程下面;可以把编译库放在一个固定位置。

【Simulator Executable Path】:选择 ModelSim 运行路径(ModelSim 安装文件夹下…/…/win64pe)

设置完成后点击 compile,运行编译库会有状态栏显示正在编译。

下面界面是开始进行编译,编译成功后点击 Close 完成编译。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第11张图片

在完成上述所有步骤后,右击 tb 文件,点击Run Behavior Simulation就可以进行联合仿真了。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第12张图片

 

如下图所示,在第一次按键有效时,计数器计数没有达到设定条件,故按键有效标志没有拉高。

而第二次按键按下时,计数器计数满足了条件,按键有效标志持续拉高直到释放按键后拉低。

通过仿真可以看到按键消抖起到了应有的作用。

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第13张图片

如果需要改动仿真文件,改动完毕后不需要关闭modelsim后在PDS中重新Run Behavior Simulation;只需在modelsim的transcript命令输入行输入以下命令语句即可重跑仿真文件:

do {run_behav_compile.tcl}

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之按键消抖(二)_第14张图片

 

 

 

 

 

 

 

你可能感兴趣的:(fpga开发,学习)