<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一款32位嵌入式CPU的定點(diǎn)加法器設計

一款32位嵌入式CPU的定點(diǎn)加法器設計

作者: 時(shí)間:2010-09-05 來(lái)源:網(wǎng)絡(luò ) 收藏
  從CPU的指令執行頻率上看,算術(shù)邏輯單元、程序計數器、協(xié)處理器是CPU中使用頻率最多的模塊,而正是這些模塊的核心部件,幾乎所有的關(guān)鍵路徑都與之有關(guān),因而設計一種通用于這些模塊的是整個(gè)CPU設計中關(guān)鍵的一步。為此,筆者根據32位CPU的400MHz主頻的要求,結合CPU流水線(xiàn)結構,各種算法成熟的,提出一種電路設計簡(jiǎn)單、速度快、功耗低、版圖面積小的32位加法器的設計方案。
1 設計思路
  對于高性能CPU中使用的加法器,速度顯然是第一位的,所以考慮采用并行計算的方法,并且在電路的設計上采用少量的器件來(lái)獲得速度上的巨大提升。從面積角度出發(fā),鏈式進(jìn)位加法器(Ripple-Carry Adder)[1]的器件最少,面積最小,版圖工作量也最小,可是由于加法器的高位進(jìn)位要等待低位的運算結束后才能得到,所以沒(méi)有辦法在速度上達到要求。鑒于此,采用類(lèi)似于鏈式加法器的結構。
  首先從進(jìn)位選擇加法器(Carry-Select Adder)[2]得到提示,將32位加法器一分為二,分為低16位加法器和高16位加法器,再將低16位加法器的進(jìn)位輸出作為選擇信號,用于選擇高16位加法器的和及第27位的進(jìn)位輸出(這個(gè)進(jìn)位輸出要在溢出邏輯判斷中使用,而普通的加法器則不用產(chǎn)生進(jìn)位)。通過(guò)這樣的處理,將一個(gè)32位的加法器簡(jiǎn)化就成了兩個(gè)16位的加法器,如圖1所示。


  另外,從超前進(jìn)位加法器(Carry-Look-Ahead Adder)[3]獲得提示,在超前進(jìn)位加法器中引入中間變量G和P用于加速進(jìn)位鏈的速度。而G和P在邏輯表達式上與前一級的進(jìn)位無(wú)關(guān),只與每一級的操作數輸入有關(guān),而且它們又是構成本級進(jìn)位的必要部分。在微處理器的數據通道上,數據傳輸是并行進(jìn)行的,即兩個(gè)32位操作數幾乎同一時(shí)間到達加法器。所以,G和P不論是加法器的最低位還是加法器的最高位,幾乎都可以在相同的時(shí)間內得到,因而在進(jìn)位鏈上就可以這個(gè)特點(diǎn)加速進(jìn)位的傳遞。以一個(gè)四位加法器為例,有如下的邏輯推導過(guò)程:
  
  令上式中P1P2P3P4為Pgroup,G1P2P3P4+G2P3P4+G3P4+G4為Ggroup,如果將32位加法器劃分為若干的小塊,則每一個(gè)小塊都可以有自己相對應的Ggroup和Pgroup。由此可知對于整個(gè)加法器的時(shí)延來(lái)說(shuō),關(guān)鍵路徑的時(shí)延總值可以由三部分組成:①產(chǎn)生Ggroup和Pgroup的時(shí)延;②進(jìn)位傳遞邏輯上的器件時(shí)延;③加法器進(jìn)位鏈上的導線(xiàn)時(shí)延。對于這三類(lèi)時(shí)延,時(shí)延①與時(shí)延(②+③)存在重疊的部分,于是使這兩類(lèi)時(shí)延合理銜接,可以使得進(jìn)位鏈上的邏輯級數最小,從而使得電路上的傳輸時(shí)延達到最小。
2 具體實(shí)現
2.1 4位加法器模塊的實(shí)現
  在具體的電路設計中,先將32位數據通道劃分成了高低兩部分,然后以4位為單元劃分成更小的模塊。這些模塊在結構上是基本一致的,但在功能上要完成本模塊四組操作數(A[k:k+3]和B[k:k+3])與進(jìn)位Ck的加法運算,并要產(chǎn)生模塊的中間變量Ggroup和Pgroup的運算。
  對于單一的每一位,定義它的G和P分別為:Gi=AiBi, Pi=Ai⊕Bi,加法器的和SUMi=Ai⊕Bi⊕Ci-1=Pi⊕Ci-1,考慮到器件的實(shí)際驅動(dòng)能力,結合加法器的另一個(gè)功能——減法運算,設計出如圖2所示的帶減法功能的一位加法器電路。


  設計的4位加法器進(jìn)位鏈如圖3所示,除C0外,輸入(i和i)都是由圖2的一位加法器產(chǎn)生的,所有4位進(jìn)位鏈Ci都按超前進(jìn)位加法器連接方式[3]直接接入相應位置。由此可以看出,進(jìn)位信號到達各位的邏輯級數是相當的,只要在進(jìn)位信號到達之前使所有的中間信號i和i都能及時(shí)產(chǎn)生,就能及時(shí)得到每一位的和(SUM)。


  圖4是產(chǎn)生4位加法器塊進(jìn)位及塊的Ggroup和Pgroup信號的電路。于超前進(jìn)位加法器的傳遞邏輯電路[3],可知并不是所有的4位加法器都需要向它的下一個(gè)模塊傳送進(jìn)位信號,而只要產(chǎn)生傳遞進(jìn)位所需的Ggroup和Pgroup信號即可。而有些位置,由于進(jìn)位鏈設計的實(shí)際需要,只需要利用4位加法器模塊產(chǎn)生的進(jìn)位信號,而不必采用傳遞邏輯產(chǎn)生的進(jìn)位信號,具體的情況還是有區別的。為了充分利用圖3中產(chǎn)生的相關(guān)信號的復用,在進(jìn)位信號C4的產(chǎn)生電路部分,進(jìn)位鏈方向上的邏輯級數只有兩級,可以說(shuō)還是比較簡(jiǎn)單了??墒?,綜合前面所談到的4位加法器的電路,可以發(fā)現有一些中間信號(i和i)的負載是不均衡的,如2的負載比34要重很多。所以在設計的時(shí)候,如果考慮到盡量降低版圖的復雜程度,就要在面積上做出適當的犧牲,盡量以最大負載進(jìn)行考慮,使得器件的設計符合時(shí)延上的要求;同時(shí)還要充分考慮到在深亞微米工藝條件下導線(xiàn)的時(shí)延問(wèn)題,即設計的電路不但要考慮到所承受的器件的負載,而且還要結合版圖設計中實(shí)際的導線(xiàn)負載,定出上述電路的合理尺寸。


2.2 傳遞邏輯電路實(shí)現
  完成上述基本4位加法器的電路設計后,要構造一個(gè)完整的32位加法器還需借助于傳遞邏輯電路。傳遞邏輯電路可以對4位加法器模塊的進(jìn)位進(jìn)行傳遞,也可以對由兩個(gè)4位加法器模塊組成的8位加法器模塊的進(jìn)位進(jìn)行傳遞。對于8位加法器模塊,由于低4位的進(jìn)位可以表示為C4=C0Ggroup+Pgroup,則8位加法器模塊的進(jìn)位為:
  
  由此可以設計出如圖5和圖6所示的兩種進(jìn)位傳遞邏輯電路。


2.3 溢出邏輯電路實(shí)現
  設計中還采用了判斷溢出的方法[4]。當兩個(gè)有符號數進(jìn)行加減法運算時(shí),若最高的數值位向符號位的進(jìn)位(本設計中的C30)值與符號位產(chǎn)生的進(jìn)位(本設計中的C31)輸出值不同,則表明加減運算產(chǎn)生了溢出。
  由上述可知,加法器時(shí)延的關(guān)鍵路徑在進(jìn)位鏈上,而進(jìn)行溢出判斷所需要的信息C30與C31都在這條路徑上。于是采用類(lèi)似于進(jìn)位跳位加法器(Carry-Skip Adder)[2]的辦法,使得低位的進(jìn)位快速跳位到高位,使C30與C31快速產(chǎn)生。具體實(shí)現如下:
 ?、僖绯龅倪壿嫳磉_式推導
  由于Overflow=(C30⊕C31)·Overflag(Overflag表示當前ALU加法器進(jìn)行有符號運算),需要進(jìn)行溢出判斷(它是ALU控制模塊在譯碼階段產(chǎn)生的,在指令執行階段起始段就輸出到數據通道,所以它不在關(guān)鍵路徑上)。
  
  顯然,分式(1)是和進(jìn)位鏈無(wú)關(guān)的一部分,可以在每一個(gè)流水線(xiàn)的指令執行階段起始段很快得到,而分式(2)則是和進(jìn)位鏈有關(guān)的部分,其具體邏輯值將取決于進(jìn)位C27的值。分式(1)中高位的Gi和Pi都可以在進(jìn)位C27到來(lái)之前預先得到,只要C27一到就可以進(jìn)行邏輯判斷,得到相應的邏輯。
  
 ?、谝绯鲞壿嬰娐穼?shí)現
  根據式(3)的邏輯表達式,可設計出加法器溢出邏輯產(chǎn)生電路,如圖7所示。


  設計得到的32位加法器在SMIC流片后,經(jīng)測試,運算速度在400MHz以上,滿(mǎn)足設計要求,為后續浮點(diǎn)加法器的設計提供了很好的鋪墊。

電氣符號相關(guān)文章:電氣符號大全


p2p機相關(guān)文章:p2p原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>