目錄
減法器可由基礎的半減器和全減器模塊組成,或者基於加法器和控制信號搭建。
定義N比特被減數X,減數Y,差爲D(difference);
來自低比特借位Bi,向高比特借位Bi+1,i爲比特序號;
所以,有以下結論:
一、半減器
半減器用於計算兩比特Xi和Yi的減法,輸出結果Di和向高位的借位Bo(Borrow output)。其真值表、邏輯表達式、Verilog描述和門電路圖如下:
真值表
邏輯表達式
xor表示異或。
Verilog設計
門電路圖
二、全減器
全減器不同於半減器在於,全減器輸入來自低位的借位Bi(Borrow input),另外兩個輸入Xi,Yi,輸出爲Di和向高位的借位Bo。其真值表、邏輯表達式、Verilog描述和門電路圖如下:
真值表
邏輯表達式
Verilog設計
門電路圖
三、減法器
此前,我們介紹了相當數量的加法器設計,而減法器與加法器具有相同的設計方法。
用如下符合表示全減器:
根據此全減器搭建16比特減法器,如下圖所示,姑且稱之爲行波借位減法器。
“行波借位減法器”
除了使用半減器和全減器搭建減法器外,減法器使用控制信號便可以與加法器共用相同的結構。X與Y均採用二進制補碼錶示,則:
其中~Y表示對Y按比特取反。
加減法器
以上是基於行波進位加法器修改的電路結構,使其同時具有加法和減法的功能。由加或者減的控制信號,決定該部件的功能。輸入c0=0時表示加法;c0=1時表示減法。爲了溢出與符號位考慮,以上結構最後進位輸出需要與控制信號進行異或以滿足減法器的需求。比如0-0的情況。
以下兩條RISC-V算術指令:ADD和SUB
ADD rd, rs1, rs2
SUB rd, rs1, rs2
處理器根據指令譯碼,判斷ADD或者SUB,來共用加法減法單元。
四、Verilog設計
設計一個16比特的減法器
(1)基於全減器設計“行波借位減法器”,基礎的全減器模塊
(2)根據行波進位加法器,通過控制信號,使其同時具有加法和減法的功能,注意進位。
源碼公衆號回覆“00b”。
歡迎批評指正,更多閱讀,關注“紙上談芯”,不定期更新,共同學習: