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