專利名稱:一種基于fpga的lm算法實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于FPGA的LM算法實現(xiàn)方法,特別涉及一種用于高斯曲線擬合的LM算法的FPGA實現(xiàn)技術(shù),屬于數(shù)據(jù)處理技術(shù)領(lǐng)域。
背景技術(shù):
當(dāng)前測量數(shù)據(jù)處理過程中,在觀測值服從正態(tài)分布的前提下,最小ニ乘估計是最優(yōu)線性無偏估計,因而在數(shù)據(jù)處理中被廣泛應(yīng)用。而當(dāng)測量的函數(shù)模型是非線性模型時,一般是將非線性模型利用泰勒公式近似化為線性模型,然后用最小ニ乘估計法處理。非線性的最小二乗法是有偏的,在需要高精度求解非線性模型參數(shù)時,計算結(jié)果精度較低,有的甚至不能線性近似,因而求得的結(jié)果實用價值不大。這時需要研究非線性模型的精確數(shù)值解法。Levenberg-Marquard算法(常被簡稱為LM算法)既能計算線性模型參數(shù),又能計算非線性模型參數(shù),并且無論法方程是良態(tài)、病態(tài)還是秩虧,該算法都能收斂,計算結(jié)果可靠。如果函數(shù)模型是線性并且呈良態(tài),該算法只需迭代一次便可得到精確解,呈病態(tài)時迭代幾次可以收斂到穩(wěn)定解。如果函數(shù)模型是非線性模型,一般只需迭代幾次便可收斂,當(dāng)初值偏離真值較遠時,可以通過增加迭代次數(shù)來獲得最優(yōu)解。然而正是由于LM算法需要多次迭代,運算量大,用通用計算機或DSP等進行計算時實時性很難保證,用高性能計算機來處理成本又非常高。FPGA芯片雖然在速度上與DSP略有差距,但能實現(xiàn)并行結(jié)構(gòu)。最新推出的FPGA器件中,不僅集成有豐富的可配置邏輯塊資源,還包括大量面向計算密集應(yīng)用的DSP単元、塊狀RAM和高速串行通信単元。因此選擇可編程的邏輯器件進行數(shù)字信號處理是當(dāng)今世界的發(fā)展趨勢。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服上述現(xiàn)有技術(shù)的缺陷,能夠在實現(xiàn)LM算法時既保證實時性又不會成本太高,提出了一種基于FPGA的LM算法實現(xiàn)方法,該模塊全部由硬件描述語言實現(xiàn),可以提升數(shù)據(jù)處理的運行速度和穩(wěn)定性以及數(shù)據(jù)的計算效率,節(jié)省開發(fā)成本。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的。本發(fā)明的一種基于FPGA的LM算法實現(xiàn)方法,其實現(xiàn)平臺為FPGA,采用硬件描述語言實現(xiàn),模塊輸入為采用串行數(shù)據(jù)流方式的外部測量數(shù)據(jù),LM算法模塊包括以下子模塊串并轉(zhuǎn)換子模塊、歸ー化處理子模塊、擬合變量計算子模塊、指數(shù)計算子模塊、迭代系數(shù)計算A子模塊、延時A子模塊、迭代系數(shù)計算B子模塊、延時B子模塊和并行判斷子模塊;首先通過串并轉(zhuǎn)換子模塊將輸入的串行數(shù)據(jù)流轉(zhuǎn)換成并行數(shù)據(jù)并送入歸ー化處理子模塊進行歸ー化處理,之后進行LM算法迭代循環(huán),也即首先進入擬合變量計算子模塊計算擬合變量,然后通過指數(shù)計算子模塊進行指數(shù)查找,進而通過迭代系數(shù)計算子模塊計算迭代系數(shù),迭代系數(shù)計算后利用延時子模塊實現(xiàn)同步各個參數(shù)到達功能模塊的時間,通過并行判斷子模塊對迭代系數(shù)進行修正,進而修正擬合變量。
上述一種基于FPGA的LM算法實現(xiàn)方法,其步驟如下I)通過串并轉(zhuǎn)換子模塊將本算法模塊外部輸入串行數(shù)據(jù)流轉(zhuǎn)換為并行數(shù)據(jù)流送入歸ー化子模塊;2)歸ー化模塊對步驟I)生成的并行數(shù)據(jù)進行歸ー化處理后送入擬合變量計算子模塊;3)擬合變量計算子模塊根據(jù)步驟2)歸ー化處理后的數(shù)據(jù)計算擬合變量及擬合變量的初值,并將該擬合變量及擬合變量初值送入指數(shù)計算子模塊;4)指數(shù)計算子模塊對步驟3)的擬合變量進行指數(shù)查找,并將指數(shù)計算值送入迭代系數(shù)計算子模塊;5)迭代系數(shù)計算A子模塊對步驟4)產(chǎn)生的指數(shù)計算值進行計算,計算得到迭代過程中所需要修正的迭代參數(shù),并將各迭代參數(shù)送入延時子模塊; 6)利用延時A子模塊同步步驟5)產(chǎn)生的各個迭代參數(shù)到達并行判斷子模塊的時間,并將處理結(jié)果送入并行判斷子模塊;7)通過并行判斷子模塊對經(jīng)步驟6)處理的各迭代參數(shù)進行修正,得出當(dāng)前情況下的擬合變量值Xi;8)對擬合變量值Xi再通過迭代系數(shù)計算B子模塊和延時B子模塊進一步對擬合變量進行處理;9)將經(jīng)過步驟8)處理后的擬合變量送入步驟3),計算擬合變量初值,并將當(dāng)前擬合變量及擬合變量初值送入步驟4),重復(fù)步驟4) 步驟9)進行LM算法迭代直到達到預(yù)先設(shè)定的迭代次數(shù)或者算法收斂。上述指數(shù)計算子模塊的指數(shù)查找過程中的指數(shù)查找表采用分段處理方式,根據(jù)指數(shù)曲線概率分布特性來確定各曲線段的查找精度,其中曲線段越陡峭,則該段的查找精度越高,這種方式不僅保證了查找表的整體精度不變,而且減少了查找表占用的資源。上述延時子模塊采用移位寄存器實現(xiàn),將每個迭代參數(shù)的計算結(jié)果存儲在移位寄存器中,所有參數(shù)計算結(jié)束后,同時輸出到下一個功能模塊并行判斷子模塊,避免由于時間延遲造成數(shù)據(jù)流的丟失,并實現(xiàn)同步各個參數(shù)到達功能模塊的時間;并行判斷子模塊首先對迭代參數(shù)進行判斷然后采用并行處理方式,針對各迭代參數(shù)的判斷結(jié)果實施三種情況下的擬合變量算法,根據(jù)對迭代參數(shù)的判斷結(jié)果選擇輸出當(dāng)前情況下的擬合變量值Xi,節(jié)約了算法的處理時間。有益效果本發(fā)明提出了一種基于FPGA的LM算法實現(xiàn)方法,提高了 LM算法的處理速度,將該算法模塊應(yīng)用于光纖傳感測量等測量領(lǐng)域,在滿足高精度測量的同吋,還能達到高速實時的需求。該算法模塊既能計算線性模型參數(shù),又能計算非線性模型參數(shù),同時具有低功耗、小型化、高速等特點,可應(yīng)用于實時高精度的信號處理領(lǐng)域,尤其用于高精度的高斯曲線擬合。
圖I為基于FPGA的LM算法實現(xiàn)方法的總體流程框圖;圖2為本發(fā)明中指數(shù)計算子模塊的流程框圖3為本發(fā)明中并行判斷子模塊的原理框圖。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明做進ー步說明?!N基于FPGA的LM算法實現(xiàn)方法,其輸入為采用串行數(shù)據(jù)流方式的外部測量數(shù)據(jù),如圖I所示,LM算法模塊包括以下子模塊串并轉(zhuǎn)換子模塊、歸ー化處理子模塊、擬合變量計算子模塊、指數(shù)計算子模塊、迭代系數(shù)計算A子模塊、延時A子模塊、迭代系數(shù)計算B子模塊、延時B子模塊和并行判斷子模塊;首先通過串并轉(zhuǎn)換子模塊將輸入的串行數(shù)據(jù)流轉(zhuǎn)換成并行數(shù)據(jù)并送入歸ー化處理子模塊進行歸ー化處理,之后進行LM算法迭代循環(huán);LM算法迭代循環(huán)中,首先進入擬合變量計算子模塊計算擬合變量,然后通過指數(shù)計算子模塊進行指數(shù)查找,進而通過迭代系數(shù)計算子模塊計算迭代系數(shù),迭代系數(shù)計算后利用延時子模塊實現(xiàn)同步各個參數(shù)到達功能模塊的時間,通過并行判斷子模塊對迭代系數(shù) 進行修正,進而修正擬合變量。上述一種基于FPGA的LM算法實現(xiàn)方法,其算法步驟如下I)通過串并轉(zhuǎn)換子模塊將本算法模塊外部輸入串行數(shù)據(jù)流轉(zhuǎn)換為并行數(shù)據(jù)流送入歸ー化子模塊;2)歸ー化模塊對步驟I)生成的并行數(shù)據(jù)進行歸ー化處理后送入擬合變量計算子模塊;3)擬合變量計算子模塊根據(jù)步驟2)歸ー化處理后的數(shù)據(jù)計算擬合變量及擬合變量的初值,并將該擬合變量及擬合變量初值送入指數(shù)計算子模塊;4)指數(shù)計算子模塊對步驟3)的擬合變量進行指數(shù)查找,并將指數(shù)計算值送入迭代系數(shù)計算子模塊;5)迭代系數(shù)計算A子模塊對步驟4)產(chǎn)生的指數(shù)計算值進行計算,計算得到迭代過程中所需要修正的迭代參數(shù),并將各迭代參數(shù)送入延時子模塊;6)利用延時A子模塊同步步驟5)產(chǎn)生的各個迭代參數(shù)到達并行判斷子模塊的時間,并將處理結(jié)果送入并行判斷子模塊;7)通過并行判斷子模塊對經(jīng)步驟6)處理的各迭代參數(shù)進行修正,得出當(dāng)前情況下的擬合變量值Xi;8)對擬合變量值Xi再通過迭代系數(shù)計算B子模塊和延時B子模塊進一步對擬合變量進行處理;9)將經(jīng)過步驟8)處理后的擬合變量送入步驟3),計算擬合變量初值,并將當(dāng)前擬合變量及擬合變量初值送入步驟4),重復(fù)步驟4) 步驟9)進行LM算法迭代直到達到預(yù)先設(shè)定的迭代次數(shù)或者算法收斂。上述指數(shù)計算子模塊的指數(shù)查找過程中的指數(shù)查找表采用分段處理方式,根據(jù)指數(shù)曲線概率分布特性來確定各曲線段的查找精度,其中曲線段越陡峭則該段的查找精度越高,這種方式不僅保證了查找表的整體精度不變,而且減少了查找表占用的資源。上述延時子模塊采用移位寄存器實現(xiàn),將每個參數(shù)的計算結(jié)果存儲在移位寄存器中,所有參數(shù)計算結(jié)束后,同時輸出到下ー個功能模塊,避免由于時間延遲造成數(shù)據(jù)流的丟失,并實現(xiàn)同步各個參數(shù)到達功能模塊的時間;并行判斷子模塊首先對迭代參數(shù)進行判斷然后采用并行處理方式,計算三個擬合變量算法,根據(jù)對迭代參數(shù)的判斷結(jié)果選擇輸出當(dāng)前情況下的擬合變量值Xi,節(jié)約了算法的處理時間。實施例將上述一種基于FPGA的LM算法實現(xiàn)方法對該模塊輸入的串行數(shù)據(jù)流進行處理,串并轉(zhuǎn)換子模塊將輸入的串行數(shù)據(jù)流轉(zhuǎn)換為并行的N個數(shù)據(jù)輸出Y1, Y2,... Yn,歸ー化子模塊對所有數(shù)據(jù)進行歸ー化處理輸出,首先查找N個數(shù)據(jù)其中的最大值Ymax,經(jīng)過歸一化模塊后輸出為(Y1ZXJ,(Y2ZXax),…,(Yfflax/Yfflax),…,(YN/Ymax);得到歸ー化數(shù)據(jù)后,進入LM算法迭代循環(huán),首先在擬合變量計算子模塊中計算擬合變量X = (A,B,C),得到擬合變量初值\,然后將擬合變量X及初值Xtl送入指數(shù)計算子模塊; 指數(shù)計算子模塊的內(nèi)部流程結(jié)構(gòu)如圖2所示,包括指數(shù)冪計算子模塊、正數(shù)查找表、負數(shù)查找表和指數(shù)輸出子模塊,指數(shù)查找表采用分段處理方式,根據(jù)指數(shù)曲線概率分布特性,曲線平坦段的查找精度低于曲線陡峭段的查找精度,針對指數(shù)的冪存在正負數(shù)情況,整個查找功能通過正數(shù)冪和負數(shù)冪兩張查找表完成,指數(shù)計算子模塊通過以下步驟實現(xiàn)41)通過指數(shù)冪計算子模塊計算冪值為正或者負;42)根據(jù)指數(shù)計算子模塊的正負信號,選擇正數(shù)查找表或者負數(shù)查找表,進行指數(shù)查找;43)經(jīng)過指數(shù)輸出子模塊輸出查找后的指數(shù)計算值;指數(shù)計算子模塊輸出的指數(shù)計算值輸入到迭代參數(shù)計算A子模塊,用來計算迭代過程中所需要修正的參數(shù),其中包括阻尼因子,Jacobi矩陣等,該模塊主要包括矩陣求逆、矩陣與列向量相乘等部分內(nèi)容,所計算得出的各迭代參數(shù)再利用延時A子模塊實現(xiàn)同步各個參數(shù)到達下ー個功能模塊并行判斷子模塊的時間;由并行判斷子模塊進行對迭代準則的判斷選擇,并行判斷子模塊原理框圖如圖3所示,以計算后的迭代參數(shù)rat為例,根據(jù)進入判斷子模塊的rat的值有三種情況情況A,0 < rat < 0. 5 時對應(yīng)擬合變量算法 A, nu = max (nu*10,0. I);情況 B,0. 5 < rat < I 時對應(yīng)擬合變量算法B,nu = 0 ;情況C,rat > I時對應(yīng)擬合變量算法C,nu的值不改變,判斷輸出的擬合變量值X通過輸出子模塊輸出;并行判斷子模塊首先對迭代參數(shù)進行判斷然后采用并行處理方式,計算A、B、C三個擬合變量算法,根據(jù)對迭代參數(shù)的判斷結(jié)果選擇輸出當(dāng)前情況下的擬合變量值Xi;將擬合變量值Xi再通過迭代系數(shù)計算B子模塊和延時B子模塊,進而修正迭代系數(shù),進入圖I中的擬合變量計算子模塊進入第二次的迭代過程,根據(jù)迭代次數(shù)判斷是否進行下一次迭代,從而完成對擬合變量的LM算法擬合。以上所述為本發(fā)明的較佳實施例而已,本發(fā)明不應(yīng)該局限于該實施例和附圖所公開的內(nèi)容。凡是不脫離本發(fā)明所公開的精神下完成的等效或修改,都落入本發(fā)明保護的范圍。
權(quán)利要求
1.一種基于FPGA的LM算法實現(xiàn)方法,其實現(xiàn)平臺為FPGA,采用硬件描述語言實現(xiàn),模塊輸入為采用串行數(shù)據(jù)流方式的外部測量數(shù)據(jù),其特征在于,LM算法模塊包括以下子模塊串并轉(zhuǎn)換子模塊、歸一化處理子模塊、擬合變量計算子模塊、指數(shù)計算子模塊、迭代系數(shù)計算A子模塊、延時A子模塊、迭代系數(shù)計算B子模塊、延時B子模塊和并行判斷子模塊; 所述一種基于FPGA的LM算法實現(xiàn)方法,其步驟如下 1)通過串并轉(zhuǎn)換子模塊將本算法模塊外部輸入串行數(shù)據(jù)流轉(zhuǎn)換為并行數(shù)據(jù)流送入歸一化子模塊; 2)歸一化模塊對步驟I)生成的并行數(shù)據(jù)進行歸一化處理后送入擬合變量計算子模塊; 3)擬合變量計算子模塊根據(jù)步驟2)歸一化處理后的數(shù)據(jù)計算擬合變量及擬合變量的 初值,并將該擬合變量及擬合變量初值送入指數(shù)計算子模塊; 4)指數(shù)計算子模塊對步驟3)的擬合變量進行指數(shù)查找,并將指數(shù)計算值送入迭代系數(shù)計算子模塊; 5)迭代系數(shù)計算A子模塊對步驟4)產(chǎn)生的指數(shù)計算值進行計算,計算得到迭代過程中所需要修正的迭代參數(shù),并將各迭代參數(shù)送入延時子模塊; 6)利用延時A子模塊同步步驟5)產(chǎn)生的各個迭代參數(shù)到達并行判斷子模塊的時間,并將處理結(jié)果送入并行判斷子模塊; 7)通過并行判斷子模塊對經(jīng)步驟6)處理的各迭代參數(shù)進行修正,得出當(dāng)前情況下的擬合變量值Xi ; 8)對擬合變量值Xi再通過迭代系數(shù)計算B子模塊和延時B子模塊進一步對擬合變量進行處理; 9)將經(jīng)過步驟8)處理后的擬合變量送入步驟3),計算擬合變量初值,并將當(dāng)前擬合變量及擬合變量初值送入步驟4),重復(fù)步驟4) 步驟9)進行LM算法迭代直到達到預(yù)先設(shè)定的迭代次數(shù)或者算法收斂。
2.根據(jù)權(quán)利要求I所述的一種基于FPGA的LM算法實現(xiàn)方法,其特征在于,所述指數(shù)計算子模塊包括指數(shù)冪計算子模塊、正數(shù)查找表、負數(shù)查找表和指數(shù)輸出子模塊,正數(shù)查找表和負數(shù)查找表均采用分段處理方式,根據(jù)指數(shù)曲線概率分布特性來確定各曲線段的查找精度,其中曲線段越陡峭,則該段的查找精度越高,指數(shù)計算子模塊通過以下步驟實現(xiàn) 41)通過指數(shù)冪計算子模塊計算冪值為正或者負; 42)根據(jù)指數(shù)計算子模塊的正負信號,選擇正數(shù)查找表或者負數(shù)查找表,進行指數(shù)查找; 43)經(jīng)過指數(shù)輸出子模塊輸出查找后的指數(shù)計算值。
3.根據(jù)權(quán)利要求I所述的一種基于FPGA的LM算法實現(xiàn)方法,其特征在于,所述延時子模塊采用移位寄存器實現(xiàn),將每個迭代參數(shù)的計算結(jié)果存儲在移位寄存器中,所有參數(shù)計算結(jié)束后,同時輸出到下一個功能模塊并行判斷子模塊。
4.根據(jù)權(quán)利要求I所述的一種基于FPGA的LM算法實現(xiàn)方法,其特征在于,所述并行判斷子模塊首先對迭代參數(shù)進行判斷然后采用并行處理方式,針對各迭代參數(shù)的判斷結(jié)果實施三種情況下的擬合變量算法,根據(jù)對迭代參數(shù)的判斷結(jié)果選擇輸出當(dāng)前情況下的擬合變量值X”
全文摘要
本發(fā)明涉及一種基于FPGA的LM算法實現(xiàn)方法,特別涉及一種用于高斯曲線擬合的LM算法的FPGA實現(xiàn)技術(shù),屬于數(shù)據(jù)處理技術(shù)領(lǐng)域。首先對輸入的串行數(shù)據(jù)流進行串并轉(zhuǎn)換并進行歸一化處理,之后進行LM算法迭代循環(huán),循環(huán)中首先計算擬合變量,然后進行指數(shù)查找,進而計算迭代系數(shù),迭代系數(shù)計算后利用延時子模塊實現(xiàn)同步各個參數(shù)到達功能模塊的時間,通過并行判斷子模塊對迭代系數(shù)進行修正,進而修正擬合變量。本發(fā)明提高了LM算法的處理速度,在滿足高精度測量的同時,還能達到高速實時的需求,該算法模塊既能計算線性模型參數(shù),又能計算非線性模型參數(shù),同時具有低功耗、小型化、高速等特點,可應(yīng)用于實時高精度的信號處理領(lǐng)域。
文檔編號G06F17/10GK102650982SQ20121008550
公開日2012年8月29日 申請日期2012年3月28日 優(yōu)先權(quán)日2012年3月28日
發(fā)明者何彥璋, 申雅峰, 胡春艷 申請人:中國航空工業(yè)集團公司北京長城計量測試技術(shù)研究所