《EDA技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA技术课程设计报告.docx(19页珍藏版)》请在课桌文档上搜索。
1、第1章引言EDA是电子设计自动化(EleCtrOniCDesignAUtOmation)的缩写,在20世纪60年头中期从计算机协助设计(CAl)、计算机协助制造(C砧1)、计算机协助测试(CAT)和计算机协助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHD1.或者VeriIogHD1.完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下教等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。VerilogHD1.是一种
2、硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。此次课程设计我们运用QuartusI【这个软件,运用VerilogHD1.语言进行编程。数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的精确性和直观性,具有更长的运用寿命,已得到广泛的运用。数字钟的设计方法有很多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所狗要的外圉电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程敏捷,以便于功能的扩展。
3、本次课程设计要求利用EDA技术,设计一个数码管显示数字钟的样品,数字钟要求具备以下功能:I、具有时、分、杪,计数显示功能,以24小时循环计时:2、具有消零,调整小时、分钟功能:3、具有整点报时功能,整点报时的同时1.ED花样显示第2章电路原理数码管显示数字钟设计,运用到8位数码管,要求其中6位数码管动态显示,分别显示时、分、杪的计数,同时对时间进行设置,数字钟的总体功能根据要求可“1.ED灯花样显示模块”经过时钟分频信号,传递绐“数码管显示模块”,实现所需功能。数字钟设计原理如图3.1所示:图3.1数字钟设计原理图3.1 顶层模块设计顶层模块设计如附录图3所示,其RT1.电路图如附录图4所示。
4、顶旧模块包含四个输入:系统时钟输入“elk”,秒设置信号“ssot”,分钟设置信号mmset”,小时设置信号“hset”一个8位的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出“dig”,将输出给数码管进行动态显示.“时钟分频模块”电路符号名为“int_div,“按键驱动模块”电路符号名道anjian,“时钟计数模块”内部采纳三格计数器级联的方式分别驱动时、分、杪计数,秒计数器和分计数播均为60进制计数器,小时计数器为24进制计数器,电路符号名分别为两个ji_shu_60”和个“ji_shu24”。3.2时钟分频模块设计“时钟分频模块”干脆运用老师上课所给的分频程序,
5、加入两个分频模块,与“时钟计数模块”和“按键驱动模块”进行连接。3.3按键驱动模块设计按键驱动模块运用原理图方法设计,采纳在按键信号传输过程中申联触发器实现按键去抖,保证触发器两次触发的间隔远大F按键抖动的时间,而远小于人动作反应的时间.另外因为实例用独立按键按下后是低电平,所以在触发器后面串联一个非门,使其变为高电平有效,附录图1所示为按键驱动模块隙理图,图3.2图32按键驱动模块封装而成的电路元ql3:0=ql3:0+1:if(ql39)beginql3:0=0:q23:0=i23:0+l:endif(q1=4)if(q2=2)beginql=0jq2=0;endend如图1.2所示该模块
6、中60进制模块与24进制模块的仿真波形,60进制模块设置qsO、qsl分别为个位、十位,个位计数到9之后消零,十位计数到5之后清零,24进制模块设置qhO、qhl分别为个位、十位,个位计数到9之后清零,十位计数到2之后清零。3. 5整点报时模块整点报时模块的设计思路是当数字钟计数到一个整点时间时,蜂鸣器起先响鸣.蜂鸣器的封装设计如图3.3所示,程序设计为一段乐谱,主要VeriIogHD1.代码如下:always(POSedgeclk_4Hz)begincase(j),dkorigin=d4916;/lowd2:origin=d6168:,d3zorigin=d7281:d4zorigin=d7
7、791:d5zorigin,d8730;d6:Origin=d9565;,d7rorigin=,dl0310;,d8:origin=*d010647;/middle,d9:origin=*d011272;dl:Origin=d011831;,dlIiorigin=d12087;dl2:Origin=d12556;,dl3rigin=,d012974;dl4:Origin=d13346:,dl5zorigin=dl3516:/highdl6:Origin=dl3829:,dl7rorigin三,114108;,dl8oriin=,dll535:dl9:Origin=dl4470;d20:Orig
8、in=dl4678;d21:Origin=dl4864;default:origin=,dlllll;endcuseendalways(PoSedgeelk4Hz)/乐谱beginif(len=63)Ien=O;elselen=len+I:case(len)O:j=3:l:j=3:2:j=3:3:j=3:4:j=5;5:j=5;e:j=5:7:j=6:8:j=8;9:j=8;10:j=8:ll:j=6:12:j=6;13:j=6;14:j=6:15:j=l2;16:j=12:17:j=12;18:j=15:19:j=15;20:j=15:21:j=15;22:j=15:23:j=9:24:j=
9、9;25:j=9;26:j=927:j=9:28:j=9;29:j=9;30:j=9:31:j=9:32:j=9;33:j=9:34:j=10:35:j=7;36:j=7:37:j=6:38:j=6;39:j=5;40:j=5:41:j=5:42:j=6:43:j=8;44:j=8:45:j=9;46:j=9:47:j=3:48:j=3:49:j=8:50:j=8;51:j=8:52:j=5:53:j=5:54:j=8:55:j=5:56:j=5:57J=5;58:j=5;59:j=5;60:j=5:61:j=5:62:j=5:63:j=5:endcaseend3.61.ED灯花样显示模块1.
10、ED灯花样显示模块是与整点报时模块同时工作,当蜂鸣器响呜时1.ED灯闪该模块设计思路较为简洁,只需在时分秒的时钟傩出端接入个以低电平驱动的1.ED邓即可实现。3.7数码管显示模块设计数码管动态显示的原理是利用人眼的视觉停留,依次点亮将个数码管的位选信号,当第一个数码管被点亮时,将段选信号变为第一个数码管要显示的信息,当其次个数码管被点亮时,将段选信号变为其次个数码管要显示的信息,以此类推,循环扫描。当循环扫描一次全部数码管所用的时间在人眼能反应出图像变更的时间(约为0.02秒)之内时,人自然就会在视觉上看到完整的图像,而不会感到闪“数码管显示模块”的作用就是将6位10进制的时间数据BCD码转化
11、成供数码管动态显示的位选和段选数据。该模块在VerilogHD1.语言描述下的主要段落如下:always(PoSedgeclk_lk)begincase(count)3dO:disp_dat-d;3dl:disp_dat=dl:3d2:disp_dat=4hf;3d3:disp_dat=d2;3d4:disp_dat=d3;3d5:disp_dat=4hf;选择扫描显示数据第一个数码管其次个数码管第三个数码管第四个数码管第五个数码管第六个数码管3*d6:disp_dat=d4:/d7:4:3*d7:disp_dat=d5:/d3:0:endcase第七个数码管第八个数码管case(count)
12、3,dO:dig_r8b01111111:3dl:dig_r=8bl0111111:3,d2:dig_r=8bll011111:3,d3:dig_r=8blll0llll:3d4:digr=8bllll0111:选择数码管显示位选择第一个数码管显示选择其次个数码管显示选择第三个数码管显示选择第四个数码管显示选择第五个数码管显示3,d5:dig_r=8blllll011;3,d6:dig_r=8bllllil01:3,d7:dig_r=8bllllillO:选择第六个数码管显示选择第七个数码管显示选择第八个数码管显示endcaseend如图3.4所示是“数码管显示模块”的封装图,输入包括时钟信号
13、“elk”,更位信号“dr”;数码管显示数据BCD码输入,由低位到高位依次为“dO”、dl”、“d2”、“d3”、“d4”、“d5”。输出包括:一个8位的段选数码管显示值输出“seg”,一个8位的片选数码管显示哪一个数码管输出dig”。.3*一一:scanled-clk_1kdg(70一d30seg70一d130一d2(30 d3(3.0 FfIO9M20f30fMSQz0Q“MgMRgMi36吊M-0aA1_TT_n_n_ri_rUTJTJTj-ur1.rur1.r1.JTJ-1.J-I5AOII_JIIII5AIIIII国41波形仿真结果时、分、秒三个按键的去抖原理完全一样,这里提取小时输
14、入和输出进行波形仿真验证,每一个时钟上升沿h_out的值都保持和hin的值相反,该设计能够达到预期设计要求。按键所绑的开关在开发板上是Sl、52、S3,分别限制小时进位、分钟进位、秒清零。60进制和24进制模块(时、分、秒模块)波形仿J分析:图4.6整点报时,锋鸣器响图4.5按下S1,小时进位,1.ED3亮第5章小结在此次课程设计中,遇到的问题主要有以下几个方面:(1)由于YeriIOgHD1.这门语言对自己来说属于一个从未接触过的东西,所以学习起来比较困难.此次课程设计选择的课题是数码管显示数字钟,起先是资料的搜集与设计思路的理清,再有了肯定的基础之后,起先对整个大的模块进行分模块分析设计。
15、(2)在试脸的过程中,遇到了很多的问题.首先发觉自己对软件的运用上存在的些问题,如刚起先的时候没有生胜利能网表,导致最终运行出错:还仃没有选功能仿真的时候,波形出现了些毛刺和延时。(3)设计60进制计数器和24进制计数冷也发生了些问题,原本的设计思路是将个位数字与十位数字分别拆开,用进位信号限制输出,但发觉在连接螺鸣器模块时.,进位信号延时太短,导致秒计数器计数计到59以后分钟计数冷进位但蜂鸣涔和1.ED灯没有反应,手动按键却可以限制蜂鸣涔报警和1.ED灯闪耀。试验过程中,遇到的小问题不计其数,在多方努力之卜.,问题基本解决,这里就不一一列举。总结出的珍货阅历就是要多看书,学会自己解决问题,一
16、般的问题在看书找资料之后基本都能解决:还有就是肯定要细心,这样可以避开很多不必要的麻烦。对于这一个课程,我依旧属于半懂不懂的状态,在今后的学习中,对老师的建议就是可以在刚起先上课的时候就可以给同学布置一些小的作业,然后可以让同学渐渐接触一下软件,学一点浅显的编程,这样在最终写大作业的时候就不会感觉无从下手,以便起到一个按部就班的作用。参考文献1、周涧景等,基于QUarUISn的ITGA/CP1.D数字系统设计实例,电子工业出版社,20102,熨宇间,VeriIog数字系统设计教程(其次版),北京航空航天高校出版社,2014附录电路图及程序1时钟分频模块moduleint_div(clock,c
17、lk_out);inputclock:outputclk_out:内部寄存器regclk_p;regelkn:/7输入时钟/输出时钟上升沿输出时钟下降沿输出时钟regFWIDTH-1:0countp;上升沿脉冲计数器regFWIDTH1:0countn;下降沿脉冲计数器参数一分频系数parameterFDIV=48000000;分频系数修改这里parameterFWIDTH=32;分频计数器宽度wirefull_p;/上升沿计数满标记wirehalf_p;/上升沿计数半满标记wirefull_n:下降沿计数满标记wirehalf_n:/下降沿计数半满标记推断计数标记位四位与否assignful
18、l_p=(count_pF_DIV-1);assignhalf_p=(count_p(F_DIV1)-1):assignfull_n=(count_nF_DIV-1);assignhalf_n=(COUnt_n(F_D1V1)-1);时钟输出assignclk-out=(F_DIV=I)?clock:(F-DIVO?(clk_p&clk_n):clk_p);上升沿脉冲计数alwaysMposedgeclock)beginbegincountp=countP+bl;if(halfp)c1k_p=b;elseclk_p=bl;endelsebegincount_p=0:clk_p=l,b:ende
19、nd下降沿脉冲计数a1ways(negedgeclock)beginbegincount_n=count_n+bl;if(half_n)clk_n=1b:elseCIhn=l,bl;endelsebeginCoUnt_n=0:elkn=b;endenderlmodule2 .按键驱动模块3 .时钟计数模块3.1 60进制计数器模块(限制分钟、秒)moduloji_shu_60(clk,ql,q2,co,rst);output3:0ql,q2:outputco:inputelk,rst:reg3:0ql=0,q2=0;regco;always(PoSedgeelkornegedgerst)beg
20、inif(!rst)/Obeginql=O;q2=0;endelsebeginql3:0=ql3:0)+1:co=0;if(9)beginql3:0=0;q23:0=q23:0+l:if(q23:05)beginq23:0=0;co9)beginql3:0=0:q23:0=q23:0+l;endif(q1=4)if(q2=2)beginql=0;q2=0;endend4 .整点报时模块modulebuffer_music(audio,sys_C1.K,button);outputaudio;inputsys_C1.K:inputbutton;reg23:0counter4Hz1counterl
21、MHz,counter6MHz;reg1.13:0count,origin:regaudiof:regclk_6MHz,clk-4Hz;regelkIMIlz;reg4:0j;reg7:0len:/assignaudio=audiof:限制开关assignaudio=button?audiof:Tbl;限制开关开发极品振为always(PoSCdgesys_C1.K)/6Mllz分频50YHZbeginif(counter6MHz-4)begincounter6MHz=0;clk_6MHz=clk6MHz;endelsebeginCOUnIer6Mlk=counter6MHz+l;/enden
22、dend/alwaysG(POSedg。sys_C1.K)4Hz分频begin/if(counter4Hz=2500000)if(counter4Hz=6250000)/50M/4/2begincountcr4Hz=0;clk_4Hz=clk1Hz:endelsebegincounter4Hz=counter4Hz+l:endendalways(POSedgeelk6MHz)beginif(count=16383)begincount-origin:audiof=audiof:endelsecount-count+1:endalwaysPOSedgeelk4Hz)begincase(j),(l
23、korigin=jd4916;/low12:origin=(16168;d3:Origin=d7281;d4:origin=d779l:15:Origin=18730:d6rorigind9565;d7:Origin=110310:d8:origin=*d10617;/middled9:Origin=dl1272;,dlO:origin=dl1831;,dll:origin=,d12087;dl2:Origin=d12556;dl3:Origin=dO12974;dl4:origin=,d13346:,dl5:origin=dl3516;/high,dl6origin=,dl3829:,dl7
24、origin=,dl4108;,H8zorigin=dl1535:,dl9origin=d14470:,d20origin=d14678:,d21zorigin=dl4864:default:Origin=dlllll;endcaseendalways(POSedgeclk_4Hz)乐谱beginif(len=63)Ien=O;elseIen=Ien+1;case(len)0:j=3;I:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5:7:j=6:8:j=8;9:j=8;10:j=8:ll:j=6;12:j=6:13:j=6;14:j=6;15:j=12;16:j=12;1
25、7:j=12:18:j=15;19:j=15:20:j=15;21:j=15:22:j=15;23:j=9;24:j=9;25:j=9:26:j=927:j=9;28:j=9;29:j=9:30:j=9;31:j=9;32:j=9:33:j=9;34:j=10;35:j=7:36:j=7:37:j=6;38:j=6;39:j=5:40:j-5;41:j=5;42:j=6;43:j=8:44:j=8:45:j=9;46:j=9;47:j=3:48:j=3;49:j=8;50:j=8:51:j=8;52:j=5:53:j=5;54:j=8;55:j=5;56:j=5;57:j=5:58:j=5;5
26、9:j=5;60:j=5:6l:j=5;62:j=5:63:j=5;endcaseendendmodule5,数码管显示模块moduloscanIed(clk_lk,d,dl,d2,d3,d4,d5,dig,seg);模块名scan_ledinputclk_lk:/输入时钟input3:0d,dl,d2,d3,d4,d5:/输入要显示的数据output7:0dig;数码管选择输出引脚output7:0seg;reg7:0seg_r:reg7:0dig_r:reg3:0disp_dat;reg2:0count;assigndig-dig_r;assignseg-seg_r;always(POSe
27、dgeclkk)begincount=count+1bl;endalways(posegeelkIk)begin数码管段输出引脚定义数码管输出寄存器定义数码管选择输出寄存器定义显示数据寄存器定义计数寄存器输出数码管选择输出数码管译码结果定义上升沿触发进程选择扫描显示数据case(count)3,d:dispdal=d;第一个数码管3dl:dispdal=dl;其次个数码管第七个数码管第八个数码管选择数码管显示位3d2:disp_dat=4hf:第三个数码管3d3:disp_dat=d2;第四个数码管3d4:disp_dat=d3;第五个数码管3d5:disp_dat=4hf:第六个数码管3d6:disp_dat=d4:/d(7:4:3d7:disp_dat=d5:/d3:0:endcasecase(count)3*dO:dig_r=8bOlllllll:3dl:dig_r=8blOllllll:3,d2:dig_r=8bll011111:3,d3:dig_r=8blll01111:3*d4:dig_r=8,bllll0111:3*d5:dig_r=8,blllll011:选择第个数码管显示选择其次个数码管显示选择第三个数码管显示选择第四个数码管显示选择第五个数码管显示选择第六个数码管显示附录IS4顶层模块RT1.电路图