1_100s计时器的FPGA实现
- 格式:doc
- 大小:4.52 MB
- 文档页数:51
基于CPLD的1/100秒计时器电路本设计为基于CPLD的1/100秒计时器电路。
计时器能实现0.01s~59.99s 的计时功能,计时误差≤ 0.01s,具有启、停和清零功能,计时数据采用七段数码管显示。
所有电路采用美国ALTERA公司的EPM7128SLC84-15芯片实现,使外围电路简单,性能可靠,特别是该芯片具有现场可编程功能,使修改设计简单。
在软件设计中使用了功能按键消抖技术,使功能操作准确无误。
标签:CPLD VHDL 计时器一、引言1/100s计时器常用于体育竞赛及各种要求有较高精确定时的领域。
本文设计的1/100s计时器具有如下功能:1.分、秒、1/100秒计时功能;2.具有分、秒、1/100秒显示功能;3.具有启停功能;4.具有复位功能。
整个系统的设计借助于VHDL,在EDA设计工具maxplus 下进行仿真,得到了良好的结果。
由于采用模块化的设计思想,使设计变得简单、方便、灵活性强。
二、设计方案分析如图1所示,为1/100s计时器的整体方框图。
包括四部分组成:计时控制芯片(cpld)、复位及启停开关、四位数码管、时钟。
根据计时器的功能特点,具体实现时可分为五个子模块:键输入模块、时钟产生模块、定时计数数模块、控制模块、四位数码管显示驱动模块。
各模块的功能独立,可扩充性强,具有再次开发的潜力。
各模块的关系如图2所示。
三、模块设计1.键输入模块(keyin)键输入模块(keyin)即键扫描电路,25HZ键扫描脉冲对按键扫描,产生启/停单脉冲(stst)和清零单脉冲(res),并具有消抖功能。
键扫描电路工作原理如下(以产生清零单脉冲res为例,启/停单脉冲stst与此相同):IF(keyclk’EVENT AND keyclk=‘0’)THENres1<=res0;res0<=reset_sw;stst1<=stst0;stst0<=start_stop_sw;END IF;2.时钟产生模块(clkgen)时钟产生模块是一个分频电路,对1000HZ时钟脉冲(clk)分频产生100HZ的计时脉冲(cntclk)和25HZ的键扫描脉冲(keyclk)。
基于FPGA的数字秒表设计摘要:该设计是用于体育比赛的数字秒表,基于FPGA在Quartus II 9.0sp2软件下应用VHDL语言编写程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片进行了计算机仿真,并给出了相应的仿真结果。
本设计有效的克服了传统的数字秒表的缺点采用EDA技术采取自上而下的设计思路。
绘制出了具体的逻辑电路,最后又通过硬件上对其进行调试和验证。
该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。
关键字:数字秒表;EDA;FPGA;VHDL;Quartus IIThe design of digital stop watch based on FPGA Abstract:This design is a digital stop watch which is used for athletic contests and is based on FPGA using VHDL language to write program in Quartus II software,adopting EP2C8Q208 chip of CycloneII series of ALTRA company for computer simulation and at the same time showing the corresponding simulation result. This design effectively overcomes the traditional digital stop watch weaknesses and takes a top-down approach to design. Draw out a particular logic circuits, and finally pass the circuits to the hardware to debug and verify it.This circuit is able to carry out excellent timing function,has high timing precision,and the longest timing time could reach an hour.Key Words: Digital stop watch;EDA;FPGA;VHDL;MAX PlusⅡ引言数字秒表是日常生活中比较常见的电子产品,其设计也是EDA技术中最基本的设计实验之一[1]。
摘要高精度计时器常用于体育竞赛及各种要求有较精确定时的技术领域。
通常,采用中规模集成电路即可实现高精度计时器的设计。
本项研究将基于新一代硬件描述语言(HDL)、采取ASIC(专用集成电路)设计方法,实现1/100s计时器的前端设计。
本计时器包括5个模块:键输入模块、时钟分频模块、开关及控制模块、时钟定时模块、显示模块,以完成1/100s计时器所界定的功能。
在键输入模块中,将产生消除抖动后的reset0(复位脉冲输出)和on_off0(启/停脉冲输出)。
时钟分频子模块。
clk_div实际上是一个用计数器进行分频的分频电路,得到用于计时的100Hz脉冲信号和消除抖动的25Hz脉冲信号。
控制子模块是根据计时器的工作状态,控制是否输出计数允许信号enable,它用于控制计数子模块的计数工作。
计时子模块是一个定时计数器,用来产生要显示的8位计时信息,当使能信号enable有效时计数器开始有效计数。
计时器显示模块的输入信号为计时模块输出的计时信息;它的输出信号是choose和segment,驱动用于计时显示的8个LED七段显示数码管。
在输出信号中,由于八进制计数器循环计数,LED七段显示数码管循环点亮来显示计时器的计时输出。
对各个功能模块进行硬件描述以后,然后采用新一代可编程逻辑器件开发软件平台Quartus II,进行逻辑功能仿真与时序验证,并在FPGA开发板上进行了综合和适配。
关键词:计数器;HDL;集成电路设计;仿真ABSTRACTA precise calculargraph is usually applied to any technical fields as athletic competition that demands accuratetiming. Usually, the design of precise calculargraph can be maded by using mediate scale integrate circuit.The study which is based on the new hardware description language and adapts the design method of ASIC will realize the advanced design of calculargraph whose accuracy will be 1/100s. This calculargraph, including keyin module, clock frequency division module, switching and controlling module, display module ,can realize the function exercised by accurate calculargraph of 1/100s .The key_in module will produce reset0 and on_off0. Clock frequency division is actually a frequency division circuit divided by a calculator. When divided 10 times 1 KHz clock signal will result in clock’s 100Hz clock pulse signal and redivided 4 times it will result in 25Hz. The controlling sub_module is used to control whether enable the calculating signal according to the calculator’s working status. The calculating sub_module is a calculating timer, used to display 8_figure calculating information when the enable signal starts calculating effectively. The input signal of calculargraph display module is the calculating information it outputs, with the output signal choose and segment, driving the eight LED 7_section display digital tube used for calculating display. When it outputs signals, the LED 7_section display digital tube will be highlighted in circles to display the calculating output because of the 8_figure display’s calculating in circles.When describing all function modules’hardwares, a programming software plat from Quartus II will be developed. Its logical function emulation and time sequence will be tested, integrated into specific device and adapted.Key words:calculargraph; HDL; integrate circuit design; imitation目录摘要 (I)ABSTRACT........................................................... I I 第一章绪论.. (1)1.1 引言 (1)1.2 基于硬件描述语言(HDL)的电路设计 (2)1.3 可编程逻辑器件的设计流程 (3)1.3.1 系统说明 (4)1.3.2 设计输入 (4)1.3.3 设计实现 (5)1.3.4 器件编程 (5)第二章计时器的硬件描述语言(VHDL)设计 (6)2.1 1/100s计时器的功能描述 (6)2.2 计时器的模块划分 (9)2.3 计时器的模块设计 (12)2.3.1 键输入模块 (13)2.3.2 时钟分频模块 (15)2.3.3 控制模块 (18)2.3.4 计时模块 (20)2.3.5 显示模块 (24)2.4 计时器的顶层设计 (31)第三章 1/100s计时器的FPGA实现 (35)3.1 设计平台和器件的选择 (35)3.2 使用ModelSim对设计进行仿真 (36)3.2.1 键输入模块的时序仿真 (36)3.2.2 时钟分频模块的时序仿真 (37)3.2.3 控制模块时序仿真 (37)3.2.4 计时模块时序仿真 (38)3.2.5 显示模块时序仿真 (38)3.2.6 顶层模块时序仿真 (39)第四章 1/100s计时器的后端实现 (40)4.1 FPGA开发板简介 (40)4.2 综合和配置 (41)结论 (44)参考文献 (45)致谢 (48)第一章绪论1.1 引言在EDA出现以前,人们一直采用传统的硬件电路设计方法来设计系统的硬件。
学院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 的计时数据。
fpga秒表设计实验报告本次实验是基于FPGA设计的秒表。
秒表主要是用来计时的一种仪器,具有精准度高、显示清晰等优点。
在实验中,我们使用FPGA来实现秒表的设计。
1. 实验目的通过本次实验,我们的目的是掌握FPGA的使用方法,并设计出一个能够精准计时的秒表。
同时,也能够加深理解数字电路的基本原理和数字信号的处理方式。
2. 实验原理秒表的原理很简单,在起点按下计时键后,秒表开始计时,时间会显示在数码管或LCD屏幕上。
在终点按下停止键后,秒表停止计时。
我们需要用数字电路来实现这个过程,分为三个部分。
2.1. 时钟模块时钟模块是秒表实现的基础。
我们可以使用FPGA内置的时钟控制器IP,也可以自己实现时钟模块。
在这个实验中,我们使用了FPGA内置的时钟控制器IP。
2.2. 计时模块计时模块是实现秒表的关键。
我们可以使用FPGA内置的计数器IP,也可以自己实现计数器模块。
在这个实验中,我们使用了FPGA内置的计数器模块。
2.3. 显示模块显示模块用来显示计时结果。
我们可以使用数码管或LCD屏幕来显示计时结果。
在这个实验中,我们使用了数码管来显示计时结果。
3. 实验步骤3.1. 创建工程首先,我们需要在Vivado IDE中创建一个FPGA工程。
在创建工程时,需要选择适当的设备型号、板卡等参数。
3.2. 添加时钟控制器IP在Vivado IDE中,选择IP Catalog,搜索并添加时钟控制器IP。
3.3. 添加计数器IP在Vivado IDE中,选择IP Catalog,搜索并添加计数器IP。
3.4. 添加数码管IP在Vivado IDE中,选择IP Catalog,搜索并添加数码管IP。
3.5. 连接IP在Vivado IDE中,将时钟控制器IP、计数器IP和数码管IP进行连接。
3.6. 程序设计使用Vivado IDE中的HDL语言对秒表进行程序设计。
3.7. 烧录程序将程序烧录到FPGA中,实现秒表功能。
基于FPGA的数字式秒表一、设计任务及要求秒表由于其计时精确,分辨率高(0.01 秒),在各种竞技场所得到了广泛的应用,本次设计的任务就是设计一个基于FPGA 的数字式秒表。
1、基本要求:(1)性能指标:秒表的分辨率为0.01 秒,最长计时时间为99.99 秒;(2)设置启/停开关和复位开关(计数控制器):启/停开关S1 的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。
复位开关S2 用来使计时器清0,复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程应立即终止,并对计时器清零。
(开关按下为0,弹起为1)。
(3)秒表的计时基准信号:以周期为0.01 秒(频率100HZ)的计时脉冲作为一个比较精准的计时基准信号输入到0.01 秒位计数器的时钟端;在设计中采用分频器把1000HZ 的时钟信号转换为100HZ 的计时基准信号,其分频系数为10。
(4)数码管动态显示:七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ 。
为了得到1000Hz 信号,必须对输入的时钟信号50MHZ 进行分频。
显示模块共用11 个管脚,其中8 个用于连接8 个数码管的七段LED,还有 3 个管脚用于选择点亮哪个数码管,每隔很短的一段时间8 个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。
上电后,八个数码管中左边四个显示自己的学号后四位,在运行过程中一直不变;右边四个显示计时时间,范围0000~9999,利用两个按钮S1、S2 控制计时。
2、提高要求:加入小数点,计时数码管显示范围00.00~99.99。
二、系统原理框图三、电路实现Array四、功能模块1、分频器(以10分频器为例)(1)Verilog HDL语言程序module fp10(Clk,Out);input Clk;output Out;reg Out;reg [3:0] Cout;reg Clk_En;initialOut<=0;always @(posedge Clk )beginCout <= (Cout == 4'd10) ? 4'd0 : (Cout + 4'd1);Clk_En <= (Cout >= 4'd5) ? 1'd1 : 1'd0;Out<=Clk_En;endEndmodule(2)模块化电路(3)波形仿真由波形仿真图可以看出,10分频器将1000Hz的脉冲分频成100Hz的脉冲。
课程设计报告专业班级课程题目秒表的设计学号姓名同组人成绩2013年5月一、设计目的1.进一步熟悉七段码译码器的硬件接口。
2.掌握用扫描方法驱动多个数码管硬件接口。
3.掌握秒表VHDL的编程方法。
二、系统总体设计(1).设计要求:1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲。
(2).实验原理:秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:0~59;ss 表示秒:0~59;xx表示百分之一秒:0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
在设计秒表的时候,时钟的选择为100Hz。
变量的选择:因为xx(0.01秒)和hh(小时)表示的范围都是0~99,所以用两个4位二进制码(BCD码)表示;而ss(秒钟)和mm(分钟)表示的范围是0~59,所以用一个3位的二进制码和一个4位的二进制码(BCD)码表示。
显示的时候要注意的问题就是小时的判断,如果小时是00,则显示格式为mm-ss-xx,如果小时不为00,则显示hh-mm-ss。
基于FPGA的倒计时时钟实验报告总结一、实验目的本实验旨在通过FPGA技术,设计一个能够进行倒计时的时钟电路,并进行相应的功能验证。
二、实验内容1. 确定实验目标:设计一个基于FPGA的倒计时时钟电路,实现倒计时功能。
2. 学习FPGA设计工具:熟悉并掌握FPGA设计工具的使用方法,包括逻辑综合、时序分析等。
3. 编写时钟电路代码:利用Verilog硬件描述语言编写时钟电路的代码。
4. 进行仿真验证:对时钟电路进行仿真验证,确保设计的正确性和稳定性。
5. 下板实验验证:将设计好的时钟电路下载到FPGA开发板上,进行实际验证。
三、实验步骤与结果分析1. 设计倒计时时钟电路通过学习资料和实验指导,我们利用Verilog HDL进行倒计时时钟电路的设计,并对其功能进行初步测试。
初步测试结果表明,设计的倒计时时钟电路能够正常工作。
2. 时钟电路仿真验证我们利用FPGA设计工具对时钟电路进行了仿真验证,通过时序分析和波形仿真,确认了时钟电路的正确性和稳定性。
仿真结果显示,时钟电路能够准确地进行倒计时操作。
3. 下板实验验证将设计好的时钟电路下载到FPGA开发板上进行实际验证。
经过实际测试,我们发现倒计时时钟电路能够稳定可靠地进行倒计时操作,符合设计要求。
四、实验总结通过本次实验,我们深入学习了FPGA技朰,并成功设计并验证了基于FPGA的倒计时时钟电路。
实验中我们克服了一些困难,如时钟电路设计的复杂性和仿真验证的精确性等。
我们顺利完成了实验目标,掌握了FPGA设计工具的使用方法,提高了自己的实践能力和动手能力。
这次实验为我们今后在FPGA领域的研究打下了坚实的基础,也对我们的专业素养、工程实践能力提出了更高的要求。
五、改进建议在今后的实验中,我们可以进一步深入研究FPGA技术,探索更多的应用场景,提高我们的设计水平。
注重团队合作、创新思维,不断提升自己的综合素质和实践能力,为将来的科研工作和工程实践打下更加坚实的基础。
fpga2个计时器的写法-回复如何使用FPGA实现两个计时器在现代电子技术领域中,计时器是一个非常重要的功能模块。
使用FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现计时器可以具备高度的灵活性和可扩展性,能够满足各种计时需求。
本文将介绍如何使用FPGA设计和实现两个计时器的方法。
步骤1:选择FPGA平台和开发环境首先,我们需要选择一个适合的FPGA平台和开发环境。
市面上有很多FPGA供应商,如Xilinx、Altera(现在归属Intel公司)等。
选择平台时,需要考虑到设计的规模、计时器要求和可用资源等因素。
一些常见的开发环境包括Xilinx的Vivado、Intel的Quartus Prime等。
我们将以Xilinx平台为例进行讲解。
步骤2:创建计时器的顶层模块在开始设计之前,我们需要创建一个顶层模块。
该模块将负责实例化两个计时器模块,并连接输入输出信号。
以下是一个简单的顶层模块示例:verilogmodule top_module (input clk,output reg [31:0] timer1,output reg [31:0] timer2);实例化计时器模块timer_module timer1_inst (.clk(clk),.timer(timer1));timer_module timer2_inst (.clk(clk),.timer(timer2));always (posedge clk) begintimer1_inst.clock(); 触发timer1timer2_inst.clock(); 触发timer2 endendmodule步骤3:实现计时器模块接下来,我们需要实现计时器模块。
计时器模块的功能是根据输入时钟频率进行倒计时,并在计时结束时产生输出信号。
以下是一个简化的计时器模块示例:verilogmodule timer_module (input clk,output reg [31:0] timer);reg [31:0] counter;reg enable;always (posedge clk) beginif (enable) beginif (counter != 0) begincounter <= counter - 1;endendendalways (posedge clk) beginif (counter == 0) begintimer <= 1; 输出信号置1end else begintimer <= 0; 输出信号置0endend在此处定义计时器的初始值和使能信号initial begincounter = 100000000; 设置初始计时值,根据需求进行调整enable = 1; 使能计时器end在此处定义其他需要的逻辑endmodule步骤4:生成比特流文件当完成所有模块的设计之后,我们需要将设计文件综合成逻辑网表,并通过设计工具生成比特流文件以进行编程。
1/100秒计时控制器1. 系统说明图1是1/100秒计时控制器的方框图。
图1 1/100秒计时控制器方框图⑴ 功能要求● 计时精度为1/100s ,最长计时时间为1h 。
● 直接驱动共阴极7段数码显示时间。
● 能够支持计时器启动/停止和复位操作。
在任何情况下,按一下复位键,计时器就清零并作好计时准备;然后按一下启动/停止键,计时器就开始计时;再按一下启动/停止键,计时器停止计时。
⑵ 端口定义● RST :系统复位信号,高电平有效。
● CLK :1KHz 的系统时钟。
● RST_KEY :复位按键产生的复位信号,每按一次按键就产生一个正脉冲。
1/100s 计时控制器CLKRST7段LED 显示器分 秒 1/100秒RST_KEYSTART_STOP_KEYV CCV CC 启动/停止 按钮复位 按钮7SEGCOM6●START_STOP_KEY:启动/停止按键产生的启动/停止信号,每按一次按键就产生一个正脉冲。
●SEG:LED显示器的7段(abcdefg)显示驱动信号,高电平有效。
●COM:7段数码管的公共端控制信号。
2. 系统的总体方案、系统划分和算法设计图2是1/100秒计时控制器的总体结构框图,系统主要由时钟产生模块(CLK_GEN)、控制模块(CONTROLLER)、按键同步消抖动模块(KEY_IN)、计时模块(TIMER)和显示模块(DISPLAY)构成。
图2 1/100秒计时控制器的总体结构框图⑴时钟产生模块(CLK_GEN)时钟产生模块的作用是对输入的1kHz时钟信号CLK进行分频,输出一个25Hz 的时钟KEY_CLK和一个100Hz的时钟CNT_CLK。
时钟产生信号的结构图如图3所示。
图3 时钟产生信号的结构图时钟产生模块由两个同步加法计数器模块(COUNTER )构成,1kHz 的时钟信号CLK 先经10分频后得到100Hz 的CNT_CLK ,再经4分频后得到25Hz 的计数脉冲KEY_CLK 。
可编程逻辑器件电路设计课程设计报告1/100计时器的FPGA实现姓名:班级:学号:指导老师:日期:2012.12.03~2012.12.14华南农业大学工程学院摘要高精度计时器常用于体育竞赛及各种要求有较精确定时的技术领域。
通常,采用中规模集成电路即可实现高精度计时器的设计。
本项研究将基于新一代硬件描述语言(HDL)、采取ASIC(专用集成电路)设计方法,实现1/100s计时器的前端设计。
本计时器包括5个模块:消抖模块、时钟分频模块、开关及控制模块、时钟定时模块、显示模块,以完成1/100s计时器所界定的功能。
在消抖模块中,将产生消除抖动后的RST0(复位脉冲输出)和EN0(启/停脉冲输出)。
时钟分频子模块。
clk_div实际上是一个用计数器进行分频的分频电路,得到用于计时的100Hz脉冲信号和消除抖动的25Hz脉冲信号。
控制子模块是根据计时器的工作状态,控制是否输出计数允许信号enable,它用于控制计数子模块的计数工作。
计时子模块是一个定时计数器,用来产生要显示的5位计时信息,当使能信号enable有效时计数器使能或暂停。
计时器显示模块的输入信号为计时模块输出的计时信息;它的输出信号是WEI 和DIG,驱动用于计时显示的5个LED七段显示数码管。
在输出信号中,由于六进制计数器循环计数,LED四段显示数码管循环点亮来显示计时器的计时输出。
对各个功能模块进行硬件描述以后,然后采用新一代可编程逻辑器件开发软件平台Quartus II,进行逻辑功能仿真与时序验证,并在FPGA开发板上进行了综合和适配。
关键词:计数器 HDL 集成电路设计仿真1.方案比较与选择 (1)1/100s计时器的功能描述 (1)2.底层文件仿真与分析 (6)2.1 底层文件简介 (6)2.1.1 消抖模块 (9)2.1.2 时钟分频模块 (10)2.1.3 控制模块 (11)2.1.4 计时模块 (12)2.1.5 扫描模块 (13)2.2 底层文件仿真与分析 (14)2.2.1计时模块的时序仿真 (14)2.2.2 控制模块的时序仿真 (14)3.顶层文件仿真与分析 (16)3.1使用Quartus II 9.0自带仿真器对设计进行仿真 (16)3.1.1 计时器的顶层设计 (16)3.1.2 顶层模块的时序仿真与分析 (16)4.硬件验证分析 (17)4.1 FPGA开发板简介 (17)4.2 综合和配置 (19)ABSTRACT (22)附录(源代码) (24)1.方案比较与选择1/100s计时器的功能描述1.这里将要讨论的计时器的工作流程如下图所示,功能描述如下:图1-1计时器的工作流程图(1)要求设置复位开关。
当按下复位开关时,计时器清零并做好计时准备。
在任何情况下只要按下复位开关,计时器都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。
(2)要求设置启/停开关。
实际上启/停开关的使用方法与传统的机械式计时器完全相同:当按下启/停开关后,将启动计时器并开始计时;当再次按下启/停开关时,将终止计时器的计时操作。
(3)要求计时精度大于0.01s。
在体育竞赛中运动员的成绩计时是以0.01s为最小单位的,因此要求设计的计时器能够显示0.01s的时间。
(4) 计时器的最长计时时间为2分钟,需要一个5位的显示器,显示的最长时间为1分59.99秒(5)要求有电源复位信号的系统上电复位电路。
2. 根据上面对计时器的功能描述,可以对该计时器的输入和输出电路进行以下推理。
首先来对计时器的输入电路进行描述:(1)首先要按下复位开关RST进行计时器的复位清零操作,使计时器作好计时准备。
(2)当做好计时准备后按下计时器的启/停开关EN,计时器开始计时,计时器的最小计时单位是0.01s;计时完毕后再按一下计时器的启/停开关EN,这时将终止计时器的计时操作。
(3)由于计时器的计时精度为0.01s,所以提供给计时器内部定时的时钟信号频率应该大于100Hz。
这里取20MHz,所以该计时器还应该有一个100Hz的时钟输入信号clk。
3. 计时器的输出电路可以描述为:(1)由于计时器的最长计时时间为1分59.99秒,因此需要一个5位的显示器。
这样,在设计中就需要一个五条输出线,用来选通指定的一位LED七段显示数码管。
(2)显示器的每一位都采用LED七段显示数码管进行显示,因此输出电路要有七条输出线连接在LED七段显示数码管上。
4. 对计时器的输入和输出电路进行推理以后,就可以很容易地给出计时器的输入和输出信号。
首先给出计时器的输入信号:(1)外部时钟信号clk;(2)复位开关信号RST:用于对计时器进行清零并做好计时准备;(3)启/停开关信号。
EN按下启/停开关后,将启动计时器并开始计时;当再次按下启/停开关时,将终止计时器的计时操作;5. 输出信号的描述为:(1)LED七段显示数码管的选通信号WEI[5:0]:用于时器的6个LED七段显示数码管进行选通;(2)LED七段显示数码管的输出信号DIG[7:0]:用于控制LED七段显示数码管的显示操作。
确定了计时器的输入输出信号以后,就可以给出该计时器的结构框图了。
计时器的系统结构框图如图1-1所示,它说明了整个数字系统的外部输入和输出情况。
图1-2 计时器的结构框图6. 综上所述,可以确定计时器的基本方案如下:方案一:如图 1-2所示,本方案分为时钟分频模块、按键输入模块、功能控制模块、计时模块和显示控制模块。
其中时钟分频模块对系统时钟信号作适当分频后向按键输入模块、功能控制模块、计时模块提供必要的时钟控制信号;按键输入模块则实现按键信号的实时检测与消除抖动功能,为功能控制模块提供及时稳定的按键输入信号。
功能控制模块则根据按键输入状态实现复位、启动/停止计数的外部操作功能;计时模块根据功能控制模块的控制信号实现要求的计时功能,然后把当前计时值输送到显示模块进行显示;显示控制模块采用静态驱动数码管的显示方式,显示实时计时值。
图 1-3方案一计时器的模块结构图方案二:图 1-4方案二计时器的模块结构图方案二与方案一基本思路一样,有所不同的是,在时钟分频模块中,输出的时钟信号不供给功能控制模块,而是供给显示模块作为动态数码管扫描的时钟控制信号。
比较上述两种方案,方案二相比方案一中功能控制模块的实际上可以省去时钟信号,直接由按键输入信号启动其进程的运行,从而简化了程序设计,缩短了系统开发周期。
而方案一中数码管显示的实现方式为静态显示方式,相比方案二的动态扫描也显示述优点,但从资源消耗方面看,静态显示方式需要的硬件资源明显要比动态扫描多,系统功耗也会因此而增加。
为兼顾开发周期和系统资源的合理分配,本系统采方案实现1/100计时器的功能。
2.底层文件仿真与分析2.1 底层文件简介在任何自顶向下的VHDL设计描述中,设计人员常常将整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述,本设计亦是如此。
现在根据前面描述的结构功能,来确定计时器数字系统需要使用哪些模块以及这些模块之间的关系。
由于计时器的复位开关和启/停开关采用按键的输入方式,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须在每个开关后面安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲,并保证每按一键,只形成一个宽度为系统时钟周期的脉冲。
同步电路的方案很多,图2-1是一种既有消抖功能又有同步功能的电路,应用得非常广泛。
图2-1 一种常用的消抖同步电路由于外部时钟信号clk的频率为20MHz,而实际需要的内部计时时钟频率为100Hz且提供给消抖同步电路的频率为25Hz,因此需要一个时钟分频电路。
通过分频电路,由外部时钟信号clk来产生频率分别为100Hz和25Hz的时钟信号。
计时器的计时操作是在复位开关信号无效并且两次启/停开关信号有效之间才能够进行,因此需要一个电路用来产生一个使能信号。
只有当使能信号有效时,才能够进行计时器的定时计数操作。
当计时器开始正常计时的时候,需要进行定时计数操作。
由于它的时间显示器是由5个LED七段显示数码管组成的,因此需要产生6位的计时信息:状态显示位、分个位信号、秒十位信号、秒个位信号、0.1s位信号和0.01s位信号。
这个定时计数操作可以由一个定时计数器来完成,定时计数器的主要功能就是用来产生6位计时信息。
计时器还要将定时计数的结果显示出来,为了节省资源,我们采用一种循环点亮LED 七段显示数码管的方法来显示计时器的计时输出。
首先通过信号WEI[5:0]来进行8个LED 七段显示数码管的选择,然后将输出信号DIG[7:0]送到相应的LED七段显示数码管上以完成计时器计时的显示。
计时器显示的功能可以通过一个单独的电路来实现。
通过上面的介绍,不难看出可以把计时器数字系统划分成5个模块:(1)消抖模块(xiaodou):该子模块的输入信号是RST、EN。
输出信号是RST0(复位脉冲输出)和EN0(启/停脉冲输出)。
每按一下RST开关的按钮,RST0输出端将输出一个脉冲宽度为一个时钟周期(lms)的复位脉冲。
每按一下EN开关的按钮,EN0输出端将输出一个脉冲宽度为1ms的启/停控制脉冲。
这两种脉冲产生电路的结构是完全一致的,唯一应注意的是两种电路都应采取防抖动措施。
(2)时钟分频模块(fenpin):时钟分频模块分为两部分,分别使用子模块将外部20MHz 的时信号分频为占空比为50的时钟信号CLK_250HZ和CLK_100HZ。
其中,CLK_250HZ作为消除抖动和提供显示的扫描时钟,CLK_100HZ作为定时计数的脉冲信号。
由此可知,fenpin 子模块实际上是一个用计数器进行分频的分频电路,其结构和输入输出信号关系如图2-4所示。
为实现严格的同步,该模块采用同步计数电路。
图2-4 时钟产生子模块结构和输入输出信号关系(3)控制模块(ctrl):控制子模块的输入信号是消抖子模块输出的启/停控制脉冲EN0和复位脉冲信号RST0。
其输出信号是计数允许信号EN和复位脉冲信号RST,它用于控制计数子模块的计数工作。
计时器工作时,EN端输出高电平,计时器停止工作时EN端输出低电平。
由此可见,控制子模块是根据计时器的工作状态,控制是否输出计数允许脉冲的电路。
(4)计时模块(count):计时模块的输入信号为:去除抖动后的复位信号 RST0;系统电源复位信号RST0;计时器的内部计时时钟信号CLK_100HZ;计时模块的输出信号为:分个位信号F_Q;秒十位信号MIAO_Q2;秒个位信号MIAO_Q1;0.1s位信号XIAO_Q2;0.01s位信号MIAO_Q1。
该模块是一个定时计数器,用来产生要显示的5位计时信息。