题解 | #根据状态转移图实现时序电路#

根据状态转移图实现时序电路

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

`timescale 1ns/1ns

module seq_circuit(
   input                C   ,
   input                clk ,
   input                rst_n,
 
   output   wire        Y   
);

parameter s1 = 4'b0001;
parameter s2 = 4'b0010;
parameter s3 = 4'b0100;
parameter s4 = 4'b1000;

reg  [3:0]statue;
reg       y_reg;

always@(posedge clk or negedge rst_n)
    if (rst_n == 1'b0)
        statue <= s1;
    else 
        case(statue)
            s1 : if (C == 1'b1)
                        statue <= s2;
                else if(C == 1'b0)
                        statue <= s1;
            s2 : if(C == 1'b1)
                        statue <= s2;
                else if(C == 1'b0)
                        statue <= s3;
            s3 : if (C == 1'b1)
                        statue <= s4;
                else if(C == 1'b0)
                        statue <= s3;
            s4 : if (C == 1'b1)
                        statue <= s4;
                else if(C == 1'b0)
                        statue <= s1;
            default : statue <= s1;
        endcase

always@(*)
    if (rst_n == 1'b0)
        y_reg <= 1'b0;
    else if (statue == s3)
        y_reg <= 1'b1;
    else if (statue == s4 && C == 1'b1)
        y_reg <= 1'b1;
    else 
        y_reg <= 1'b0;

assign Y = y_reg;

endmodule

这里采用二段式状态机进行解题,第一段为状态赋值块,第二段是输出赋值块。

(个人认为二段式比三段式好理解一点)

全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
09-20 22:39
中南大学
故事和酒66:意思就是用了AI辅助也不一定做得出来,还是有区分度,不然他不会让你用的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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