一、按位邏輯運算符
1.單目按位與(&)
單目按位與運算符 &,運算符后為需要進行邏輯運算的信號,表示對信號進行每位之間相與的操作。例如:
reg [3:0] A,C ;
assign C = &A ;
上面代碼等價于 C = A[3] & A[2] & A[1] & A[0] ;
如果A = 4’b0110,C的結(jié)果為0
2.單目按位或(|)
單目按位或運算符 |,運算符后為需要進行邏輯運算的信號,表示對信號進行每位之間相或的操作。例如:
reg [3:0] A,C ;
assign C = |A ;
上面代碼等價于C = A[3] | A[2] | A[1] | A[0] ;
如果A = 4’b0110,C的結(jié)果為1
3.單目按位非(~)
單目按位非運算符 ~,運算符后為需要進行邏輯運算的信號,表示對信號進行每位取反的操作。例如:
reg [3:0] A,C ;
assign C = ~A ;
上面的代碼等價于C[3] = ~A[3],C[2] = ~A[2],C[1] = ~A[1],C[0] = ~A[0]。
如果A = 4’b0110,C的結(jié)果為4’b1001
4.雙目按位與(&)
雙目按位與運算符 &,信號位于運算符的左右兩邊,表示的是對這兩個信號進行對應(yīng)位相與的操作。
例如:
reg [3:0] A,B,C;
assign C = A & B;
上面的代碼等價于:C[0] = A[0] & B[0],C[1] = A[1] & B[1],C[2] = A[2] & B[2],C[3] = A[3] & B[3]。如果A=4’b0110,B=4’b1010,C的結(jié)果為4’b0010。
如果操作數(shù)長度不相等,長度較小的操作數(shù)在最左側(cè)補0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A & B;
上面的代碼等價于:C[0] = A[0] & B[0],C[1] = A[1] & B[1],C[2] = 0 & B[2],C[3] = 0 & 0
5.雙目按位或(|)
雙目按位或運算符 |,信號位于運算符的左右兩邊,表示的是對這兩個信號進行對應(yīng)位相或的操作。
例如:
reg [3:0] A,B,C;
assign C = A | B;
上面的代碼等價于:C[0] = A[0] | B[0],C[1] = A[1] | B[1],C[2] = A[2] | B[2],C[3] = A[3] | B[3]。如果A=4’b0110,B=4’b1010,C的結(jié)果為4’b1110。
如果操作數(shù)長度不相等,長度較小的操作數(shù)在最左側(cè)補0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A | B;
上面的代碼等價于:C[0] = A[0] | B[0],C[1] = A[1] | B[1],C[2] = 0 | B[2],C[3] = 0 | 0
6.雙目按位異或(^)
雙目按位異或運算符 ^,信號位于運算符的左右兩邊,表示的是對這兩個信號進行對應(yīng)位相異或的操作。異或是指0 ^ 0 = 0,1 ^ 1 = 0,0 ^ 1 = 1。即相同為0,不同為1。
例如:
reg [3:0] A,B,C;
assign C = A ^ B;
上面的代碼等價于:C[0] = A[0] ^ B[0],C[1] = A[1] ^ B[1],C[2] = A[2] ^ B[2],C[3] = A[3] ^ B[3]。如果A=4’b0110,B=4’b1010,C的結(jié)果為4’b1100。
如果操作數(shù)長度不相等,長度較小的操作數(shù)在最左側(cè)補0。例如:
reg [1:0] A;
reg [2:0] B;
reg [3:0] C;
assign C = A ^ B;
上面的代碼等價于:C[0] = A[0] ^ B[0],C[1] = A[1] ^ B[1],C[2] = 0 ^ B[2],C[3] = 0 ^ 0
二、邏輯運算符和位運算符區(qū)別
邏輯運算符包括&&,||,!,位運算符包括&,|,~。(作者這里解釋一下,沒有講述邏輯運算符是因為邏輯運算符和在例如C語言當(dāng)中用法完全一樣,學(xué)習(xí)Verilog的小伙伴們一定有其他語言的基礎(chǔ),所以不再過多贅述邏輯運算符)文章來源:http://www.zghlxwxcb.cn/news/detail-601046.html
二者區(qū)別我們不妨舉例,將邏輯與“&&”和按位與“&”進行對比,邏輯與運算符的運算只有邏輯真或邏輯假兩種結(jié)果,即1或0;而“&”是位運算符,多用于兩個多位寬數(shù)據(jù)操作。
對比示例:
assign a = 4’b0111 && 4’b1000;
assign b = 4’b0111 || 4’b1000;
assign c = !4’b0111;
assign d = 4’b0111 & 4’b1000;
assign e = 4’b0111 | 4’b1000;
assign f = ~4’b0111;
示例運行結(jié)果為:
a = 1’b1
b = 1’b1
c = 1’b0
d = 4’b0000
e = 4’b1111
f = 4’b1000文章來源地址http://www.zghlxwxcb.cn/news/detail-601046.html
到了這里,關(guān)于Verilog HDL按位邏輯運算符及邏輯運算符的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!