Verilog中二等号==和三等号===的用法总结 | 您所在的位置:网站首页 › alotalotof和lotsof三个的区别文库 › Verilog中二等号==和三等号===的用法总结 |
在Verilog HDL语言中,存在着4中等式运算符: == 等于!= 不等于=== 等于!= 不等于 注意:求反号,双等号,三等号之间不能有空格。 这四个运算符都是双目运算符,它要求有两个操作数。 ==和!=又称为逻辑等式运算符,其结果有两个操作数的值决定。由于操作数中某些为可能是不定值x和高阻值z。 而===和!==运算符则不同,它在对操作数进行比较时,对某些位的不定值x和高阻值z也进行比较,两个操作数必须完全一致,其结果才是1,否则为0。 ===和!==运算符常用于case表达式判别,所以又称为case等式运算符。 这四个等式运算符的优先级相同。双等号等式运算符的真值表 ==01xz010xx101xxxxxxxzxxxx双等号:等式两边有x或z,结果就为x。三等号等式运算符 ===01xz0100010100x0010z0001三等号:完全相等结果才为1,否则结果为0。 bresp或rresp为可能为x;条件判断中结果为x,会被转换为0;以下条件中bresp为x时,判断条件并不完整: if((bresp==2'b10)||(bresp==2'b11)) //当bresp为2'bxx时,不会报错,bug `uvm_fatal() else `uvm_info() if((bresp===2'b10)||(bresp===2'b11)) //当bresp为2'bxx时,不会报错,bug `uvm_fatal() else `uvm_info()正确的判定条件如下(不考虑bresp为x0/x1/0x/1x的情况): if((bresp===2'b10)||(bresp===2'b11)||(bresp===2'bxx)) //当bresp为2或3时,报错 `uvm_fatal() else `uvm_info() |
CopyRight 2018-2019 实验室设备网 版权所有 |