Intel® Quartus® Prime Pro Edition用户指南: 设计建议

ID 683082
日期 9/28/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

1.6.4. 状态机HDL指南

综合工具可以在综合过程中对Verilog HDL和VHDL状态机进行识别和编码。本节介绍了使用状态机时确保最佳结果的指南。

可以将一段代码识别为状态机的综合工具可以执行优化,以改善设计区域和性能。例如,此工具可以重新编码状态变量以提高结果的质量,或者通过状态机的已知属性来优化设计的其他部分。

为了获得最佳结果,综合工具通常对FPGA器件使用独热(one-hot)编码,对CPLD器件使用最小比特(minimal-bit)编码,尽管实现的选择可能因不同的状态机和不同的器件而异。有关控制状态机编码的技术,请参考综合工具文档。

为确保正确识别和推断状态机并提高结果质量,对于Verilog HDL和VHDL,请遵循以下准则:

  • 将默认值分配给从状态机派生的输出,以便综合不会生成不需要的锁存器。
  • 将状态机逻辑与所有算术函数和数据路径分开,包括分配输出值。
  • 对于其中多个状态执行相同操作的设计,请在状态机外部定义该操作,并指示状态机的输出逻辑使用该值。
  • 确保一个定义的上电状态,包括一个简单的异步或同步reset。在状态机包含更复杂的reset逻辑(例如异步reset和异步负载)的设计中, Intel® Quartus® Prime软件推断常规逻辑而不是状态机。

如果状态机由于器件问题而进入非法状态,那么该设计可能会停止正确运行,直到状态机的下次reset为止。综合工具默认情况下不提供这种情况。如果系统中存在某些故障,那么其他所有寄存器也会遇到相同的问题。假设设计从未特意进入此状态,那么default或者when others子句不影响此操作时。如果正常状态机操作无法达到默认状态,那么综合工具会删除默认状态生成的任何逻辑。

很多综合工具(包括 Intel® Quartus® Prime 综合)可以选择实现安全状态机。 Intel® Quartus® Prime软件会插入额外的逻辑来检测非法状态,并强制状态机转换到reset状态。当状态机可以进入非法状态时,例如,当状态机有一个源自另一个时钟域的控制输入(例如,一个双时钟FIFO的控制逻辑)时,安全状态机很有用。

此选项通过强制状态机进入reset状态来保护状态机。设计中的所有其他寄存器均不受这种方式的保护。对于具有异步输入的设计,最佳实践是使用同步寄存器链,而不是依赖于安全状态机选项。