摘 要: 本文设计了一种多功能计时器,该计时器可通过启/停按键实现断点计时功能,并能在不影响计时过程的同时,通过en按键实现中途计时。该计时器的设计采用模块化结构,有6个模块即分频模块、输入模块、控制模块、计时模块、时间存储模块以及显示模块组成。各模块功能独立,可扩充性强,具有柔性化设计的特性。
关键字:数字逻辑;计时器;模块
引言
计时器在许多领域中均得到普遍应用,诸如在体育比赛、公共汽车到站时间统计中需进行计时和统计。现今的计时器通常只能通过启/停按键实现断点计时的功能,即通过启/停按键来记录一段时间。这种计时器查看的时间只能为计时结束时刻。实际的应用中往往需要在不影响正常计时的基础上,能查看记录过程中的某些点的时间,即中途计时,如记录长跑运动员跑每圈所用时间,以便了解其各阶段的情况。本文即针对此问题,设计了一种能通过按键方式查看记录过程中任一时刻值的计时器。这种计时器在查看中间值时不会影响整个记录过程,并且能把相应数据送入存储模块及显示模块,以便查看。整个系统的设计借助于VHDL和数字逻辑电路,在EDA设计工具MaxplusII下进行仿真,得到了良好的结果。由于采用模块化的设计思想,使设计变得简单、方便、灵活性强。
计时器整体设计结构
如图1所示,为计时器的整体结构框图。其中Sysreset为电源复位信号,实现系统的掉电复位,在计时器开启时用到。Reset可对每次操作进行数值清零复位,为计时做好准备。clk为系统时钟信号。on/off为计时的启/停控制信号,计时开始时只需按下该控制信号。这时,通过输出线choose(7
downto 0)来选择指定的一位LED七段数码显示管,并通过输出线segment(6 downto 0)来点亮指定位上的某一段。其中,choose(7
downto 0) 以125Hz的频率使8个LED数码管按次序依次点亮,得到一个无闪烁的稳定的计时输出,计时精度为0.01秒。计时完毕,按下on/off控制信号,终止计时操作。该计时器最长记录时间为24小时。
图1 计时器系统的结构框图(略)
当进行中途计时时,可持续按住en键,此时内部时钟不停,显示按下en键时刻的时间,松手后,即跳变回当前时间,不影响记录过程,可以得到分段计时结果。
根据计时器的功能特点,具体实现时可划分为6个子模块:键输入模块,时钟分频模块,控制模块,秒表计时模块,计时存储模块和显示模块。各模块的功能独立,可扩充性强,具有再次开发的潜力
。各模块之间的关系如图2所示。
图2 计时器系统模块框图(略)
模块设计
键输入模块
计时器的输入控制为按键方式,由于手动按键,会产生开关簧片反弹引起的电平抖动现象,为保证系统能捕捉到输出脉冲,在每一个开关后面安排一个消抖和同步电路,以并保证每按一键,只形成一个宽度为系统时钟周期的脉冲。图3即为采用兼具消抖和同步功能的电路,它能产生与系统时钟周期相同宽度的1ms时钟脉冲。
图3 消抖同步电路(略)
时钟分频模块
时钟分频模块的功能是将频率为1000Hz的外部时钟信号clk进行分频,从而产生用来消除抖动的25Hz的时钟信号clk1和用于计时器内部定时计数的100Hz的时钟信号clk0。
由于计时器系统使用的时钟信号clk1和时钟信号clk0的有效脉冲宽度均为1ms,则需对分频产生的信号进行处理 。本系统将4分频产生的信号clk1_tmp与10分频产生的信号clk0_tmp相与,来得到有效脉冲宽度为1ms的25Hz时钟信号clk1。
控制模块
控制模块的功能是用来控制计时模块的工作。当系统电源复位信号sysreset或内部复位信号reset0有效时,控制模块的输出enable信号无效;当reset0和sysreset都无效,且on/off
0有效时,enable信号有效,直到下一次on/off 0有效时enable才变成无效。(reseto 、on/off0为去抖后的信号)
在此,采用了一个乒乓信号,该信号在启停信号on/off 0有效时就进行一次反相操作,然后以这个信号作为选通信号,从而得到计数允许信号enable。
秒表计时模块
秒表计时模块用来实现秒表内部定时计数功能。如图4所示,该模块受复位信号reset0、使能信号enable和时钟信号clk0的控制。在使能信号enable有效时,计时模块开始计时,并产生相应的计时输出和进位信号。模块内部采用三进制、四进制、十进制和六进制计数器实现时、分、秒的计时,最长可记录24小时。
时间存储模块
时间存储模块的作用是对计时数据进行存储。当en键未按下时,系统将计时模块产生的计时值送入存储模块进行锁存同时送给显示模块进行显示;当en键按下时,存储模块则不锁存计时值,而保留按键时刻的时间并送给显示模块,实现中途计时的功能。当en按键复位时,存储模块再一次重复前面的过程,实现对下一中途时刻进行计时。
图4 计时模块的结构框图(略)
显示译码模块
显示模块用来显示计时模块输出的即时计时和中途计时结果。为了降低功耗,采用循环点亮LED七段显示数码管的方法来显示计时输出,即用choose(7
downto 0)信号选择位显示,segment(6 downto 0)信号用以确定相应位上显示的数据和段。
如图5所示,显示模块由四个部分构成:八进制计数器count8、计时位选择电路、七段显示译码电路和显示位选择译码电路。其中显示位选择译码电路是根据八进制计数count8的计数输出信号sel,产生用来选通一个LED七段显示数码管的choose信号。计时位选择电路则根据八进制计数器输出信号sel,选择对应计时显示位的计时数据,确定LED七段显示数码管的segment信号。
对于计时位选择电路,由于其输出端口的计时数据q的位数既有2位的、3位的还有4位的,而七段显示译码电路的输入端口接收四位宽度数据,因此在计时位选择电路中还需将计时数据转化为4位宽度的数据。
图5 显示模块结构框图(略)
结束语
本设计从总体要求出发,采用自顶向下逐步细化的方法,将系统模块化,使得系统具有很强的扩充性,并且在实现设计的基础上,采用maxplus的仿真环境得到理想的仿真效果。本设计完成的中途计时功能,实现了在许多特定场合进行时间追踪的功能,在社会生活中具有广泛的应用价值。
|