HDLBits (59) — 各種門電路和向量
本題鏈接:
https://hdlbits.01xz.net/wiki/Gatesv
在[3:0]中給出了一個四位輸入向量。我們想知道每個位與其相鄰位之間的一些關系:
out_both: 此輸出向量的每一位應指示相應的輸入位及其左側的相鄰位(高位)是否為“1”。比如說,out_both[2]?應該指出如果?in[2]?和?in[3]?都是1. 因為?in[3]?沒有左鄰位,答案很明顯,所以我們不需要知道out_both[3]。
out_any: 此輸出向量的每一位都應指示相應的輸入位及其右側的相鄰位是否為“1”。比如說,out_any[2]?應該指出如果 in[2] 或 in[1]?中的任何一個都是1。?因為?in[0]?沒有右鄰位,所以我們不需要知道out_any[0]。
out_different: 此輸出向量的每一位都應指示相應的輸入位及其左側的相鄰位不同。比如說,out_different[2]?應該指出如果?in[2]?與?in[3] 不同。為此,將向量視為一個閉環(huán),所以in[3]是in[0]的左鄰位。

題目
提示:
?both,any和different分別使用有兩個輸入的與門、或門和異或門實現(xiàn)。使用向量可以在3個assign語句中完成。

答案

輸出波形


按位操作符包括:取反(~),與(&),或(|),異或(^),同或(~^)。
按位操作符對 2 個操作數(shù)的每 1bit 數(shù)據(jù)進行按位操作。
如果 2 個操作數(shù)位寬不相等,則用 0 向左擴展補充較短的操作數(shù)。
取反操作符只有一個操作數(shù),它對操作數(shù)的每 1bit 數(shù)據(jù)進行取反操作。
下圖給出了按位操作符的邏輯規(guī)則。

參考內容:
2.4 Verilog 表達式?| 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-expression.html