/**************************************
文件名:seg4.v
描述:程序功能:数码管电子钟
创建时间:2011年1月17日
创建人:何运涛
***************************************/
module seg4(clk,wela,dula);
input clk;
output[7:0] wela;
output[7:0] dula;
reg[7:0] wela;
reg[7:0] dula;
reg[7:0] dig [7:0];
reg[7:0] seg [9:0];
reg[18:0] cnt;
reg[25:0] counter;
reg[5:0] second=6'd00;//设置秒钟初值
reg[5:0] minute=6'd29;//设置分钟初值
reg[4:0] hour=5'd01;//设置时钟初值
initial
begin
seg[0]<=8'hc0;//0的编码
seg[1]<=8'hf9;//1的编码
seg[2]<=8'ha4;//2的编码
seg[3]<=8'hb0;//3的编码
seg[4]<=8'h99;//4的编码
seg[5]<=8'h92;//5的编码
seg[6]<=8'h82;//6的编码
seg[7]<=8'hf8;//7的编码
seg[8]<=8'h80;//8的编码
seg[9]<=8'h90;//9的编码
dig[0]<=8'h7f;//第0个数码管的位选
dig[1]<=8'hbf;//第1个数码管的位选
dig[2]<=8'hdf;//第2个数码管的位选
dig[3]<=8'hef;//第3个数码管的位选
dig[4]<=8'hf7;//第4个数码管的位选
dig[5]<=8'hfb;//第5个数码管的位选
dig[6]<=8'hfd;//第6个数码管的位选
dig[7]<=8'hfe;//第7个数码管的位选
end
always@(posedge clk)//每位数码管亮的时间为1ms
begin
cnt=cnt+1'b1;
if(cnt<16'd50_000)
begin
wela=dig[0];
dula=seg[hour/4'd10];//显示时钟的高位
end
else if(cnt<100_000)
begin
wela=dig[1];
dula=seg[hour%4'd10];//显示时钟的低位
end
else if(cnt<150_000)
begin
wela=dig[2];
dula=8'hbf;//显示-
end
else if(cnt<200_000)
begin
wela=dig[3];
dula=seg[minute/4'd10];//显示分钟的高位
end
else if(cnt<250_000)
begin
wela=dig[4];
dula=seg[minute%4'd10];//显示分钟的低位
end
else if(cnt<300_000)
begin
wela=dig[5];
dula=8'hbf;//显示-
end
else if(cnt<350_000)
begin
wela=dig[6];
dula=seg[second/4'd10];//显示秒钟的高位
end
else if(cnt<400_000)
begin
wela=dig[7];
dula=seg[second%4'd10];//显示秒钟的低位
end
else cnt=0;//显示完最后一位后cnt清零
end
always@(posedge clk)
begin
counter=counter+1'b1;
if(counter==26'd50_000_000)//判断是否到1s
begin
counter=0;
second=second+1'b1;//每过一秒钟秒钟加1
if(second==60)
begin
second=0;//秒钟清零
minute=minute+1'b1;//每过一分钟分钟加1
if(minute==60)
begin
minute=0;//分钟清零
hour=hour+1'b1;//每过一小时时钟加1
if(hour==24)
begin
hour=0;//时钟清零
end
end
end
end
end
endmodule
请问一下initial语句到底能不能综合啊 ,我这个程序下到开发板上运行结果和我预想的一模一样啊,如果去掉initial语句运行结果就不对啊!