给定以下具有 1 个输入和 2 个输出的状态机:

 

 

假设此状态机使用 one-hot 编码,其中 state[0] 到 state[9] 分别对应于状态 S0 到 S9。 除非另有说明,否则输出为零。

实现状态机的 状态转换逻辑 和 输出逻辑 部分(但不是状态触发器)。 中获得当前状态, state[9:0] 并且必须生成 next_state[9:0] 和两个输出。 假设 one-hot 编码,通过检查推导逻辑方程。 (测试台将使用非一个热输入进行测试,以确保您不会尝试做更复杂的事情)

module top_module(
    input in,
    input [9:0] state,
    output [9:0] next_state,
    output out1,
    output out2);
    assign next_state[0]=((|state[4:0])|(|state[9:7]))&~in;
    assign next_state[1]=((|state[9:8])|state[0])∈
    assign next_state[2]=state[1]∈
    assign next_state[3]=state[2]∈
    assign next_state[4]=state[3]∈
    assign next_state[5]=state[4]∈
    assign next_state[6]=state[5]∈
    assign next_state[7]=(|state[7:6])∈
    assign next_state[8]=state[5]&~in;
    assign next_state[9]=state[6]&~in;
    assign out1=|state[9:8];
    assign out2=state[7]|state[9];
endmodule

 

posted on 2022-05-13 16:07  USSTer  阅读(369)  评论(0)    收藏  举报