国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種適合于硬件的開(kāi)高次方的裝置及方法

      文檔序號(hào):6610104閱讀:230來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):一種適合于硬件的開(kāi)高次方的裝置及方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于數(shù)字電子技術(shù)領(lǐng)域,涉及一種硬件裝置和方法,具體涉及一種硬件開(kāi)高次方的裝置及方法。

      背景技術(shù)
      硬件電路上實(shí)現(xiàn)開(kāi)方運(yùn)算很麻煩,現(xiàn)在多有下面一些方法查表法,即把被開(kāi)方數(shù)以及結(jié)果列一個(gè)表,耗費(fèi)大量存儲(chǔ)空間,被開(kāi)方數(shù)越大,所用到的表也越大,查表速度也越慢。循環(huán)搜索法,即從0開(kāi)始搜索尋找,逐步逼近開(kāi)方結(jié)果。這樣做精度不高,且被開(kāi)方數(shù)越大,循環(huán)次數(shù)越多,消耗時(shí)間越多,計(jì)算時(shí)間不可預(yù)計(jì)。Newton-Raphson算法,要選擇好迭代的初始值,其具體方法利用了解高次非線(xiàn)性方程的牛頓迭代,同循環(huán)搜索法一樣,計(jì)算時(shí)間也不可預(yù)計(jì)。上述幾種方法在推廣到開(kāi)高次方的時(shí)候都有一定的困難,都存在著可重用性不高,耗費(fèi)時(shí)間或者存儲(chǔ)空間的缺點(diǎn)。


      發(fā)明內(nèi)容
      本發(fā)明提供了適合于硬件的開(kāi)任意次方的硬件電路裝置以及計(jì)算方法,采用了邏輯運(yùn)算電路(數(shù)據(jù)選擇器)或者查找表或者二者結(jié)合得方式,進(jìn)行實(shí)際數(shù)值運(yùn)算開(kāi)方的技術(shù)。該技術(shù)有減小硬件電路信號(hào)延遲的優(yōu)點(diǎn),折中了電路延時(shí)和電路資源消耗。取得了可預(yù)測(cè)運(yùn)算時(shí)間,降低硬件消耗的效果。
      本發(fā)明中的硬件運(yùn)算電路裝置以及方法,能夠?qū)崿F(xiàn)對(duì)不同數(shù)據(jù)進(jìn)行任意次方的開(kāi)方運(yùn)算。并且在使用查找表的時(shí)候,該查找表所占用的硬件存儲(chǔ)資源,遠(yuǎn)遠(yuǎn)小于傳統(tǒng)查表法中查找表所占用的硬件存儲(chǔ)資源,因此該裝置在用消耗很小存儲(chǔ)空間獲取較快運(yùn)算速度上面取得了較好的效果。
      一種適合于硬件的開(kāi)高次方的方法,其特征在于,本方法包括下面幾個(gè)步驟 步驟1數(shù)據(jù)輸入初始化將被開(kāi)方數(shù)輸入到電路的寄存器Reg中。寄存器Reg總共n×k比特,并將k存儲(chǔ)到一個(gè)計(jì)數(shù)器Counter中,k為寄存器總長(zhǎng)度與n值之比。初始化,設(shè)置寄存器xforward、stry、multiple、xlsb、xnew和sub為零。其中,寄存器xforward用于存儲(chǔ)當(dāng)前已經(jīng)計(jì)算出的開(kāi)方結(jié)果,寄存器stry用于存儲(chǔ)被試商的數(shù)值,寄存器multiple用于存儲(chǔ)試商過(guò)程中通過(guò)xforward計(jì)算出的被試商值,寄存器sub用于存儲(chǔ)減法器Substrator的一個(gè)輸入數(shù)據(jù),寄存器xlsb用于存儲(chǔ)當(dāng)前計(jì)算出的一位開(kāi)方數(shù)據(jù),寄存器xnew用于存儲(chǔ)數(shù)據(jù)更新過(guò)后的開(kāi)方結(jié)果。將寄存器Reg中最高的n個(gè)比特Reg[(n×k-1)∶(n×k-n)],即Reg的第(n×k-1)位到第(n×k-n)位的數(shù)據(jù)輸入到寄存器stry中。
      步驟2通過(guò)xforward得到multiple,可以用三種方法實(shí)現(xiàn) 第一,將xforward輸入到數(shù)據(jù)選擇器SelectorA,輸出為multiple,數(shù)據(jù)選擇器相當(dāng)于一個(gè)邏輯電路,完成的計(jì)算,如下公式所示 該邏輯電路是由若干乘法器和加法器組合而成,其中乘法器的輸入數(shù)值Cnn-i·2n-i已計(jì)算好并固化于電路的寄存器中。
      第二,采用查找表,該查找表LUT1已經(jīng)事先固化到ROM中,xforward作為L(zhǎng)UT1的地址線(xiàn)輸入,輸出為multiple。查找表LUT1中,將xforward作為地址,而將上式中不同xforward的計(jì)算出的multiple作為對(duì)應(yīng)地址的內(nèi)容。
      第三,采用查找表和邏輯電路運(yùn)算結(jié)合的方式,將xforward作為查找表LUT2的地址線(xiàn)輸入,輸出為xforward的i次方的數(shù)值(i為正整數(shù),2≤i≤n)。同樣的,LUT2已經(jīng)事先固化到ROM當(dāng)中,然后將LUT2的結(jié)果輸入給運(yùn)算電路,計(jì)算出multiple的值。
      步驟3將stry和multiple輸入數(shù)據(jù)比較器Compare,如果stry大于或者等于multiple,則Compare輸出xlsb為1,否則為0。計(jì)數(shù)器k減一。
      步驟4將xlsb輸入到寄存器xnew的最低位中,xnew剩余的比特由xforward填充,即 xnew=xforward<<1+xlsb 用乘法器和加法器實(shí)現(xiàn),將xlsb輸入數(shù)據(jù)選擇器SelectorB,如果xlsb為1,則將寄存器multiple的數(shù)值輸入到寄存器sub中,否則設(shè)置寄存器sub的值為0。
      步驟5將stry和sub輸入到減法器Subtracter中,即用stry減去sub,減法的結(jié)果數(shù)據(jù)放在寄存器中Ssub當(dāng)中。
      步驟6將寄存器Reg中Reg[(n×k-1)∶(n×k-n)]這n個(gè)比特?cái)?shù)據(jù)輸入到寄存器Snew的低n個(gè)比特位中,Snew剩余的比特由Ssub填充,可用乘法器和加法器實(shí)現(xiàn),即 Snew=Ssub<<n+Reg[(n×k-1)∶(n×k-n)] 步驟7如果計(jì)數(shù)器k不等于0,則將Snew中的數(shù)據(jù)輸入給stry,將xnew輸入給xforward,并回到步驟2,否則輸出數(shù)據(jù)結(jié)果。通過(guò)步驟1中k的設(shè)置,可以計(jì)算出不同精度的結(jié)果。
      所述步驟3中數(shù)據(jù)比較器Compare采用通用數(shù)據(jù)比較器的輸出端添加一簡(jiǎn)單的附加電路,該數(shù)據(jù)比較器Compare使stry和multiple可以進(jìn)行比較,當(dāng)和stry大于等于multiple的時(shí)候比較器輸出為1,否則輸出為0,附加電路的邏輯表達(dá)式如下
      其中

      表示Y(A<B)取反。
      一種應(yīng)用于所述一種適合于硬件的開(kāi)高次方方法的裝置,包括計(jì)數(shù)器模塊,其特征在于,還包括試商計(jì)算模塊和數(shù)據(jù)更新模塊;試商計(jì)算模塊,供輸入stry和xforward,并在每一次循環(huán)過(guò)程中計(jì)算出被開(kāi)方數(shù)的n次方根的一位數(shù)值;數(shù)據(jù)更新模塊,更新試商計(jì)算模塊中需要的計(jì)算數(shù)據(jù),包括xlsb、stry和xforward;計(jì)數(shù)器模塊,判斷是否終止循環(huán),輸出計(jì)算結(jié)果。
      所述試商計(jì)算模塊的寄存器stry和寄存器xforwardx中的數(shù)據(jù)經(jīng)過(guò)試商處理后分別得到數(shù)據(jù)選擇器SelectorA的輸出multiple,兩個(gè)輸入數(shù)據(jù)的寄存器stry和multiple的數(shù)據(jù)比較器所得比較值xlsb和寄存器stry本身的信號(hào)值;將這三個(gè)信號(hào)輸入到數(shù)據(jù)更新模塊,經(jīng)過(guò)更新處理后得到更新過(guò)后的開(kāi)方結(jié)果儲(chǔ)存到寄存器xnew和寄存器snew中;數(shù)據(jù)更新模塊由輸入到計(jì)數(shù)器模塊中的參數(shù)k控制,當(dāng)k值不為零時(shí),k值減一,直至k值為零,更新模塊輸出開(kāi)方結(jié)果。
      所述試商計(jì)算模塊,包括一個(gè)數(shù)據(jù)運(yùn)算電路(數(shù)據(jù)選擇器SelectorA)或者LUT1或者數(shù)據(jù)運(yùn)算電路和LUT2兩者的結(jié)合,一個(gè)數(shù)據(jù)比較器Compare,以及數(shù)據(jù)選擇器的輸入數(shù)據(jù)寄存器xforward,multiple是數(shù)據(jù)選擇器SelectorA的輸出,xforward經(jīng)過(guò)數(shù)據(jù)選擇器SelectorA或者LUT1或者數(shù)據(jù)運(yùn)算電路和LUT2兩者結(jié)合處理后得到被試商信號(hào)存儲(chǔ)在寄存器multiple中;數(shù)據(jù)比較器的兩個(gè)輸入數(shù)據(jù)的寄存器stry和multiple,比較所得值為當(dāng)前計(jì)算出的一位開(kāi)方數(shù)據(jù),并存儲(chǔ)在寄存器xlsb中;數(shù)據(jù)更新模塊分別到寄存器multiple、xlsb和stry取相應(yīng)的信號(hào)值。
      所述數(shù)據(jù)更新模塊,包括一個(gè)減法器Subtracter,數(shù)據(jù)選擇器SelectorB、更新電路A和更新電路B以及該減法器的兩個(gè)輸入數(shù)據(jù)的寄存器sub和stry,與輸出數(shù)據(jù)寄存器Ssub。Ssub中信號(hào)經(jīng)過(guò)更新電路A移位得到更新過(guò)后的信號(hào)并存入數(shù)據(jù)寄存器Snew,xlsb中信號(hào)經(jīng)過(guò)更新電路B移位得到更新后的信號(hào)并存入開(kāi)方結(jié)果寄存器xnew,更新電路A和更新電路B由計(jì)數(shù)器模塊的信號(hào)k控制;xlsb經(jīng)過(guò)數(shù)據(jù)選擇器SelectorB得到信號(hào)存儲(chǔ)在寄存器sub中。如果信號(hào)k不為0,則將寄存器Snew中的數(shù)據(jù)輸入給寄存器stry,將寄存器xnew輸入給寄存器xforward,供試商計(jì)算模塊調(diào)用;否則輸出結(jié)果數(shù)據(jù)。
      本發(fā)明的優(yōu)點(diǎn)在于 (1)在本裝置的試商計(jì)算模塊中,應(yīng)用電路邏輯運(yùn)算和查找表結(jié)合的方法。由于所采用的查找表對(duì)于不同的開(kāi)方次數(shù)都相同,可以取得良好重用的結(jié)果,節(jié)省了存儲(chǔ)空間;采用電路的邏輯運(yùn)算,使時(shí)間可預(yù)測(cè),保證了處理的速度,節(jié)省了運(yùn)算時(shí)間。
      (2)本發(fā)明在硬件開(kāi)方計(jì)算中兼顧了時(shí)間和硬件資源兩個(gè)因素,可在時(shí)間和空間兩方面取一個(gè)折中,這樣就在對(duì)計(jì)算時(shí)間要求不高或者硬件資源不很豐富的環(huán)境下充分使用,降低了成本。
      (3)本發(fā)明提供的硬件裝置,可以在電路上面實(shí)現(xiàn)任意次數(shù)的開(kāi)方運(yùn)算,并且在占用較小存儲(chǔ)空間的前提下達(dá)到較高精度和速度。



      圖1為本發(fā)明一種適合于硬件的開(kāi)高次方的方法流程圖; 圖2為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置試商模塊中數(shù)據(jù)比較器的電路原理圖; 圖3為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置數(shù)據(jù)更新模塊中xnew的計(jì)算電路原理圖; 圖4為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置數(shù)據(jù)更新模塊中snew的計(jì)算電路原理圖; 圖5為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置試商計(jì)算模塊結(jié)構(gòu)圖; 圖6為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置數(shù)據(jù)更新模塊結(jié)構(gòu)圖; 圖7為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置各模塊結(jié)構(gòu)圖; 圖8為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置開(kāi)平方試商計(jì)算模塊中multiple運(yùn)算實(shí)現(xiàn)電路; 圖9為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置開(kāi)三次方試商計(jì)算模塊,固化在ROM中的LUT1; 圖10為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置開(kāi)四次方試商計(jì)算模塊,固化在ROM中的LUT2; 圖11為本發(fā)明一種適合于硬件的開(kāi)高次方的裝置開(kāi)四次方試商計(jì)算模塊,由LUT2數(shù)值計(jì)算multiple的電路原理圖。

      具體實(shí)施例方式 下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
      一種適合于硬件的開(kāi)高次方的方法,本方法包括下面幾個(gè)步驟,流程圖如圖1所示 (1)數(shù)據(jù)輸入初始化將被開(kāi)方數(shù)輸入到電路的寄存器Reg中。寄存器Reg總共n×k比特,并將k=kz+kp存儲(chǔ)到一個(gè)計(jì)數(shù)器Counter中,其中k表示循環(huán)次數(shù),kz表示開(kāi)方結(jié)果整數(shù)部分的位數(shù),kp表示開(kāi)方結(jié)果小數(shù)部分的位數(shù)。如果只需要得出開(kāi)方的整數(shù)結(jié)果,則需將被開(kāi)方數(shù)的最低位與寄存器Reg的第0位對(duì)齊,高位不足則為0,否則將被開(kāi)方數(shù)的最低位與寄存器Reg的第n×kp位對(duì)齊,n表示開(kāi)方的次數(shù),低位的n×kp個(gè)比特以0填充。Counter的初始值k為寄存器總長(zhǎng)度與n值之比。初始化,設(shè)置寄存器xforward、stry、multiple、xlsb、xnew和sub為零。其中,寄存器xforward用于存儲(chǔ)當(dāng)前已經(jīng)計(jì)算出的開(kāi)方結(jié)果,寄存器stry用于存儲(chǔ)被試商的數(shù)值,寄存器multiple用于存儲(chǔ)試商過(guò)程中通過(guò)xforward計(jì)算出的被試商值,寄存器sub用于存儲(chǔ)減法器Substrator的一個(gè)輸入數(shù)據(jù),寄存器xlsb用于存儲(chǔ)當(dāng)前計(jì)算出的一位開(kāi)方數(shù)據(jù),寄存器xnew用于存儲(chǔ)數(shù)據(jù)更新過(guò)后的開(kāi)方結(jié)果。將寄存器Reg中最高的n個(gè)比特Reg[(n×k-1)∶(n×k-n)]的數(shù)據(jù)輸入到寄存器stry中。
      (2)通過(guò)xforward得到multiple,可以用三種方法實(shí)現(xiàn) 第一,將xforward輸入到數(shù)據(jù)選擇器SelectorA,輸出為multiple,數(shù)據(jù)選擇器相當(dāng)于一個(gè)邏輯電路,完成的計(jì)算,如下公式所示 該邏輯電路是由若干乘法器和加法器組合而成,其中乘法器的輸入數(shù)值Cnn-1·2n-1已計(jì)算好并固化于電路的寄存器中。
      第二,采用查找表,該查找表LUT1已經(jīng)事先固化到ROM中,xforward作為L(zhǎng)UT1的地址線(xiàn)輸入,輸出為multiple。查找表LUT1中,將xforward作為地址,而將(1)式中不同xforward的計(jì)算出的multiple作為對(duì)應(yīng)地址的內(nèi)容。
      第三,采用查找表和邏輯電路運(yùn)算結(jié)合的方式,具體做法是,將xforward作為查找表LUT2的地址線(xiàn)輸入,輸出為xforward的i次方的數(shù)值(i為正整數(shù),2≤i≤n)。同樣的,LUT2已經(jīng)事先固化到ROM當(dāng)中。然后將LUT2的結(jié)果輸入給運(yùn)算電路,計(jì)算出multiple的值,平衡了電路的時(shí)間代價(jià)和占用存儲(chǔ)空間。
      (3)將stry和multiple輸入數(shù)據(jù)比較器Compare,如果stry大于或者等于multipie,則Compare輸出xlsb為1,否則為0。計(jì)數(shù)器k減一。
      所述數(shù)據(jù)比較器Compare采用通用數(shù)據(jù)比較器的輸出端添加一簡(jiǎn)單電路即可,市面上通用的數(shù)據(jù)比較器,兩個(gè)數(shù)A和B的大小關(guān)系,有大于(YA>B)、等于(YA=B)和小于(YA<B)三種結(jié)果。該數(shù)據(jù)比較器Compare使stry和multiple可以進(jìn)行比較,當(dāng)和stry大于等于multiple的時(shí)候比較器輸出為1,否則輸出為0,附加電路的邏輯表達(dá)式如下
      其中

      表示Y(A<B)取反。邏輯電路圖如圖2所示。
      (4)將xlsb輸入到寄存器xnew的最低位中,xnew剩余的比特由xforward填充,即 xnew=xforward<<1+xlsb(3) 具體實(shí)現(xiàn)上可以用乘法器加法器實(shí)現(xiàn),也可以將電路退化為幾根連接線(xiàn),將輸入輸出對(duì)應(yīng)的比特位連接起來(lái)。同時(shí),將xlsb輸入數(shù)據(jù)選擇器SelectorB,如果xlsb為1,則將寄存器multiple的數(shù)值輸入到寄存器sub中,否則設(shè)置寄存器sub的值為0。邏輯電路如圖3所示。
      (5)將stry和sub輸入到減法器Subtracter中,即用stry減去sub,減法的結(jié)果數(shù)據(jù)放在寄存器中Ssub當(dāng)中。
      (6)將寄存器Reg中Reg[(n×k-1)∶(n×k-n)]這n個(gè)比特?cái)?shù)據(jù)輸入到寄存器Snew的低n個(gè)比特位中,Snew剩余的比特由Ssub填充,即 Snew=Ssub<<n+Reg[(n×k-1)∶(n×k-n)](4) 其中Reg[(n×k-1)∶(n×k-n)]表示Reg的第(n×k-1)位到第(n×k-n)位。具體實(shí)現(xiàn)上可以用乘法器加法器實(shí)現(xiàn),也可以將電路退化為幾根連接線(xiàn),將輸入輸出對(duì)應(yīng)的比特位連接起來(lái)。邏輯電路圖如圖4所示。
      (7)如果計(jì)數(shù)器k不等于0,則將Snew中的數(shù)據(jù)輸入給stry,將xnew輸入給xforward,并回到步驟2,否則輸出數(shù)據(jù)。通過(guò)(1)中kp的設(shè)置,可以計(jì)算出不同精度的結(jié)果。
      所述(4)和步驟(6)具體實(shí)現(xiàn)上可以用乘法器加法器實(shí)現(xiàn),也可以將電路退化為幾根連接線(xiàn),將輸入輸出對(duì)應(yīng)的比特位連接起來(lái)。
      一種應(yīng)用于所述一種適合于硬件的開(kāi)高次方方法的裝置,該裝置包含以下模塊試商計(jì)算模塊,供用戶(hù)輸入xlsb,stry和multiple,為每一次循環(huán)計(jì)算出被開(kāi)方數(shù)的n次方根的一位數(shù)值;數(shù)據(jù)更新模塊,為更新試商計(jì)算模塊中需要的計(jì)算數(shù)據(jù),包括stry和xforward;計(jì)數(shù)器模塊,判斷是否終止循環(huán),輸出計(jì)算結(jié)果。
      所述試商計(jì)算模塊,包括一個(gè)數(shù)據(jù)運(yùn)算電路(數(shù)據(jù)選擇器SelectorA)或者LUT1或者數(shù)據(jù)運(yùn)算電路和LUT2兩者的結(jié)合,一個(gè)數(shù)據(jù)比較器Compare,以及數(shù)據(jù)選擇器的輸入數(shù)據(jù)寄存器xforward,multiple是數(shù)據(jù)選擇器Selector的輸出,數(shù)據(jù)比較器的兩個(gè)輸入數(shù)據(jù)的寄存器stry和multiple,比較所得值為xlsb,系統(tǒng)框圖如圖5所示。
      所述數(shù)據(jù)更新模塊,包括一個(gè)減法器Subtracter,以及該減法器的兩個(gè)輸入數(shù)據(jù)的寄存器sub和stry,與輸出數(shù)據(jù)寄存器Ssub。Ssub中信號(hào)經(jīng)過(guò)過(guò)圖4所示的更新電路A移位得到更新過(guò)后的信號(hào)并存入數(shù)據(jù)寄存器snew,xlsb中信號(hào)經(jīng)過(guò)圖3所示的更新電路B移位得到更新后的信號(hào)并存入開(kāi)方結(jié)果寄存器xnew,更新電路A和更新電路B由計(jì)數(shù)器模塊的信號(hào)k控制;xlsb經(jīng)過(guò)數(shù)據(jù)選擇器SelectorB得到信號(hào)存儲(chǔ)在寄存器sub中,系統(tǒng)框圖如圖6所示。
      所述計(jì)數(shù)器模塊,包括一個(gè)計(jì)數(shù)器Counter。其初始值k為寄存器Reg總長(zhǎng)度與n值之比,如步驟(1)中所示。
      整個(gè)系統(tǒng)綜合框圖如圖7所示。
      試商計(jì)算模塊中,通過(guò)xforward得到multiple,采用三種不同的方式實(shí)現(xiàn)。其中所采用的LUT1和LUT2將事先被固化到ROM當(dāng)中 對(duì)第一種方法,用純邏輯電路實(shí)現(xiàn)試商的過(guò)程,不需要用到ROM,邏輯電路中用到的加法器和乘法器為通用加法器乘法器。
      對(duì)第二種方法,用LUT1完全代替組合邏輯電路,LUT1被事先固化到ROM當(dāng)中,輸入地址線(xiàn)為xforward,輸出為xforward代入(1)式所計(jì)算出來(lái)的multiple。
      對(duì)第三種方法,用LUT2和組合邏輯電路結(jié)合的方法,LUT2被事先固化到ROM當(dāng)中,輸入地址線(xiàn)為xforward,輸出為xforward的i次方(i為2到n之間的正整數(shù),n表示開(kāi)方次數(shù))。將輸出的結(jié)果帶入(1)式中,剩下的計(jì)算所用到的加法和乘法由通用的加法器和乘法器實(shí)現(xiàn)。核心思想在于用查找LUT2代替復(fù)雜的乘方邏輯運(yùn)算。
      數(shù)據(jù)更新模塊中,寄存器Ssub表示計(jì)算出一比特的開(kāi)方結(jié)果之后,stry和sub的差值,如下所示 Ssub=Stry-Sub(5) 在做完這一步之后,需要通過(guò)(4)式的邏輯運(yùn)算,整個(gè)被試商數(shù)的更新過(guò)程才完全完成。由于每n個(gè)比特的被開(kāi)方數(shù)可以計(jì)算出一位開(kāi)方結(jié)果,因此每一次試商數(shù)據(jù)的更新需要補(bǔ)充被開(kāi)方數(shù)的n個(gè)比特的數(shù)據(jù)。
      同樣的,在計(jì)算出一位結(jié)果之后,需要更新結(jié)果,更新過(guò)程如式(3)所示。以上提到的(3)~(5)式中的寄存器在實(shí)際電路中可能退化成電路信號(hào)線(xiàn)。
      實(shí)施例1 本實(shí)施實(shí)例以開(kāi)平方,即n=2為例,并且在試商計(jì)算模塊中采用邏輯電路(數(shù)據(jù)選擇器)的方式,說(shuō)明本發(fā)明的應(yīng)用 用試商計(jì)算模塊中數(shù)據(jù)選擇器的具體實(shí)現(xiàn)時(shí),由于此時(shí)n=2,則由(1)式可得 multiple=4·xforward+1(6) 對(duì)應(yīng)的邏輯運(yùn)算電路(數(shù)據(jù)選擇器)如圖8所示,主要是因?yàn)榇藭r(shí),multiple與xforward信號(hào)之間關(guān)系簡(jiǎn)單,4·xforward相當(dāng)于將xforward向左移動(dòng)兩位。
      其次敘述試商計(jì)算模塊中數(shù)據(jù)比較器的具體實(shí)現(xiàn)方法。市面上通用的數(shù)據(jù)比較器,兩個(gè)數(shù)A和B的大小關(guān)系,有大于(YA>B)、等于(YA=B)和小于(YA<B)三種結(jié)果,本發(fā)明中所用到的數(shù)據(jù)比較器只需要得到大于等于和小于兩種結(jié)果,因此在通用數(shù)據(jù)比較器的輸出端添加一簡(jiǎn)單電路即可,使stry和multiple可以進(jìn)行比較,當(dāng)和stry大于等于multiple的時(shí)候比較器輸出為1,否則輸出為0,附加電路的邏輯表達(dá)式如(2)所示。
      其次,在數(shù)據(jù)更新模塊當(dāng)中,所用到的減法器Substractor可以采用通用的減法器,而Snew和Xnew的計(jì)算電路和前面multiple的計(jì)算電路類(lèi)似。分別如圖3和圖4所示。
      最后,計(jì)數(shù)器模塊中的計(jì)數(shù)器為通用減法計(jì)數(shù)器,初始值為正整數(shù)k,決定了計(jì)算的精度。
      實(shí)施例2 本實(shí)施實(shí)例以開(kāi)三次方,即n=3為例,并且在試商計(jì)算模塊中采用查找表LUT的方式,說(shuō)明本方明的應(yīng)用。
      首先,整個(gè)裝置的構(gòu)成和開(kāi)平方,只有一處不同,就是試商計(jì)算模塊中計(jì)算multiple的具體實(shí)現(xiàn)方法,這個(gè)時(shí)候 由于此時(shí),這個(gè)計(jì)算電路比較復(fù)雜,可以采用查找表的方法代替實(shí)際的運(yùn)算電路。這個(gè)時(shí)候的查找表輸入為xforward,輸出為multiple。整個(gè)LUT1被事先固化到ROM當(dāng)中,圖9說(shuō)明了xforward為6比特?cái)?shù)據(jù)時(shí)候,完整的查找表。應(yīng)用該查找表可以對(duì)一個(gè)18比特的數(shù)據(jù)進(jìn)行開(kāi)三次方運(yùn)算。
      其余部分與開(kāi)平方實(shí)例相同。
      實(shí)施例3 本實(shí)施實(shí)例以開(kāi)四次方,即n=4為例,并且在試商計(jì)算模塊中采用邏輯運(yùn)算電路和查找表LUT2結(jié)合的方式,說(shuō)明本發(fā)明的應(yīng)用。
      開(kāi)四次方的時(shí)候 此時(shí)固化在ROM中的數(shù)據(jù)為xforward3,xforward2的數(shù)值,ROM的輸入地址線(xiàn)為xforward,而輸出包括上述兩個(gè)值。因此此時(shí)數(shù)據(jù)可以固化到兩個(gè)不同的ROM中,但是二者具有相同的地址線(xiàn),即xforward的信號(hào)。圖10說(shuō)明了xforward為6比特的時(shí)候,對(duì)應(yīng)的xforward3和xforward2的數(shù)值,這些數(shù)值構(gòu)成完整的LUT2,并固化在ROM中。
      當(dāng)通過(guò)地址線(xiàn)輸入xforward,從ROM中讀出xforward3和xforward2的值,應(yīng)用邏輯運(yùn)算電路完成(8)式的功能,其中用到的加法器和乘法器為通用加法器乘法器,構(gòu)造如圖11所示。
      其余部分與開(kāi)平方實(shí)例相同。
      權(quán)利要求
      1.一種適合于硬件的開(kāi)高次方的方法,其特征在于,本方法包括下面幾個(gè)步驟
      步驟一數(shù)據(jù)輸入初始化將被開(kāi)方數(shù)輸入到電路的寄存器Reg中;寄存器Reg總共n×k比特,并將k存儲(chǔ)到一個(gè)計(jì)數(shù)器Counter中,k為寄存器總長(zhǎng)度與n值之比;初始化時(shí)設(shè)置寄存器xforward、stry、multiple、xlsb、xnew和sub為零;其中,寄存器xforward用于存儲(chǔ)當(dāng)前已經(jīng)計(jì)算出的開(kāi)方結(jié)果,寄存器stry用于存儲(chǔ)被試商的數(shù)值,寄存器multiple用于存儲(chǔ)試商過(guò)程中通過(guò)xforward計(jì)算出的被試商值,寄存器sub用于存儲(chǔ)減法器Substrator的一個(gè)輸入數(shù)據(jù),寄存器xlsb用于存儲(chǔ)當(dāng)前計(jì)算出的一位開(kāi)方數(shù)據(jù),寄存器xnew用于存儲(chǔ)數(shù)據(jù)更新過(guò)后的開(kāi)方結(jié)果;將寄存器Reg中最高的n個(gè)比特Reg[(n×k-1)∶(n×k-n)],即Reg的第(n×k-1)位到第(n×k-n)位的數(shù)據(jù)輸入到寄存器stry中;
      步驟二通過(guò)xforward得到multiple;
      步驟三將stry和multiple輸入數(shù)據(jù)比較器Compare,如果stry大于或者等于multiple,則Compare輸出xlsb為1,否則為O;計(jì)數(shù)器k減一;
      步驟四將xlsb輸入到寄存器xnew的最低位中,xnew剩余的比特由xforward填充,即
      xnew=xforward<<1+xlsb
      步驟五將stry和sub輸入到減法器Subtracter中,即用stry減去sub,減法的結(jié)果數(shù)據(jù)放在寄存器中Ssub當(dāng)中;
      步驟六將寄存器Reg中Reg[(n×k-1)∶(n×k-n)]這n個(gè)比特?cái)?shù)據(jù)輸入到寄存器Snew的低n個(gè)比特位中,Snew剩余的比特由Ssub填充,可用乘法器和加法器實(shí)現(xiàn),即
      Snew=Ssub<<n+Reg[(n×k-1)∶(n×k-n)]
      步驟七如果計(jì)數(shù)器k不等于O,則將Snew中的數(shù)據(jù)輸入給stry,將xnew輸入給xforward,并回到步驟二,否則輸出數(shù)據(jù)結(jié)果;通過(guò)步驟一中k的設(shè)置,可以計(jì)算出不同精度的結(jié)果。
      2.根據(jù)權(quán)利要求1所述一種適合于硬件的開(kāi)高次方的方法,其特征在于所述步驟二可以用三種方法實(shí)現(xiàn)
      第一,將xforward輸入到數(shù)據(jù)選擇器SelectorA,輸出為multiple,數(shù)據(jù)選擇器相當(dāng)于一個(gè)邏輯電路,完成的計(jì)算,如下公式所示
      該邏輯電路是由若干乘法器和加法器組合而成,其中乘法器的輸入數(shù)值Cnn-i·2n-i已計(jì)算好并固化于電路的寄存器中;
      第二,采用查找表,該查找表LUT1已經(jīng)事先固化到ROM中,xforward作為L(zhǎng)UT1的地址線(xiàn)輸入,輸出為multiple;查找表LUT1中,將xforward作為地址,而將上式中不同xforward的計(jì)算出的multiple作為對(duì)應(yīng)地址的內(nèi)容;
      第三,采用查找表和邏輯電路運(yùn)算結(jié)合的方式,將xforward作為查找表LUT2的地址線(xiàn)輸入,輸出為xforward的i次方的數(shù)值(i為正整數(shù),2≤i≤n);同樣的,LUT2已經(jīng)事先固化到ROM當(dāng)中,然后將LUT2的結(jié)果輸入給運(yùn)算電路,計(jì)算出multiple的值。
      3.根據(jù)權(quán)利要求1所述一種適合于硬件的開(kāi)高次方的方法,其特征在于所述步驟三中數(shù)據(jù)比較器Compare采用通用數(shù)據(jù)比較器的輸出端添加一簡(jiǎn)單的附加電路,該數(shù)據(jù)比較器Compare使stry和multiple可以進(jìn)行比較;當(dāng)和stry大于等于multiple的時(shí)候比較器輸出為1,否則輸出為O,附加電路的邏輯表達(dá)式如下
      其中
      表示Y(A<B)取反。
      4.根據(jù)權(quán)利要求1所述一種適合于硬件的開(kāi)高次方的方法,其特征在于所述步驟四可以用乘法器和加法器實(shí)現(xiàn),將xlsb輸入數(shù)據(jù)選擇器SelectorB,如果xlsb為1,則將寄存器multiple的數(shù)值輸入到寄存器sub中,否則設(shè)置寄存器sub的值為O。
      5.一種應(yīng)用于權(quán)利要求1所述一種適合于硬件的開(kāi)高次方的方法的裝置,包括計(jì)數(shù)器模塊,其特征在于,還包括試商計(jì)算模塊和數(shù)據(jù)更新模塊;試商計(jì)算模塊,供輸入stry和xforward,并在每一次循環(huán)過(guò)程中計(jì)算出被開(kāi)方數(shù)的n次方根的一位數(shù)值;數(shù)據(jù)更新模塊,更新試商計(jì)算模塊中需要的計(jì)算數(shù)據(jù),包括xlsb、stry和xforward;計(jì)數(shù)器模塊,判斷是否終止循環(huán),輸出計(jì)算結(jié)果;
      所述試商計(jì)算模塊的寄存器stry和寄存器xforward中的數(shù)據(jù)經(jīng)過(guò)試商處理后分別得到數(shù)據(jù)選擇器SelectorA的輸出multiple,兩個(gè)輸入數(shù)據(jù)的寄存器stry和multiple的數(shù)據(jù)比較器所得比較值xlsb和寄存器stry本身的信號(hào)值;將這三個(gè)信號(hào)輸入到數(shù)據(jù)更新模塊,經(jīng)過(guò)更新處理后得到更新過(guò)后的開(kāi)方結(jié)果儲(chǔ)存到寄存器xnew和寄存器Snew中;數(shù)據(jù)更新模塊由輸入到計(jì)數(shù)器模塊中的參數(shù)k控制,當(dāng)k值不為零時(shí),k值減一,直至k值為零,更新模塊輸出開(kāi)方結(jié)果。
      6.根據(jù)權(quán)利要求5所述一種適合于硬件的開(kāi)高次方的裝置,其特征在于所述試商計(jì)算模塊,包括一個(gè)數(shù)據(jù)選擇器SelectorA或者LUT1或者數(shù)據(jù)運(yùn)算電路和LUT2兩者的結(jié)合,一個(gè)數(shù)據(jù)比較器Compare,以及數(shù)據(jù)選擇器的輸入數(shù)據(jù)寄存器xforward,multiple是數(shù)據(jù)選擇器SelectorA的輸出,xforward經(jīng)過(guò)數(shù)據(jù)選擇器SelectorA或者LUT1或者數(shù)據(jù)運(yùn)算電路和LUT2兩者結(jié)合處理后得到被試商信號(hào)存儲(chǔ)在寄存器multiple中;數(shù)據(jù)比較器的兩個(gè)輸入數(shù)據(jù)的寄存器stry和multiple,比較所得值為當(dāng)前計(jì)算出的一位開(kāi)方數(shù)據(jù),并存儲(chǔ)在寄存器xlsb中;數(shù)據(jù)更新模塊分別到寄存器multiple、xlsb和stry取相應(yīng)的信號(hào)值。
      7.根據(jù)權(quán)利要求5所述一種適合于硬件的開(kāi)高次方的裝置,其特征在于所述數(shù)據(jù)更新模塊,包括一個(gè)減法器Subtracter,數(shù)據(jù)選擇器SelectorB、更新電路A和更新電路B以及該減法器的兩個(gè)輸入數(shù)據(jù)的寄存器sub和stry,與輸出數(shù)據(jù)寄存器Ssub;Ssub中信號(hào)經(jīng)過(guò)更新電路A移位得到更新過(guò)后的信號(hào)并存入數(shù)據(jù)寄存器Snew,xlsb中信號(hào)經(jīng)過(guò)更新電路B移位得到更新后的信號(hào)并存入開(kāi)方結(jié)果寄存器xnew,更新電路A和更新電路B由計(jì)數(shù)器模塊的信號(hào)k控制;xlsb經(jīng)過(guò)數(shù)據(jù)選擇器SelectorB得到信號(hào)存儲(chǔ)在寄存器sub中;如果信號(hào)k不為零,則將寄存器Snew中的數(shù)據(jù)輸入給寄存器stry,將寄存器xnew輸入給寄存器xforward,供試商計(jì)算模塊調(diào)用;否則輸出結(jié)果數(shù)據(jù)。
      全文摘要
      本發(fā)明公開(kāi)了一種高效的適合于硬件的開(kāi)高次方的裝置及方法。采用了邏輯運(yùn)算電路或者查找表或者二者結(jié)合得方式,進(jìn)行實(shí)際數(shù)值運(yùn)算開(kāi)方的技術(shù)。該技術(shù)有減小硬件電路信號(hào)延遲的優(yōu)點(diǎn),折中了電路延時(shí)和電路資源消耗。取得了可預(yù)測(cè)運(yùn)算時(shí)間,降低硬件消耗的效果。能夠?qū)崿F(xiàn)對(duì)不同數(shù)據(jù)進(jìn)行任意次方的開(kāi)方運(yùn)算。并且在使用查找表的時(shí)候,該查找表所占用的硬件存儲(chǔ)資源,遠(yuǎn)遠(yuǎn)小于傳統(tǒng)查表法中查找表所占用的硬件存儲(chǔ)資源,因此該裝置在用消耗很小存儲(chǔ)空間獲取較快運(yùn)算速度上面取得了較好的效果。
      文檔編號(hào)G06F1/02GK101105741SQ20071011976
      公開(kāi)日2008年1月16日 申請(qǐng)日期2007年7月31日 優(yōu)先權(quán)日2007年7月31日
      發(fā)明者劉榮科, 賴(lài)大彧 申請(qǐng)人:北京航空航天大學(xué)
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1