四值信号,包含x z的与或、逻辑与或,&、&&区别;队列的即时更改

module tb;
logic [1:0] aa = 2'b1z;
logic [1:0] bb = 2'b10; 

logic [1:0] cc = 2'b11;
logic [1:0] dd = 2'b1x;


logic result0;
logic [1:0] result1;
logic [1:0] result2; 
logic [1:0] result_lor;
logic [1:0] result_land;

initial begin
    result0 = (aa==bb);
    $display("1z == 10  = %0b",result0); 
    result0 = (aa===bb);
    $display("1z === 10 = %0b",result0); 

    result1 = aa | bb;
    result_lor = aa || bb;
    result2 = aa & bb; 
    result_land = aa && bb; 

    $display("1z |  10 = %0b",result1);
    $display("1x |  10 = %0b",bb | dd);
    $display("1x |  11 = %0b",dd | 2'b11);
    $display("1z || 10 = %0b",result_lor); 
    $display("1x || 10 = %0b",bb || dd);

    $display("1z &  10 = %0b",result2);
    $display("1z && 10 = %0b",result_land); 
    result_land = bb && cc;
    $display("11 && 10 = %0d",result_land);
    result_land = bb && 2'b00;
    $display("11 && 00 = %0d",result_land);

    $display("11 &  1x = %0b",2'b11 & 2'b1x); 
    $display("11 &  1z = %0b",2'b11 & 2'b1z); 


end

endmodule 

结果:

# 1z == 10  = x
# 1z === 10 = 0
# 1z |  10 = 1x
# 1x |  10 = 1x
# 1x |  11 = 11
# 1z || 10 = 1
# 1x || 10 = 1
# 1z &  10 = 10
# 1z && 10 = 1
# 11 && 10 = 1
# 11 && 00 = 0
# 11 &  1x = 1x
# 11 &  1z = 1x

在四值信号中,x和z 会被认为是x,与0或是x,与1与是x。

&、| 是按位与或。

&&、|| 是逻辑与或,两边以真假判定,非0为真。结果为1位表示。

2.队列

module tb2;
initial begin
int AAA[$] = {1,2,3,4,5,6,7,8,9};
int temp;
foreach(AAA[i]) begin
    temp = AAA.pop_front;
    $display("AAA[%0d] = %0h",i,temp);
end
end
endmodule

结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值