加法器原理(16位先行進位)
加法器原理(16位先行進位)
?? 這個加法器寫的是一波三折啊,昨天晚上花了兩三個小時好不容易寫完編譯通過了,之后modelsim莫名其妙彈出一個對話框,我沒看清就那么不小心一點,結果代碼沒了,慘痛啊。害的我今天早上又花了一上午的時間重寫,結果又遇到了搞不清楚的編譯問題。不過在重寫的過程中,我還是發現昨天寫的一些地方有問題,通過這次重寫,我把verilog的語句并行理解的更加深刻了。下面總結一下原理和具體的實現。
原理
???? 進位的傳遞
???? ci+1 = ai*bi+ai*ci+bi*ci
????????? = ai*bi+(ai+bi)*ci
????????? = gi+pi*ci
gi=ai*bi稱為進位生成因子, 只要gi為1, 就有進位
pi=ai+bi稱為進位傳遞因子, 只要pi為1, 就有把低位的進位向前傳遞
四位進位傳遞為例
? c1 = g0+(p0*c0)
? c2 = g1+(p1*g0)+(p1*p0*c0)
? c3 = g2+(p2*g1)+(p2*p1*g0)+(p2*p1*p0*c0)
? c4 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)+(p3*p2*p1*p0*c0)
只要低位有一個進位生成, 而且被傳遞, 則進位輸出為1.
??? 對于16位先行加法器,采用4個4位先行進位加法器組成,塊內并行,由于高位的塊需要用到低位塊的進位,快間仍然并行計算進位。方法是產生每塊的進位傳遞因子和進位產生因子。
??? 塊間進位傳遞因子: 每一位的傳遞因子都為1時才能傳遞
????? P0 = p0*p1*p2*p3
??? 塊間進位產生因子: 塊內產生進位, 不考慮進位輸入
????? G0 = g3+(p3*g2)+(p3*p2*g1)+(p3*p2*p1*g0)
??? 塊間進位的計算方法同上(只需要將p,g換成P,G就可以了)。
??? 16位加法器相當與16個半加器同時工作,而每個半加器輸入的進位cin都有傳遞因子和生產因子通過最低進位c0得到,而這16歌進位也是同時得到的。這大大提高了加法器的速度,設一個與非門的延遲為T,先行進位加法器總的延遲11T=2T(產生組內p g)+2T(產生組間P G)+2T(產生組內進位)+2T(產生組間進位)+3T(計算全加)。注意依賴關系,組內p g依賴于操作數a b,組內進位依賴于p g,組間的PG依賴于組內的p g,組間的進位依賴于P G,而全加依賴于組內和組間的進位。
非常好我支持^.^
(26) 9.4%
不好我反對
(251) 90.6%
相關閱讀:
- [電子說] 反相加法器原理圖與電路圖 2019-09-22
- [電子說] 加法器原理 2019-06-19
- [電子說] 4位二進制加法器原理 4位二進制加法器設計 2018-07-25
- [電子說] 反相加法器原理圖與電路圖 2018-03-16
- [電子常識] 加法器電路原理_二進制加法器原理_與非門二進制加法器 2017-08-16
( 發表人:admin )