HDLBits (38) — 歸約運(yùn)算符
本題鏈接:
https://hdlbits.01xz.net/wiki/Reduction
您已經(jīng)熟悉了兩個(gè)值之間的按位操作,(例如:a & b?or?a ^ b)。有時(shí),你想創(chuàng)建一個(gè)有一定位寬的門(mén)電路,這個(gè)門(mén)電路對(duì)一個(gè)向量的所有位都起作用,像(a[0] & a[1] & a[2] & a[3] ... ),如果數(shù)據(jù)很長(zhǎng),這會(huì)變得繁瑣。
歸約運(yùn)算符可以對(duì)一個(gè)向量中的位執(zhí)行 AND、 OR 和 XOR操作,從而產(chǎn)生一個(gè)位的輸出:
上面這些是只有一個(gè)操作數(shù)的一元運(yùn)算符(類(lèi)似于 NOT 運(yùn)算符!和 ~)。還可以將這些輸出反轉(zhuǎn)以創(chuàng)建 NAND、 NOR 和 XNOR 門(mén),例如(~& d[7:0])。
現(xiàn)在可以重新構(gòu)建?4-input gates?和100-input gates。

題目
在通過(guò)不穩(wěn)定信道傳輸數(shù)據(jù)時(shí),奇偶校驗(yàn)通常被用作一種檢測(cè)錯(cuò)誤的簡(jiǎn)單方法。創(chuàng)建一個(gè)電路,用來(lái)計(jì)算一個(gè)8位字節(jié)的奇偶校驗(yàn)位(這將在字節(jié)中添加第9位)。我們將使用“偶數(shù)”奇偶校驗(yàn),其中奇偶校驗(yàn)位只是所有8個(gè)數(shù)據(jù)位的異或。
預(yù)期解決方案長(zhǎng)度:大約1行。

答案

歸約操作符包括:歸約與(&),歸約與非(~&),歸約或(|),歸約或非(~|),歸約異或(^),歸約同或(~^)。
歸約操作符只有一個(gè)操作數(shù),它對(duì)這個(gè)向量操作數(shù)逐位進(jìn)行操作,最終產(chǎn)生一個(gè) 1bit 結(jié)果。
邏輯操作符、按位操作符和歸約操作符都使用相同的符號(hào)表示,因此有時(shí)候容易混淆。區(qū)分這些操作符的關(guān)鍵是分清操作數(shù)的數(shù)目,和計(jì)算結(jié)果的規(guī)則。
參考資料:
2.4?Verilog 表達(dá)式 | 菜鳥(niǎo)教程:
https://www.runoob.com/w3cnote/verilog-expression.html