/*信号定义:
CLR: 异步复位信号
CLK: 时钟信号
PAUSE:暂停信号
MUH,MSL:百分秒的高位和低位
SH,SL:秒信号的高位和低位
MH,ML:分钟信号的高位和低位*/
module paobiao(CLR,CLK,PAUSE,MUH,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
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 //低位是否为9
ML<=0;
if(MH==5) MH<=0;
else MH=MH+1;
end
else
ML<=ML+1;
end
endmodule
已退回1积分
2014-12-7 22:30:16
编译时没提示的吗? 端口名称和里面寄存器名称核对一下 有点乱
编译时没提示的吗? 端口名称和里面寄存器名称核对一下 有点乱
举报
2014-12-8 22:12:58
我知道什么错了,根本是我的modelsim证书没搞好,一直不能编译。大神这个的测试程序怎么写。。
我知道什么错了,根本是我的modelsim证书没搞好,一直不能编译。大神这个的测试程序怎么写。。
举报