Verilog 摩尔机器

Verilog 摩尔机器,verilog,fsm,Verilog,Fsm,我想实现一个MOORE FSM,通过使用2个always块来查找由10个元素组成的数组的最小值和最大值,这两个块使用相同的状态,但位于数组的不同部分。如果我在两个always块中使用相同的状态名,但使用不同的实现(它们中的每一个都影响不同的寄存器),是否有效?是的,这是可能的。事实上,如果您这样做,代码可能会更容易理解,因为您将了解每个寄存器的实现 parameter S_START = 0, S_DO_SOMETHING = 1, S_DO_

我想实现一个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块上修改