verilog为什么不满足要求。.

2019-07-16 01:56发布

能自动一次显示出数字 0123456789(自然数列),13579(奇数列) 02468(偶数列),0123456701(音乐符号序列);然后再从头循环;
2
.打开电源自动复位,从自然数列开始显示。
我设计的程序好像没有进入状态一样,这是怎么回事?谢谢大神啊
wen.PNG
wen1.PNG
wen2.PNG
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
zhoukuikui
2019-07-16 15:35
module shumaxianshikongzhi( input clk,clear,
                                                        output reg[3:0] Q);
                reg[1:0] state;
                reg flag;
                localparam S0=2'b00,
                                   S1=2'b01,
                                   S2=2'b10,
                                   S3=2'b11;
                always@(posedge clk)
                begin
                        if(!clear)
                        begin
                                state<=S0;
                                Q<=4'b0000;
                                flag<=1'b0;
                        end
                        else
                        case (state)
                        S0: begin
                                        if(Q==4'b1001)
                                        begin
                                                Q<=4'b0001;
                                                state<=S1;
                                        end
                                        else
                                                Q<=Q+1'b1;
                                end
                        S1: begin
                                        if(Q==4'b1001)
                                        begin
                                                Q<=4'b0010;
                                                state<=S2;
                                        end
                                        else
                                                Q<=Q+2'b10;
                                end
                        S2: begin
                                        if(Q==4'b1000)
                                        begin
                                                Q<=4'b0000;
                                                state<=S3;
                                        end
                                        else
                                                Q<=Q+2'b10;
                                end
                        S3: begin
                                        if(Q==4'b0111)
                                        begin
                                                Q<=4'b0000;
                                                flag<=1'b1;
                                        end
                                        else
                                        if(Q==4'b0001 && flag==1'b1)
                                        begin
                                                Q<=4'b0000;
                                                state<=S0;
                                        end
                                        else
                                                Q<=Q+1'b1;
                                end
                        endcase
                end
endmodule

一周热门 更多>