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

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

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

`timescale 1ns/1ns

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

    reg [1:0]cur_state;
    reg [1:0]nex_state;

    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
            cur_state<=0;
            nex_state<=0;
        end
        else begin
            cur_state<=nex_state;
        end
    end

    always@(*)begin
        case(cur_state)
        2'b00:nex_state=(C==1)?2'b01:2'b00;
        2'b01:nex_state=(C==1)?2'b01:2'b11;
        2'b10:nex_state=(C==1)?2'b10:2'b00;
        2'b11:nex_state=(C==1)?2'b10:2'b11;
        endcase
    end

    assign Y=((cur_state==2'b11)|((cur_state==2'b10)&&(C==1)))?1:0;

endmodule

从这题来看,并不需要在设置一个y_reg存储,应该是因为直接用了assign,而没有用always块,所以可以直接使用,如果设置了反而会报错,如下:

|reg Y_reg; cannot be driven by primitives or continuous assignment.
全部评论

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务