1、 1 目 录 一:设计目的.2 二:设计方案.2 1.方案论证2 2.模块电路设计2 3.计时电路3 4.计数器模块3 5.数字跑表的流程图3 6. 控制信号的作用 .4 三:设计总体框图.5 四:硬件电路设计与程序设计.6 1. 设计思路 .6 2.控制模块6 3.十进制计数模块7 4.六进制计数模块7 5.数码管扫描模块7 6.七段译码显示模块8 五:程序设计如下.9 六:编译仿真及硬件测试.15 1.编译仿真15 2.顶层设计图15 3.仿真后得到如下仿真波形图16 七. 硬件实验调试17 1.开始计时17 2.暂停17 3.清零18 八实验心得及体会.19 九.参考文献20 2 一:设
2、计目的一:设计目的 (1)学会利用 Quartus和所学的数字电路知识,搭建复杂一点 的数字电路或系统。 (2)学会使用 EDA 的程序语言 FPGA/CPLD 设计数字跑表,设 计主要包括功能分析、方案设计和电路测试几个步骤。 二:设计二:设计方案方案 1.方案论证方案论证 数字跑表设三个输入端,分别为时钟输入(CLK) ,复位 (CLR) ,启动、暂停按键(PUSE) 。复位信号高电平有效,可对 跑表异步清零;当启动、暂停键为低电平时跑表开始计时,为高 电平时暂停,变低后在原来的数值基础上继续计数。数字跑表的 结构示意图如下: 图 1 跑表示意图 2.模块电路设计模块电路设计 数字跑表实际
3、上为计数器,数据选择器,七段数码管译码器 等模块构成,核心模块应为计数器,其次为暂停控制和清零控制。 3 3.计时电路计时电路 计时电路又分为百分秒计时电路、秒计时电路和分计时电路 三个模块。百分秒计时电路是一个 100 进制的计数器,以 100Hz 输入信号作为计数时钟, 其进位信号作为秒计数电路的计数时钟, 当秒计数器计满时,产生的进位信号又作为分计数电路的计数时 钟。电路的暂停和复位信号用于控制计时的开始、停止和清零。 4.计数器模块计数器模块 数字跑表的计时器功能是,当 PAUSE 为低电平时开始计数, 百分秒低位自加一,加到九时归零,百分秒高位自加一,加到九 时归零,且向秒位发出一个
4、高电平,秒低位自加一,加到九时归 零,秒高位自加一,加到五时归零,且向分位发出一个高电平, 分低位自加一,加到六时系统清零。 5.数字跑表的流程图数字跑表的流程图 数字跑表主要由计时器,七段数码管译码器组成。流程框图 如图所示。 CLK msl pause clr 图 2 程序流程图 百分秒 计数器 秒计数器 分 计 数 数 码 管 译码器 4 6.控制信号的作用控制信号的作用 表 1 控制信号的作用 复位 clr 异步复位信号,高电平有效 pause 同步暂停信号,低电平有效计数。 sel 共阴数码管的位选信号 seg 共阴数码管的段选信号 5 三:设计总体框图三:设计总体框图 图 3 设计
5、总体框图 6 四四:硬件电路设计与程序设计:硬件电路设计与程序设计 1.设计思路设计思路 数字秒表电路计时范围的要求为0.011小时,即59分59.99 秒,所以这就需要获得一个比较精确的计时基准信号,此基准信 号可以由CPLD/FPGA试验箱提供的频率具体设定分频器。 分频器在 实验中显得很重要,因为如果分频的要求达不到,便会出现诸如 缺少数字位、计时不精确等实验现象。六进制计数器针对10秒和 10分位,十进制针对0.01秒、0.1秒、1秒和1分位,这是根据不同 的计数进位而设定的。电路还需要一个扫描电路,对每一位的计 时结果进行不断的扫描,扫描的速度要大于输入信号的频率,避 免出现扫描滞后
6、、显示的结果不是当前结果的现象。扫描的同时 还需要一个位码电路。 位码电路的作用是将数字秒表的各位选中, 以便七段数码管的显示。 2.控制模块控制模块 为了方便控制所有计数模块清零和使能功能需要设计一个控 制模块,所以该模块的功能就是控制什么时候发出置零信号和使 能信号来控制计数器工作。 其模块图如下图所示: Clk 为开始/暂停功能按钮 (下降沿有效) , 初次按下它 clc (控 制计数器清零)为低电平,en(使计数器计数)为高电平;再次 按下它时,clc 保持为低电平,en跳变为低电平,如此重复循环。 Reset 为清零按钮(下降沿有效) ,无论何时按下它时,clc 跳变为 高电平,en变为低电平,以达到使计数器清零的目的。 7 3.十进制计数模块十进制计数模块 此模块的功能就是完成十进制的计数功能,同时输出进位信 号。 其模块图如下图所示: Clk 为时钟信号输入端,rst 为计数器清零端(高电平有效) , en为计数器使能端(高电平有效) ;daout 为数据输出端,cout 为 进位信号输出端。 4.六进制计数模块六进制计数模块 此模块的功能就是完成六进制的计数功能