always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt_1hz<=26'd0;
else if(delay_cnt_1hz==26'd49999999)
delay_cnt_1hz<=26'd0;
else
delay_cnt_1hz<=delay_cnt_1hz+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
disp_dat<=4'd0;
else if(delay_cnt==16'd49999)
disp_dat<=disp_dat+1'b1;
else
disp_dat<=disp_dat;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
count<=6'd0;
else if(delay_cnt_1hz==26'd49999999)
count<=count+1'b1;
else if(count==60)
count<=6'd0;
else
count<=count;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
shi<=4'd0;
else
shi<=count/10;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
ge<=4'd0;
else
ge<=count%10;
end
sys_rstn ,
sm_seg ,
sm_bit
);
input sys_clk ;
input sys_rstn ;
output [7:0] sm_seg ;
output [7:0] sm_bit ;
reg [7:0] sm_seg ;
reg [7:0] sm_bit ;
reg [4:0] dataout_buf ;
reg [3:0] shi ;
reg [3:0] ge ;
reg [5:0] count ;
reg [1:0] disp_dat ;
reg [15:0] delay_cnt ;
reg [25:0] delay_cnt_1hz ;
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt<=16'd0;
else if(delay_cnt==16'd49999)
delay_cnt<=16'd0;
else
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt_1hz<=26'd0;
else if(delay_cnt_1hz==26'd49999999)
delay_cnt_1hz<=26'd0;
else
delay_cnt_1hz<=delay_cnt_1hz+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
disp_dat<=4'd0;
else if(delay_cnt==16'd49999)
disp_dat<=disp_dat+1'b1;
else
disp_dat<=disp_dat;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
count<=6'd0;
else if(delay_cnt_1hz==26'd49999999)
count<=count+1'b1;
else if(count==60)
count<=6'd0;
else
count<=count;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
shi<=4'd0;
else
shi<=count/10;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
ge<=4'd0;
else
ge<=count%10;
end
always @(disp_dat)
begin
case(disp_dat)
2'b00 :
sm_bit = 8'b1111_1110;
2'b01 :
sm_bit = 8'b1111_1101;
/* 2'b10 :
sm_bit = 8'b1111_1110;
2'b11 :
sm_bit = 8'b1111_1101;*/
default :
sm_bit = 8'b1111_1110;
endcase
end
always@(sm_bit)
begin
case(sm_bit)
8'b1111_1110:
dataout_buf<=ge;
8'b1111_1101:
dataout_buf<=shi;
/*8'b1111_1011:
dataout_buf=2;
8'b1111_0111:
dataout_buf=3;
8'b1110_1111:
dataout_buf=4;
8'b1101_1111:
dataout_buf=5;
8'b1011_1111:
dataout_buf=6;
8'b0111_1111:
dataout_buf=7;*/
default:
dataout_buf=0;
endcase
end
always@(dataout_buf)
begin
case(dataout_buf)
4'h0 : sm_seg = 8'hc0; // "0"
4'h1 : sm_seg = 8'hf9; // "1"
4'h2 : sm_seg = 8'ha4; // "2"
4'h3 : sm_seg = 8'hb0; // "3"
4'h4 : sm_seg = 8'h99; // "4"
4'h5 : sm_seg = 8'h92; // "5"
4'h6 : sm_seg = 8'h82; // "6"
4'h7 : sm_seg = 8'hf8; // "7"
4'h8 : sm_seg = 8'h80; // "8"
4'h9 : sm_seg = 8'h90; // "9"
4'ha : sm_seg = 8'h88; // "a"
4'hb : sm_seg = 8'h83; // "b"
4'hc : sm_seg = 8'hc6; // "c"
4'hd : sm_seg = 8'ha1; // "d"
4'he : sm_seg = 8'h86; // "e"
4'hf : sm_seg = 8'h8e; // "f"
default :
sm_seg = 8'hc0; // "0"
endcase
end
endmodule
一周热门 更多>