<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 高速可擴(kuò)展的Montgomery乘法器設(shè)計(jì)方案

          高速可擴(kuò)展的Montgomery乘法器設(shè)計(jì)方案

          作者: 時(shí)間:2011-10-19 來源:網(wǎng)絡(luò) 收藏

          本文提出一種高速可擴(kuò)展的,該方案是在Tenca提出的Booth-8 的基礎(chǔ)上,采用Booth-64編碼進(jìn)行改進(jìn),使速度平均提高了48%。同時(shí)對數(shù)據(jù)通路進(jìn)行了優(yōu)化,使得流水線數(shù)據(jù)通路的平均延遲大大降低。

          本文引用地址:http://www.ex-cimer.com/article/187254.htm

            

            

            其中,k表示基,X為模乘運(yùn)算的乘數(shù),Y是被乘數(shù),M是模數(shù)。其中,操作數(shù)長度為N,部分積用為S表示,Y、M和S分成NW個(gè)BPW bit的字進(jìn)行運(yùn)算,xj表示X的第j bit,Sk(i)表示第i個(gè)字的第k位,Ca、Cb表示進(jìn)位,qyj、qMj分別是在計(jì)算部分積過程中Y和M的系數(shù)。

            核心數(shù)據(jù)路徑采用流水線組織結(jié)構(gòu),每一級之間用寄存器隔開。每個(gè)MMcell單元完成一輪外循環(huán),每個(gè)時(shí)鐘輸入Y、M、SS、SC的一個(gè)字參與運(yùn)算,并把Y、M和計(jì)算出來的SS、SC傳遞該下一級。為了能使數(shù)據(jù)路徑可伸縮,加入了兩個(gè)FIFO分別用來存儲(chǔ)SS和SC。如圖1所示,NS是流水線級數(shù),由面積和時(shí)間需求來決定。

            

            2 基為64的高速設(shè)計(jì)

            Tenca提出的模乘器設(shè)計(jì)中Booth編碼采用的基為8,并且能夠支持操作數(shù)長度可變的模乘運(yùn)算,對操作數(shù)按字進(jìn)行運(yùn)算,縮短了關(guān)鍵路徑的延遲,并且使用CSA(Carry Save Adder)提高了整體的系統(tǒng)性能。

            通過分析,采用基為8的Booth編碼可以將部分積數(shù)量減少為原來的1/3,而采用基為64的Booth編碼則可以將部分積數(shù)量減少為原來的1/6。據(jù)此本文對Tenca提出的進(jìn)行改進(jìn),因此提出基為64的高速M(fèi)ontgomery乘法器。

            對于基為64的設(shè)計(jì),乘數(shù)X每次掃描6 bit,經(jīng)Booth編碼后得到7 bit的輸入數(shù)據(jù),同時(shí)Y和M每次輸入一個(gè)字。乘數(shù)X的Booth編碼為:

            

            

            


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();