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

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

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-16 23:21
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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