HDLBits刷题Day23,3.2.5.7 Simple FSM 3 (asynchronous reset) - 3.2.5.8 Simple FSM 3 (synchronous reset)

联系3.2.5.5和3.2.5.6来看
3.2.5.7 Simple FSM 3 (asynchronous reset)

问题描述

下面是一输入一输出四状态的摩尔状态机的状态转移表。实现这个状态机。包括将 FSM 重置为状态 A 的异步重置。

代码:

module top_module(
    input clk,
    input in,
    input areset,
    output out); //
    reg [1:0] state,next_state;
    parameter A=2'b00,B=2'b01,C=2'b10,D=2'b11;
    // State transition logic
    always @(*) begin
        case(state)
            A:next_state=in?B:A;
            B:next_state=in?B:C;
            C:next_state=in?D:A;
            D:next_state=in?B:C;
        endcase
    end
    // State flip-flops with asynchronous reset
	always @(posedge clk or posedge areset) begin
        if(areset) state<=A;
        else state<=next_state;
    end
    // Output logic
    assign out=(state==D);
endmodule

 

3.2.5.8 Simple FSM 3 (synchronous reset)

问题描述

以下是一输入一输出四状态的摩尔状态机的状态转移表。实现这个状态机。包括将 FSM 重置为状态 A 的同步重置。(这与Fsm3的问题相同,但有同步重置。)

代码:

module top_module(
    input clk,
    input in,
    input reset,
    output out); //
    reg [1:0] state,next_state;
    parameter A=2'b00,B=2'b01,C=2'b10,D=2'b11;
    // State transition logic
    always @(*) begin
        case(state)
            A:next_state=in?B:A;
            B:next_state=in?B:C;
            C:next_state=in?D:A;
            D:next_state=in?B:C;
        endcase
    end
    // State flip-flops with synchronous reset
	always @(posedge clk) begin
        if(reset) state<=A;
        else state<=next_state;
    end
    // Output logic
    assign out=(state==D);
endmodule

你可能感兴趣的:(HDLBits刷题,fpga开发,算法,硬件工程)