篮球30s可控计时器设计
具体要求:1)具有30s计时、显示功能;
2)设置外部操作开关,控制计时器的直接清零、装数、启动和暂停/连续功能;
3)30s倒计时,其计时间隔为1s;
4)计时器递减计时到零时显示器不能灭灯,同时发出报警信号; 5)能解除报警信号;
6)画出该电路的电路图,用Verilog HDL设计此电路,并进行仿真。 一、设计思路
对应的模块 控制电路 控制电路 控制电路 译码显示 译码显示 报警电路 报警电路 报警电路 状态 1 2 3 1 2 1 2 3 对应的信号 load=1、stop=0 load=0、stop=1 load=0、stop=0 load=0、stop=0 load=0、stop=1 load=0、alarm=0 load=0、alarm=1 load=1、alarm=0 倒计时 倒计时开始,每次减1s 倒计时暂停,保持当前秒数 倒计时继续,在前开下,每次减1s 倒计时开始,每次减1s 倒计时暂停,保持当前秒数 倒计时30s开始 倒计时为0,计时结束 倒计时重新开始计时 对应情况 不报警、 不暂停 不报警、 暂停 不报警、 不暂停 不报警 不报警、 暂停 不报警 报警 不报警
该电路包括秒脉冲发生器、计数器、译码显示电路、辅助时序控制电路(简称控制电路)和报警电路等5个部分。其中,计数器和控制电路是系统的主要部分。计数器完成30s计时功能,而控制电路具
有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示和灭灯等功能。总体设计框图如下:
秒脉冲发生器 计数器 译码显示 外部操 作 开 关 控制电路 报警电路 30s计时器的总体方案框图
二、详细模块设计 1控制模块设计
控制部分具有直接控制计数器的启动计数、暂停、连续计数功能。
表2 I/O管脚描述(一) 名称 方向 位宽 功能 clk input 1 系统时钟(50MHZ) load input 1 复位信号(高电平有效) stop input 1 暂停信号(高电平有效) clk_2 output 1 分频后时钟信号(1HZ) 2译码显示模块设计
译码显示部分主要是显示当前计时数。
表3 I/O管脚描述(二) 名称 clk_2 load qh ql 3报警模块设计
根据设计要求,当倒计时结束时,要进行报警,而且灯还不能灭。报警一段时间后,报警信号又自动取消。本程序通过循环来实现自动解除警报,并且重新进入新一轮的计时。
方向 input input input input 位宽 1 1 1 1 功能 分频后时钟信号(1HZ) 复位信号(高电平有效) 十位输出 个位输出 表4 I/O管脚描述(三) 名称 clk_2 load alarm 4 顶层文件设计
整个顶层文件主要是由三个输入信号和三个输出信号组成,三个输入信号分别是clk(时钟信号)、load(复位)、stop(暂停),三个输出信号分别是qh(十位)、ql(个位)、alarm(报警)。
三、设计电路图
方向 input input output 位宽 1 1 1 功能 分频后时钟信号(1HZ) 复位信号(高电平有效) 报警信号(高电平有效)
四、编译和仿真 1、源程序
module basketball(CPB,L,QH,QL,CPA,S,LD,CR);
output[3:0] QH,QL; output CPB,L; input S,LD,CR; input CPA;
reg[3:0] QH,QL; reg CPB; reg L; reg[3:0] i; reg QC;
always @(posedge CPA) //10分频
begin
if (S==0)CPB<=CPB;
else if (i==9)
begin i=0;CPB<=1;end
else
begin i=i+1;CPB<=0;end
end
always @(posedge CPB or negedge LD or negedge CR) //实现30s可控计时器的功能
begin
if(!CR) begin QH[3:0]<=0;QL[3:0]<=0;QC<=0;end
else if (!LD) begin QH[3:0]<=3;QL[3:0]<=0;QC<=1;L=0;end
begin QH[3:0]<=0;QL[3:0]<=0;L=QC;end begin QL[3:0]<=9;QH[3:0]<=QH[3:0]-1;end begin QL[3:0]<=QL[3:0]-1;QH[3:0]<=QH[3:0];end
else if ((QH==0)&(QL==0))
else if (QL[3:0]==0) else
end
endmodule
2、仿真结果
五、结论
由仿真波形图可以看出,在可控计时器能正常递减计数、当开关键使能是S=0时能做保持(暂停)。另外,开关键装数LD低电平有效时,则立即预置输出变量QH[3..Q0]和QL[3..Q0]为0011和0000,即装数功能有效,在CR=0时,重新装数。另外,由开关键输入清零(CR=0)低电平信号时,能直接致使减时计数器复位并解除报警,实现系统的控制功能。仿真结果符合设计要求,达到预期效果。