Problem 117 3.2.4.3 Conway's Game of Life 16x16(Conwaylife)
进入一个漫长的状态机栏目,我们将讨论多道学习状态机的题目。
图中是一个有两个状态的摩尔型状态机。有一个输入信号与一个输出信号。本题中需要实现图中的状态机,注意复位后状态为 B,复位采用异步复位。
//T125
3.2.5.8 Simple FSM 3 (synchronous reset)(Fsm3s)
Fsm3s - HDLBits (01xz.net)https://hdlbits.01xz.net/wiki/Fsm3s
仿真波形中一直有一处因为时序不能匹配:
下面是错误的代码
always@(*)begin if(reset) state <= 2'b00; else state <= next_state; end always@(posedge clk)begin if(in) case(state) 2'b00: next_state <= 2'b01; 2'b01: next_state <= 2'b01; 2'b10: next_state <= 2'b11; 2'b11: next_state <= 2'b01; endcase else case(state) 2'b00: next_state <= 2'b00; 2'b01: next_state <= 2'b10; 2'b10: next_state <= 2'b00; 2'b11: next_state <= 2'b10; endcase end assign out = state[1] & state[0];
务必牢记!!!!状态机是:时序——逻辑——连线。同步和异步都可以是是三个always块