EDA数字时钟VerilogHDL

上传人:鲁** 文档编号:522087554 上传时间:2022-11-18 格式:DOC 页数:16 大小:6.04MB
返回 下载 相关 举报
EDA数字时钟VerilogHDL_第1页
第1页 / 共16页
EDA数字时钟VerilogHDL_第2页
第2页 / 共16页
EDA数字时钟VerilogHDL_第3页
第3页 / 共16页
EDA数字时钟VerilogHDL_第4页
第4页 / 共16页
EDA数字时钟VerilogHDL_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《EDA数字时钟VerilogHDL》由会员分享,可在线阅读,更多相关《EDA数字时钟VerilogHDL(16页珍藏版)》请在金锄头文库上搜索。

1、数字时钟及闹钟 目录一、实验任务2实验目的2实验要求2二、设计思路2硬件部分2软件部分3三、完成情况6四、总结与收获7具体分工7五、完整程序815一、实验任务实验目的1. 深入了解基于EDA工具的复杂时序逻辑电路的设计。2. 理解并熟练利用EDA工具进行综合设计。3. 熟练掌握芯片烧录的流程及步骤。4. 掌握Verilog HDL 语言的语法规范及时序电路描述方法。5. 掌握多个数码管动态扫描与键盘扫描的显示原理及设计方法。实验要求设计一个带闹钟功能的24 小时数字钟,它包括以下几个组成部分: 显示屏,由4 个七段数码管组成,用于显示当前时间(时:分)或设置的闹钟时间; 数字键 09,用于输入

2、新的时间或新的闹钟时间; TIME(时间)键,用于确定新的时间设置; ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间; 扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。基本要求(1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。(3) 设置新的计时器时间:用户用数字键09输入新的时间,然后按TIME键确认。发挥部分(1) 设置新的闹钟时间:用户用数字键“0”“9”输入新的时间,然后按“ALARM”键确认。(2) 显示所设置的闹钟时间:在正常计时显示状态下,用

3、户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。二、设计思路硬件部分本次数字时钟的设计主要在NC-EDA-2000C实验箱上完成,应用的芯片为Altara公司的EP1K10TC1003芯片。该芯片具有低内核电压、低功耗的特点。芯片内门电路高达1万门,内部使用RAM作电路结构,速度高达几百MHZ,其输出可用管脚已全部开放,位于芯片的四周,用户可以根据自己的要求和芯片本身的功能自己任意定义管脚。同时为了体现实验箱的可扩展性,在芯片的两边各有一个34脚的IDE插口,可以通过数据排线与其它应用模块相连接。除了主芯片外,主要包括三大部分:八个数码管组成的显示部分、44键盘构成的按键输入部

4、分。以及其他输入或输出部分,如:TIME键、“ALARM”键、时钟信号、蜂鸣器等。8位7段数码管:采用2个进口共阴高红7段数码管组成,其连接管脚位选信号在数码管的左边由连接孔SEL0、SEL1、SEL2与其它模块连接。数码管显示的设计示意图如下:八位数码管显示设计示意图44键盘: 44键盘主要是通过编程实现0F的输入,也可以作为一个控制键。在其上方的连接孔R1、R2、R3、R4控制横向4位;C1、C2、C3、C4纵向4位。键盘输入设计示意图如下:44键盘输入设计示意图 软件部分软件主要应用软件quartus,使用Verilog HDL语言来编写程序。在老师所给的keyscan的基础上加入计时部

5、分、设置部分(时间的设置和闹钟的设置)以及闹铃部分。a) 计时部分always(posedge clkl) /计时过程beginhour=Hour;minute=Minute;if(reset) begin hour=0;minute=0;second=0;endelseif(second=59)if(minute=59)if(hour =23) begin second=0;minute=0;hour=0;endelse begin second=0;minute=0;hour=hour+1;endelse begin second=0;minute=minute+1;endelse sec

6、ond=second+1;end其中,clkl为1Hz的时钟信号,当每遇到一个时钟信号的上升沿时,秒钟就加1秒;当加到59时,分钟就加1,秒钟自动回到0重新计时;当分钟加到59时,时钟就加1,然后分钟回到0;当计时到23:59:59时,则回到00:00:00再进入计时。reset为清零信号,高电平有效。b) 设置部分always (posedge clkh)begin if(w=1)/设置时间begin Hour=num1*10+num2; Minute=num3*10+num4; endelse if(p=1) /设置闹钟begin Ahour=num1*10+num2; Aminute=n

7、um3*10+num4; end end将按下的键值存在num1、num2、num3、num4中,再通过w和p即所谓的TIME(时间)键与ALARM(闹钟)键将输入的数值赋给初始时间或闹钟时间。c) 闹铃部分 always (posedge clkh)/闹钟响beginif(hour=Ahour)&(minute=Aminute) ds=1; else ds=0;end当设置的闹钟时间(时:分)与当前的时间(时:分)相等时,则闹铃发出响声;ds信号可以接在蜂鸣器上或者发光二极管上。本次设计的完整程序已附在报告的最后。整体程序编译无误。程序中涉及的变量名称及其对应的变量意义:引脚配置图三、完成情

8、况在这次实验过程中我们完成了24小时数字时钟的设计。时钟的显示屏为七段数码管。显示出的时间格式为小时、分钟、秒钟(如图1)。时钟含有闹钟,可以在程序中设置闹钟时间,在实际时间和闹钟时间相吻合时蜂鸣器响。图2中的二极管亮即可说明,在闹钟时间可以输出高电平,该输出接在蜂鸣器上即可使蜂鸣器响。本次设计的闹钟为响1分钟自动关闭。图3中二极管熄灭。图1 时间显示图2 闹钟响(体现为发光二极管发光)图3 发光二极管熄灭(本次设计的闹钟为响1分钟自动关闭)四、总结与收获在实验设计的过程中,我们首先尝试了树上和老师上课时所讲的例程,在熟悉软件和设计流程后开始了数字时钟的设计。在设计数字时钟时,我们先分设计出来

9、时钟的自动计数显示,实现了24小时时钟。之后实验了4*4键盘,实现了键盘输入值的扫描读取。最后设计了闹钟部分,包括设置闹钟时间和到时间闹铃响。我们通过本次实验深入了解基于EDA工具的复杂时序逻辑电路的设计,理解并熟练利用quartus进行Verilog HDL语言的设计。掌握了建立工程项目,编译调试程序,下载程序的流程和步骤。在应用的过程中掌握了数码管和键盘扫描的原理和方法。并且对Verilog HDL语言的语法规则和几种常用语句有了更深入的理解。实验过程中通过合作的方式,小组成员积极讨论,对不同的语句进行了对比,最终确定了本次实验的完整程序。这次完成的数字时钟只是EDA实验箱中可以实现的众多

10、功能之一,我们也认识到Verilog HDL语言可以实现的设计还有很多,本次实验激发了我们对Verilog HDL语言的兴趣,也让我们认识到课堂的学习是有限的,想更加深入学习Verilog HDL语言,还要在今后的学习中多多自学,勤加练习。五、完整程序module zonghe (clkl,clkh,reset,q,w,p,kr,kc,a,b,c,d,e,f,g,sa,sb,sc,ds); input clkl,clkh,reset; /计数时钟脉冲、扫描频率脉冲与复位信号 input q,w,p; /启动设置的控制信号、设置时间的控制信号及设置闹钟的控制信号 inout 3:0kr; /4*

11、4键盘的行输入/输出信号 inout 3:0kc; /4*4键盘的列输入/输出信号 output a,b,c,d,e,f,g,sa,sb,sc,ds; /LED的7个片选信号与3个位选信号 reg a,b,c,d,e,f,g,sa,sb,sc,ds; reg 3:0kr,kc; reg 6:0 display ; reg 2:0 dcount,kcount; reg 3:0keyr,keyc; reg kflag1,kflag2; reg 6:0 buff7 ; reg 3:0 shiwei1,gewei1,shiwei2,gewei2,shiwei3,gewei3; reg5:0 hour,

12、minute,second,Ahour,Aminute,Hour,Minute; /储存当前时间的时分秒、闹钟的时分及设置的时间的时分 always(posedge clkh) /累加两个计数值 begin dcount=dcount+1; kcount=kcount+1; end always (posedge clkh) /扫描键盘 begin if(kcount=0) begin kr=4b1111; kc=4b0000; end else if(kcount=1) begin keyr=kr; kr=4bZZZZ; end else if(kcount=2) begin kr=4b00

13、00; kc=4b1111; end else if(kcount=3) begin keyc=kc;kc=4bZZZZ; end end always(posedge clkh) /改变键的标志位 begin if(kcount=4 & keyr=4b1111) kflag1=0; else if(kcount=4) kflag1=1; kflag2=kflag1; end always(posedge clkh) / 获取相应按键按下的结果begin if(kcount=5) if(keyr=4b1110) case (keyc) 4b1110:buff7=7b0111111; /在LED上显示0 4b1101:buff7=7

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 质量管理体系认证

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号