




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独立按键去抖实验卓越工程师培养系列FPGA开发实用教程——基于Xilinx和VerilogHDL第四章01实验内容通过学习FPGA高级开发系统上的独立按键电路原理图、按键去抖原理和状态机设计,设计一个基于FPGA高级开发系统的按键控制LED计数顶层模块,当按下按键KEY1时,控制编号为LED0〜LED3的4个发光二极管按照“0000—0001—0010—…—1111—0000”的顺序循环点亮,这里假设LED熄灭为0,点亮为1。实验内容02实验原理独立按键去抖实验涉及的硬件电路包括4个位于FPGA高级开发系统上的LED(编号为LED0〜LED3)、1个独立按键(编号为KEY1),以及与独立按键串联的10kQ限流电阻、与独立按键并联的100nF滤波电容。KEY1连接XC6SLX16芯片的G13引脚。另外,硬件电路还包括系统时钟引脚和系统复位引脚,如图4-1所示。当按键未按下时,G13引脚上的电平为高电平;当按键按下时,G13引脚上的电平为低电平。实验原理独立按键电路原理图市场上绝大多数按键结构都是机械式开关结构,而机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。在按键松开后,也会出现类似的情况,这种情况被称为抖动。按键按下时产生前沿抖动,按键松开后产生后沿抖动,如图4-2所示。实验原理按键去抖原理独立按键去抖原理图如图4-3所示,因为按键未按下时为高电平,按键按下时为低电平,所以对于理想按键,按键按下时可以立刻检测到低电平,按键松开后可以立刻检测到高电平。但是,实际情况是按键一旦按下,就会产生前沿抖动,抖动持续时间为5〜10ms。接着,芯片引脚会检测到稳定的低电平。按键松开后,会产生后沿抖动,抖动持续时间依然为5〜10ms。实验原理接着,芯片引脚会检测到稳定的高电平。去抖实际上是每1ms检测一次连接到按键的引脚电平,连续检测到20次低电平,即低电平持续时间超过20ms,表示识别到按键按下。同理,按键松开后,如果连续检测到20次高电平,即高电平持续时间超过20ms,则表示识别到按键松开。根据前面的分析,要求每1ms检测一次连接到按键的引脚电平,因此,需要通过50MHz的系统时钟分频出一个1kHz的时钟。假设去抖前的按键名为btn_i,去抖后的按键名为btn_o,未检测到按键按下时btn_o为低电平,在连续20次检测到按键按下时,bta_o产生一个脉宽为1ms的脉冲信号。这样,就实现了按键的去抖。独立按键去抖时序图如图4-4所示。实验原理状态机的全称为有限状态机(FiniteStateMachine,FSM),由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。状态机状态机由3部分组成,分别为产生下一状态的组合逻辑电路、当前状态的时序逻辑电路和产生输出的组合逻辑电路。状态机组成部分状态机的使用可归纳为4个要素:现态、条件、动作和次态。状态机的使用实验原理状态机工作原理①按键未按下时的空闲状态IDLE,复位时进入该状态。②检测到按键按下且计数器小于20的延迟状态DELAY。③检测到按键按下且计数器大于或等于20时产生一个脉宽为1ms脉冲的脉冲状态PULSE。④按键未松开时的保持状态KEEP,独立按键去抖处理的状态转换。实验原理独立按键去抖处理状态机
独立按键去抖状态转换条件如表所示。实验原理当前状态下一状态转换条件IDLEIDLE未检测到按键按下IDLEDELAY检测到按键按下,按键按下为低电平,从IDLE状态跳转至DELAY状态,同时启动计数器DELAYDELAY检测到按键按下且计数器小于20,计数器执行加1操作。DELAYIDLE计数器小于20并检测到按键松开DELAYPULSE检测到按键按下且计数器大于或等于20,即按键引脚低电平持续时间为20ms,说明成功检测到按键己有效按下PULSEKEEP在成功检测到按键己有效按下时,将bta_o置1,由于PULSE状态只会保持一个状态,从PULSE状态跳转至KEEP状态时,bm_o将被置0,因此,btn_o的高电平只会持续1ms。KEEPIDLE识别到按键松开,跳转至IDLE状态KEEPKEEP识别到按键依然处于按下状态
独立按键去抖实验电路有7个引脚,引脚名称、类型、约束及描述如表所示。实验原理引脚名称引脚类型引脚约束引脚描述clk_iinV10时钟输入,50MHzrst_n_iinN7复位输入,低电平复位btn_iinG13按键输入,按下为低电平led_o[3]outG16通过电阻连接到led3led_o[2]outH15通过电阻连接到led2led_o[1]outF16通过电阻连接到led1led_o[0]outG14通过电阻连接到led0
独立按键去抖实验内部电路图如图4-8所示。实验原理03实验步骤步骤1:复制工程文件夹并添加Verilog文件实验步骤将“D:\Spartan6FPGATest\Material”目录中的exp03.clrJitter_with_fsm文件夹复制到“D:\Spartan6FPGATest\Product”目录中。然后,双击运行“D:\Spartan6FPGATesf\Product\exp03.clrJitter_with_fsm\project目录中的btn_led_cnt.xise文件,打开工程。工程打开后,将“D:\Spartan6FPGATest\Product\exp03.clr_jitter_with_fsm\code”目录中的.v文件和.ucf文件全部添加到工程中,并将顶层文件设置为btn_led_cnt.v。步骤2:完善clrJitter_with_fsm.v文件实验步骤将程序清单4-1中的代码输入clrjitter_with_fsm.v文件中,并检查该文件的语法,下面对关键语句进行解释。第13至18行代码:定义参数BTN_DOWN,值为0,代表按键按下为低电平。同时定义4个参数表示状态机的4个状态,分别为空闲状态IDLE、延迟状态DELAY、脉冲状态PULSE和保持状态KEEP。第22至26行代码:定义当前状态curr_state和下一状态next_state。另外,再定义两个计数器,分别为当前计数器s_cnt_curr和下一计数器s_cnt_next,均赋初值00000。实验步骤第30至40行代码:实现两个时序逻辑电路,分别为产生当前状态的时序逻辑电路及产生当前计数器值的时序逻辑电路。当rst_n_i为0复位时,状态机当前状态curr_state为IDLE,当前计数器s_cnt_curr清零;在clk_i上升沿,curr_state更新为next_state,s_cnt_curr更新为s_cnt_next。第42至102行代码:实现产生下一状态、产生输岀的组合逻辑电路。实验步骤实验步骤步骤3:仿真工程检查完clrJitter_with_fsm.v文件的语法之后,对clrJitter_with_fsm模块进行仿真,本实验已经提供了测试文件模板clrjitter_with_fsm_tf.v,无须再创建,只需要将程序清单4-2中的内容输入模版代码的相应位置,然后参考2.3节步骤7进行仿真,下面对该文件的部分代码进行介绍。实验步骤第1行代码:因为该模块的时钟信号周期为1ms,所以这里要产生周期为1ms的时钟。第12至22行代码:模拟按键按下时的前沿抖动过程。第24行代码:模拟按键按下时的稳定状态,持续时间为120ms。实验步骤第25至27行代码:模拟按键松开后的后沿抖动过程。第28行代码:模拟按键松开后的稳定状态,持续时间为200ms。第30至37行代码:模拟按键抖动过程。实验步骤实验步骤完成测试文件的修改后,检查测试文件语法对clrjitter_with_fsm模块进行仿真,查看如图4-9所示的仿真结果,btn_i经过一段时间的前沿抖动之后,进入稳定状态,并持续120ms,经后沿抖动之后,进入松开状态。在抖动过程中,btn_o保持低电平,在按键按下持续20ms低电平之后,btn_o输出一个脉冲信号,说明检测到有效按键。步骤4:完善btn_led_cnt.v文件将程序清单4-3中的代码输入bta_led_cnt.v文件中,下面对关键语句进行解释。实验步骤第37至44行代码:当rst_n_i为0复位时,计数器s_cnt清零。在s_clk_lkhz时钟上升沿,若s_btn_after_clr_jitter为1,则s_cnt执行一次加1操作,s_cnt按照“0000—0001—0010—0011—•••—1111—0000”的顺序循环计数。第46行代码:led_o根据s_cnt输出不同状态值。实验步骤步骤5:通过Synplify综合工程通过Synplify对工程进行综合,生成电路图后,单击面按钮进入clrJitter_with_fsm模块的综合电路中,可以看到一个名为statemachine的方框,如图4-10所示的是Synplify通过代码生成的状态机,使用按钮便可查看状态机内的状态转换图。实验步骤步骤6:完善引脚约束文件将程序清单4-4中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包工不包料装修合同
- 生物饲料企业县域市场拓展与下沉战略研究报告
- 天然气预处理及液化系统企业县域市场拓展与下沉战略研究报告
- 自卸车企业县域市场拓展与下沉战略研究报告
- 墙板挤压机企业数字化转型与智慧升级战略研究报告
- 凿井绞车企业县域市场拓展与下沉战略研究报告
- 叉车制造企业数字化转型与智慧升级战略研究报告
- 胎面压合机企业县域市场拓展与下沉战略研究报告
- 磨底机企业县域市场拓展与下沉战略研究报告
- 含钒生铁企业县域市场拓展与下沉战略研究报告
- 制药企业确认与验证培训考试题
- 小学英语人教(精通)版三年级起点《Fun time 1 Recycle 1》优秀教学设计五年级下册-五年级英语教案
- 《竞争优势-透视企业护城河》读书笔记
- 07484社会保障学(完整版ppt)
- 小学的古诗80首(带拼音版)
- 世界现代史(上册) 马工程 02
- 第18章氢和稀有气体
- GB/T 23858-2009检查井盖
- 体育通识题试题附答案
- 尾矿库巡坝工岗位安全操作规程
- 仪表-ind560技术说明书METTLERTOLEDO未经书面许可不得翻印、修改或引用
评论
0/150
提交评论