|
夏老师你好,这是我的一个电子钟程序,当我下载到板子上仿真的时候出现了没有定义的数码管亮了,定义的数码管亮度很暗,但显示的结果是对的
,请指点一下
module clock1(clr,clk,segdat,sl);
input clr,clk;
output [7:0] segdat;
output [3:0] sl;
reg[36:0] count;
reg[7:0] sec,min;
reg[7:0] segdat_reg;
reg[3:0] sl_reg;
reg[3:0] disp_dat;
reg second;
reg cn;
parameter CLK_FREQ = 26'd50_000_000;//系统时钟
parameter DCLK_FREQ = 26'd2; //输出频率10Hz
always@(posedge clk)
begin
if(count<(CLK_FREQ/DCLK_FREQ))
count <= count + 1'b1;
else
begin
count <= 0;
second <= ~second;
end
end
always@(count[14:13])
begin
case(count[14:13])
2'b00:
begin
disp_dat= sec[3:0];
sl_reg = 4'b1110;
end
2'b01:
begin
disp_dat=sec[7:4];
sl_reg=4'b1101;
end
2'b10:
begin
disp_dat=min[3:0];
sl_reg=4'b1011;
end
2'b11:
begin
disp_dat=min[7:4];
sl_reg=4'b0111;
end
endcase
end
always @(posedge second )
begin
if(!clr)
begin
sec[7:0]=8'h0;
cn=0;
end
else
begin
cn=0;
sec[3:0]=sec[3:0]+1'b1;
if(sec[3:0]==4'd10)
begin
sec[3:0]=4'd0;
sec[7:4]=sec[7:4]+1'b1;
if(sec[7:4]==4'd6)
begin
sec[7:4]=4'd0;
cn=1;
end
end
end
end
always @(posedge cn)
begin
if(!clr)
begin
min[7:0]=8'h0;
end
else
begin
min[3:0]=min[3:0]+1'b1;
if(min[3:0]==4'd10)
begin
min[3:0]=4'd0;
min[7:4]=min[7:4]+1'b1;
if(min[7:4]==4'd6)
begin
min[7:4]=4'd0;
end
end
end
end
always@(disp_dat or sl)
begin
case(disp_dat)
4'h0:segdat_reg=8'hc0;
4'h1:segdat_reg=8'hf9;
4'h2:segdat_reg=8'ha4;
4'h3:segdat_reg=8'hb0;
4'h4:segdat_reg=8'h99;
4'h5:segdat_reg=8'h92;
4'h6:segdat_reg=8'h82;
4'h7:segdat_reg=8'hf8;
4'h8:segdat_reg=8'h80;
4'h9:segdat_reg=8'h90;
default:segdat_reg=8'hc0;
endcase
end
assign segdat=segdat_reg;
assign sl=sl_reg;
endmodule |
|