原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...
1.超前進位加法器
看了一些面經,提到會讓你用基礎的門搭加法器,因此首先得熟悉半加器,全加器等最基礎的加法器才能理解之后的超前進位加法器,樹型加法器等復雜的加法器。
半加器的輸入為a,b,輸出為結果s和進位c,則其關系為
全加器的輸入多了一個進位cin,輸出為結果位s和進位輸出cout,則其關系為
使用多個全加器級聯,把每一級的進位輸出作為下一級的進位輸入即構成了行波進位加法器,其加法過程是很好理解的,就是從最低位開始一位一位運算,并且把低位的進位加到高位上,與手算的思路是一致的。其結構如圖所示。
但若是畫出其門級的電路圖我們會發現,由于采用級聯結構,行波進位加法器的關鍵路徑非常長,N比特行波進位加法器的最長路徑位
個門電路延遲,在高速處理器中將極大地限制電路的性能。因此誕生了超前進位加法器以改善關鍵路徑,其主要思想是將所有的進位都并行進行,為此需對原始的加法器計算公式做一些改動。令則對于N比特超前進位加法器,其結果位和進位可寫成如下的形式
則通過迭代
的表達式,可將其寫成只包含 的表達式,從而完成并行計算。以4bit超前進位加法器為例,其進位鏈公式計算如下則對應的,超前進位加法器結構如圖所示。
對于更大位寬的,例如32,64bit的加法運算,為了避免造成電路的扇入扇出過大,會用多個4bit超前進位加法器級聯,從而獲得一個折中的解決方案。
從關鍵路徑上來看,4bit超前進位加法器的進位都只需要經過3級門電路延遲即可得到,相比較于行波進位加法器有巨大的優勢,即使級聯構成更大位寬的加法器仍然縮短了關鍵路徑的長度。
2.Wallace樹型結構
話說這Wallace是不是該翻譯成華萊士呢,嗯~亦可賽艇啊。
要理解Wallace樹需要先理解進位保存加法器。進位保存加法器以三個樹作為輸入,輸出兩個數,這兩個數相加即為最終的加法結果,因此進位保存加法器相當于進行了一次壓縮過程,將三個數的加法壓縮為兩個數的加法。然而進位保存加法器并不是什么新奇的黑科技,而是全加器的一個變形,如下圖所示。
從圖中可以看出,進位保存加法器就是對全加器進行重新包裝。
熟悉了進位保存加法器后我們就可以來看Wallace樹型結構了,其總體結構如下圖所示。
可以看出,樹型結構就是將多個加數分組,每三個分為一組后,經過進位保存加法器壓縮為2個數,如此迭代循環得到最終加法的結果。
在乘法器中,乘法的積是多個部分和之和,若使用普通加法器,則需等待前面的部分和計算完成才能計算后面的部分和,延遲較高,因此可以使用Wallace樹型結構,對部分和進行分組計算得到最后的總和結果,即為乘法的積。
3.Booth乘法器
若是用補碼表示一個數,則其轉換為十進制的計算方式為
將其展開,并令
,則可以得到此時再計算乘法
可得從上式可以看出,這樣變化的優勢是若B的某相鄰兩位相同,則可以省去運算而只進行移位即可。如果
,則為 ,如果 ,則為 ,從而簡化了運算過程。以上是Radix-2 Booth算法的推導,其算法流程如下
1.被乘數和乘數分別放入A,B寄存器,中間結果放入M,B寄存器。2.另設置一個1bit的 寄存器。將M, 寄存器初始為0。
3.在每個周期檢查 寄存器。
4-1.若 = 00 或 11,將{ }直接右移1bit。
4-2.若{ } = 01,則A與M相加,將{ }直接右移1bit。
4-3.若{ } = 10,則A與M相減,將{ }直接右移1bit。
5.最終的結果即為{M,B},是乘法積的補碼表示。
需要注意的是,上述所有數都是補碼表示,且上述右移操作需保留符號位,即保持M的最高位不變。
在實際應用中較常用的是Radix-4 Booth乘法器,與Radix-2類似,其算法可通過原始的補碼計算式展開得到
上式中的
設置為0。Radix-4 Booth編碼表如下表所示。不難看出,相較于Radix-2 Booth算法,Radix-4 Booth算法需要的循環次數更少,因此在實際中應用更加廣泛。
參考鏈接
關于乘法器和加法器,如下的專欄講述的非常詳細,可以作為參考。
紙上談芯:【HDL系列】超前進位加法器原理與設計?zhuanlan.zhihu.com紙上談芯:【HDL系列】乘法器(4)——圖解Wallace樹?zhuanlan.zhihu.com紙上談芯:【HDL系列】乘法器(5)——Radix-2 Booth乘法器?zhuanlan.zhihu.com紙上談芯:【HDL系列】乘法器(6)——Radix-4 Booth乘法器?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 读取excel表格_pyt
- 下一篇: jquery 验证小数点后几位_(亲测可