• initial 语句

  • 2012-01-21 09:50:08 发表
  • 标签:

/**************************************
文件名: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语句运行结果就不对啊!