HDLBits (60) — 更長(zhǎng)的向量
本題鏈接:
https://hdlbits.01xz.net/wiki/Gatesv100
另請(qǐng)參見較短版本:門和向量
in[99:0]給出了一個(gè)100位的輸入向量。我們想知道每個(gè)位與其相鄰位之間的一些關(guān)系:
out_both: 此輸出向量的每一位應(yīng)指示相應(yīng)的輸入位及其左側(cè)的相鄰位(高位)是否為“1”。比如說(shuō),out_both[98]?應(yīng)該指出如果?in[98]?和?in[99]?都是1. 因?yàn)?in[99]?沒(méi)有左鄰位,答案很明顯,所以我們不需要知道out_both[99].
out_any: 此輸出向量的每一位都應(yīng)指示相應(yīng)的輸入位及其右側(cè)的相鄰位是否為“1”。比如說(shuō),out_any[2]?應(yīng)該指出如果 in[98] 或 in[99]?中的任何一個(gè)都是1。?因?yàn)?in[0]?沒(méi)有右鄰位,所以我們不需要知道out_any[0].
out_different: 此輸出向量的每一位都應(yīng)指示相應(yīng)的輸入位及其左側(cè)的相鄰位不同。比如說(shuō),out_different[98]?應(yīng)該指出如果?in[98]?與?in[99] 不同。為此,將向量視為一個(gè)閉環(huán),所以in[99]是in[0]的左鄰位。

題目
提示:
使用向量可以在3個(gè)assign語(yǔ)句中完成。

答案

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

參考內(nèi)容:
2.4 Verilog 表達(dá)式?| 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-expression.html