可合成使用:
case
语句case
声明
{li> case
声明if
声明
{li> if
语句case
声明
我可以编译它而没有任何错误,但我仍然不确定它是否会弄乱硬件结构并使其变得复杂。
我这样做的原因是:
我有几个状态(状态机),并且让它们通过所有状态我使用case语句。但我还需要在其中一些状态中制定一些条件(case
和if
s),其中一些条件非常大。
答案 0 :(得分:0)
IEEE Std 1076-2008(LRM)附件J参考IEEE Std 1076.6-2004,IEEE标准VHDL寄存器传输级(RTL)综合,其中支持案例陈述和案例陈述替代(实际选择和相关的语句序列)可以指定顺序语句,包括case语句。
所以答案是肯定的,你应该总体上期望在case语句备选中能够合成case语句。特定供应商是否完全支持1076.6是一个单独的问题。
答案 1 :(得分:0)
合成器没有理由不应该处理嵌套的if
和case
。事实上,我过去曾做过很多次。
我认为合成器的算法在逻辑实现方面只将if
视为case
语句的2分支版本,因此决策函数的类型不是问题。嵌套它们只会导致它为每个决策创建一组逻辑,这在嵌套决策的情况下是级联的。
如果您发现它不起作用,请提交错误报告!
当然,如果您有非常激进的时序约束和许多嵌套条件,您可能会发现合成器产生的逻辑虽然正确,但速度不足以满足您的时钟周期目标。在这种情况下,除了重构逻辑以减少决策的深度之外,没有什么可以做的。