Verilog中與的區別

2021-10-13 16:08:31 字數 2691 閱讀 4114

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樓:匿名使用者

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

verilog中case使用問題

case變成ca 再加上default y 1 b0就可以解決此問題,使用方法。如下參考 1.首先,右鍵單擊專案並單擊newsource以建立一個新的 檔案。2.選擇使用者文件建立一個自定義文件文件,檔名和字尾隨意。3.建立完成後,切換到檔案面板底部,雙擊開啟檔案,根據自己喜歡的形式輸入資料。4.寫...

請教 verilog分頻中為什麼要有rst的輸入控制訊號

rst訊號的作用就是復位,使得分頻時鐘clk odd在fpga或cpld的復位過程中保持為0狀態,不會形成時鐘脈衝訊號,從而防止了由clk odd驅動的電路產生誤觸發。這是一種可靠性的做法,並不一定非得要有rst訊號,當然,如果沒有rst復位訊號,那麼你得保持在復位過程中,由clk odd驅動的訊號...

php中與的區別是什麼呀,PHP中“ ”與“ ”的區別是什麼呀??

關於php中 與 的區別主要是含義不同,兩者具體的不同含義如下 1 意思是不全等於。打比方,a 2,b 2 那麼,a b成立,但是 a b不成立 用下面的 測試 2 意思是不等於,1就是不等於1的意思,是用中文輸入法寫的不等於,寫程式時,最好不要使用中文輸入法。指的是如果沒有輸入一個值賦給變數cod...