|
VHDL 逻辑操作符
VHDL 提供了 7 种逻辑操作符 , 如 下 表所示。在 VHDL 程序中 , 逻辑操作符的具体 使用 规则如下所示 :
|
|
|
逻辑操作符 |
操作符的逻辑功能 |
逻辑操作符 |
操作符的逻辑功能 |
NOT |
逻辑非 |
NOR |
逻辑或非 |
AND |
逻辑与 |
XOR |
逻辑异或 |
NAND |
逻辑与非 |
XNOR |
逻辑异或非 |
OR |
逻辑或 |
|
|
1) 逻辑操作符可以应用的数据类型包括 Boolean , bit , std_ulogic , bit _ vector , std _u_ logic_vector 、 std_ ulogic 的子类型以及它们的数组类型。
2) 二元逻辑操作符左右两边对象的数据类型必须相同。
3) 对于数组的逻辑运算来说 , 要求数组的维数必须相同 , 其结果也是相同维数的数组.
4) 7 种逻辑操作符中 , NOT 的优先级最高 , 其他 6 个逻辑操作符的优先级相同。
5) AND , OR , NAND , NOR 通常称为 " 短路操作符 ", 即只有左边的操作结果不能确定时才执行右边的操作。其中 , AND , NAND 在左边的操作结果为 " 1 " 或者 "true" 时才执行右边的操作 ; OR , NOR 只有在左边的操作结果为 "0" 或者 " false" 时才执行右边的操作。
6) 高级编程语言中的逻辑操作符有自左向右或是自右向左的优先级顺序 , 但是 VHDL 中的逻辑操作符是没有左右优先级差别的 , 这时设计人员经常通过加括号的方法来解决这个优先级差别问题。例如 :
q <= xl AND x2 OR NOT x3 AND x4;
上面的程序语句在编译时将会有语法错误 , 原因是编译工具不知道将从何处开始进行逻辑运算。对于这种情况 , 设计人员可以采用加括号的方法来解决。这时将上面的语句修改成下面的形式 :
q <= (xl AND x2) OR (NOT x3 AND x4);
这时再进行编译就不会出现语法错误了。不难看出 , 通过对表达式进行加括号的方法可以确定表达式的具体执行顺序, 从而解决了逻辑操作符没有左右优先级差别的问题。
|