Quartus II中的Safe State Machine编译选项对FSM在FPGA中的实现方式有很大影响。 riple
这一影响在RTL视图中不可见。 riple
这一选项是否引入了“Booby Trap”电路?观察Technology Map视图,可以发现一些原有的寄存器合并优化不执行了,实际的寄存器个数和HDL代码中描述的个数一样了,而且增加了一些组合逻辑。“Booby Trap”电路的恢复状态是哪一个?是不是default语句指定的状态? riple
在StateCAD工具中的Options -> Machine Attribute -> Default State选项中可以指定恢复电路的缺省状态,在生成的HDL代码中可以很容易地找到对应的“Booby Trap”电路。在Quartus II中针对这一HDL代码编译后,可以在RTL视图中找到对应的电路。 riple
在手工编写的HDL代码中,default语句并不能产生相应的恢复电路,综合工具通常忽略这一语句,为的是简化逻辑。只有像StateCAD生成的代码中描述的恢复电路才能被综合工具有效识别。 riple
可以得出这样的结论:Quartus II对“Booby Trap”电路的插入是隐式的,StateCAD是显式的。 riple
“安全”的FSM意味着:1. “Booby Trap”电路的插入;2. 寄存器合并优化失效了;3. 电路的时序性能下降了;4. 在正常使用环境下,无需过多考虑FSM“跑飞”的问题,也就不需要选择“安全”选项。 riple
ash_riple_768180695 2008-7-23 22:52
用户60452 2008-7-23 21:53