Verilog中與的區別

時間 2021-10-15 00:22:10

1樓:

verilog中&與&&的區別為:性質不同、計算結果不同、引數不同。

一、性質不同

1、&:&是位運算子,表示是按位與。

2、&&:&&是邏輯運算子,表示是邏輯與。

二、計算結果不同

1、&:&的計算結果為十進位制數。

2、&&:&&的計算結果為true或false。

三、引數不同

1、&:&的引數為進位制數,可以是二進位制、十進位制、十六進位制數,也可以是整數、負數。

2、&&:&&的引數為進位制數,也可以是比較公式,將比較公式值作為最終的引數。

2樓:z風起

1、兩者概念不同

&&是邏輯與:即判斷&&兩側的表示式是否都為真,都為真則此&&表示式值為真;

& 是按位與:即將&兩側的數用二進位制,每一位都求與運算(二進位制與運算,跟邏輯與差不多),最後得到的二進位制數即為結果;

2、兩者結果不同

邏輯與結果只講真和假,而按位與得出的卻是實實在在的一個數。

以一個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 ;

endelse

begin

aout<=1'b0 ;

endend

always @(posedge clk)//檢測時鐘上升沿

begin : u2

if (aa & cc & bb)

begin

bout<=1'b1 ;

endelse

begin

bout<=1'b0 ;

endend

always @(posedge clk)//檢測時鐘上升沿

begin : u3

if ((aa>5) && (cc<8) && (bb>4))

begin

cout<=1'b1 ;

endelse

begin

cout<=1'b0 ;

endend

always @(posedge clk)//檢測時鐘上升沿

begin : u4

if ((aa>5) & (cc<8) & (bb>4))

begin

dout<=1'b1 ;

endelse

begin

dout<=1'b0 ;

endendendmodule

上面三個always @()中分別用到如下三種if判斷表示式

(aa && cc && bb)

(aa & cc & bb)

((aa>5) && (cc<8) && (bb>4))

((aa>5) & (cc<8) & (bb>4))

擴充套件資料:

對這四條表示式進行邏輯分析  :

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))

邏輯分析:

三個一位的邏輯量之間做“邏輯與”和“位與”是等效的。

3樓:忻憐雲

&按位與 賦值運算

&& 邏輯與 做條件判斷用

while(a&&b)

; 判斷a和b與完後 是否為真 為真執行以後內容。

找本書 運算元型別 就明白了!

4樓:匿名使用者

&表示按位與運算,是一種位運算子;&&是邏輯運算子

VFP中for與while的區別

for 從始至終,從第一個記錄工作到末記錄,不管條件是否符合,至少迴圈一次。while 當條件滿足時才進入迴圈,執行while 為真後的語句。 while 所有型別的迴圈都可以使用。for 主要用於計數迴圈。scan主要針對資料庫記錄。例子1 for aa 1 to 10 step 2 aa,10 ...

access中from與form的區別

forms 集合包含 microsoft access 資料庫中當前開啟的所有窗體。form 物件是 forms 集合的成員,前者用於引用後者 已開啟窗體集合 中某一個窗體。引用form物件舉例 語法 示例 說明 forms formname forms orderform 引用一個名為 order...

法語中meme si與meme的區別

這個問題問的有問題嘛。meme si 是meme 構成的短語裡的一個,是副詞性的,而meme主要用法是形容詞性的,有時也做副詞用,這時候才需要跟meme si 區別一下。意思是差不多的,不過,meme後面接一個名詞 或名詞性片語 而meme si 後面一般接一句話。a meme,直接,副詞性的。qu...