⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数字跑表.txt

📁 用verilog实现了一个数字秒表的设计
💻 TXT
字号:
/*信号定义:

CLK: CLK 为时钟信号;

CLR: 为异步复位信号;

PAUSE: 为暂停信号;

MSH,MSL: 百分秒的高位和低位;

SH,SL: 秒信号的高位和低位;

MH,ML: 分钟信号的高位和低位。 */

module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML);

input CLK,CLR;

input PAUSE;

output[3:0] MSH,MSL,SH,SL,MH,ML;

reg[3:0] MSH,MSL,SH,SL,MH,ML;

reg cn1,cn2; //cn1 为百分秒向秒的进位,cn2 为秒向分的进位

//百分秒计数进程,每计满100,cn1 产生一个进位

always @(posedge CLK or posedge CLR)

begin

if(CLR) begin //异步复位

{MSH,MSL}<=8'h00;

cn1<=0;

end

else if(!PAUSE) //PAUSE 为0 时正常计数,为1 时暂停计数

begin

if(MSL==9) begin

王金明:《Verilog HDL 程序设计教程》

- 55 -

MSL<=0;

if(MSH==9)

begin MSH<=0; cn1<=1; end

else MSH<=MSH+1;

end

else begin

MSL<=MSL+1; cn1<=0;

end

end

end

//秒计数进程,每计满60,cn2 产生一个进位

always @(posedge cn1 or posedge CLR)

begin

if(CLR) begin //异步复位

{SH,SL}<=8'h00;

cn2<=0;

end

else if(SL==9) //低位是否为9

begin

SL<=0;

if(SH==5) begin SH<=0; cn2<=1; end

else SH<=SH+1;

end

else

begin SL<=SL+1; cn2<=0; end

end

//分钟计数进程,每计满60,系统自动清零

always @(posedge cn2 or posedge CLR)

begin

if(CLR)

begin {MH,ML}<=8'h00; end //异步复位

else if(ML==9) begin

ML<=0;

if(MH==5) MH<=0;

else MH<=MH+1;

end

else ML<=ML+1;

end



endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -