Verilog中“&”和“&&”在硬件中的区别

“&”位与,“&&”逻辑与。  

下面以一个Verilog测试程序为例,说明两者之间的区别:  

   module test (CLK, AA, BB, CC, AOUT, BOUT, COUT, DOUT);
   input CLK;
   input[3:0] AA,BB,CC; 
   output AOUT,BOUT,COUT,DOUT;
   reg AOUT;
   reg BOUT;
   reg COUT;
   reg DOUT;
  

   always @(posedge CLK)//检测时钟上升沿
   begin : u1 

      if (AA && CC && BB)
      begin
         AOUT<=1'b1 ;
      end
      else
      begin

         AOUT<=1'b0 ;
      end
   end

   always @(posedge CLK)//检测时钟上升沿
   begin : u2

       if (AA & CC & BB)
      begin
         BOUT<=1'b1 ;
      end
      else
      begin

         BOUT<=1'b0 ;
      end
   end
 
   
   always @(posedge CLK)//检测时钟上升沿
   begin : u3  

      if ((AA>5) && (CC<8) && (BB>4))
      begin
         COUT<=1'b1 ;
      end
      else
      begin

         COUT<=1'b0 ;
      end
   end
  
   always
@(posedge CLK)//检测时钟上升沿
   begin : u4  

      if ((AA>5) & (CC<8) & (BB>4))
      begin
         DOUT<=1'b1 ;
      end
      else
      begin

         DOUT<=1'b0 ;
      end       
   end
  
endmodule
  

上面三个always @()中分别用到如下三种if判断表达式  

(AA && CC && BB)  

(AA & CC & BB) 

((AA>5) && (CC<8) && (BB>4))  

((AA>5) & (CC<8) & (BB>4))  

下面对照RTL示图对这四条表达式进行逻辑分析  

1、(AA && CC && BB)  

逻辑分析:  

当AA、BB、CC都为非0数时,表达式为“1”。  

那么怎么判断AA、BB、CC为非“0”呢,咱们先分析一下为“0”的情况。当AA为0的时候,AA等于4'b0,即每位都为0,即只需AA的4位矢量之间做一下“逻辑或”运算,AA[3] || AA[2] || AA[1] || AA[0],也可写成(|AA);当4位矢量中只需有一位不为0,那么AA就必然不为“0”。  

整个实现过程就是,先AA、BB、CC各自本身的各位之间做“逻辑或”运算,运算的结果之间做“逻辑与”运算。

 2、(AA & CC & BB)

 逻辑分析:  

表达式(AA & CC & BB)等效为:
((AA[3] & BB[3] & CC[3])  || (AA[2] & BB[2] & CC[2])  || (AA[1] & BB[1] & CC[1]) ||  (AA[0] & BB[0] & CC[0]))

 即只需要其中有一个表达式(AA[i] & BB[i] & CC[i]) 不为“0”,则整个结果就为“1” ,i取0到3。

 3、((AA>5) && (CC<8) && (BB>4))

 逻辑分析:

 表达式(AA>5)、(CC<8)、(BB>4)结果均为1位的逻辑量,三个逻辑量之间做“逻辑与”。

 4、((AA>5) & (CC<8) & (BB>4))

 逻辑分析:

 三个一位的逻辑量之间做“逻辑与”和“位与”是等效的。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值