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

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

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.
全部评论

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务