基于FPGA的復(fù)數(shù)浮點(diǎn)協(xié)方差矩陣實(shí)現(xiàn)
O 引言
協(xié)方差矩陣的計(jì)算是信號(hào)處理領(lǐng)域的典型運(yùn)算,是實(shí)現(xiàn)多級(jí)嵌套維納濾波器、空間譜估計(jì)、相干源個(gè)數(shù)估計(jì)以及仿射不變量模式識(shí)別的關(guān)鍵部分,廣泛應(yīng)用于雷達(dá)、聲吶、數(shù)字圖像處理等領(lǐng)域。采用FPGA(Field Programmable Gate Array)可以提高該類數(shù)字信號(hào)處理運(yùn)算的實(shí)時(shí)性,是算法工程化的重要環(huán)節(jié)。但是FPGA不適宜對(duì)浮點(diǎn)數(shù)的處理,對(duì)復(fù)雜的不規(guī)則計(jì)算開(kāi)發(fā)起來(lái)也比較困難。故目前國(guó)內(nèi)外協(xié)方差運(yùn)算的
FPGA實(shí)現(xiàn)都是采用定點(diǎn)運(yùn)算方式。
在所有運(yùn)算都是定點(diǎn)運(yùn)算的情況下,每次乘法之后數(shù)據(jù)位寬都要擴(kuò)大一倍。若相乘后的數(shù)據(jù)繼續(xù)做加減運(yùn)算,為了保證數(shù)據(jù)不溢出,還必須將數(shù)據(jù)位寬擴(kuò)展一位,而協(xié)方差矩陣的運(yùn)算核心就是乘累加單元,隨著采樣點(diǎn)數(shù)的增加,位寬擴(kuò)展呈線性增加。最終導(dǎo)致FPGA器件資源枯竭,無(wú)法實(shí)現(xiàn)設(shè)計(jì)。為了保證算法的實(shí)現(xiàn),必須對(duì)中間運(yùn)算數(shù)據(jù)進(jìn)行截?cái)啵瑢⒚看卫奂拥慕Y(jié)果除2(可以通過(guò)移位運(yùn)算來(lái)實(shí)現(xiàn)),以避免溢出。
此外,在應(yīng)用MUSIC算法時(shí),各種計(jì)算都是復(fù)數(shù)運(yùn)算。為達(dá)到減少算法的計(jì)算量,提高M(jìn)USIC算法處理速度的目的,許多文獻(xiàn)致力于研究陣列的結(jié)構(gòu)特點(diǎn),在保證測(cè)角精度的前提下,尋找一種簡(jiǎn)單而有效的數(shù)據(jù)預(yù)處理方法,將復(fù)數(shù)矩陣轉(zhuǎn)化為實(shí)數(shù)矩陣,把復(fù)矢量用一個(gè)實(shí)矢量來(lái)代替,從而將復(fù)數(shù)運(yùn)算轉(zhuǎn)化為實(shí)數(shù)運(yùn)算。
接收陣元模型可分為任意離散陣、均勻圓弧陣、均勻圓陣和均勻線陣。在實(shí)際應(yīng)用中,比較常見(jiàn)的是均勻線陣和均勻圓陣。每種陣列模型都有各自的特點(diǎn),加之陣元數(shù)目的取值不同,也會(huì)導(dǎo)致陣列流型的對(duì)稱性變化。針對(duì)不同的陣元模型和陣元數(shù),數(shù)據(jù)預(yù)處理的方法也會(huì)有所不同。
對(duì)于數(shù)據(jù)預(yù)處理的研究,目前已經(jīng)有了一些比較成熟的算法。對(duì)于一個(gè)偶數(shù)陣元的對(duì)稱陣列(包括均勻線陣和均勻圓陣),相關(guān)研究表明,可利用其對(duì)稱性,分成兩個(gè)完全對(duì)稱的子陣,選擇合適的參考點(diǎn),構(gòu)造互為共軛對(duì)稱的方向矩陣,進(jìn)而構(gòu)造一個(gè)線性變換矩陣,即可達(dá)到將復(fù)數(shù)矩陣轉(zhuǎn)化為實(shí)數(shù)矩陣的目的。
對(duì)于奇數(shù)陣元的均勻線陣,也有相關(guān)研究成果表明,通過(guò)構(gòu)造一個(gè)酉矩陣,也可以達(dá)到數(shù)據(jù)預(yù)處理的目的。
由于均勻圓陣的陣列流型矩陣不是Vandermonde矩陣,即不具備旋轉(zhuǎn)不變性,因此適用于奇數(shù)陣元的均勻線陣的預(yù)處理理論不能直接用于奇數(shù)陣元的均勻圓陣,需要將圓陣先轉(zhuǎn)換到模式空間——虛擬線陣,而轉(zhuǎn)換需要第一類Bessel函數(shù),不適宜用硬件實(shí)現(xiàn)。
以上研究表明,目前除了奇數(shù)陣元的均勻圓陣外,其他常用陣列模型都可以通過(guò)預(yù)處理的方法將復(fù)數(shù)運(yùn)算轉(zhuǎn)換為實(shí)數(shù)運(yùn)算。若在某些特定的情況下,必須采用奇數(shù)陣元的均勻圓陣。此時(shí),基于復(fù)數(shù)運(yùn)算的協(xié)方差矩陣的實(shí)現(xiàn)就成為一種必然。
因此,在充分應(yīng)用FPGA并行處理能力的同時(shí),為了擴(kuò)展數(shù)據(jù)處理的動(dòng)態(tài)范圍,減少數(shù)據(jù)溢出機(jī)率,避免數(shù)據(jù)截?cái)嗨a(chǎn)生的誤差,提高協(xié)方差矩陣的運(yùn)算精度以及擴(kuò)展該運(yùn)算的通用性。本文以空間譜估計(jì)作為研究背景,研究了復(fù)數(shù)據(jù)運(yùn)算和浮點(diǎn)運(yùn)算的特點(diǎn),提出了一種適用于任何陣列流型、任意陣元的基于復(fù)數(shù)浮點(diǎn)運(yùn)算的協(xié)方差矩陣的FPGA實(shí)現(xiàn)方案。
1 求解復(fù)數(shù)浮點(diǎn)協(xié)方差矩陣
以11陣元的均勻圓陣為例,其協(xié)方差矩陣的求解方案原理框圖如圖1所示。
1.1 FIF0數(shù)據(jù)緩存器
在該設(shè)計(jì)方案中選擇FIFO作為數(shù)據(jù)存儲(chǔ)器,這是因?yàn)橐坏┒嗦方邮諜C(jī)有數(shù)據(jù)輸出,就會(huì)啟動(dòng)FIFO進(jìn)行存儲(chǔ),進(jìn)而FIFO的不空信號(hào)有效(empty=O),觸發(fā)后續(xù)的矩陣運(yùn)算;否則,運(yùn)算停止,一切狀態(tài)清零,F(xiàn)PGA恢復(fù)idle(空閑)狀態(tài),等待新的快拍采樣數(shù)據(jù)的到來(lái)。
這樣可以很方便地控制運(yùn)算的開(kāi)始和結(jié)束。矩陣運(yùn)算所需要的同步時(shí)鐘需要設(shè)計(jì)一個(gè)類似于單穩(wěn)態(tài)觸發(fā)器的模塊。當(dāng)檢測(cè)到empty=‘0’時(shí),就觸發(fā)一個(gè)含有121個(gè)clk(對(duì)于串行方案而言)時(shí)鐘信號(hào)周期長(zhǎng)度的高電平。該高電平與主時(shí)鐘相與便可以得到運(yùn)算的同步時(shí)鐘。
1.2 數(shù)據(jù)共軛轉(zhuǎn)換
由于測(cè)向陣列的輸出矢量X(t)是一個(gè)復(fù)矢量,對(duì)其求協(xié)方差矩陣需用陣列輸出列矢量X(t)與其共軛轉(zhuǎn)置矢量XH(n)對(duì)應(yīng)相乘。如式(1)所示:
1.3 定點(diǎn)數(shù)到浮點(diǎn)數(shù)的轉(zhuǎn)換
定點(diǎn)計(jì)算在硬件上實(shí)現(xiàn)簡(jiǎn)單,計(jì)算速度比浮點(diǎn)計(jì)算要快,但是表示操作數(shù)的動(dòng)態(tài)范圍受到限制,浮點(diǎn)數(shù)計(jì)算硬件實(shí)現(xiàn)比較困難;一次計(jì)算花費(fèi)的時(shí)間也遠(yuǎn)大于定點(diǎn)計(jì)算的花費(fèi),但是其表示的操作數(shù)動(dòng)態(tài)范圍大,精度高。在本設(shè)計(jì)中,考慮到系統(tǒng)的數(shù)據(jù)動(dòng)態(tài)范圍和運(yùn)算精度,選擇浮點(diǎn)計(jì)算。由于運(yùn)算數(shù)據(jù)是直接從接收機(jī)I,Q兩路通道的A/D變換器的輸出獲得,為定點(diǎn)數(shù),因此必須要有一個(gè)將A/D采樣的定點(diǎn)數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù)的過(guò)程。設(shè)計(jì)中將16位定點(diǎn)數(shù)轉(zhuǎn)換為IEEE 754標(biāo)準(zhǔn)的單精度格式。32位單精度格式如圖2所示,最高位為符號(hào)位,其后8位為指數(shù)e(用移碼表示,基數(shù)f=2,偏移量為127),余下的23位為尾數(shù)m。
fpga相關(guān)文章:fpga是什么
評(píng)論