基于PFGA的数字跑表.doc

上传人:laozhun 文档编号:3028231 上传时间:2023-03-09 格式:DOC 页数:20 大小:1.11MB
返回 下载 相关 举报
基于PFGA的数字跑表.doc_第1页
第1页 / 共20页
基于PFGA的数字跑表.doc_第2页
第2页 / 共20页
基于PFGA的数字跑表.doc_第3页
第3页 / 共20页
基于PFGA的数字跑表.doc_第4页
第4页 / 共20页
基于PFGA的数字跑表.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《基于PFGA的数字跑表.doc》由会员分享,可在线阅读,更多相关《基于PFGA的数字跑表.doc(20页珍藏版)》请在三一办公上搜索。

1、基于FPGA的数字跑表学院:物电学院姓名:学号:08417612班级:08(27)班日期:2011年6月28日目录一、实例的主要内容3二、实验目标:41初步掌握Verilog HDL语言的设计方法42、完成一个数字跑表的设计。4三、实验原理:4四、程序代码及分析5五、实验步骤95.1新建一个文件夹,95.2创建工程105.3 编译、运行程序135.4导入波形145.5显示波形175.6波形运行后结果185.7引脚分配205.8引脚分配完成图21六、设计心得22七、参考文献22一、实验的主要内容通过对Verilog HDL语言的编写一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时以

2、内精确至百分之一秒的计时器。数字跑表的显示可以通过编写数码管显示程序来实现,实现了计数及进位的设计,通过几个always模块的设计实现一个特定用途的模块-数字跑表。二、实验目标:1初步掌握Verilog HDL语言的设计方法2、完成一个数字跑表的设计。三、实验原理:本字跑表首先要从最低位的百分秒计数器开始,按照系统时钟进行计数。计数至100后向秒计数器仅为,秒计数器一百分秒计数器的进位位为时钟进行计数。计数至60后向分计数器进位,分计数器以秒计数器的进位位为时钟进行计数。数字跑表巧妙地运用进位位作为时钟来 减少计数的位数。如果统一使用系统时钟作为计数时钟,那秒计数器将是一个6000进制的计数器

3、,额分计数器将是一个3600000进制的计数器。这将极大的浪费FPGA的逻辑资源。而使用进位位作为计数时钟,只需要一个100进制的计数器和两个60进制的计数器。在实际的设计中,为了是计数器更加简单,计数器使用高低位两个计时器来实现。100进制计数器分别是最高位10进制计数器,地位10进制计数器,60进制计数器分别是高6进制计数器,低位10进制计数器。这样整个数字跑表使用6个计数器来实现。同时由于10进制计数器重复使用了5次,可以使用独立的模块实现十进制计数器,这样就可以通过模块复用来节省整个模块使用的资源。数字跑表提供了清零为CLR和暂停位PAUSE,百分秒的时钟信号可以通过系统时钟分频提供。

4、分频至1/100s,即可实现真实的时间计数。详细的时钟分频设计渎职可以参考相关的资料实现。代码中端口信号的定义:CLK:时钟信号CLR:异步复位信号PAUSE:暂停信号MSH、MSL:百分秒的高位和低位SH、SL:秒信号的高位和低位MH、ML:分钟信号的高位和低位如图是本实例的数字跑表模块图。四、程序代码及分析module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML);/端口说明input CLK,CLR;input PAUSE;output 3:0 MSH,MSL,SH,SL,MH,ML;/内部信号说明reg 3:0 MSH,MSL,SH,SL,MH,

5、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时暂停计数 if(MSL=9) beginMSL=0;/低位计数至10时,低位归零if(MSH=9) beginMSH=0;/低、高位计数至10时,高位归零cn1=1;/低、高位计数至10时,触发进位位endelse/低位计数至1

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

7、至6位,触发进位位endelse SH=SH+1;/低位计数至10时,高位计数未至6时,高位计数endelse beginSL=SL+1;/低位计数至10时,低位计数cn2=0;/低位计数至10时,不触发进位位endend/分钟计数模块,每计满60,系统自动清零always (posedge cn2 or posedge CLR) beginif(CLR) begin/异步复位MH,ML=8h00;endelse if(ML=9) beginML=0;/低位计数至10时,低位归零if(MH=5)MH=0;/低位计数至10,高位计数至6时,高位归零elseMH=MH+1;/低位计数至10时,高位

8、计数未至6时,高位计数endelseMLstart comilation,运行程序2.若没有错进行下一步创建波形文件,单击Fileother filesvector waveform file,5.4导入波形1.右击node finderlist,把元器件添加进去5.5显示波形1.波型图如下:2.更改类型5.6波形运行后结果1.如下所示:2、保存3、运行后的波形图5.7引脚分配(1)单击assignmentstiming analysis setting进行引脚分配(2)直接导入引脚分配,单击assignmentsimport assignments5.8引脚分配完成图完成引脚分配六、设计心得

9、本次试验设计经过了四个阶段的程序设计,第一阶段是了解数字电子跑表的工作方式及其原理,确定设计的方向与方法以及确定设计过程中发需要的软件及工具。第二阶段是熟悉用Quartus软件编写Verilog HDL语言的方法,这一阶段侧重于对Verilog HDL语言的基本掌握,在这一阶段中因为对Verilog HDL语言不太熟悉,所以显得相对笨拙,进展也会相对缓慢。第三阶段是进行硬件的设计,在这个过程中,对软硬件结合出现的问题做了大量的工作,得到了比较理想的效果。总体上,笨设计已近达到了预期的效果,在软件上做了相关的功能仿真和时序仿真,也实现了再硬件上的测试,虽然离工程上的运行还比较远,但作为实验研究课题及达到了要求。在这一次课程设计过程中,我很是受益匪浅,不仅对自己在大三所学的只是进行了回顾,并积累了宝贵的经验和培养了自己额动手能力和运用所学知识解决实际问题的能力。通过这次实验,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性。从中得到了很多书上没有的知识。自己今后将会更加努力地把理论知识和实际应用结合起来,提高自己的能力。七、参考文献1、黄焱 FPGA应用开发入门与经典实例,人民邮电出版社出版,2008年7月2、侯建军 郭勇SOPC技术基础教程 清华大学出版社 北京交通大学出版社 2008年5月3、黄智伟 FPGA系统设计与实践 电子工业出版社 2005年9月

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号