1.设计要求
主要功能:
(1)具有30秒计时、显示功能;
(2)设置外部操作开关,控制计时器的直接清零、装数、启动和暂停/连续功能;
(3)30秒倒计时,其计时间隔为1秒;
(4)计时器递减计时到零显示器不能灭灯,同时发出报警信号;
(5)能解除报警信号。
在Quartus II软件平台上建立计数器电路的顶层电路文件,并完成编译和仿真。
输入信号:时钟CPA,直接清零CR,预置(装数)LD及减计数使能(启动/暂停)S。
输出信号:计时输出信号QH[3...0]、QL[3...0](8421BCD码)和报警信号L。
设计原理:
主要包括10分频器,30秒可控递减计时器及报警电路。30秒可控递减计时器是系统的核心部分,由外部开关键进行清零(CR),直接控制递减计时器的复位和解除报警;开关键预置(LD)低电平有效,当可控计时器预置30秒时,输出变量QH[3..0]和QL[3..0]分别为0011、0000(8421BCD码),即实现置数功能;启动递减计时和暂停/连续由开关键使能(启动/暂停)S,S=1用于递减计时(开通时钟通道),S=0用于保持(暂停)。10分频的功能是为了提高控制精度,减小时间误差。
源程序:用Verilog编写basketball.v文件,源程序如下:
module basketball(CPB, L, QH, QL, CPA, S, LD, CR) ; input S, LD, CR ; input CPA ; output [3:0]QH, QL ; output CPB, L ; reg [3:0]QH, QL ; reg CPB ; reg L ; reg [3:0]i ; reg QC ; always @(posedge CPA) 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) begin if(!CR) begin QH <= 0 ; QL <= 0 ; QC <= 0 ; end else if(!LD) begin QH <= 3 ; QL <= 0 ; QC <= 1 ; L <= 0 ; end else if((QH==0)&(QL==0)) begin QH <= 0 ; QL <= 0 ; L <= QC ; end else if(QL==0) begin QL <= 9 ; QH <= QH - 1 ; end else begin QL <= QL - 1 ; QH <= QH ; end endendmodule