这个fpga数码管动态显示程序错误吗?动态扫描不出来

2019-07-15 20:50发布

各位大哥帮我看看,始终动态扫描不来,只能显示第一个数码管
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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
黑桃ACE
1楼-- · 2019-07-16 02:45
 精彩回答 2  元偷偷看……
你的微笑如茉莉
2楼-- · 2019-07-16 05:41
只能显示一个数码管 大概是led_cnt一直是零,看了好多遍,实在找不出原因
zhmlm
3楼-- · 2019-07-16 05:46
这里面有点其他瑕疵 time_cnt; time_cnt_n你定义的是33位的,不是32位
HUANGYEZHIYING
4楼-- · 2019-07-16 10:08
用组合逻辑做累加会不会出问题呢?
zhmlm
5楼-- · 2019-07-16 12:38
这是你代码跑出来的时序 你自己没写好
aaa.png
liujinyi016
6楼-- · 2019-07-16 13:41
 精彩回答 2  元偷偷看……

一周热门 更多>