资源描述:
《FPGA数字秒表的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、此文档收集于网络,如有侵权,请联系网站删除学院FPGA设计实践报告题目:数字秒表的设计院系:计算机与信息工程学院专业:电子科学与技术年级姓名:学号:指导老师:一、课程设计目的:本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础。二、课程设计要求:l.设计用于体育比赛用的数字秒表,要求:此文档仅供学习与交流此文档收集于网络,如
2、有侵权,请联系网站删除 ⑴计时精度应大于l/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟脉冲频率应大于l00Hz,这里选用1kHz。 ⑵计时器的最长计时时间为l小时,为此需要一个6位的显示器,显示的最长时间为59分59.99秒。 2.设置有复位和起/停开关 ⑴复位开关用来使计时器清零,并作好计时准备。 ⑵起/停开关的使用方法与传统的机械式计时器相同,即按一下起/停开关,启动计时器开始计时,再按一下起/停开关计时终止。 ⑶复位开关可以在任何情况下使用, 即使在计时过程中,只要按一下
3、复位开关,计时进程立刻终止,并对计时器清零。 3.复位和起/停开关应有内部消抖处理。 4.采用VHDL语言用层次化设计方法设计符合上述功能要求的数字秒表。 5.对电路进行功能仿真,通过有关波形确认电路设计是否正确。 6.完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。三、系统组成与工作原理:数字秒表框图:1、电路原理图:2、工作原理: l.计时控制器作用是控制计时。计时控制器的输入信号是启动、暂停和清零。为符合惯例,将启动和暂停功能设置在同一个按键上,按一次是启动,此文档仅供学习与交流此文档收集于网络
4、,如有侵权,请联系网站删除按第二次是暂停,按第三次是继续。所以计时控制器共有2个开关输入信号,即启动/暂停和清除。计时控制器输出信号为计数允许/保持信号和清零信号。 2.计时电路的作用是计时,其输入信号为lkHz时钟、计数允许/保持和清零信号,输出为l0ms、l00ms、s和min的计时数据。 3.时基分频器是一个l0分频器,产生l0ms周期的脉冲,用于计时电路时钟信号。4.显示电路为动态扫描电路,用以显示十分位、min、10s、s、100ms和10ms信号。三、系统设计的实现:要满足数字秒表的精度,首先应该
5、获得精确的计时基准信号,这里的系统精度要求为l/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟脉冲频率应大于l00Hz,这里选用1kHz,因此每来1000个外界输入脉冲就输出一个频率,该频率的时间周期正好为0.01S,即先将外界脉冲进行1MHz→100Hz的分频。0.1s、1s、1min等计时单位之间的进位转换可以通过十进制与六进制计数器来实现。每位计数器均能输出相应计时单位计数结果,其中十进制计数器可以实现0.01s、0.1s、1s和1min单位单元的计数;六进制可以实现10s、10min
6、为单位的计数。由于秒表需要具有异步清零和启动/暂停功能,因此可以将每个计数器都设置异步清零和启动/暂停输入端口,再将各计数器进行级联,即可同步显示不同量度单位的计时内容,如图所示图中,U0模块用于将外界脉冲进行1MHz→100Hz的分频,从而得到0.01s的脉冲信号,U1用于实现0.1s的脉冲信号,U2用于实现1s的脉冲信号,U3和U4用于实现1min的脉冲信号,U5和U6用于实现1H的脉冲信号。除U0外,U1~U6的CQ可驱动显示带译码器的七段LED进行数字显示。通过上述分析可知,数字秒表的构成实际上依赖于三个
7、基本模块,即1MHz→100Hz的分频模块、十进制计数器模块和六进制计数器模块,然后使用一个顶层模块将这些基本模块通过元件调用与映射的关系进行有机的结合。Start程序初始化CLK、CLR、ENA计时显示结果总体流程图如下:此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除1、顶层模块程序由于十进制计数器模块和六进制计数器模块会产生计数溢出信号,而这些溢出信号有可能作为下一计数器的时钟输入脉冲,因此在顶层模块程序结构体中需要定义相应的暂存计数溢出信号。顶层模块程序编写如下:--数字秒表的顶层模块程序m
8、iaobiao.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmiaobiaoISPORT(CLR:INSTD_LOGIC;--定义清零输入端CLK:INSTD_LOGIC;--定义外界时钟脉冲输入端ENA:INSTD_LOGIC;--定义启动/暂停输入端DOUT:OUTSTD_LOGIC_VECTOR(23DOWNTO0