EDA数字时钟VerilogHDL资料.pdf
《EDA数字时钟VerilogHDL资料.pdf》由会员分享,可在线阅读,更多相关《EDA数字时钟VerilogHDL资料.pdf(16页珍藏版)》请在三一文库上搜索。
1、 数字时钟及闹钟 1 目录 一、实验任务 . 2 实验目的 . 2 实验要求 . 2 二、设计思路 . 2 硬件部分 . 2 软件部分 . 3 三、完成情况 . 6 四、总结与收获 7 具体分工 错误!未定义书签。 五、完整程序 . 7 数字时钟及闹钟 2 一、实验任务 实验目的 1.深入了解基于EDA工具的复杂时序逻辑电路的设计。 2.理解并熟练利用EDA工具进行综合设计。 3.熟练掌握芯片烧录的流程及步骤。 4.掌握 Verilog HDL 语言的语法规范及时序电路描述方法。 5.掌握多个数码管动态扫描与键盘扫描的显示原理及设计方法。 实验要求 设计一个带闹钟功能的24 小时数字钟,它包括
2、以下几个组成部分: 显示屏,由4 个七段数码管组成,用于显示当前时间( 时:分 ) 或设置的闹钟时间; 数字键0 9,用于输入新的时间或新的闹钟时间; TIME( 时间 )键,用于确定新的时间设置; ALARM(闹钟 ) 键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间; 扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。 基本要求 (1) 计时功能: 这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示 当前时间。 (2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。 (3) 设置新的计时器时间:用户用数字键0 9输入新的时间,然后按“TIME“ 键确认。
3、 发挥部分 (1) 设置新的闹钟时间:用户用数字键“ 0”“9”输入新的时间,然后按“ ALARM ” 键确认。 (2) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM ”键, 则已设置的闹钟时间将显示在显示屏上。 二、设计思路 硬件部分 本次数字时钟的设计主要在NC-EDA-2000C实验箱上完成, 应用的芯片为Altara公司的 EP1K10TC100 3 芯片。该芯片具有低内核电压、低功耗的特点。芯片内门电路高达1 万门, 内部使用RAM 作电路结构,速度高达几百MHZ ,其输出可用管脚已全部开放,位于芯片的四 周,用户可以根据自己的要求和芯片本身的功能自己任意定义
4、管脚。同时为了体现实验箱的 可扩展性,在芯片的两边各有一个34 脚的 IDE 插口,可以通过数据排线与其它应用模块相 连接。 除了主芯片外,主要包括三大部分:八个数码管组成的显示部分、44 键盘构成的按 数字时钟及闹钟 3 键输入部分。以及其他输入或输出部分,如:“TIME“ 键、“ ALARM ”键、时钟信号、蜂鸣器 等。 8 位 7 段数码管:采用2 个进口共阴高红7 段数码管组成,其连接管脚位选信号在数码 管的左边由连接孔SEL0 、SEL1 、 SEL2与其它模块连接。 数码管显示的设计示意图如下: 八位数码管显示设计示意图 44 键盘: 4 4 键盘主要是通过编程实现0F 的输入,也
5、可以作为一个控制键。在 其上方的连接孔R1 、R2、R3、R4控制横向4 位; C1、C2、C3、C4纵向 4 位。 键盘输入设计示意图如下: 44 键盘输入设计示意图 软件部分 软件主要应用软件quartus,使用 Verilog HDL语言来编写程序。 在老师所给的keyscan 的基础上加入计时部分、设置部分(时间的设置和闹钟的设置)以及闹铃部分。 a)计时部分 always(posedge clkl) /计时过程 begin hour=Hour;minute=Minute; if(reset) begin hour=0;minute=0;second=0;end else if(sec
6、ond=59) if(minute=59) if(hour =23) begin second=0;minute=0;hour=0;end else begin second=0;minute=0;hour=hour+1;end 数字时钟及闹钟 4 else begin second=0;minute=minute+1;end else second=second+1; end 其中, clkl为 1Hz 的时钟信号,当每遇到一个时钟信号的上升沿时,秒钟就加1 秒; 当加到 59 时,分钟就加1,秒钟自动回到0重新计时;当分钟加到59 时,时钟就加1,然 后分钟回到0;当计时到23:59:59
7、时,则回到00:00:00再进入计时。reset为清零信号, 高电平有效。 b)设置部分 always (posedge clkh) begin if(w=1)/ 设置时间 begin Hour=num1*10+num2; Minute=num3*10+num4; end else if(p=1) /设置闹钟 begin Ahour=num1*10+num2; Aminute=num3*10+num4; end end 将按下的键值存在num1 、num2、num3 、num4中,再通过w和 p 即所谓的TIME(时间 ) 键 与 ALARM( 闹钟 ) 键将输入的数值赋给初始时间或闹钟时间。
8、 c)闹铃部分 always (posedge clkh)/ 闹钟响 begin if(hour=Ahour) else ds=0; end 当设置的闹钟时间(时:分)与当前的时间(时:分)相等时,则闹铃发出响声;ds 信号可以接在蜂鸣器上或者发光二极管上。 本次设计的完整程序已附在报告的最后。整体程序编译无误。 程序中涉及的变量名称及其对应的变量意义: 数字时钟及闹钟 5 引脚配置图 数字时钟及闹钟 6 三、完成情况 在这次实验过程中我们完成了24 小时数字时钟的设计。时钟的显示屏为七段数码 管。显示出的时间格式为小时、分钟、秒钟(如图1) 。 时钟含有闹钟, 可以在程序中设置闹钟时间,在实
9、际时间和闹钟时间相吻合时蜂鸣 器响。 图 2 中的二极管亮即可说明,在闹钟时间可以输出高电平,该输出接在蜂鸣器上 即可使蜂鸣器响。 本次设计的闹钟为响1 分钟自动关闭。图3 中二极管熄灭。 图 1 时间显示 图 2 闹钟响(体现为发光二极管发光) 数字时钟及闹钟 7 图 3 发光二极管熄灭(本次设计的闹钟为响1 分钟自动关闭) 四、总结与收获 在实验设计的过程中,我们首先尝试了树上和老师上课时所讲的例程,在熟悉软件和设 计流程后开始了数字时钟的设计。在设计数字时钟时,我们先分设计出来时钟的自动计数显 示,实现了24 小时时钟。之后实验了4*4 键盘,实现了键盘输入值的扫描读取。最后设计 了闹钟
10、部分,包括设置闹钟时间和到时间闹铃响。 我们通过本次实验深入了解基于EDA工具的复杂时序逻辑电路的设计,理解并熟练利用 quartus进行 Verilog HDL语言的设计。掌握了建立工程项目,编译调试程序,下载程序的 流程和步骤。在应用的过程中掌握了数码管和键盘扫描的原理和方法。并且对Verilog HDL 语言的语法规则和几种常用语句有了更深入的理解。实验过程中通过合作的方式,小组成员 积极讨论,对不同的语句进行了对比,最终确定了本次实验的完整程序。 这次完成的数字时钟只是EDA 实验箱中可以实现的众多功能之一,我们也认识到 Verilog HDL语言可以实现的设计还有很多,本次实验激发了
11、我们对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*4 键盘的行输入 /输出信号 数字时钟及闹钟 8 inout 3:0kc;
12、 /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,minute,second,Ahou
13、r,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=4b0000; kc=4b1111; en
14、d else if(kcount=3) begin keyc=kc; kc=4bZZZZ; end end always(posedge clkh) /改变键的标志位 数字时钟及闹钟 9 begin if(kcount=4 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=7b0000110
15、; /在 LED 上显示 1 4b1011:buff7=7b1011011; /在 LED 上显示 2 4b0111:buff7=7b1001111; /在 LED 上显示 3 default :buff7=buff7; /无变化 endcase else if (keyr=4b1101) case (keyc) 4b1110:buff7=7b1100110; /在 LED 上显示 4 4b1101:buff7=7b1101101; /在 LED 上显示 5 4b1011:buff7=7b1111101; /在 LED 上显示 6 4b0111:buff7=7b0000111; /在 LED
16、上显示 7 default :buff7=buff7; / 无变化 endcase else if(keyr=4b1011) case (keyc) 4b1110:buff7=7b1111111; / 在 LED 上显示 8 4b1101:buff7=7b1101111; / 在 LED 上显示 9 4b1011:buff7=7b1110111; /在 LED 上显示 a 4b0111:buff7=7b1111100; /在 LED 上显示 b default :buff7=buff7; / 无变化 endcase else if(keyr=4b0111) case (keyc) 4b1110
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 时钟 VerilogHDL 资料
链接地址:https://www.31doc.com/p-5196783.html