案例陈述中的案例陈述

时间:2013-10-10 19:54:55

标签: vhdl fpga intel-fpga

可合成使用:

    {li> case语句case声明 {li> case声明if声明 {li> if语句case声明

我可以编译它而没有任何错误,但我仍然不确定它是否会弄乱硬件结构并使其变得复杂。

我这样做的原因是:

我有几个状态(状态机),并且让它们通过所有状态我使用case语句。但我还需要在其中一些状态中制定一些条件(caseif s),其中一些条件非常大。

2 个答案:

答案 0 :(得分:0)

IEEE Std 1076-2008(LRM)附件J参考IEEE Std 1076.6-2004,IEEE标准VHDL寄存器传输级(RTL)综合,其中支持案例陈述和案例陈述替代(实际选择和相关的语句序列)可以指定顺序语句,包括case语句。

所以答案是肯定的,你应该总体上期望在case语句备选中能够合成case语句。特定供应商是否完全支持1076.6是一个单独的问题。

答案 1 :(得分:0)

合成器没有理由不应该处理嵌套的ifcase。事实上,我过去曾做过很多次。

我认为合成器的算法在逻辑实现方面只将if视为case语句的2分支版本,因此决策函数的类型不是问题。嵌套它们只会导致它为每个决策创建一组逻辑,这在嵌套决策的情况下是级联的。

如果您发现它不起作用,请提交错误报告!

当然,如果您有非常激进的时序约束和许多嵌套条件,您可能会发现合成器产生的逻辑虽然正确,但速度不足以满足您的时钟周期目标。在这种情况下,除了重构逻辑以减少决策的深度之外,没有什么可以做的。