HDLBits (28) — 加減法器
2022-02-03 00:54 作者:僚機(jī)Wingplane | 我要投稿
本題鏈接:
https://hdlbits.01xz.net/wiki/Module_addsub
加減法器可以通過選擇性地對(duì)一個(gè)輸入求反來從加法器構(gòu)建,這相當(dāng)于對(duì)輸入求反,然后再加1。最終的結(jié)果是一個(gè)電路可以執(zhí)行兩個(gè)操作:(a+b+0)和(a+~b+1)。如果你想更詳細(xì)地了解這個(gè)電路是如何工作的,請(qǐng)參閱維基百科(詳見參考資料)。
構(gòu)建下面的加減法器。
你會(huì)得到以下的16位加法器模塊,你需要實(shí)例化它兩次:
module add16 ( input[15:0]?a, input[15:0]?b, input?cin, output[15:0]?sum, output?cout?);
每當(dāng)sub為1時(shí),使用一個(gè)32位寬的異或門反轉(zhuǎn)b輸入(這也可以看作是 b [31:0] XORed 與子復(fù)制32次。請(qǐng)參閱擴(kuò)展操作符。),另外還要將子輸入連接到加法器的進(jìn)位。


題目
提示:
異或門也可以看作是一個(gè)可編程的反相器,其中一個(gè)輸入控制另一個(gè)輸入是否應(yīng)該反轉(zhuǎn)。下圖所示的兩個(gè)電路都是異或門:


答案

輸出波形


參考資料:
Adder–subtractor - Wikipedia :
https://en.wikipedia.org/wiki/Adder%E2%80%93subtractor
標(biāo)簽: