'if'vs'when'用于制作多路复用器

Ahm*_*otb 5 hardware vhdl

我被告知使用'when'语句来制作多路复用器但不使用'if'语句,因为它会导致时序错误......我不明白这一点......所以'if'和'when之间有什么区别'?他们在硬件中映射到同一个东西吗?

Moh*_*otb 3

好的,我们首先讨论一下 if 和when 语句之间的区别:

  • 两者都称为数据流设计元素。

当语句

  • 并发语句
  • 不在进程中使用,仅在架构中使用,因为进程是顺序执行的

if 语句

  • 顺序语句
  • 在进程中使用,因为它是顺序语句,而不是在进程外部使用

而且你知道多路复用器是一个不需要进程块的组件,因为它的行为不会随着输入的改变而改变,所以它将在进程之外,所以你必须使用when语句来编写它,因为它是并发语句。如果用if语句来写,可能会出现计时错误。此外,所有参考资料以及 Xilinx 帮助(如果您使用的是 Xilinx)都使用 when 语句而不是 if 语句编写多路复用器块

参考:《数字设计原理与实践》,John F. Wakerly,第 3 版