我有一个布尔函数最小化,我想用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);
答案 0 :(得分:1)
在重写VHDL时,您似乎认为*
具有更高的值
布尔表达式中的优先级高于+
,因此布尔值的最后一部分
表达式如下:
B1 + ~B2 * B3 = B1 + (~B2 * B3)
但是,在VHDL中,and
和or
运算符具有相同的优先级
左联想。 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
无法在*
+
上分发。