HDLBits Design a Moore FSM

对于该题,出了S1,S2,S3对应的状态机外不难写外,还有dfr的设置,其变化阶段在每次时钟的上升沿时判断,当S有变化时判断是水位线往下还是往上,往下走则dfr=1,往上则为0,其它情况不变

module top_module (
    input clk,
    input reset,
    input [3:1] s,
    output fr3,
    output fr2,
    output fr1,
    output dfr
); 
    reg [3:0] fr,next_fr;
    always @(*) begin
        if(s[3:1]==3'b111) begin
            next_fr[3:1]=3'b000;
        end
        else if(s[3:1]==3'b011)begin
            next_fr[3:1]=3'b100;
        end
        else if(s[3:1]==3'b001) begin
            next_fr[3:1]=3'b110;
        end
        else if(s[3:1]==3'b000) begin
            next_fr[3:1]=3'b111;
        end           
       
    end
    
    always @(*)begin
        
    end
    always @(posedge clk) begin
        if(reset)begin
            fr<=4'b1111;
        end
        else begin
            fr[3:1]<=next_fr[3:1];
            if(next_fr[3:1]!=fr[3:1])begin
                if(next_fr[3:1]>fr[3:1]) fr[0]<=1'b1;
                else fr[0]<=1'b0;
            end
        end
    end
    assign {fr1,fr2,fr3,dfr}=fr;
    
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值