




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE2FPGA应用实训报告多功能数字钟学院(系):电子信息工程学院专业:应用电子技术学生:指导教师:目录摘要………………3关键词……………3引言………………4一、设计任务与要求……………4二、总体设计方案………………4三、程序设计方案………………5四、系统软件原理………………7(1)主程序入口即变量定义………………7(2)显示模块………………7五、系统硬件原理………………8六、心得体会……………………9七、致谢…………10八、参考文献……………………11六、附录…………12PAGE3摘要数字钟是人们日常生活中经常使用的计时工具,本次的课程设计是基于VerilogHDL的多功能数字钟,完成时、分、秒的显示功能。设计利用VerilogHDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。程序下载到FPGA芯片后,可用于实际的数字钟显示中。此次设计的逻辑结构主要由分频器、计数器和译码显示器三个模块构成。分频模块将50Mhz系统基准时钟分频产生两路时钟信号,一路是1HZ的数字钟计时工作频率,一路是数码管动态显示的扫描频率;计时模块对1HZ的时钟信号进行计时,分为时、分、秒三个部分;与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。译码显示模块采用动态扫描的方式完成数码管的显示。最后通过主模块调用三个子模块函数完成整个设计。 【关键词】硬件描述语言FPGA数字钟PAGE4引言 现代电子设计技术进入了一个新的阶段。传统的电子设计方法、工具和器件在更大程度上被EDA所取代。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和模拟,直至对于特定目标芯片的适配编译、逻辑映像和程序设计下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。VerilogHDL是EDA技术的重要组成部分,VerilogHDL具有极强的描述能力,能支持系统行为级、寄存器传输级、逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述。ASIC是专用的系统集成电路而FPGA是特殊的ASIC芯片具有设计开发周期短、设计制造成本低、开发工具先进等优点。一、设计任务与要求(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式)(2)为了演示方便,应具有可调分钟、小时功能。(3)到点报时、闹钟时间固定为00:00(4)可调状态二、总体设计方案(1)方案一用数电制作一个数字钟,通过74L74芯片实现数码管计数功能用与非门结合,用按键来设置实现闹钟和整点报时的功能。(2)方案二用fpga来制作一个数字钟,通过编写程序来控制fpga芯片输出输入来得到数字钟的功能,同时用fpga板来实现该功能。(3)方案三用单片机来控制数字钟,通过编写程序来实现时钟计时功能,通过单片机试验箱来实现该功能,最终达到相应的结果。总结:方案一用数电的方式做数字钟,用的芯片多同时之制作麻烦,不适合制做数字钟。方案二制作比较便捷,只需要写程序,制作业是比较方便,也比较实现功能。方案三用单片机虽然也是编写程序,可是和FPGA相比我个人觉得还是比单片机好做一点。综合上述我选择FPGA来制作该程序三、程序设计方案
(1)分频模块实现方案
always@(posedgeclk)//定义clock上升沿触发begincount<=count+1'b1;if(count==26'd24000000)//0.5S到了吗?begincount<=25'd0;//计数器清零clk_1<=~clk_1;//置位秒标志endendalways@(posedgeclk)//产生一个0.1s的时钟begincounter<=counter+1'b1;if(counter==22'h2625a0)beginclk_01<=~clk_01;counter<=22'h0;endendalways@(posedgeclk)beginadd<=add+1'b1;if(add==20'h15000)beginclk_1k<=~clk_1k;endend(2)计时模块实现方案
always@(posedgeclk_1)beginif(!m)beginif(sec==8'h59)beginsec<=0;minclk<=1;endelsebeginif(sec[3:0]==4'b1001)beginsec[3:0]<=4'b0000;sec[7:4]<=sec[7:4]+4'b0001;endelsebeginsec[3:0]<=sec[3:0]+4'b0001;minclk<=0;endendendelsebeginsec<=sec;minclk<=minclk;endendassignmin_clk=minclk||tm_accum;always@(posedgemin_clk)beginif(!m)beginif(min==8'h59)beginhclk<=1'b1;min<=0;endelseif(min[3:0]==4'b1001)beginmin[7:4]<=min[7:4]+4'b0001;min[3:0]<=4'b0000;endelsemin[3:0]<=min[3:0]+4'b0001;endelseif(min==8'h59)beginmin<=0;hclk<=0;endelseif(min[3:0]==4'b1001)beginmin[7:4]<=min[7:4]+4'b0001;min[3:0]<=4'b0000;endelsemin[3:0]<=min[3:0]+4'b0001;endassignh_clk=hclk||th_accum;always@(posedgeh_clk)beginif(hour==8'h23)hour<=0;elseif(hour[3:0]==4'b1001beginhour[3:0]<=0;hour[7:4]<=hour[7:4]+4'b0001;endelsehour[3:0]<=hour[3:0]+4'b0001;endalways@(posedgeam_accum)beginif(a_min==8'h59)a_min<=0;elseif(a_min[3:0]==4'b1001)begina_min[3:0]<=4'b0000;a_min[7:4]<=a_min[7:4]+4'b0001;endelsea_min[3:0]=a_min[3:0]+4'b0001;end(5)方案总结:采用这个方案来实现设计。在思路方面较为通俗易懂,且判断过程简短明了,在最终的显示时出现毛刺干扰现象,其他方案中不便于增加小时和分钟的调节信号,我们上课时学的也是这个方案用起来也比较熟悉。综合考虑,使用此方案。四、系统软件原理1软件部分有分频模块,按键防抖动,时钟主体,闹铃模块,动态扫描模块等来实现此方案。软件原理框图3-1图3-1使用此方案首先进行分频得到一个信号,使得信号稳定。进而促使始终主体工作。再通过按键防抖来控制调时和闹钟模块最后用动态扫描来实现软件的所有功能。1)主程序入口即变量定义该程序共有两个输入:Clk为1024Hz主时钟信号输入,accum实现调时间功能时的加1操作;mode设置为正常显示状态或者为闹铃状态;voice设置是闹铃还是静铃状态。set设置校时、校分。2)显示模块l_alert,l_hour,l_min,l_al_set指示信号,l_alert指示为闹铃/静铃状态,l_hour,指示校时,l_min校分,alert,为蜂鸣器,led为八段共阴数码管,显示时、分、秒,l_al_set指示是在设置闹钟的时、分。五、系统硬件原理VerilogHDL的多功能数字钟的设计方案是设计一个具有计时、报时和显示这三部分的主要功能。系统原理框图如图4-1所示。其中计时功能是整个多功能数字钟的核心部分;报时——顾名思义,也就是在时钟到达整点时的鸣叫功能;显示起到了一个译码功能,使得程序在实验箱上下载时我们能清晰、明了的整个运行过程。这三部分相结合,就基本完成了这样的一个多功能数字钟。 图4-1数字钟原理框图原理框图功能如下: ①首先输入电源然后进入FPGA芯片,来实现最基本的数字钟计时电路,其计数输出送7段译码电路,由数码管显示。 ②PPGA芯片工作使得基准频率分频器可分频出标准的1hz频率信号,用于秒计数的时钟信号;分频出频率信号用于校时、校分的快速递增信号;分频出频率信号用于对于按动校时、校分按键的消除抖动。 ③然后用按键控制电路模块首先是一个校时、校分、秒清零的模式控制模块,再者是设置闹铃/静铃的控制模块,频率信号用于键的消除抖动。而模块的输出则是一个边沿整齐的输出信号。④控制电路模块是一个校时、校分、秒清零的模式控制模块,64Hz频率信号用于键mode,set,voice,accum,的消除抖动。而模块的输出则是一个边沿整齐的输出信号。⑤报时电路模块需要通过一个组合电路完成,前五声讯响功能报时电路还需用一个触发器来保证整点报时时间为1秒。 ⑥闹时电路模块也需要音频信号以及来自秒计数器、分计数器和时计数器的输出信号作本电路的输入信号。心得体会 这次的课程设计结束了,在这次的设计中我学会了很多东西。首先是对VerilogHDL语言的设计思想有了深入理解,将这种自顶向下的设计理念运用于实践中,设计多功能数字钟,突出了VerilogHDL作为硬件描述语言的良好可读性和可移植性,对上学期所学的而理论知识有了深刻的理解。 其次是对VerilogHDL语言的语法熟悉,在这次的课程设计中,我学习到很多VerilogHDL语言的语法知识,比如在两个不同的语句块中不能对同一个变量进行操作,比如在用VerilogHDL语言中编写程序时要注意begin和end语句的匹配问题,在使用VerilogHDL语言时不可以使用中文注释等等。对于这种语言的学习也有了很大的帮助。再则在学习中知道了VerilogHDL语言与C语言的许多区别,比如数据类型的区别,比如执行顺序的区别,比如赋值语句的区别,两种语言的学习都会是不同方式,让我们更多的加深了我们编写程序的基础。是在确定方案以及在不断修改程序过程中,组员与组员之间的沟通交流,以及分工,让我们之间的语言表达能力以及团队合作能力大大的加强。致谢首先要感谢我的老师谭刚林,老师知识渊博,治学认真而严谨,感谢您从本文研究开始一路指导至本论文的完成,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”的豁然开朗!由衷感谢您在论文上倾注的大量心血,您宽厚待人的学者风范令我无比感动。感谢授课老师课上对我们的教导,你们丰富的授课内容拓宽了我的视野,让我能更顺利的完成这篇文章;感谢我的同学们,你们不仅让我感受到友情的力量,也让我感觉到了生活的愉悦,通过课堂讨论学到的思维方式使我受益终生。最后,我要向我的家人表示深深的谢意。你们的理解、支持、鼓励和鞭策催我更加上进,我竭尽全力的努力,更希望的是能够让你们高兴和满意。你们的情感永远都是我上进的不竭的动力源泉。这些时光会慢慢的沉淀下来,但无论何时,我想到这段岁月,都如同是看到一枚珍藏已久的夹在书里发黄的书签,永远都是那么璀璨、那么绚烂。参考文献【1】夏宇闻.Verilog数字系统设计教程[第二版].北京航空航天大学出版社,【2】康华光等.电子技术基础(数字部分)[第五版]高等教育出版社,【3】罗朝霞等.CPLD/FPGA设计及应用.北京人民邮电出版社,【4】亿特科技编著.CPLD/FPGA应用系统设计与产品开发.北京人民邮电出版社。【5】付文红.花汉兵着.EDA技术与实验.机械工业出版社【6】崔建明.电工电子EDA仿真技术。 北京高等教育出版社【7】侯伯亨.VerilogHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学出版附录//Mode,set,voice,accum分别是四个按键对模式选择,//时钟与分钟转换,闹铃/静音,加1操作//l_alert,l_hour,l_min,l_al_set指示信号moduleshizhong(clk,mode,set,voice,accum,seg_r,dig_r,l_alert,l_hour,l_min,l_al_set,alert,led);inputclk;inputmode,set,voice,accum;output[7:0]led;outputl_alert,l_hour,l_min,l_al_set,alert;output[7:0]seg_r,dig_r;reg[3:0]disp_dat;reg[7:0]led;regl_hour,l_min,alert;reg[7:0]seg_r,dig_r;reg[7:0]a_hour,a_min;reg[25:0]count;reg[7:0]hour,min,sec;regalert_temp1,alert_temp2;regclk_1,clk_01,clk_1k;reg[21:0]counter;reg[19:0]add;regminclk,hclk;reg[1:0]m,mh;regth_accum,tm_accum,ah_accum,am_accum;wirel_alert,l_al_set;//产生一个周期为1s的时钟信号always@(posedgeclk)//定义clock上升沿触发begincount<=count+1'b1;if(count==26'd24000000)//0.5S到了吗?begincount<=25'd0;//计数器清零clk_1<=~clk_1;//置位秒标志endendalways@(posedgeclk)//产生一个0.1s的时钟begincounter<=counter+1'b1;if(counter==22'h2625a0)beginclk_01<=~clk_01;counter<=22'h0;endendalways@(posedgeclk)beginadd<=add+1'b1;if(add==20'h15000)beginclk_1k<=~clk_1k;endendalways@(posedgea)beginif(m==2'b10)m<=2'b00;elsem<=m+1'b1;end//mh=1对分钟进行设置,mh=0对小时进行设置always@(posedgeb)mh<=~mh;always@(mormhora)begincase(m)2'b01:beginif(mh)begintm_accum<=d;{l_min,l_hour}<=2'b10;endelsebeginth_accum<=d;{l_min,l_hour}<=2'b01;end{am_accum,ah_accum}<=2'b00;end2'b10:beginif(mh)beginam_accum<=d;{l_min,l_hour}<=2'b10;endelsebeginah_accum<=d;{l_min,l_hour}<=2'b01;end{tm_accum,th_accum}<=2'b00;enddefault:{am_accum,ah_accum,tm_accum,th_accum,l_min,l_hour}<=6'b00000;endcaseend//m=0即属于正常计时模式always@(posedgeclk_1)beginif(!m)beginif(sec==8'h59)beginsec<=0;minclk<=1;endelsebeginif(sec[3:0]==4'b1001)beginsec[3:0]<=4'b0000;sec[7:4]<=sec[7:4]+4'b0001;endelsebeginsec[3:0]<=sec[3:0]+4'b0001;minclk<=0;endendendelsebeginsec<=sec;minclk<=minclk;endendassignmin_clk=minclk||tm_accum;always@(posedgemin_clk)beginif(!m)beginif(min==8'h59)beginhclk<=1'b1;min<=0;endelseif(min[3:0]==4'b1001)beginmin[7:4]<=min[7:4]+4'b0001;min[3:0]<=4'b0000;endelsemin[3:0]<=min[3:0]+4'b0001;endelseif(min==8'h59)beginmin<=0;hclk<=0;endelseif(min[3:0]==4'b1001)beginmin[7:4]<=min[7:4]+4'b0001;min[3:0]<=4'b0000;endelsemin[3:0]<=min[3:0]+4'b0001;endassignh_clk=hclk||th_accum;always@(posedgeh_clk)beginif(hour==8'h23)hour<=0;elseif(hour[3:0]==4'b1001beginhour[3:0]<=0;hour[7:4]<=hour[7:4]+4'b0001;endelsehour[3:0]<=hour[3:0]+4'b0001;endalways@(posedgeam_accum)beginif(a_min==8'h59)a_min<=0;elseif(a_min[3:0]==4'b1001)begina_min[3:0]<=4'b0000;a_min[7:4]<=a_min[7:4]+4'b0001;endelsea_min[3:0]=a_min[3:0]+4'b0001;end//闹钟设置功能下的时钟计数模块always@(posedgeah_accum)beginif(a_hour==8'h23)a_hour<=0;elseif(a_hour[3:0]==4'b1001)begina_hour[3:0]<=0;a_hour[7:4]<=a_hour[7:4]+4'b0001;endelsea_hour[3:0]<=a_hour[3:0]+4'b0001;end//每按一次voice键,时钟在闹铃/静铃之间转换always@(posedgec)alert_temp2<=~alert_temp2;//当时钟的计数结果与闹铃设置一致时,产生闹铃信号alwaysbeginif((min==a_min)&&(hour==a_hour)&&(alert_temp2))//闹铃持续五秒case(sec)8'h00,8'h01,8'h02,8'h03,8'h04:alert<=clk_1k;default:alert<=1'b1;endcaseelsealert<=1'b1;endassignl_alert=alert_temp2;//指示是否处于闹铃模式assignl_al_set=(m==2'b10)?1:0;//指示是否处于闹铃设置模式//assignalert=alert_temp1&&alert_temp2;//发出闹铃信号always@(posedgeclk)beginif(m==2'b00)//count[17:15]大约1ms改变一次begincase(count[17:15])//选择扫描显示数据3'd0:disp_dat=sec[3:0];//秒个位3'd1:disp_dat=sec[7:4];//秒十位3'd2:disp_dat=4'ha;//显示"-"3'd3:disp_dat=min[3:0];//分个位3'd4:disp_dat=min[7:4];//分十位3'd5:disp_dat=4'ha;//显示"-"3'd6:disp_dat=hour[3:0];//时个位3'd7:disp_dat=hour[7:4];//时十位Endcaseendelseif(m==2'b01)begincase(count[17:15])//选择扫描显示数据3'd0:disp_dat=4'b0000;//秒个位3'd1:disp_dat=4'b0000;//秒十位3'd2:disp_dat=4'ha;//显示"-"3'd3:disp_dat=min[3:0];//分个位3'd4:disp_dat=min[7:4];//分十位3'd5:disp_dat=4'ha;//显示"-"3'd6:disp_dat=hour[3:0];//时个位3'd7:disp_dat=hour[7:4];//时十位endcasendelseif(m==2'b10)begincase(count[17:15])//选择扫描显示数据3'd0:disp_dat=4'b0000;//秒个位3'd1:disp_dat=4'b0000;//秒十位3'd2:disp_dat=4'ha;//显示"-"3'd3:disp_dat=a_min[3:0];//分个位3'd4:disp_dat=a_min[7:4];//分十位3'd5:disp_dat=4'ha;//显示"-"3'd6:disp_dat=a_hour[3:0];//时个位3'd7:disp_dat=a_hour[7:4];//时十位endcaseendcase(count[17:15])//选择数码管显示位3'd0:dig_r=8'b11111110;//选择第一个数码管显示3'd1:dig_r=8'b11111101;//选择第二个数码管显示3'd2:dig_r=8'b11111011;//选择第三个数码管显示3'd3:dig_r=8'b11110111;//选择第四个数码管显示3'd4:dig_r=8'b11101111;//选择第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物联网设备安全机制研究-深度研究
- 聚脲材料环保性能研究-深度研究
- 浙江工商职业技术学院《国际贸易实证方法》2023-2024学年第二学期期末试卷
- 宁夏大学新华学院《工程分析程序设计》2023-2024学年第二学期期末试卷
- 湖北中医药大学《电子商务案例》2023-2024学年第二学期期末试卷
- 南通科技职业学院《医学细胞生物学与遗传学》2023-2024学年第二学期期末试卷
- 成都工贸职业技术学院《供配电系统课程设计》2023-2024学年第二学期期末试卷
- 黑龙江职业学院《现代电气控制技术》2023-2024学年第二学期期末试卷
- 湖南有色金属职业技术学院《工程制图B》2023-2024学年第二学期期末试卷
- 河南开封科技传媒学院《建筑制图与阴影透视》2023-2024学年第二学期期末试卷
- 2025年上半年潜江市城市建设发展集团招聘工作人员【52人】易考易错模拟试题(共500题)试卷后附参考答案
- 旋转类机电设备故障预测、诊断研究
- 旅游电子商务(第2版) 课件全套 周春林 项目1-8 电子商务概述-旅游电子商务数据挖掘
- 新媒体营销(第三版) 课件全套 林海 项目1-6 新媒体营销认知-新媒体营销数据分析
- 愚公移山英文 -中国故事英文版课件
- 公园绿化养护景观绿化维护项目迎接重大节会活动的保障措施
- 国内外旅游公共服务研究的文献综述
- 集团公司各职能部管控分权手册
- 机车电测仪表使用及检修
- PMS颜色对照表
- 2012年北京大学医学部外国留学生本科入学考试
评论
0/150
提交评论