2021年基于FPGA的数字跑表新编修订

上传人:1363****974 文档编号:171663114 上传时间:2021-03-06 格式:DOC 页数:10 大小:64.13KB
返回 下载 相关 举报
2021年基于FPGA的数字跑表新编修订_第1页
第1页 / 共10页
2021年基于FPGA的数字跑表新编修订_第2页
第2页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《2021年基于FPGA的数字跑表新编修订》由会员分享,可在线阅读,更多相关《2021年基于FPGA的数字跑表新编修订(10页珍藏版)》请在金锄头文库上搜索。

1、不问收获,但问耕耘,把最好的资料送给最好的自己!基于FPGA的数字跑表姓名:XXX时间:20XX年X月X日基于FPGA的数字跑表学院:物电学院 姓名:学号: 班级:班 日期:20XX年X月X日目录一、实例的主要内容 3 二、实验目标: 4 1初步掌握Verilog HDL语言的设计方法 4 2、完成一个数字跑表的设计。 4 三、实验原理: 4 四、程序代码及分析 5 五、实验步骤 9 5.1新建一个文件夹, 9 5.2创建工程 10 5.3 编译、运行程序 13 5.4导入波形 14 5.5显示波形 17 5.6波形运行后结果 18 5.7引脚分配 20 5.8引脚分配完成图 21 六、设计心

2、得 22 七、参考文献 22 一、实验的主要内容 通过对Verilog HDL语言的编写一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时以内精确至百分之一秒的计时器。 数字跑表的显示可以通过编写数码管显示程序来实现, 实现了计数及进位的设计,通过几个always模块的设计实现一个特定用途的模块-数字跑表。 二、实验目标: 1初步掌握Verilog HDL语言的设计方法 2、完成一个数字跑表的设计。 三、实验原理: 本字跑表首先要从最低位的百分秒计数器开始,按照系统时钟进行计数。计数至100后向秒计数器仅为,秒计数器一百分秒计数器的进位位为时钟进行计数。计数至60后向分计数器进位,

3、分计数器以秒计数器的进位位为时钟进行计数。 数字跑表巧妙地运用进位位作为时钟来 减少计数的位数。如果统一使用系统时钟作为计数时钟,那秒计数器将是一个6000进制的计数器,额分计数器将是一个3600000进制的计数器。这将极大的浪费FPGA的逻辑资源。而使用进位位作为计数时钟,只需要一个100进制的计数器和两个60进制的计数器。 在实际的设计中,为了是计数器更加简单,计数器使用高低位两个计时器来实现。100进制计数器分别是最高位10进制计数器,地位10进制计数器,60进制计数器分别是高6进制计数器,低位10进制计数器。这样整个数字跑表使用6个计数器来实现。 同时由于10进制计数器重复使用了5次,

4、可以使用独立的模块实现十进制计数器,这样就可以通过模块复用来节省整个模块使用的资源。 数字跑表提供了清零为CLR和暂停位PAUSE,百分秒的时钟信号可以通过系统时钟分频提供。分频至1/100s,即可实现真实的时间计数。详细的时钟分频设计渎职可以参考相关的资料实现。 代码中端口信号的定义: CLK:时钟信号 CLR:异步复位信号 PAUSE:暂停信号 MSH、MSL:百分秒的高位和低位 SH、SL:秒信号的高位和低位 MH、ML:分钟信号的高位和低位如图是本实例的数字跑表模块图。四、程序代码及分析 module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML)

5、; /端口说明 input CLK,CLR; input PAUSE; output 3:0 MSH,MSL,SH,SL,MH,ML; /内部信号说明 reg 3:0 MSH,MSL,SH,SL,MH,ML; reg cn1,cn2; /cn1为百分秒向秒的进位,cn2为秒向分的进位 /百分秒技术模块,每计满100,cn1产生一个进位 always (posedge CLK or posedge CLR) begin if(CLR) begin/异步进位MSH,MSL<=8h00;cn1<=0;end else if(!PAUSE) begin /PAUSE为0时正常计数,为1时暂

6、停计数if(MSL=9) beginMSL<=0; /低位计数至10时,低位归零if(MSH=9) begin MSH<=0;/低、高位计数至10时,高位归零cn1<=1;/低、高位计数至10时,触发进位位endelse /低位计数至10,高位技术为止10时,高位计数MSH<=MSH+1; end else beginMSL<=MSL+1; /低位计数未至10时,低位计数 cn1<=0;/低位计数未至10时,触发进位位 endendend/秒计数模块,每计满60,cn2产生一个进位 always (posedge CLK or posedge CLR) be

7、ginif(CLR) begin/异步复位SH,SL<=8h00;cn2<=0;end else if(SL=9) beginSL<=0;/低位计数至10时,低位归零 if(SH=5) begin SH<=0;/低位计数至10时,高位计数至6位,高位归零 cn2<=1;/低位计数至10时,高位计数至6位,触发进位位 end else SH<=SH+1;/低位计数至10时,高位计数未至6时,高位计数 end else beginSL<=SL+1;/低位计数至10时,低位计数cn2<=0;/低位计数至10时,不触发进位位 endend /分钟计数模块

8、,每计满60,系统自动清零 always (posedge cn2 or posedge CLR) beginif(CLR) begin/异步复位MH,ML<=8h00;endelse if(ML=9) begin ML<=0;/低位计数至10时,低位归零 if(MH=5)MH<=0;/低位计数至10,高位计数至6时,高位归零 elseMH<=MH+1;/低位计数至10时,高位计数未至6时,高位计数endelse ML<=ML+1;/低位计数未至10时,低位计数 end endmodule 五、实验步骤 5.1新建一个文件夹, 1.后面产生的工程和原程序都保存在这

9、个文件夹中 5.2创建工程 2.打开Quartus II软件,在file菜单里选择new可新建一个工程 选择合适的语言 3、保存 指定工程存放的目录、工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,单击Next按钮。 4、将程序输入5.3 编译、运行程序 1.单击processing>start comilation,运行程序2.若没有错进行下一步 创建波形文件,单击File>other files>vector waveform file, 5.4导入波形 1.右击>node finder>list,把元器件添加进去 5

10、.5显示波形 1.波型图如下: 2.更改类型 5.6波形运行后结果 1.如下所示:2、保存 3、运行后的波形图5.7引脚分配 (1)单击assignments>timing analysis setting进行引脚分配(2)直接导入引脚分配,单击assignments>import assignments 5.8引脚分配完成图 完成引脚分配六、设计心得 本次试验设计经过了四个阶段的程序设计,第一阶段是了解数字电子跑表的工作方式及其原理,确定设计的方向与方法以及确定设计过程中发需要的软件及工具。第二阶段是熟悉用Quartus软件编写Verilog HDL语言的方法,这一阶段侧重于对V

11、erilog HDL语言的基本掌握,在这一阶段中因为对Verilog HDL语言不太熟悉,所以显得相对笨拙,进展也会相对缓慢。第三阶段是进行硬件的设计,在这个过程中,对软硬件结合出现的问题做了大量的工作,得到了比较理想的效果。总体上,笨设计已近达到了预期的效果,在软件上做了相关的功能仿真和时序仿真,也实现了再硬件上的测试,虽然离工程上的运行还比较远,但作为实验研究课题及达到了要求。 在这一次课程设计过程中,我很是受益匪浅,不仅对自己在大三所学的只是进行了回顾,并积累了宝贵的经验和培养了自己额动手能力和运用所学知识解决实际问题的能力。通过这次实验,我们知道了理论和实际的距离,也知道了理论和实际想

12、结合的重要性。从中得到了很多书上没有的知识。自己今后将会更加努力地把理论知识和实际应用结合起来,提高自己的能力。 七、参考文献 1、黄焱 FPGA应用开发入门与经典实例,人民邮电出版社出版,20XX年7月 2、侯建军 郭勇SOPC技术基础教程 清华大学出版社 北京交通大学出版社 20XX年5月 3、黄智伟 FPGA系统设计与实践 电子工业出版社 20XX年9月 跑表 数字 FPGA 没有谁的幸运凭空而来,只有当你足够努力,你才会足够幸运。这世界不会辜负每一份努力和坚持,时光不会怠慢执着而勇敢的每一个人!一粒尘埃,在空气中凝聚,最后生成磅礴的风雨;一粒沙石,在蚌体内打磨,最后结成昂贵的珍珠。有时候,渺小的开始,可以成就雄伟而宏大的事业;有时候,平凡的开始,可以走出崇高而伟大的人生! -致每个在奋斗努力的人

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号