摩尔机,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 块中被修改。
我想实现一个 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 块中被修改。