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

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

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

这是一个比较标准的状态机题目。

module seq_circuit(
   input                C   ,
   input                clk ,
   input                rst_n,
 
   output   wire        Y   
);
    reg [1:0] state, nstate;
    reg Y_r;
    
  	// 当前状态切换,时序逻辑
    always@(posedge clk or negedge rst_n) begin
        if(~rst_n) 
            state <= 2'b00;
        else
            state <= nstate;
    end
    
  	// 下个状态更新,组合逻辑
    always@(*)
        case(state)
            2'b00  : nstate = C? 2'b01: 2'b00;
            2'b01  : nstate = C? 2'b01: 2'b11;
            2'b10  : nstate = C? 2'b10: 2'b00;
            2'b11  : nstate = C? 2'b10: 2'b11;
            default: nstate = 2'b00;
        endcase
    
  	// 输出,组合逻辑
    always@(*) begin
        if(~rst_n)
            Y_r <= 0;
        else 
            case(state)
                2'b00  : Y_r = C? 1'b0: 1'b0;
                2'b01  : Y_r = C? 1'b0: 1'b0;
                2'b10  : Y_r = C? 1'b1: 1'b0;
                2'b11  : Y_r = C? 1'b1: 1'b1;
                default: Y_r = 1'b00;
            endcase
    end
    assign Y = Y_r;
endmodule
Verilog篇题解 文章被收录于专栏

本人对牛客网verilog篇题目一些理解

全部评论
老哥你这是二段式状态机
点赞 回复 分享
发布于 2022-05-08 21:36

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务