Verilog 状态机状态/next_state 风格

问题描述 投票:0回答:1

我是一名 Verilog 初学者,我正在尝试了解在常见 FPGA 平台上实现 FSM 的最佳方法。

我看过很多论文(例如,this)鼓励这样的

state
/
next_state
风格:

always @(posedge clock)
  state <= next_state;

always @(posedge clock)
  [...some logic that sets next_state...]

我觉得这很令人困惑,因为它会插入一个额外的、不必要的时钟周期。例如,如果第二个

always
块在时钟
next_state
更新
N
,那么在时钟
N+1
state
最初仍将具有其旧值,并且不保证已更新为
next_state
直到时钟
N+2
。 (如有错误请指正。)

为什么这种风格被认为是最佳实践,因为它会导致在每次状态变化时插入额外的时钟周期?

verilog fpga hdl fsm
1个回答
0
投票

如有错误请指正。

您链接到的论文没有推荐您的问题所述内容。

论文确实推荐了 2 个

always
块:

  1. 一个连续块设置当前状态
  2. 一个组合块设置下一个状态

例如,请参阅部分:

  1. 两个始终阻止FSM风格(好风格)
always @(posedge clock)
  state <= next_state;

always @(state or ...)
  [...some logic that sets next_state...]
© www.soinside.com 2019 - 2024. All rights reserved.