1

我有一个布尔函数最小化,我想使用 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);
4

1 回答 1

1

在对 VHDL 的重写中,您似乎假设*具有比布尔表达式更高的优先级+,因此布尔表达式的最后一部分如下:

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

然而,在 VHDL 中,andor运算符具有相同的优先级并且是左结合的。运算符具有更高的not优先级,因此可以在没有“()”的参数之前写入。

所以如果+表示or*表示and~表示not,那么上述VHDL表达式的最后一部分就是:

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

因此,使用 VHDL 运算符优先级编写的原始表达式为:

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

因此,在应用 VHDL 运算符优先级时,*后面~B0不能分布在+和之上。B1 + ~B2 * B3*+

于 2013-10-25T13:51:34.073 回答