亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的2底指數(shù)函數(shù)算法優(yōu)化與實(shí)現(xiàn)

        2023-09-18 00:40:14程甜甜宋宇鯤
        電子科技 2023年9期
        關(guān)鍵詞:浮點(diǎn)數(shù)項(xiàng)數(shù)展開式

        程甜甜,宋宇鯤

        (合肥工業(yè)大學(xué) 微電子學(xué)院,安徽 合肥 230601)

        指數(shù)函數(shù)是一種常見的超越函數(shù),廣泛應(yīng)用于數(shù)字信號(hào)處理、人工智能、控制系統(tǒng)和導(dǎo)航系統(tǒng)等領(lǐng)域,也是實(shí)現(xiàn)多種超越函數(shù)例如Power函數(shù)xy的重要中間函數(shù)[1-3],其在信號(hào)濾波[4]和雷達(dá)通訊[5]中也具有重要應(yīng)用。芯片工藝制程的快速發(fā)展給超越函數(shù)的硬件實(shí)現(xiàn)提供了基礎(chǔ)。相比于軟件計(jì)算,硬件電路具有運(yùn)算速度快、并行度高以及實(shí)時(shí)性好等優(yōu)勢。常見的指數(shù)函數(shù)硬件實(shí)現(xiàn)算法都是計(jì)算歐拉數(shù)e的指數(shù)函數(shù),即y=ex,但是以2為底的指數(shù)函數(shù)y=2x在圖像處理、信號(hào)濾波、飛行器控制等工程領(lǐng)域中也具有廣泛應(yīng)用[6-7]。本文研究一種高精度、高性能的2x的實(shí)現(xiàn)電路。

        常用的指數(shù)函數(shù)的硬件實(shí)現(xiàn)方法有查找表法(Look Up Table,LUT)、坐標(biāo)旋轉(zhuǎn)數(shù)字機(jī)(Coordinated Rotation Digital Computer,CORDIC)算法和多項(xiàng)式近似法等。查找表法將函數(shù)值存在表中,根據(jù)輸入數(shù)據(jù)直接讀取表中對(duì)應(yīng)的函數(shù)值,其延時(shí)低且適用于任何底數(shù)的指數(shù)函數(shù),但隨精度的增加,存儲(chǔ)資源以2的冪次方增加[8]。CORDIC算法通過不斷的角度偏擺以逼近目標(biāo)角度,硬件只有移位和加法運(yùn)算,但提高精度需要增加迭代次數(shù),計(jì)算延遲、高實(shí)時(shí)響應(yīng)特性不好且計(jì)算范圍較窄[9-12]。多項(xiàng)式近似法是將指數(shù)函數(shù)近似為多項(xiàng)式計(jì)算[13-15]。受收斂域限制,多項(xiàng)式法的計(jì)算難以覆蓋整個(gè)定義域,若要提高精度和計(jì)算范圍,只能增加多項(xiàng)式的項(xiàng)數(shù)或者分段處理。前者會(huì)增加硬件計(jì)算資源[16],而后者需要折中選擇分段和項(xiàng)數(shù)[17]。

        針對(duì)上述方法存在的問題,本文設(shè)計(jì)了一種基于改進(jìn)的查找表與泰勒級(jí)數(shù)展開相結(jié)合的指數(shù)函數(shù)硬件計(jì)算電路。利用區(qū)間劃分的預(yù)處理方法對(duì)輸入數(shù)據(jù)進(jìn)行壓縮,所需中間數(shù)據(jù)提前計(jì)算存于表中,然后利用泰勒級(jí)數(shù)展開式計(jì)算指數(shù)函。相較于文獻(xiàn)[2~3],本文設(shè)計(jì)的電路資源消耗更少,輸入值范圍更寬,精度更高。

        1 優(yōu)化算法說明

        泰勒級(jí)數(shù)展開式法是把目標(biāo)函數(shù)通過泰勒展開成多項(xiàng)式求和形式來實(shí)現(xiàn)逼近目標(biāo)函數(shù)解[18]。此為基礎(chǔ),本文將2x轉(zhuǎn)換為ex的形式后通過泰勒展開計(jì)算,所用的泰勒展開式為

        (1)

        為滿足數(shù)據(jù)吞吐量,要求泰勒展開式多采用流水線全展開結(jié)構(gòu)實(shí)現(xiàn)。泰勒級(jí)數(shù)展開式法的精度與展開項(xiàng)數(shù)成正比,高精度要求意味著更多的乘法器和加法器。文獻(xiàn)[3]表明在泰勒展開式中x<0.125,指數(shù)函數(shù)的泰勒展開式取5項(xiàng),即展開至x4項(xiàng),能夠保證計(jì)算精度在10-7量級(jí)。本文設(shè)計(jì)了輸入變量x的預(yù)處理操作,將輸入數(shù)據(jù)壓縮至較小的收斂區(qū)間,利用查找表存儲(chǔ)中間計(jì)算數(shù)據(jù),實(shí)現(xiàn)用最少的泰勒展開項(xiàng)數(shù)滿足預(yù)期精度要求。優(yōu)化后的算法流程如圖1所示,具體預(yù)處理步驟如下所示:

        圖1 優(yōu)化算法流程Figure 1. Flow of optimization algorithm

        步驟1令x=xi+xf,xi和xf分別為x的整數(shù)部分和小數(shù)部分,對(duì)于整數(shù)部分的指數(shù)值2xi的計(jì)算通過移位邏輯即可實(shí)現(xiàn),因此將設(shè)計(jì)重點(diǎn)放在小數(shù)部分的指數(shù)函數(shù)值2xf的計(jì)算上。令b=xf×ln(2),則2xf=eb,將2xf通過換底變?yōu)閑b。

        步驟2eb用泰勒級(jí)數(shù)展開式求解,b的范圍為(-0.693 15,0.693 15),直接計(jì)算所需項(xiàng)數(shù)仍較多。為進(jìn)一步縮小代入展開式計(jì)算的數(shù)據(jù)范圍,對(duì)b繼續(xù)拆分。令b=bm+bl,bm是b的高m位,其數(shù)值為bm=round(b×2m)/2m。其中,round(·)表示四舍五入函數(shù),bl是b除去高m位剩余的低位部分,eb公式變形為eb=ebm×ebl。這種拆分方法將[-1,1]的區(qū)間等分成2×2m份,控制bl在(-1/2m,1/2m)范圍內(nèi),計(jì)算時(shí)ebm固定在查找表中,通過b的高m位尋址獲得。上述操作將eb的計(jì)算轉(zhuǎn)換成ebl的計(jì)算,實(shí)現(xiàn)輸入數(shù)據(jù)的壓縮。

        步驟3利用e指數(shù)函數(shù)的泰勒展開式計(jì)算ebl。

        (2)

        展開式的項(xiàng)數(shù)由劃分的區(qū)間大小及所需的精度要求決定。綜上步驟,指數(shù)函數(shù)2x的求解計(jì)算式變換如下所示。

        2x=2xi+xf=2xi×2xf=2xi×ewf×ln(2)=2xi×ebm×ebl

        (3)

        2 硬件實(shí)現(xiàn)

        2.1 參數(shù)選擇

        區(qū)間劃分程度和展開式項(xiàng)數(shù)影響存儲(chǔ)資源和精度。在理論上,對(duì)b的拆分區(qū)間劃分越細(xì),實(shí)現(xiàn)相同精度下所需展開式的項(xiàng)數(shù)越少,對(duì)指數(shù)函數(shù)的近似精度越高。但過細(xì)的區(qū)間劃分會(huì)導(dǎo)致高存儲(chǔ)問題,因此需要權(quán)衡存儲(chǔ)和計(jì)算資源與精度的關(guān)系。

        為選擇硬件實(shí)現(xiàn)的合適參數(shù),對(duì)優(yōu)化算法進(jìn)行高級(jí)語言建模以分析參數(shù)與性能的對(duì)照關(guān)系,如表1所示。其中,N表示泰勒級(jí)數(shù)式(2)的展開項(xiàng)數(shù),m表示區(qū)間劃分參數(shù),表1中的數(shù)據(jù)為計(jì)算指數(shù)函數(shù)的最大相對(duì)誤差量級(jí),存儲(chǔ)資源消耗為64×2m。

        表1 不同參數(shù)組合下的最大相對(duì)誤差Table 1. Maximum relative errors under different combinations of parameters

        如表1所示,當(dāng)固定區(qū)間劃分參數(shù)m=9時(shí),bl的范圍為(-1/512,1/512)。對(duì)比不同展開式項(xiàng)數(shù)結(jié)果如下:當(dāng)展開式取5項(xiàng)時(shí),最大相對(duì)誤差量級(jí)剛好為10-16,再增加展開式項(xiàng)數(shù),誤差不變;減少展開式項(xiàng)數(shù),每減少1項(xiàng),最大相對(duì)誤差增大3~4個(gè)數(shù)量級(jí)。雙精度浮點(diǎn)數(shù)在十進(jìn)制下的有效數(shù)字為15~16位,相對(duì)誤差為10-16能夠滿足雙精度的精度要求。

        當(dāng)固定展開式取5項(xiàng)時(shí),展開式為

        (4)

        對(duì)比不同的區(qū)間劃分參數(shù)m,結(jié)果表明,當(dāng)m=9時(shí)最大相對(duì)誤差量級(jí)剛好為10-16;當(dāng)m≤8時(shí)誤差增大,不能滿足雙精度浮點(diǎn)數(shù)的精度要求;當(dāng)m>9時(shí)增大m精度不再提高。因此在雙精度的數(shù)據(jù)格式下,區(qū)間劃分的參數(shù)m=9、展開式項(xiàng)數(shù)N=5最為合適。

        單精度浮點(diǎn)數(shù)的有效數(shù)字為6~7位。從表1可以看出,當(dāng)m=7、泰勒級(jí)數(shù)展開式取3項(xiàng)時(shí),優(yōu)化算法的最大相對(duì)誤差量級(jí)剛好能達(dá)到10-8,滿足單精度浮點(diǎn)數(shù)的精度要求,此時(shí)bl的范圍為 (-1/128,1/128),泰勒展開式如式(5)所示。

        (5)

        2.2 精度評(píng)估

        根據(jù)上述算法描述和參數(shù)選擇,從理論角度給出精度評(píng)估。泰勒計(jì)算式為

        (6)

        其中,Rn(x)表示余項(xiàng),表示一個(gè)從A(x-x0)n+1開始直至無窮多項(xiàng)的多項(xiàng)式,Rn(x)可表示精度,余項(xiàng)越小,精度越高。Rn(x)取拉格朗日余項(xiàng),計(jì)算式為

        (7)

        其中,ξ是x的取值范圍[a,b]的一個(gè)跟x有關(guān)的點(diǎn),此處取ξ為[a,b]上使f(n+1)(x)取最大值的點(diǎn)。

        在雙精度計(jì)算下,指數(shù)函數(shù)的泰勒級(jí)數(shù)展開至x4項(xiàng),為

        (8)

        (9)

        計(jì)算可得指數(shù)泰勒計(jì)算的最大誤差為2.373 1×10-16。按照雙精度浮點(diǎn)數(shù)尾數(shù)52位,則雙精度浮點(diǎn)數(shù)的表示精度為2-52≈2.220 4×10-16,因此改進(jìn)算法的最大誤差滿足雙精度浮點(diǎn)數(shù)的精度要求。

        同理,在單精度計(jì)算下,展開式展開至x2項(xiàng),數(shù)據(jù)范圍為(-1/128,1/128),則n=2,ξ=1/128。按照上述計(jì)算方法可得優(yōu)化算法的最大誤差為8.009 6×10-8,單精度浮點(diǎn)數(shù)的表示精度為2-23≈1.192 1×10-7,同樣滿足單精度浮點(diǎn)數(shù)的精度要求。

        2.3 硬件結(jié)構(gòu)

        優(yōu)化算法的硬件實(shí)現(xiàn)結(jié)構(gòu)如圖2所示,主要分為拆分電路、查表電路、泰勒展開求解電路3部分電路實(shí)現(xiàn)。

        圖2 優(yōu)化算法的硬件實(shí)現(xiàn)結(jié)構(gòu)Figure 2. The hardware implementation structure of the optimized algorithms

        將輸入的浮點(diǎn)形式的x通過組合邏輯拆分成整數(shù)和小數(shù),為不丟失精度,拆分后的數(shù)據(jù)以偽浮點(diǎn)的形式存儲(chǔ),采用11位寄存器記錄小數(shù)點(diǎn)的位置,另用53位寄存器記錄有效數(shù)據(jù)。圖2中乘法器M1為53位定點(diǎn)乘法器,直接用小數(shù)部分xf的有效位與53位常數(shù)ln(2)相乘,得到106位的定點(diǎn)數(shù)b。待其余電路計(jì)算完后對(duì)結(jié)果進(jìn)行整數(shù)部分xi的移位。

        為壓縮存儲(chǔ)資源,在讀取查找表中的ebm時(shí),可以用兩級(jí)逼近的方法代替直接存儲(chǔ)以節(jié)省一半的資源。兩級(jí)逼近的方法原理如圖3(a)和圖3(b)所示,分別為向左逼近和向右逼近。根據(jù)優(yōu)化算法的參數(shù)選擇可知,區(qū)間劃分參數(shù)m=9,b=bm+bl。通過b的高9位判斷b的范圍,根據(jù)圖3中舉例可知,兩種情況下b的范圍均為(3/256,4/256)。圖3(a)中的b更接近左端點(diǎn)3/256,拆分時(shí)令bm=3/256,bl=bm-b。圖3(b)中的b更接近右端點(diǎn)4/256,則令bm=4/256,bl=b-bm,此時(shí)bl為負(fù)數(shù)。

        (a)

        (b)圖3 兩級(jí)逼近方法(a)向左逼近 (b)向右逼近Figure3. The two-stage approximation method(a)Near to the left (b)Near to the rirgt

        若采用直接存儲(chǔ)方法,[-1,1]的區(qū)間被等分為1 024等份,需要存每一個(gè)區(qū)間端點(diǎn)處的指數(shù)函數(shù)值ebm,其硬件信號(hào)名為exp_bm,如下所示:

        共需存儲(chǔ)1 024個(gè)數(shù)據(jù),此時(shí)查找表大小為1 024×64 bit,10位地址線為b的符號(hào)和b的高9位b[105:97]的組合。

        [2]教育部.普通高等學(xué)校.校數(shù)[EB/OL].http://www.Moe.edu.cn/publicfiles/business/htmlfiles/moe/s4960/-201012/113594.html

        若采用兩級(jí)逼近的方法,則在只讀存儲(chǔ)器(Read Only Memory,ROM)中按如下方式存放數(shù)據(jù):

        在得到ebm的同時(shí),根據(jù)b確定bl。bl是范圍在(-1/512,1/512)之間的數(shù),因此bl的高8位為0,根據(jù)兩級(jí)逼近原理,bl的其余有效位根據(jù)b[97:0]確定。如圖4所示,其中向右逼近的情況會(huì)出現(xiàn)減法,此時(shí)取數(shù)據(jù)的補(bǔ)碼。bl的符號(hào)根據(jù)b的符號(hào)和b[97]共同決定,當(dāng)b[97]=0時(shí),bl與b同號(hào),反之異號(hào)。

        圖5所示為式(4)的硬件實(shí)現(xiàn)電路,式(4)中的常系數(shù)乘法除1/3外,均可通過移位邏輯實(shí)現(xiàn),降低了乘法操作次數(shù)??紤]到流水結(jié)構(gòu)和資源之間的權(quán)衡,展開式由5個(gè)乘法器和3個(gè)加法器實(shí)現(xiàn),通過4級(jí)計(jì)算得到。

        圖5 指數(shù)函數(shù)的泰勒級(jí)數(shù)展開電路Figure 5. Taylor series expands circuit of exponential function

        圖5中由bl得到1+bl的組合邏輯,展開如圖6所示。由106位的定點(diǎn)形式的bl,直接轉(zhuǎn)換為64位的雙精度浮點(diǎn)形式的1+bl。根據(jù)bl的符號(hào)位作為多路選擇器的判斷位,補(bǔ)全1+bl的11位階碼,根據(jù)bl的數(shù)值確定1+bl的尾數(shù)。

        圖6 1+bl計(jì)算電路Figure 6. Calculating circuit of 1+bl

        3 實(shí)驗(yàn)結(jié)果與分析

        本文設(shè)計(jì)的指數(shù)函數(shù)計(jì)算單元,利用Verilog HDL硬件描述語言進(jìn)行編程,使用Vivado 2018.3在Xilinx公司XC7K325T現(xiàn)場可編程門陣列(FPGA)芯片完成優(yōu)化算法的硬件實(shí)現(xiàn),并對(duì)算法的精度、速度、資源消耗以及適用范圍等性能進(jìn)行評(píng)估。

        在雙精度浮點(diǎn)數(shù)數(shù)值格式下,計(jì)算范圍為(-1 024,1 024),超出范圍將導(dǎo)致結(jié)果溢出,整個(gè)計(jì)算過程采用流水線結(jié)構(gòu),頻率為185 MHz,最大相對(duì)誤差量級(jí)為10-16。表2為系統(tǒng)資源使用情況。

        表2 系統(tǒng)資源使用情況Table 2. The utilization of system resources

        實(shí)驗(yàn)測試數(shù)據(jù)利用MATLAB工具中的unifrnd(·)函數(shù)隨機(jī)生成若干組一維數(shù)據(jù),通過網(wǎng)口下發(fā)到FPGA開發(fā)板中,然后將硬件計(jì)算結(jié)果通過網(wǎng)口回傳到電腦端,與MATLAB計(jì)算的數(shù)據(jù)進(jìn)行比較分析。在雙精度范圍下,指數(shù)的樣本范圍為[-1,1]、[-10,10]、[-100,100]、[-1 023,1 023]這4組,每組選取10 000個(gè)隨機(jī)測試樣本,將硬件電路計(jì)算值與MATLAB中指數(shù)函數(shù)計(jì)算結(jié)果進(jìn)行對(duì)比,對(duì)比結(jié)果如表3和圖7所示。

        表3 不同定義域內(nèi)電路的計(jì)算誤差Table 3. Calculation errors of circuits in different definition domains

        (a)

        (b)

        (c)

        根據(jù)表3和圖7可知,指數(shù)函數(shù)在所有計(jì)算范圍內(nèi)誤差穩(wěn)定,最大相對(duì)誤差量級(jí)為10-16,平均相對(duì)誤差量級(jí)為10-18,均方差為10-16。這表明,本文設(shè)計(jì)的指數(shù)函數(shù)硬件計(jì)算電路可以保證在全部定義域范圍內(nèi)保持較高的計(jì)算精度。

        表4為本文電路結(jié)構(gòu)與文獻(xiàn)[2]和文獻(xiàn)[3]提出的電路結(jié)構(gòu)分別進(jìn)行性能比較的結(jié)果。由于文獻(xiàn)[3]是在單精度浮點(diǎn)數(shù)的范圍下計(jì)算,因此將本文電路結(jié)構(gòu)相關(guān)參數(shù)映射到32位單精度浮點(diǎn)數(shù)的計(jì)算范圍下與之進(jìn)行對(duì)比。

        表4 性能對(duì)比Table 4. Performance comparison

        文獻(xiàn)[2]采用CORDIC實(shí)現(xiàn)128位四精度浮點(diǎn)數(shù)的指數(shù)函數(shù)計(jì)算,采用67級(jí)流水結(jié)構(gòu),在(-8 192,528)范圍內(nèi)可保證10-6以上的精度,電路結(jié)構(gòu)面積小、功耗低,而本文結(jié)構(gòu)中兩種精度下的計(jì)算均可超過文獻(xiàn)[2]的精度。由于文獻(xiàn)[2]采用ASIC工藝,其他參數(shù)與本文設(shè)計(jì)不具有可比性,暫不予比較。

        文獻(xiàn)[3]實(shí)現(xiàn)的是e指數(shù)函數(shù)ex,本文所提方法和電路是實(shí)現(xiàn)2x。但二者在核心計(jì)算部分均采用的e指數(shù)的泰勒級(jí)數(shù)展開式,且拆分方法具有相似性,且本文在實(shí)現(xiàn)2x時(shí)也是通過轉(zhuǎn)換成ex來求解,因此具有可比性。

        文獻(xiàn)[3]也采用泰勒公式與查找表相結(jié)合的方法,在進(jìn)行泰勒公式計(jì)算前對(duì)輸入的x進(jìn)行處理。由于處理部分算法原理不同,文獻(xiàn)[3]計(jì)算的數(shù)據(jù)范圍較大,需要的泰勒級(jí)數(shù)展開式項(xiàng)數(shù)更多。在單精度的計(jì)算范圍下,文獻(xiàn)[3]需要展開至x4項(xiàng),即

        (10)

        而本文電路只需要展開至x2項(xiàng),即

        (11)

        優(yōu)化算法在雙精度實(shí)現(xiàn)時(shí)需展開至x4項(xiàng),與文獻(xiàn)[3]在單精度下展開項(xiàng)數(shù)一致。展開式的項(xiàng)數(shù)影響硬件計(jì)算資源的消耗,展開項(xiàng)數(shù)越多,加法器和乘法器越多、硬件面積越大、計(jì)算延遲更高。文獻(xiàn)[3]的設(shè)計(jì)在Microsemi公司LGLOO2系列的M2GL150 FPGA上實(shí)現(xiàn),本文結(jié)構(gòu)的存儲(chǔ)資源在單精度下比文獻(xiàn)[3]少55.6%,而定義域范圍均為整個(gè)單精度浮點(diǎn)數(shù),兩者計(jì)算精度幾乎一致,在單精度下均為10-7。根據(jù)兩者綜合結(jié)果,本文所提方法在硬件實(shí)現(xiàn)指數(shù)函數(shù)時(shí),優(yōu)勢較明顯。

        4 結(jié)束語

        本文優(yōu)化了泰勒展開和查找表相結(jié)合方法,設(shè)計(jì)了一種求解指數(shù)函數(shù)2x的電路結(jié)構(gòu),通過區(qū)間劃分的預(yù)處理方法壓縮輸入數(shù)據(jù)至較小區(qū)間,利用盡量少項(xiàng)的泰勒展開式獲得較高的計(jì)算精度。與現(xiàn)有其他電路結(jié)構(gòu)相比,本文所提方法擁有更低的存儲(chǔ)消耗和更寬的輸入值范圍,且具有一定的工程應(yīng)用價(jià)值。

        猜你喜歡
        浮點(diǎn)數(shù)項(xiàng)數(shù)展開式
        等比數(shù)列的性質(zhì)、推論和應(yīng)用
        四種Python均勻浮點(diǎn)數(shù)生成方法
        泰勒展開式在函數(shù)中的應(yīng)用
        函數(shù)Riemann和式的類Taylor級(jí)數(shù)展開式
        在C語言中雙精度浮點(diǎn)數(shù)線性化相等比較的研究
        求 和
        論高次方程
        非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)
        《推理與證明》必考題型賞析
        對(duì)一道冪級(jí)數(shù)展開式例題的思考
        国产欧美另类精品久久久| 精品国产一区二区三区亚洲人| 中文人妻熟妇乱又伦精品| 中国黄色一区二区三区四区| 素人系列免费在线观看| 国产黄三级三·级三级| 国产乱子伦农村xxxx| 久久久精品国产亚洲av网麻豆| 免费毛片在线视频| 欧美video性欧美熟妇| 久久精品国产熟女亚洲av麻豆 | 蜜桃精品人妻一区二区三区| 大肥婆老熟女一区二区精品| 日本japanese少妇高清| 久久精品人人做人人爱爱| 日韩人妖干女同二区三区 | 免费观看性欧美大片无片| 亚洲国产精品一区二区成人片国内| 狠狠综合久久av一区二区三区| 亚洲AV日韩Av无码久久| 毛片免费在线播放| 搡老熟女中国老太| 无套熟女av呻吟在线观看| 99视频偷拍视频一区二区三区| 一本加勒比hezyo无码视频| 黄色毛片在线看| 国产亚洲精品aaaaaaa片| 亚洲精品夜夜夜妓女网| 伊人情人色综合网站| 日韩一区二区av伦理| 欧美1区二区三区公司| 中文字幕人妻丝袜美腿乱| 日日拍夜夜嗷嗷叫国产| 五月婷婷开心六月激情| 日本一区二区三区四区在线看| 亚洲欧洲日本精品| 国产又黄又爽又色的免费| 久久aaaa片一区二区| 人妻精品人妻一区二区三区四区| 中文字幕你懂的一区二区| 爆乳午夜福利视频精品|