基於Verilog HDL的超前進位全加器設計


       通常我們所使用的加法器一般是串行進位,將從輸入的ci逐位進位地傳遞到最高位的進位輸出co,由於電路是有延遲的,這樣的長途旅行是需要時間的,所以為了加快加法器的運算,引入了超前進位全加器。

全加器的兩個邏輯表達式

       sum = a ^ b ^ cin;

       co = a & b | (a ^ b) & cin;

  sum = a ^ b ^ cin;

       co = a & b + a & cin + b & cin;

 

 

 

       這兩個公式的電路圖看起來不一樣,但其實是一樣的,同一個功能的電路可以有不同的描述方式。而且把co這兩個表達式展開,觀察其最小項表達式(畫卡諾圖),最終的結果也是一樣的和真值表完全相符。

四位超前進位全加器

根據一位全加器的表達式可以推理出,四位全加器每一位的計算通式。


 

 

       為了達到並行的效果,通過公式化簡,得到co和sum的表達式,每一位之間的運算都是獨立的,和低位的運算沒有關系,這樣做達到完全並行,這就是四位超前進位全加器。

 

       有了四位全加器,我們可以以通過四位超前進位全加器設計出16位、32位、64位超前進位全加器,有些設計方法是將四個四位超前進位全加器串聯起來,即將低四位的co連接到高四位的cin上,但這樣並不能算得上是真正的並行,每四位是並行的,但每四位之間是串行的,博主目的是要達到完全並行的設計,繼續往下看吧。

       這里的g是generation(生成)的意思,當a和b同時為1時,1位全加器必然產生進位,p表示propagation(傳到)的意思,當a或b中有一個是1時,如果進位cin位1,1位全加器必然產生進位,利用這個原理即可做出四位超前進位全加器之間的超前進位。

       四位超前進位全加器的co進位輸出端為

 

       這與一位全加器的進位類似,

 

 

       我們可以推出如下關系式

 

 

 

       我們通過調用四個超前進位全加器即可實現16位超前進位全加器,那么實現64位超前進位全加器其實也是和這個實現方法一樣了,調用4個16位超前進位全加器就可以實現64位超前進位全加器。不過實際中CPU采用的是超前進位和串行進位集合,並行設計占面積,串行設計速度慢,盡量做到面積與速度之間的權衡。

       博主最近要學Verilog設計一個32位的簡易CPU,其中ALU中想用上32位超前進位全加器。對於32位超前進位全加器,也是一樣的方法。我選擇的是三級並行設計,即四個四位超前進位全加器組間並行實現16位超前進位全加器,兩個16位超前進位全加器組間並行實現32位超前進位全加器,至於兩級並行還是多級並行看自己選擇了。

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:開源FPGA

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/8798972.html 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM