各位大哥帮我看看,始终动态扫描不来,只能显示第一个数码管
module seg7
(
CLK_50M,RST_N,
SEG_DATA,SEG_EN,LED
);
input CLK_50M;
input RST_N;
output reg[7:0] SEG_DATA;
output reg[5:0] SEG_EN;
output reg[3:0] LED;
reg[32:0] time_cnt;
reg[32:0] time_cnt_n;
reg[2:0] led_cnt;
reg[2:0] led_cnt_n;
parameter SET_TIME_10MS = 20'd50_000_0;
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
time_cnt <= 32'h0;
else
time_cnt <= time_cnt_n;
end
always@(*)
begin
if(time_cnt == SET_TIME_10MS)
time_cnt_n = 32'h0;
else
time_cnt_n = time_cnt + 32'h1;
end
always@(posedge CLK_50M or negedge RST_N)
begin
if(!RST_N)
led_cnt <= 3'h0;
else
led_cnt <=led_cnt_n;
end
always@(*)
begin
if(led_cnt == SET_TIME_10MS)
led_cnt_n = led_cnt + 3'h1;
else if(led_cnt == 3'h6)
led_cnt_n = 3'd0;
else
led_cnt_n = led_cnt;
end
always@(*)
begin
case(led_cnt)
3'd0 : SEG_EN = 6'b111110;
3'd1 : SEG_EN = 6'b111101;
3'd2 : SEG_EN = 6'b111011;
3'd3 : SEG_EN = 6'b110111;
3'd4 : SEG_EN = 6'b101111;
3'd5 : SEG_EN = 6'b011111;
default : SEG_EN = 6'b111111;
endcase
end
always@(*)
begin
case(led_cnt)
3'd0 : SEG_DATA = ~8'b1011_1111;
3'd1 : SEG_DATA = ~8'b1000_0110;
3'd2 : SEG_DATA = ~8'b1101_1011;
3'd3 : SEG_DATA = ~8'b1100_1111;
3'd4 : SEG_DATA = ~8'b1110_0110;
3'd5 : SEG_DATA = ~8'b1110_1101;
default : SEG_DATA = ~8'b1011_1111;
endcase
end
endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>