《史上最全的多功能数字电子钟 EDA技术课程设计报告 Verilog HDL语言实现.doc》由会员分享,可在线阅读,更多相关《史上最全的多功能数字电子钟 EDA技术课程设计报告 Verilog HDL语言实现.doc(30页珍藏版)》请在三一办公上搜索。
1、 EDA技术课程设计报告 多功能数字电子钟 (Verilog HDL语言实现) 专业:* 班级:(1)班 姓名:叶荆风 学号:* 制作时间:2012年11月1日 目 录前 言2一、设计要求31、基本要求32、操纵需求 3二、 设计方案31、 层次化设计32、系统示意图3三、设计过程41、 小时计时模块42、分钟计时模块163、秒计时模块184、 校时校分模块195、 正点报时模块206、 时段控制-路灯亮灭模块227、 分频模块238、 译码模块239、 秒 分 小时计时单元功能电路模块2310、 不加分频、译码模块的顶层文件2411、完整的数字钟总接线图25四、联机操作261、 选定芯片系列
2、272、分配引脚273、编译284、下载285、DE2开发板上的一些具体设置29五、课设心得30六、参考文献30Verilog HDL仿真源文件下载地址: 前 言数字电子钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。目前,数字钟的功能越来越强,并且有多种专门的大规模集成电路可供选择。从有利于学习的角度考虑,这里主要介绍以中小规模集成电路设计数字钟的方法。经过了数字电路设计这门课程的系统学习,特别经过了关于组合逻辑电路与
3、时序逻辑电路部分的学习,我们已经具备了设计小规模集成电路的能力,借由本次设计的机会,充分将所学的知识运用到实际中去。本次课程设计要求设计一个数字钟,基本要求为数字钟的时间周期为24小时,数字钟显示时、分、秒,数字钟的时间基准一秒对应现实生活中的时钟的一秒。供扩展的方面涉及到校时校分、时段控制、整点报时等。因此,研究数字电子钟及扩大其应用,有着非常现实的意义。 一、设计要求1、基本要求 小时计数器为8421BCD码24进制 ;分和秒计数器为8421BCD码60进制计数器; 扩展功能: 校时和校分; 整点报时;时段控制; .。 2、操纵需求使用硬件描述语言(Verilog HDL语言)方法在Qua
4、rtus II 9.1软件系统平台上建立数字电子钟电路的各分模块文件并完成编译和仿真;在Quartus II 11.1软件系统平台上完成顶层文件的编译和下载,并通过DE2开发板演示最终结果,观察现象。二、 设计方案1、 层次化设计 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图3-1所示为数字钟的一般构成框图。主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以
5、增强数字钟的功能。 2、系统示意图 输入变量:秒时钟CPS,校时、校分变量分别为SWH、SWM ; 输出变量:小时计时H7.4、H3.0为8421BCD码输出,其时钟为CPH; 分钟计时M7.4、M3.0为8421BCD码输出,其时钟为CPM; 秒计时S7.4、S3.0为8421BCD码输出,其时钟为CPS。 报时bshi和时段控制变量sk等。 三、设计过程1、 小时计时模块(1)建立工程文件,打开Quartus II 9.1(图1),单击,打开图2,选择Design Files/Verilog HDL FILe,打开如图3所示的编程界面。 图1 图2 图3 使用Verilog HDL语言编写
6、小时计时的程序,完成后单击 ,打开如图5所示的画面选择路径并点击保存.在弹出的图6提示框中,点击“是”。/到23时,小时输出H清零。/如果RD为低电平,小时输出H清零。/否则小时个位一直加1。/小时个位到9时,/小时个位清零,/并且小时十位进1。 图4 图5 图6连点三次“Next”,打开图10,这里我们指定目标芯片和具体的型号,设置如图所示,点击“Next”,打开图11,这里不用第三方的工具,默认选“none”,所以直接Next。 图7 图8 图9 图10 图11 然后打开图12,为新建工程的总结页面,单击Finish。 图12把当前文件设为顶层文件,在project Navigator栏右
7、击counter24h.v,选择set as top-level entity,如图13。 图13(2)编译,如图14所示操作。 图14编译无误后,可做功能仿真。(3)仿真,先建立一个波形激励文件,单击,选择vector waveform file。打开波形编辑器(图15),在波形编辑器窗口的name列空白处双击,打开图16。 图15 图16单击node finder,打开图17。 图17在图17里设置Filter为pins:all,单击list,如图18左框所示,列出端口,单击,添加端口到波形编辑器,如图18右框所示。 图18连续点击两次OK,得图19 图19分组,按Ctrl键选中需要分为一
8、组的端口,在阴影处右击,选择Grouping/Group(如图20),分为一组,并在弹出的命名框中,命名为Hl,如图21,单击OK,这样小时的低四位设置完成。 图20 图21用同样的方法设置小时的高四位,并命名为Hh,完成后得到图22。 图22然后设定仿真结束的时间,如图23,这里设置为2us,如图24。 图23 图24 点击OK,并保存,注意波形名改为指定的文件名,如图25。 图25首先选定输入信号CPH,单击CPH就选定CPH,如图26 图26单击,打开图27,并设置参数,点击OK。 图27CPH的波形如下图28: 图28然后设置RD,选择RD,单击,将RD全设为高电平。 图29设置仿真类
9、型,Assignments/Settings,如图30。 图30单击Simulator Settings,选择仿真类型为功能仿真,即设置Simulator mode为Functional,如图31,点击OK。 图31 然后,生成功能仿真网表文件,选择Processing/Generate Functional Simulation Netlist。 图32 图33现在,可以仿真了,点击,生成仿真结果,如图34 图34由仿真波形可知:Hl作个位计数,Hh作十位计数;当小时的高四位为0、1时,小时的低四位为9时,在下一个时钟的上升沿来之后,高四位加一;当小时的高四位为2,同时低四位为3时,小时的高
10、低四位都清零。实现了从00到23的循环计数,其结论是符合时计时规律,逻辑电路设计正确。(4)经仿真确认无误后,将当前设计打包,按图35操作,打包后生成24进制计数器的符号,如图36。 图35 图36 2、分钟计时模块(1)分 计时功能电路Verilog语言描述module counter60m(M,CP60M,CPM,RD);output 7:0M;output CP60M;input CPM;input RD; reg 7:0M;wire CP60M;always(negedge RD or posedge CPM) begin if(!RD) /RD为低电平时, begin M7:0=0;
11、end /分输出M清零。 else begin if(M7:4=5)&(M3:0=9) /到59时, begin M7:0=0;end /分输出M清零。 else begin if(M3:0=9) /分钟个位到9时,其分钟个位清零。 begin M3:0=0; if(M7:4=5) /如果分钟十位此时巧好也到5时, begin M7:4=0;end /其分钟十位也清零。 else M7:4=M7:4+1; /否则分钟十位加1 end else M3:0=M3:0+1; /再否则分钟个位一直加1 end end endassign CP60M=(M6&M4&M3&M0); /分输出M为59时,C
12、P60M输出进位信号。Endmodule60进制计数器的设计方法类似24进制计数器,不同的地方在于,60进制的设计思想是当计数到59时,置数清零,产生进位输出;而24进制的高低4位的清零和进位需要考虑个位计数到9和整个计满到23。设置波形激励,首先选定CPM,单击,打开时钟设置工具,设置如图27,然后设置RD,单击,将RD全设为高电平,如图37。 图37其他操纵与24进制计数器的类似,这里不作重复演示。(2)仿真波形图如下:图38由仿真波形可知:Ml作个位计数,Mh作十位计数;当分钟的高四位为0、1、2、3、4时,分钟的低四位为9时,在下一个时钟的上升沿来了之后,高四位加一;当分钟的高四位为5
13、,同时低四位为9时,分钟的高低四位都清零。实现了从00到59的循环计时,其结论是符合分计时规律,逻辑电路设计正确。(3)分计时模块打包: 图393、秒计时模块 (1)秒 计时功能电路Verilog语言描述module counter60s(S,CP60S,CPS,RD);output 7:0S;output CP60S;input CPS;input RD; reg 7:0S;wire CP60S;always(negedge RD or posedge CPS) begin if(!RD) /RD为低电平时, begin S7:0=0;end /秒输出S清零。 else begin if(S
14、7:4=5)&(S3:0=9) /到59时, begin S7:0=0;end /秒输出S清零。 else begin if(S3:0=9) /秒钟个位到9时,其秒钟个位清零。 begin S3:0=0; if(S7:4=5) /如果秒钟十位此时巧好也到5时, begin S7:4=0;end /其秒钟十位也清零。 else S7:4=S7:4+1; /否则秒钟十位加1 end else S3:0=S3:0+1; /再否则秒钟个位一直加1 end end endassign CP60S=(S6&S4&S3&S0); /秒输出S为59时,CP60S输出进位信号。endmodule(2)仿真波形如
15、下: 图40由仿真波形可知:Sl作个位计数,Sh作十位计数;当秒钟的高四位为0、1、2、3、4时,秒钟的低四位为9时,在下一个时钟的上升沿来了之后,高四位加一;当秒钟的高四位为5,同时低四位为9时,秒钟的高低四位都清零。实现了从00到59的循环计时,其结论是符合秒计时规律,逻辑电路设计正确。(3) 秒计时模块打包: 图414、 校时校分模块 (1)校时校分功能电路Verilog语言描述module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);output CPM,CPH;input SWM,SWH; / 定义校分、校时开关input CPS,CP60S,
16、CP60M; /定义正常计时的秒、分、时的脉冲输入reg CPM,CPH; / 经校分校时后的分、时的脉冲输出always(SWM or SWH or CPS or CP60S or CP60M) begin case(SWM,SWH) 2b01:begin CPM=CPS;CPH=CP60M;end /低电平时,校分不校时。 2b10:begin CPM=CP60S;CPH=CPS;end /低电平时,校时不校分。 default:begin CPM=CP60S;CPH=CP60M;end /正常计时。 endcase endEndmodule(2) 仿真波形如下: 图42 由仿真图分析可知
17、:当SWM为0时,用秒时钟CPS对分钟CPM进行校对;当SWH为0时用秒时钟CPS对小时CPH进行校对。当SWM、SWH都不为0时,分钟,小时正常计数。其结论是符合校时校分规律,逻辑电路设计正确。(3) 校时校分模块打包 图435、 正点报时模块 (1)正点报时功能电路Verilog语言描述module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi);input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy;output bshi;wire bm;reg bshi;assign bm=m6&m4&m3&m0&s6&s4&s0;always(b
18、m or s3 or dy or gy) begin if(bm&s3) /当为59分59秒时,以高音报时。 bshi=gy; else if(bm) /当为59分59秒时,以低音报时。 bshi=dy; else /否则不报时。 bshi=0; endendmodule(2)仿真波形如下: 图44 由仿真波形图看出,当为59分51秒、53秒、55秒、57秒时,以低音报时,当为59分59秒时,以高音报时。验证了本模块的逻辑功能正确。(3) 正点报时模块打包 图456、 时段控制-路灯亮灭模块 (1)时段控制-路灯亮灭功能电路Verilog语言描述module sdkz(h,sk);input
19、7:0h;output sk;reg sk;always(h) begin if(h=19) /从19点到凌晨5点时, sk=1; /路灯点亮。 else sk=0; /路灯熄灭。 endendmodule(2)仿真波形如下: 图46 由仿真波形图看出从6点到18点,路灯灭,从19点到凌晨5点(包括5点),路灯点亮,验证了本模块逻辑功能的正确性。(3) 时段控制-路灯亮灭模块打包 图477、 分频模块 分频模块打包如下: 图488、 译码模块 译码模块打包如下: 图499、 秒 分 小时计时单元功能电路模块(1) 接线图 图50(2) 仿真波形图 图5110、 不加分频、译码模块的顶层文件(1
20、)接线图: 图52(2)仿真波形: 图53 11、完整的数字钟总接线图 图54四、联机操作打开Quartus II 11.1,点击File/open project,打开最终的顶层文件,在弹出的提示框中点击yes,如图55,双击顶层文件(我的是final_clock),打开主接线图,如图56右边所示。 图55 图56指定目标器件,方法如图57所示。 图57 1、 选定芯片系列 设置Family:Cydone IV E时,在弹出的对话框(如图58)中点击OK,其他设置如图59所示,选择型号(EP4CE115F29C7),点击OK。 图58 图592、分配引脚导入引脚文件,如图60,选定引脚文件,
21、如图61. 图60 图613、编译单击,编译。编译无误后(如图62),便可下载。 图624、下载将DE2开发板与PC机接好,装好驱动,打开电源,单击,打开下载窗口,如图63。 图63这里要注意Hardware setup后是否显示usb-blaster,如果没有,单击Hardware setup,选择usb-blaster,然后单击,开始下载,当下载进度到100%(如图64),下载成功,就可以根据设计情况,在开发板上验证功能。 图645、DE2开发板上的一些具体设置 课设心得 这次课程设计虽然只有短短的几天,但我的收获却很大。通过这次课程设计,我掌握了EDA设计的基本流程(即设计输入编译调试仿
22、真下载),领会了自顶而下结构化设计的优点,并具备了初步的EDA程序设计能力。 我感觉,这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,这需要扎实的理论功底,而这正是我所欠缺的。相比而言,子模块的设计就容易多了,因为Verilog语言和C语言有很多相似之处,只要明白了实验原理,就不难完成,水平的高下只体现在程序的简洁与否。在实际操作中,从系统的设计到最终系统的调试,祝宏老师都给予了诸多帮助,使我得到不少的提高。特别是在联机下载时,由于FPGA设计中存在毛刺,所以即便前面的任何操作准确无误,仍然得不到预期的实验结果,这时祝老师建议在线路中加了一个7474的模块用于消除毛刺,在听取祝老师的建议后,果然,问题迎刃而解,故再次感谢祝老师耐心的指导和帮助。 这次实习,给我感触最深的还是行为态度问题。人的能力有大有小,但只要端正态度,不抛弃,不放弃,任何人都能取得令自己满意的成绩。在此,我由衷的感谢在这次课程设计中给了我巨大帮助的老师和同学们! 参考文献【1】数字系统设计与Verilog HDL(第三版) 王金明 电子工艺出版社 【2】电子线路实验设计仿真讲义 华中科技大学文华学院信息学部电子技术实验室Verilog HDL仿真文件下载地址: