HDLBits (8) — 異或非門
本題鏈接:
https://hdlbits.01xz.net/wiki/Xnorgate
創(chuàng)建一個(gè)能夠?qū)崿F(xiàn) XNOR 門的模塊。

預(yù)期的解決方案長(zhǎng)度:大約 1 行。
模塊聲明:
module top_module(
? ?input a,
? ?input b,
? ?output out );
提示
按位異或運(yùn)算符是 ^。沒(méi)有邏輯異或運(yùn)算符。

題目
module top_module(
? ?input a,
? ?input b,
? ?output out );
endmodule

答案
module top_module(
? ?input a,
? ?input b,
? ?output out );
? ?assign out = ~(a ^ b);
endmodule
module top_module(
? ?input a,
? ?input b,
? ?output out );
? ?assign out = ~(~a + ~b);
endmodule

輸出波形


Verilog 中提供了大約 9 種操作符,分別是算術(shù)、關(guān)系、等價(jià)、邏輯、按位、歸約、移位、拼接、條件操作符。
大部分操作符與 C 語(yǔ)言中類似。同類型操作符之間,除條件操作符從右往左關(guān)聯(lián),其余操作符都是自左向右關(guān)聯(lián)。圓括號(hào)內(nèi)表達(dá)式優(yōu)先執(zhí)行。
不同操作符之間,優(yōu)先級(jí)是不同的。其中單目運(yùn)算( + - ~ ! )優(yōu)先度最高,按位 ^? 優(yōu)先度為第8(倒數(shù)第5)。當(dāng)沒(méi)有圓括號(hào)時(shí),Verilog 會(huì)根據(jù)操作符優(yōu)先級(jí)對(duì)表達(dá)式進(jìn)行計(jì)算。為了避免由操作符優(yōu)先級(jí)導(dǎo)致的計(jì)算混亂,在不確定優(yōu)先級(jí)時(shí),建議用圓括號(hào)將表達(dá)式區(qū)分開(kāi)來(lái)。
在本題中,使用了異或運(yùn)算符,異或運(yùn)算符是按位運(yùn)算符,沒(méi)有邏輯異或的說(shuō)法。
按位操作符對(duì) 2 個(gè)操作數(shù)的每 1bit 數(shù)據(jù)進(jìn)行按位操作。
如果 2 個(gè)操作數(shù)位寬不相等,則用 0 向左擴(kuò)展補(bǔ)充較短的操作數(shù)。
參考內(nèi)容:
2.4 Verilog 表達(dá)式?| 菜鳥(niǎo)教程:https://www.runoob.com/w3cnote/verilog-expression.html