1

是否可以合成使用:

  • case语句中的case语句
  • case语句中的if语句
  • if语句中的case语句

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

我这样做的原因:

我有几个状态(状态机),为了让它们遍历所有状态,我使用案例语句。但是我还需要在其中一些状态中设置一些条件(cases 和ifs),其中一些是相当大的。

4

2 回答 2

0

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

所以答案是肯定的,通常情况下,您应该期望在 case 语句替代方案中能够合成 case 语句。特定供应商是否完全支持 1076.6 是一个单独的问题。

于 2013-10-10T20:57:19.003 回答
0

合成器没有理由不处理嵌套if的 s 和cases。事实上,我过去已经做过很多次了。

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

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

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

于 2013-10-11T15:31:18.273 回答