使用SignalTap II Logic Analyzer观察信号,有时要观察的信号会被Quartus优化掉,这种情况下可以给信号指定属性。以下例子均使用Verilog。
1. 如果是组合逻辑信号,可以使用keep属性:
(* keep *) wire sig;
2. 如果是寄存器,并且不是零扇出,可以使用preserve属性:
(* preserve *) reg sig;
使用preserve有以下限制:
1)不会从该寄存器推断出状态机;
2)对零扇出寄存器无效。
3. 如果是寄存器,并且是零扇出的,可以使用noprune属性:
(* noprune *) reg sig;
noprune支持以下系列:Arria series, CycloneIII, CycloneIV, StratixIII, Stratix IV, and StratixV。
根据状态机的实际写法,状态机还可以分为一段式、二段式和三段式状态机。
一段式:把整个状态机写在一个always模块中,并且这个模块既包含状态转移,又含有组
合逻辑输入/输出。
二段式:状态切换用时序逻辑,次态输出和信号输出用组合逻辑。
三段式:状态切换用时序逻辑ÿ