摩尔机,Verilog

Moore machine, Verilog

我想实现一个 MOORE FSM,它通过使用 2 个 always 块找到 10 个元素的数组的最小值和最大值,它们都使用相同的状态,但在数组的不同部分。如果我在两个 always 块中使用相同的状态名称但具有不同的实现(每个都影响不同的寄存器),它是否有效?

是的,这是可能的。事实上,如果你这样做,代码可能更容易理解,因为你会理解每个寄存器的实现。

parameter   S_START = 0,
            S_DO_SOMETHING = 1,
            S_DO_ANOTHER = 2,
            S_END = 3

integer current_state = S_START;

always @ (posedge clk)
case (current_state):
 // define state transitions
endcase

always @ (posedge clk)
case (current_state):
 // modify a register according to state
end

always @ (posedge clk)
case (current_state):
 // modify another register according to state
end

只需确保每个寄存器仅在一个 always 块中被修改。