HDLBits (5) — 逆變器
本題鏈接:
https://hdlbits.01xz.net/wiki/Notgate
創(chuàng)建一個能夠實現(xiàn)非門的模塊。
該電路類似于線網(wǎng)(wire),但又略有不同。 當此電路從線網(wǎng)輸入連接到線網(wǎng)輸出時,我們將實現(xiàn)一個逆變器(或“非門”)而不是普通線網(wǎng)。
使用 assign 語句。 assign 語句將不斷地將 in 的逆驅動到 wire out 上。

預期的解決方案長度:大約 1 行。
模塊聲明:
提示
Verilog 和C語言一樣有單獨的按位非 (~) 和邏輯非 (!) 運算符。因為我們在這里我們只用對其中一位進行操作,所以我們選擇哪個并不重要。

題目

答案

輸出波形


Verilog 中提供了大約 9 種操作符,分別是算術、關系、等價、邏輯、按位、歸約、移位、拼接、條件操作符。
大部分操作符與 C 語言中類似。同類型操作符之間,除條件操作符從右往左關聯(lián),其余操作符都是自左向右關聯(lián)。圓括號內表達式優(yōu)先執(zhí)行。
不同操作符之間,優(yōu)先級是不同的。其中單目運算( + - ~ ! )優(yōu)先度最高。當沒有圓括號時,Verilog 會根據(jù)操作符優(yōu)先級對表達式進行計算。為了避免由操作符優(yōu)先級導致的計算混亂,在不確定優(yōu)先級時,建議用圓括號將表達式區(qū)分開來。
在本題中,由于只操作一位數(shù)據(jù),所以使用邏輯操作符(!)和按位操作符(~)在輸出的結果上是一致的。
邏輯操作符的計算結果是一個 1bit 的值,0 表示假,1 表示真,x 表示不確定。
如果一個操作數(shù)不為 0,它等價于邏輯 1;如果一個操作數(shù)等于 0,它等價于邏輯 0。如果它任意一位為 x 或 z,它等價于 x。
如果任意一個操作數(shù)包含 x,邏輯操作符運算結果不一定為 x。
邏輯操作符的操作數(shù)可以為變量,也可以為表達式。
按位操作符對 2 個操作數(shù)的每 1bit 數(shù)據(jù)進行按位操作。
如果 2 個操作數(shù)位寬不相等,則用 0 向左擴展補充較短的操作數(shù)。
取反操作符只有一個操作數(shù),它對操作數(shù)的每 1bit 數(shù)據(jù)進行取反操作。
參考內容:
2.4 Verilog 表達式 | 菜鳥教程:https://www.runoob.com/w3cnote/verilog-expression.html