题解 | #根据状态转移写状态机-三段式#

https://www.nowcoder.com/practice/d8394a6d31754e73ace8c394e9465e2a

`timescale 1ns/1ns

module fsm1(
    input wire clk  ,
    input wire rst  ,
    input wire data ,
    output reg flag
);
//*************code***********//
parameter s0 = 3'b000;
parameter s1 = 3'b001;
parameter s2 = 3'b010;
parameter s3 = 3'b100;
    
    reg [2:0] cs,ns;
    always@(posedge clk or negedge rst) begin
        if(!rst)    cs<='b0;
        else        cs<=ns;
    end

    always @(*) begin
        case (cs)
            s0: ns=data ? s1:s0;
            s1: ns=data ? s2:s1;
            s2: ns=data ? s3:s2;
            s3: ns=data ? s0:s3;
            default: ns = s0;
        endcase
    end

    always @(posedge clk or negedge rst) begin
        if(!rst)    flag<=0;
        else if((cs==s3)&&data) flag<=1;
        else flag<=0;
    end

//*************code***********//
endmodule
全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务