加法器是如何實現的
verilog實現加法器,從底層的門級電路級到行為級,本文對其做出了相應的闡述。
1、一位半加器
所謂半加器就是有兩個輸入,兩個輸出,不考慮進位。其真值表如下:
?
由此,我們可以得到S=A^B,C=A&B。用相應的與門、異或門來實現半加器。
對應的Verilog代碼如下:
?
2、一位全加器
全加器包含三個輸入,兩個輸出,其中包含一個進位。
2.1 實現方式一
與半加器類似畫出其真值表,進一步通過畫卡諾圖得到相應的函數表達式。
S=A^ B^cin,co=(A&B)|(A&cin)|(B&cin)。
2.2 實現方式二
利用兩個半加器和一個或門實現全加器。其電路結構圖如下:
?
?
?
3、多位加法器的實現
在數字信號處理的快速運算電路中常常用到多位數字量的加法運算,對于多位寬加法器的處理,我們以逐位進位加法器為例。
代碼和電路結構框圖如下:
串行加法器限制了運行的速度,在實際應用中,我們一般用到并行加法器。大致可以分為以下幾類:進位旁路加法器、線性進位選擇加法器、平方根進位選擇加法器、超前進位加法器、對數超前進位加法器。并行加法器比串行加法器快得多,電路結構也不太復雜,它的原理很容易理解。
4、行為級描述加法器
用Verilog HDL來描述加法器是相當容易的,只需要將運算表達式寫出就可以了。
一位全加器
?
八位加法器
?
這樣設計的加法器在行為仿真時是沒有延時的。借助綜合器,可以根據以上Verilog HDL源代碼將其自動綜合成典型的加法器電路結構。綜合器有許多選項可供設計者選擇,以控制自動生成電路的性能。設計者可以考慮提高電路的速度,也可以考慮節省電路元件以減少電路占用硅片的面積。在FPGA的庫中或某工藝的ASIC庫中,都有參數化的加法器供設計者選用。
加法器的設計優化
邏輯改造后,電路也應該相應地進行優化設計,因為如果用普通的門電路來實現式(12)~(15)的邏輯,晶體管數目(面積)會增加。另外,在電路級也可以采用減少節點翻轉和寄生電容的方法來降低功耗。
式(12)~(15)中多處要用到同或門,設計中,我們用基于旁路的靜態邏輯[4]實現產生gs的同或門,如圖2。旁路邏輯通過由附加管形成的旁路,可以把“串并交錯”的電路結構簡化為單一的串或者并的形式。它的電路和版圖都有很好的規整性,并且可以減小寄生電容。是兩種同或門N塊版圖不同部分的比較,(b)是基于旁路邏輯實現的,與(a)相比,少了一條金屬連線和兩個金屬接觸,使版圖變得十分規整,擴散區不會被隔斷。在拓撲上,兩條分支用公共的漏區,達到最少的接觸孔和金屬互連,比“串并”和“并串”的晶體管配置方式規整,且寄生電容小。
加法器電路上的延遲值
旁路邏輯不能實現傳輸門,因而不能用傳輸門實現同或和異或,但是容易證明,三態門在速度和功耗方面都比傳輸門優越。參照傳輸門的結合方式,我們用兩個三態反相器和一個反相器實現了同或門。
實現了式(13)括號內的兩個同或邏輯,平均只需要1級門延時,而用普通門實現的“與非或與非”形式的同或門需要2級或3級門延時。由上面的同或門設計得到啟發,根據形如式(13)的邏輯,設計了一個10管單元utiandor2。
該單元電路實現s=c0CK+0CKN,只要把式(12)~(15)中的括號部分從CK和CKN輸入,輸出就相應得到了s0~ s3 。僅當CKN=時,電路(a)兩邊均是三態反相器,構成圖5(b)的同或門,兩個反相器交替導通,s=c0⊙CK ;當CKN=CK(發生幾率比較大),左邊P管和右邊N管,或者左邊N管和右邊P管交替導通,輸出s=CK,從而屏蔽了c0的變化。考察第一組4位CLA中的進位產生邏輯最復雜的s3,參考式(15),當g2,g1,g0均為0,p2,p1,p0均為1時,s3= gs3⊙c0,顯然這是一種特殊情況,即低位各位都不產生進位,但可以傳遞進位時,直接把c0傳至高位與gs同或即可產生和。c0在各位和生成邏輯的最后一級才加入,可以消除過早加入帶來的不必要的翻轉。左右兩塊交替導通,只存在下拉或上拉延時,有類似動態電路延遲小的優點。僅用了10個晶體管,比常規門實現的積之和節省8個。
責任編輯:YYX
評論
查看更多