数字电子技术基础EDA大作业2终结报告(2016秋)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA大作业二终结报告
█████████████一、预习报告
二、阐述设计思路
1、键盘读入模块
键盘读入模块的作用是向下一模块(控制模块)传递按键是否按下以及按键值为多少。根据矩阵键盘的原理,检测行线上的电平值,可以判断矩阵键盘中有无按键按下。当检测到有按键被按下之后,对列线的电平值进行跑马灯式扫描(S1、S2、S3、S4状态,分别指扫描第1、2、3、4列的信号),若检测到某列有低电平则(进入S5状态)可以由当前的行线电平值和列线电平值确定所按键的值。对于长按键的设计,当检测到有按键时进入S5状态(有按键按下的状态),检测到按键还在被按下状态(行线电平值不为1111)的话,则不进行下一次扫描,直到检测到按键被松开(行线电平值为1111)时,进行下一次扫描(进入S0状态)。对于按键防抖的设计,当检测到行线电平值不为1111时,进入S1、S2、S3、S4状态时都再一次进行行线电平值的判断,如果此时行线电平值没有回到1111,则可以认定这次按键是有效的;若此时检测到行线电平值回到1111,则可以认定这是一个抖动,然后回到S0状态。对于是否有按键按下的输出(key_ready),定义中间变量flag1、flag2、flag3以及按键按下标志flag,flag1是flag的延时,flag2是flag的上升沿检测结果,flag3是flag2的延时,flag2在有按键输出的时候只保持一个时钟周期,由于采用非阻塞式赋值,在有按键按下时flag3会产生一个时钟周期的高电平,作为有按键按下的标志(也可以直接以key_busy作为下一级输入,不过要取key_busy得下降沿,不符合同步电路的设计要求)。
键盘读入模块状态机示意图
2、控制模块
控制模块的作用是根据键盘读入模块读入的值进行处理,向显示模块传递要在数码管上显示的数字。状态转化图如下。
若电路处于state_start状态,则数码管全灭,此时令num32(第3、2数码管显示的数字,即金钱)为21,num10(第1、0数码管显示的数字,即时间)为41(因为对于num32(num10)来说,0到20(40)的数字都在数码管有对应显示,所以选用21、41这两个无关数字作为全灭状态的输出,使数码管处于全灭状态,具体实现见显示模块),数码管全灭。当检测到按键按下信号flag为1且现在输入值为13(1101)时,进入state_ready状态,令num32、num10均为0。
电路处于state_ready状态时,num10肯定为num32的2倍,故只需考虑num32。当检测到按键按下信号flag为1且现在输入值为小于等于9(即为数字)时,判断此时的num32:若num32为0或1,则修改num32的值位原num32的值乘10加现在读入的数值;若num32已经大于10,则num32为20。当检测到按键按下信号flag为1且现在输入值为14(清零)时,令num32为0,实现清零。当检测到按键按下信号flag为1且现在输入值为15(倒计时)时,进入state_count(倒计时)状态。在这个过程中,有中间变量count一直在进行计数,每当检测到有按键按下时,count清零,当count为500000000(即10s时间)时,表明十秒内无操作,如果此时num32为0(已经有数据输入时不会回到初始状态),则进入state_start状态。
电路处于state_count(倒计时)状态时,有中间变量count进行计数,每当count为50000000时(1s时间)时,如果num10>1,则num10减一,保持倒计时状态;否则num32、num10清零,进入state_ready状态。
3、数码管显示模块
数码管显示模块的输入为两个数字num32、num10,分别表示金钱和时间。对于两个数字处理方法是一样的,根据大小范围判断十位显示(数码管3和数码管1),根据模十取值判断个位显示(数码管2和数码管0)。另外此模块将输入CLK信号分频为一个500Hz的时钟信号CLK2,用于选通各个数码管(状态S1、S2、S3、S4不断扫描,不同状态有对应数码管的显示取值)。
三、顶层电路图,并说明其中各模块电路的功能。
左侧模块为键盘读入模块,作用是向下一模块(控制模块)传递按键是否按下以及按键值为多少;中间为控制模块,作用是根据键盘读入模块读入的值进行处理,向显示模块传递要在数码管上显示的数字;右侧位显示模块,作用是对输入的金钱时间进行对应的显示。
四、验收步骤中的仿真波形图及其分析说明。
控制模块仿真图如上(为显示完整,时间尺度与功能要求不一致),可以看到,初始状态时分别显示21、41(全灭),按键13(开始)后进入state_ready状态,分别显示0、0,按键4、7后,分别显示20、40,按键14(清零)后,分别显示0、0,按键1、2后显示12、24,按键15(倒计时)后,金额12不变,时间24开始倒计时,倒计时为0后一段时间无响应,显示21、41(全灭)。
键盘读入模块仿真图如上。可以看到当长按键时,按键按下标志只产生一次脉冲,即认为是一次按键,满足要求。当产生抖动时,其会在输入稳定后产生标志脉冲,以达到防抖的目的。
五、设计和调试中遇到的问题及解决方法。
(这部分我怎么可能传上来呢)