EDA课程设计verilog数字电子钟.docx_第1页
EDA课程设计verilog数字电子钟.docx_第2页
EDA课程设计verilog数字电子钟.docx_第3页
EDA课程设计verilog数字电子钟.docx_第4页
EDA课程设计verilog数字电子钟.docx_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 课程名称 硬件描述语言与eda技术 题目名称 硬件描述语言与eda技术实践学生姓名 馥语甄心 2016年 6月 6日广东工业大学课程设计任务书题目名称硬件描述语言与eda技术实践姓 名馥语甄心一、课程设计的内容与要求1. 系统功能分析,分模块层次化设计;2. 实现系统功能的方案设计;3. 编写各功能模块verilog hdl语言程序;4. 对各功能模块进行编译、综合、仿真和验证;5. 顶层文件设计,可用verilog hdl语言设计,也可以用原理图设计;6. 整个系统进行编译、综合、仿真和验证;7. 在cpld/fpga实验开发系统试验箱上进行硬件验证;8. 按所布置的题目要求,每一位学生独立完成全过程。二、课程设计应完成的工作1. 所要求设计内容的全部工作;2. 按设计指导书要求提交一份报告书;3. 提交电子版的设计全部内容:工程目录文件夹中的全部内容,报告书三、课程设计进程安排序号设计各阶段内容地点起止日期1布置设计题目和要求;收集相关资料。工3317或宿舍6.62方案分析与确定;编写verilog源程序。工3317或宿舍6.73编写verilog源程序;编译、综合、仿真、定时分析、适配。工3317或宿舍6.84下载和硬件验证;验收。工33176.95下载和硬件验证;验收;撰写报告工33176.10678四、应收集的资料及主要参考文献1. 陈先朝,硬件描述语言与eda技术实践指导书,2015年5月2. 潘松等编著,eda技术与verilog hdl ,电子工业出版社,2013年;3. 现代数字电子技术及verilog设计,清华大学出版社,2014年; 4. 王金明等编著,eda技术与verilog hdl设计,电子工业出版社,2013年;5. 刘靳等编著,verilog程序设计与eda ,西安电子科技大学出版社,2012年;6. 刘福奇主编,verilog hdl 应用程序设计实例精讲,电子工业出版社,2012年;7. 周润景等主编,基于quartus 的数字系统verilog hdl设计实例详解,电子工业出版社,2010年。发出任务书日期: 2016年6月 6日 指导教师签名:计划完成日期: 2016年6月 10日 基层教学单位责任人签章:主管院长签章:摘要本次设计的题目是“简易数字钟”,基本的要求是设计一个以“秒”为基准信号的简易数字钟,显示时、分、秒,同时实现整点报时和清零。在设计中考虑到实际应用的方便性,我增加了一个校时模块。主要的设计思路是通过把系统的功能分解,用模块层次化的方法,来实现整个系统的方案设计。主要包含的模块有:(1)秒模块;(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。通过1hz的秒脉冲来实现时分秒的基本计数,通过1khz的脉冲来实现数码管的动态扫描,从而实现6位数码管同时显示。目录一、简易数字钟的基本组成和原理11.1总电路的基本组成11.2各模块的原理11.2.1秒模块11.2.2分模块11.2.3时模块11.2.4校时模块11.2.5整点报时模块11.2.6数码管显示模块2二、设计方案和设计步骤22.1设计方案22.2各个模块设计步骤22.2.1秒模块的设计步骤32.2.2分模块的设计步骤82.2.3时模块的设计步骤102.2.4校时模块设计的设计步骤122.2.5整点报时模块的设计步骤132.2.6数码管显示模块的设计步骤152.3总电路原理图18三、实验箱下载193.1实验箱选择及参数193.2总电路图的编译及下载203.2.1总电路图的编译203.2.2引脚分配203.2.3下载到实验箱213.2.4观看实验箱的显示结果21四、实验中遇到的问题及解决方法22五、课设心得22六、参考文献23iv一、简易数字钟的基本组成和原理1.1总电路的基本组成本次设计的简易数字钟,主要包含的模块有:(1)秒模块;(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。后来设计中增加了一个闹钟模块,不过功能没完全实现。1.2各模块的原理1.2.1秒模块秒模块是一个60进制的计数器,通过用一个秒脉冲源(1hz),利用其上升沿,实现每过1秒,计数器的秒位自动加1,从而实现最简单的秒计数。当秒低位计数超过9,秒低位自动清0,秒十位进1;当秒十位计数超过5,秒十位清0,产生一个分脉冲作为分模块的脉冲源(通过对端口不断取反,实现输出一个脉冲)。1.2.2分模块分模块也是一个60进制的计数器,通过利用分脉冲(由秒模块产生)的上升沿计数,实现每过1分钟,分自动加1。同理,分个位超9清零,向十位进1;分十位超5清0,产生一个时脉冲作为时模块的脉冲源。1.2.3时模块时模块是一个24进制的计数器,通过利用时脉冲(由分模块产生)的上升沿计数,实现每过1小时,时自动加1。时个位超3清0,向十位进1;时十位超2清0。1.2.4校时模块校时模块主要是用于设置时和分的时间,从而完成时间的校准。秒模块产生的分脉冲和分模块产生的时脉冲,要先经过校时模块。在这个模块中引入了两个开关:时校准开关、分校准开关,通过控制两个开关的组合,控制分脉冲和时脉冲的脉冲源选择。例如,分脉冲选择秒脉冲就是可以完成分位的时间校准,从1开始逐秒递增;选择秒模块产生的分脉冲就是正常的电子钟显示。同理,时位也是如此。1.2.5整点报时模块整点报时的意思是,59分59秒后的一个上升沿来临,会报一次时(就是整点)。所以设计时候对分和秒的4位进行判断,只要到了59分59秒,下一个脉冲上升沿来临时,输出端口就会输出一个高电平,再通过高电平驱动蜂鸣器电路(本次实验箱没有蜂鸣器就用了一个led灯代替,报时时候,led灯会亮。1.2.6数码管显示模块秒、分、时模块产生的数据,通过一个动态扫描的6位数码管进行显示。动态扫描是引入一个1khz的脉冲源,通过数码管的位选程序,来实现6个数码管的循环扫描显示。由于循环的频率很快,所以人眼就认为6位数码管同时显示。然后把时、分、秒输入给数码管,数码管通过译码后,输出19的数字。二、设计方案和设计步骤2.1设计方案主要的设计思路是通过把系统的功能分解,用模块层次化的方法,来实现系统的方案设计。主要包含的模块有:(1)秒模块;(2)分模块;(3)时模块;(4)校时模块;(5)整点报时模块;(6)数码管显示模块。2.2各个模块设计步骤先新建一个工程文件,命名为clock,设置的参数如图12.2.1秒模块的设计步骤(1)在工程下,新建一个verilog的文件,保存为counter60s,如图2(2)编写秒模块的verilog程序,然后把当前文件设为顶层文件,如图3程序主要思路:秒个位满5清0,十位进1;十位满9清0,取反cp60s(不断取反就产生了分脉冲);不然就秒个位加1。(3)对秒模块进行编译,点击按钮,编译正确(4)对秒模块的程序进行仿真验证首先创建一个波形文件,命名为counter60s,如图4在新的波形文件中选入需要验证的引脚,通过在左边窗栏里点击鼠标右键,选insertinsert node or bus,在打开的对话框中点击node finder,出现另外一个对话框,再点击list,选择所要观察的信号引脚(选中引脚名,再点“”键),如图5点击ok后,显示了如下图所示的所要观察的信号引脚的波形文件,如图6选择assignments settingssimulator settings,如下图所示。在simulation modek设置function类型仿真,再点击ok,如图7仿真步长和周期在菜单中的edit/grid size 和end time 中设置。为了观察输出信号值的正确与否,必须设置引脚的输入信号值。例如:设置输入a端口的信号值时,先选中a端口,再点击左工具栏中带有“c”的按钮,出现如下图所示“count value”对话框进行设置,如图8把秒输出高4位设置成一个组sh,低4位设置成一个组sd,所有输入端口设置好的信号值如下图9设置完毕之后,点击processinggenerate functional simulator netlist,生产网表文件之后,点击processingstart simulator,进行功能仿真,然后验证逻辑功能是否正确。如果与所设计的功能不一致,修改设计,再仿真(注意:每次修改都要重新编译),直至符合设计要求。最终秒模块的仿真结果如图10(5)仿真结果分析通过图10可以看出,输入秒脉冲,秒低位从09变化,高位从05变化;当低位为9时,下一个上升沿来临,秒低位清0,秒高位加1;当秒个位是9,秒十位是5时,下一个上升沿来到,秒高低位清零,产生一个分脉冲,由此可见,秒模块符合设计的要求。(6)生成秒模块符号图点击filecreate/updatecreate symbol file for current files,生成秒模块的电路符号图如图112.2.2分模块的设计步骤(1)同秒模块,先新建一个verilog文件,命名为counter60m;(2)编写分模块的verilog程序,如图12程序主要思路:分个位满5清0,十位进1;十位满9清0,取反cp60m(不断取反就产生了时脉冲);不然就分脉冲来临,分个位加1。(3)对分模块进行编译,点击按钮,编译正确(4)对分模块进行仿真步骤与秒模块类似,就不一一赘述了。仿真波形设置如图13仿真完成后,如图14(5)仿真结果分析从图14可以看出,当分脉冲来临,分低位从09变化,分高位05变化;当分低位为9,下一个上升沿来临,分低位清0,高位加1;当分高位为5,低位为9,下一个上升沿来临,分高低位清0,产生一个时脉冲。由此可见,分模块设计符合设计要求。(6)生成分模块电路符号图,如图152.2.3时模块的设计步骤(1)先新建一个verilog文件,命名为counter24h;(2)编写时模块的verilog程序,如图16程序思路:reset位高电平时,时高低位清0;时个位为9,下一个时脉冲上升沿来临,时个位清0,十位加1;时十位为2,下一个时脉冲上升沿来临,十位为清0;时个位为3,十位为2,下一个时脉冲上升沿来临,时高低位清0。(3)对时模块进行编译,点击按钮,编译正确(4)对时模块进行仿真步骤与秒模块类似,就不一一赘述了。仿真波形设置如图17仿真完成后,如图18(5)仿真结果分析如图18,当时脉冲来临,低位从09变化;当时低位为9,下一个脉冲来临,低位清0,时高位加1;当时位23,下一个上升沿来临,将时高低位清0。由此可见,时模块符合设计要求。(6)生成时模块的电路符号图,如图192.2.4校时模块设计的设计步骤(1)先新建一个verilog文件,命名为calibration;(2)编写校时模块的verilog程序,如图20程序思路:通过两个开关swh、swm作为输出cph、cpm的赋值选择开关,选择cps就是校准,选择cp60m、cp60s就是正常的计数。(3)对校时模块进行编译,点击按钮,编译正确(4)对校时模块进行仿真设置的波形如图21仿真结果如图22(5)仿真结果分析如图22,时开关swh(置1,就说明时开关生效),分开关swm(置0,分开关不生效)秒脉冲cps,分脉冲cp60s,时脉冲cp60m,时模块的输入脉冲cph,分模块的输入脉冲cpm。当时开关生效,cph的波形和cps的一样,就说明这时候是利用秒脉冲在对时位校准,符合设计要求。分开关不生效,所以cpm的波形和cp60s波形一致,符合正常计时的情况。由此可见,校准模块的设计符合设计要求。(6)生成校准模块的电路符号图,如图232.2.5整点报时模块的设计步骤(1)先新建一个verilog文件,命名为baoshi;(2)编写时模块的verilog程序,如图24程序思路:在59分59秒时候,对输出端口bs置高电平,点亮led灯,实现整点报时。(3)对整点报时模块进行编译,点击按钮,编译正确(4)对整点报时模块进行仿真设置的波形如图25仿真结果如图26、27(5)仿真结果分析通过图26、27可以看出,当59分58秒时候,输出端口bs是低电平;在59分59秒时,输出端口是高电平(即有效,高电平可以点亮led灯,从而实现了整点报时功能)。(6)生成整点报时模块的电路符号图,如图282.2.6数码管显示模块的设计步骤(1)先新建一个verilog文件,命名为tube;(2)编写数码管显示模块的verilog程序,如图29程序思路:用动态扫描的方法轮流点亮6个数码管,只要循环的频率较高,就可以认为是6个数码管同时点亮。数码管显示时共阴极接法,所以是高电平有效。(3)对数码管显示模块进行编译,点击按钮,编译正确(4)对数码管显示模块进行仿真设置的波形如图30仿真结果如图31(5)仿真结果分析如图31,在输入为20:47:39时,数码管6位轮流显示9,3,7,4,0,2,对应的数码管依次从低位到高位,符合设计的要求,显示的内容也正确。因为6个数码管实际上是轮流点亮的,不过频率比较高,所以人眼看到的就是6个数码管同时点亮,所以数码管显示的时分秒在仿真时候是一个个循环这样显示出来。由此可见,数码管显示模块的设计符合设计要求。(6)生成数码管显示模块的电路符号图,如图322.3总电路原理图在设计完各个子模块后,新建一个schematic file,命名为clock,如图33在图纸上双击,弹出对话框,引用刚才生成的各个子模块的电路符号,如图34然后完成各个子模块的电路连接,最后得到的总电路原理图,如图35三、实验箱下载3.1实验箱选择及参数1.本次设计采用的实验箱是td-eda实验箱,用的是cyclone系列的ep1c6q240c8芯片,引脚为240个,集成度为3万门。2.芯片引脚与开发板上的连接座的对应关系:fpga引脚连接座fpga引脚连接座fpga引脚连接座2io144io23166io443io245io24167io454io346io25168io465io447io26169io476io548io27170io487io649io28173io498io750io29174io5011io853io30175io5112io954io31176io5213io1055io32177io5314io1156io33178io5415io1257io34179io5516io13131rst180io5617io14152clk3181io5718io15153clk(50m)182io5819io16156io35183io5920io17158io36184io6021io18159io37185io6123io19160io38186io6228clk0161io39187io6329clk1162io40188io6441io20163io41193io6542io21164io42194io6643io22165io433.2总电路图的编译及下载3.2.1总电路图的编译在完成了总电路图的电气连接后,点击进行编译,如果编译出现错误,则根据提示进行修改,如果编译没错,则可以进行引脚的分配,如图363.2.2引脚分配点击assignmentpin,根据引脚和连接座的对应关系,分配引脚,如图373.2.3下载到实验箱把实验箱和计算机连接好,按照设计电路连接好各部分的导线,接通电源。点击按钮进行下载,如图38把图中的勾打上。第一次使用下载时,首先点击“hardware setup.”,打开hardware setup对话框,然后点击add hardware,选择byteblasterii后单击“select hardware”,选择下载形式为byteblasterii。3.2.4观看实验箱的显示结果下载完成后,观看实验箱的数码管显示结果,以及各个按键的控制情况是否和设计想法一样。正常显示的结果为:(1)6位数码管分别显示时高位、时低位、分高位、分低位、秒高位、秒低位;秒计数059,满59秒清0,时进1;分计数059,满59分清0,时进1;时计数023;(2)按下复位键,时分秒6位全部清0;(3)按下时开关键,小时每秒加1;按下分开关键,分钟每秒加1;不按两个键,正常计数和显示。四、实验中遇到的问题及解决方法在这次的课程设计中,用verilog语言设计简易电子钟,主要遇到的问题有:(1) 在编写程序时,由于不太熟练,一开始出现了一些编译的小错误,例如写少了一个end、写完endmodule没按空格导致没变成关键字、一些逻辑上的错误等等。这次的设计是分模块的,每一个程序相对而言不会太长,所以在排查错误的时候,比较轻松就排查出来了。(2) 在生成各个模块的原理图,完成模块间的连接时候,开始时没有注意端口是总线连接还是导线连接,导致编译的时候出现错误。后来通过阅读错误提示,也就发现了问题。(3) 在数码管显示方面,一开始没有注意到实验箱与程序的对应关系,导致数码管显示乱码,经过一番折腾,修改了数码管显示的程序,用共阴极的程序写法,就解决了问题。(4) 在数码管动态扫描程序的编写时候,也有些疑问。通过参考书本的一个2位数码管动态扫描显示的程序例子,最后也顺利写了出来。(5) 在完成了老师的基本功能后,我增加了校时模块和闹钟模块,不过闹钟模块的程序没有成功。由于老师也比较忙,自己找原因,读了比较久都没发现程序的问题,最后也就只好放弃了闹钟功能。五、课设心得这次课程设计做得是电子钟,以前用单片机的汇编也写过一个数字电子钟的程序,不过这次用的是veril

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论