FPGA 数字秒表的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院
FPGA设计实践报告
题目:数字秒表的设计
院系:计算机与信息工程学院
专业:电子科学与技术年级
姓名:学号:
指导老师:
一、课程设计目的:
本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础。
二、课程设计要求:
l. 设计用于体育比赛用的数字秒表, 要求:
⑴计时精度应大于l/100S, 计时器能显示1/100S的时间, 提供给计时器内部定时的时钟脉冲频率应大于l00Hz, 这里选用1kHz 。
⑵计时器的最长计时时间为l小时, 为此需要一个6位的显示器, 显示的最长时间为59分59.99秒。
2. 设置有复位和起/停开关
⑴复位开关用来使计时器清零, 并作好计时准备。
⑵起/停开关的使用方法与传统的机械式计时器相同, 即按一下起/停开关, 启动计时器开始计时, 再按一下起/停开关计时终止。
⑶复位开关可以在任何情况下使用,即使在计时过程中, 只要按一下复位开关, 计时进程立刻终止, 并对计时器清零。
3. 复位和起/停开关应有内部消抖处理。
4. 采用VHDL语言用层次化设计方法设计符合上述功能要求的数字秒表。
5. 对电路进行功能仿真, 通过有关波形确认电路设计是否正确。
6. 完成电路全部设计后, 通过系统实验箱下载验证设计课题的正确性。
三、系统组成与工作原理:
数字秒表框图:
1、电路原理图 :
2、工作原理:
l.计时控制器作用是控制计时。计时控制器的输入信号是启动、暂停和清零。为符合惯例, 将启动和暂停功能设置在同一个按键上, 按一次是启动, 按第二次
是暂停, 按第三次是继续。所以计时控制器共有2个开关输入信号, 即启动/暂停和清除。计时控制器输出信号为计数允许/保持信号和清零信号。
2. 计时电路的作用是计时, 其输入信号为lkHz 时钟、计数允许/保持和清零信号, 输出为l0ms、l00ms、s 和min 的计时数据。
3. 时基分频器是一个l0分频器, 产生l0ms周期的脉冲, 用于计时电路时钟信号。
4. 显示电路为动态扫描电路, 用以显示十分位、min、10s、s、100ms 和10ms 信号。
三、系统设计的实现:
要满足数字秒表的精度,首先应该获得精确的计时基准信号,这里的系统精度要求为l/100S, 计时器能显示1/100S的时间, 提供给计时器内部定时的时钟脉冲频率应大于l00Hz, 这里选用1kHz,因此每来1000个外界输入脉冲就输出一个频率,该频率的时间周期正好为0.01S,即先将外界脉冲进行1MHz→100Hz 的分频。
0.1s、1s、1min等计时单位之间的进位转换可以通过十进制与六进制计数器来实现。每位计数器均能输出相应计时单位计数结果,其中十进制计数器可以实现0.01s、0.1s、1s和1min单位单元的计数;六进制可以实现10s、10min为单位的计数。由于秒表需要具有异步清零和启动/暂停功能,因此可以将每个计数器都设置异步清零和启动/暂停输入端口,再将各计数器进行级联,即可同步显示不同量度单位的计时内容,如图所示
图中,U0模块用于将外界脉冲进行1MHz→100Hz的分频,从而得到0.01s 的脉冲信号,U1用于实现0.1s的脉冲信号,U2用于实现1s的脉冲信号,U3和U4用于实现1min的脉冲信号,U5和U6用于实现1H的脉冲信号。除U0外,U1~U6的CQ可驱动显示带译码器的七段LED进行数字显示。
通过上述分析可知,数字秒表的构成实际上依赖于三个基本模块,即1MHz →100Hz的分频模块、十进制计数器模块和六进制计数器模块,然后使用一个顶层模块将这些基本模块通过元件调用与映射的关系进行有机的结合。
总体流程图如下:
Start
程序初始化
1、顶层模块程序
由于十进制计数器模块和六进制计数器模块会产生计数溢出信号,而这些溢出信号有可能作为下一计数器的时钟输入脉冲,因此在顶层模块程序结构体中需要定义相应的暂存计数溢出信号。顶层模块程序编写如下:
--数字秒表的顶层模块程序miaobiao.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY miaobiao IS
PORT(CLR:IN STD_LOGIC; --定义清零输入端
CLK:IN STD_LOGIC; --定义外界时钟脉冲输入端
ENA:IN STD_LOGIC; --定义启动/暂停输入端
DOUT:OUT STD_LOGIC_VECTOR(23 DOWNTO 0)); --定义秒表显示输出端
END miaobiao;
ARCHITECTURE ART OF miaobiao IS
COMPONENT CLKGEN --定义3MHz到100Hz的分频计数器元件
PORT(CLK:IN STD_LOGIC; --定义3MHz到100Hz的分频计数器所使用的端口
NEWCLK:OUT STD_LOGIC);
END COMPONENT;
COMPONENT CNT10 --定义十进制计数器元件
PORT(CLK,CLR,ENA:IN STD_LOGIC; --定义十进制计数器所使用的端口 CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CARRY_OUT:OUT STD_LOGIC);
END COMPONENT;
COMPONENT CNT6 --定义六进制计数器元件
PORT(CLK,CLR,ENA:IN STD_LOGIC; --定义六进制计数器所使用的端口 CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CARRY_OUT:OUT STD_LOGIC);