如何在VHDL中编写布尔函数?

时间:2013-10-25 12:49:51

标签: vhdl boolean-logic

我有一个布尔函数最小化,我想用VHDL创建它。我用电路创建它并且它工作得很完美,但是当我使用VHDL创建它时,它会提供不同的输出。有人可以检查我的布尔函数和代码并帮助调试吗?

这是布尔函数

Q0 = A0 + A1 + (~A2 * ~A3 * ~B0 * (B1 + ~B2 * B3))

这是我的布尔函数代码:

Q0 <= (A0) or (A1) or (not A2 and not A3 and not B0 and B1) or (not A2 and not A3 and not B0 and not B2 and B3);

1 个答案:

答案 0 :(得分:1)

在重写VHDL时,您似乎认为*具有更高的值 布尔表达式中的优先级高于+,因此布尔值的最后一部分 表达式如下:

B1 + ~B2 * B3  = B1 + (~B2 * B3)

但是,在VHDL中,andor运算符具有相同的优先级 左联想。 not运算符具有更高的优先级,因此可以在之前编写 参数没有&#34;()&#34;。

因此,如果+代表or*代表and~代表not,那么 VHDL中上述表达式的最后一部分是:

B1 or not B2 and B3 = (B1 or not B2) and B3

用VHDL运算符优先级编写的原始表达式是:

... ~B0 * ((B1 + ~B2) * B3)

因此,当应用*~B0的VHDL运算符优先级时,+之后的B1 + ~B2 * B3无法在* +上分发。