文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)11-0033-04
機(jī)載超寬帶合成孔徑雷達(dá)(UWB SAR)具有穿透葉簇和淺地表對(duì)隱蔽目標(biāo)探測成像的能力,,其軍事應(yīng)用潛力巨大,,是未來雷達(dá)的一個(gè)發(fā)展方向。但是UWB SAR回波的數(shù)據(jù)量達(dá)到數(shù)百萬字節(jié),,同時(shí)成像所需的運(yùn)算量達(dá)到數(shù)GFLOPS[1],。單片DSP的處理能力明顯不足,所以采用多片高性能的DSP共同完成任務(wù),,而如何實(shí)現(xiàn)多片DSP間互聯(lián)通信又成為一大難點(diǎn),。本文DSP選用的是ADI公司的ADSP-TS201,但由于TS201鏈路口的數(shù)目有限,,無法使所有DSP都直接通過鏈路口相連,,所以需要配合其他的方法來解決DSP間的通信問題。參考文獻(xiàn)[2]介紹了如何在8片TS201和1片FPGA組成的系統(tǒng)中用FPGA實(shí)現(xiàn)8片DSP的互訪,。該設(shè)計(jì)中,,訪問是基于4字命令包,通過讀寫,、設(shè)備狀態(tài),、目的地址和源地址以及優(yōu)先級(jí)等的判斷,完成DSP之間的互訪,;FPGA和DSP通過總線的方式連接,;FPGA完成原始回波數(shù)據(jù)流的轉(zhuǎn)發(fā)。其缺點(diǎn)是,,通信協(xié)議復(fù)雜,,必須不停地修改命令包,;訪問有固定的優(yōu)先級(jí),有時(shí)會(huì)很慢,,效率低,;用總線的方式連接容易產(chǎn)生競爭。
針對(duì)以上問題,,本文提出了一種在8片DSP和2片F(xiàn)PGA構(gòu)成的系統(tǒng)中通過FPGA實(shí)現(xiàn)DSP之間廣播通信的方案,。由于該系統(tǒng)特殊的拓?fù)浣Y(jié)構(gòu),原始回波數(shù)據(jù)流的轉(zhuǎn)發(fā)已確定為通過TS201的鏈路口完成,,而控制數(shù)據(jù)流和運(yùn)動(dòng)測量參數(shù)的轉(zhuǎn)發(fā)以及對(duì)DSP程序運(yùn)行的監(jiān)控卻成為一大瓶頸,。為此,本文設(shè)計(jì)了在其中的一片F(xiàn)PGA內(nèi)實(shí)現(xiàn)多DSP間有效互聯(lián)的方案,。
1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)中的信號(hào)處理板主要用于UWB SAR的實(shí)時(shí)成像數(shù)據(jù)處理,,DSP與FPGA的連接示意圖如圖1所示。DSP2~DSP7主要處理回波數(shù)據(jù)流,,成像數(shù)據(jù)處理需要兩塊這樣的板子:一塊做距離向處理,,另一塊做方位向處理。FPGA2的主要任務(wù):(1)方便主機(jī)通過CPCI總線對(duì)DSP進(jìn)行程序的加載,、程序運(yùn)行的監(jiān)控,、數(shù)據(jù)的讀寫和實(shí)時(shí)運(yùn)算結(jié)果的顯示;(2)在飛行過程中,,當(dāng)飛行的速度,、天線的姿態(tài)、工作模式等參數(shù)改變時(shí),,可以方便及時(shí)地將參數(shù)信息廣播到DSP中,。該處理板的具體結(jié)構(gòu)以及各模塊的功能可參見參考文獻(xiàn)[3]。本文的關(guān)鍵是如何通過FPGA2實(shí)現(xiàn)DSP2~DSP7之間的互聯(lián)通信,。由于DSP2與DSP5,、DSP3與DSP6、DSP4與DSP7已經(jīng)通過鏈路口兩兩相連,,所以它們之間的通信不再需要經(jīng)FPGA2的轉(zhuǎn)發(fā),,故需要與上述6片DSP中某片DSP通過FPGA2實(shí)現(xiàn)通信的DSP只有4片,例如對(duì)于DSP2,,需要通過FPGA2與其通信的4片DSP為DSP3,、DSP4、DSP6,、DSP7,。
TS201是目前業(yè)界公認(rèn)的高性能DSP處理器之一,有著很高的數(shù)據(jù)處理速度,。FPGA2選擇Xilinx公司的XC4VLX25,,該類型的FPGA比較適合邏輯控制和做數(shù)據(jù)接口。TS201共有4個(gè)鏈路口,,都采用LVDS(Low Voltage Differential Signaling)技術(shù),;每個(gè)鏈路口包含發(fā)送和接收兩個(gè)獨(dú)立的通道,每個(gè)通道都有4對(duì)差分?jǐn)?shù)據(jù)線,、1對(duì)差分時(shí)鐘,、2個(gè)控制信號(hào),共24根線,;鏈路口在每個(gè)通道(發(fā)送或接收)都可以通過1 bit或者4 bit模式進(jìn)行數(shù)據(jù)通信,,本文采用4位通信模式[4]。
2 多DSP數(shù)據(jù)流高效廣播設(shè)計(jì)
本設(shè)計(jì)的總體框圖如圖2所示,。對(duì)每片DSP,,F(xiàn)PGA都有一對(duì)完全一樣的接收和發(fā)送模塊,DSP鏈路口發(fā)送來的差分?jǐn)?shù)據(jù)依次經(jīng)過IBUFDS模塊和IDDR模塊,,最后暫存于RAM中,。在多個(gè)狀態(tài)機(jī)的控制調(diào)度下,一次或多次將數(shù)據(jù)從RAM中讀出,,然后發(fā)送到相應(yīng)的發(fā)送模塊,。要發(fā)送的數(shù)據(jù)先暫存于FIFO中,然后依次經(jīng)過ODDR模塊和OBUFDS模塊發(fā)送到對(duì)應(yīng)的DSP中,。
設(shè)計(jì)的最大難點(diǎn)在于如何實(shí)現(xiàn)數(shù)據(jù)的正確調(diào)度而不出現(xiàn)錯(cuò)發(fā)或漏發(fā)現(xiàn)象,,特別是當(dāng)一片DSP向其他所有DSP廣播數(shù)據(jù)和其他所有DSP同時(shí)向一片DSP發(fā)送數(shù)據(jù)時(shí),不出現(xiàn)錯(cuò)發(fā)或漏發(fā)現(xiàn)象,。
2.1 數(shù)據(jù)接收,、發(fā)送模塊的設(shè)計(jì)
要在FPGA中實(shí)現(xiàn)多DSP的互聯(lián)通信網(wǎng)絡(luò),首先必須使FPGA和DSP可以正確地互相收發(fā)數(shù)據(jù),。由于TS201的鏈路口有自己的通信協(xié)議,,所以只要在FPGA中編程實(shí)現(xiàn)TS201的鏈路口通信協(xié)議,就可以實(shí)現(xiàn)FPGA與TS201之間的雙向通信,。TS201的具體通信協(xié)議,,可參見參考文獻(xiàn)[4]。
2.1.1 接收模塊
FPGA接收模塊如圖3所示,。在接收模塊中,,先將差分?jǐn)?shù)據(jù)和差分時(shí)鐘分別通過IBUFDS模塊轉(zhuǎn)換為單端的數(shù)據(jù)和單端時(shí)鐘[5];再將該單端數(shù)據(jù)分別送入到4個(gè)IDDR,,單端時(shí)鐘經(jīng)過BUFG模塊后輸出的bufg_clkout作為IDDR的驅(qū)動(dòng)時(shí)鐘,;最后將IDDR模塊輸出的完整8 bit數(shù)據(jù)存儲(chǔ)在輸入輸出寬度為8 bit的雙端口RAM中。塊發(fā)送完畢,,信號(hào)bcmpi延遲一個(gè)周期后和bufg_clkout一起經(jīng)過一個(gè)時(shí)鐘選擇器后輸出時(shí)鐘mux_clkout作為RAM的寫驅(qū)動(dòng)時(shí)鐘,。這樣,,可以保證寫入RAM的數(shù)據(jù)深度正好是DSP的發(fā)送數(shù)據(jù)長度,而不再需要去考慮數(shù)據(jù)寫入深度控制的問題,。
2.1.2 發(fā)送模塊
FPGA接收模塊如圖4所示,。在發(fā)送模塊中,要發(fā)送的數(shù)據(jù)先存于輸入輸出寬度為8 bit的FIFO中,,再將FIFO的輸出數(shù)據(jù)依次經(jīng)過4個(gè)ODDR和4個(gè)OBUFDS,,最后得到差分輸出數(shù)據(jù)。在控制模塊CONTROL中,,當(dāng)數(shù)據(jù)全部寫入FIFO,、acki有效且FIFO不空時(shí),F(xiàn)IFO讀使能rd_en和clkoe信號(hào)有效,。將clkoe作為ODDR的正極輸入(負(fù)極始終為低電平)得到發(fā)送時(shí)鐘[5],,再經(jīng) OBUFDS得到差分輸出時(shí)鐘。在控制模塊CONTROL中同時(shí)會(huì)給出塊發(fā)送完畢信號(hào)bcmpo,。
在Virtex4中提供了強(qiáng)大的數(shù)字時(shí)鐘管理器(DCM),,它可以實(shí)現(xiàn)延遲鎖相環(huán)、數(shù)字頻率合成器,、數(shù)字移相,、數(shù)字?jǐn)U頻等功能。本文用到兩個(gè)DCM,,其中一個(gè)作為倍頻器,,將FPGA中的系統(tǒng)時(shí)鐘從60 MHz倍頻到150 MHz;另外一個(gè)作為移相器,,將倍頻后的時(shí)鐘移相90°,,從而得到需要的0°時(shí)鐘clk_0_150 MHz和90°時(shí)鐘clk_90_150 MHz(見圖4)。
2.2 數(shù)據(jù)調(diào)度狀態(tài)機(jī)的設(shè)計(jì)
若只完成接收模塊和發(fā)送模塊的設(shè)計(jì),,則只能實(shí)現(xiàn)FPGA與DSP的點(diǎn)對(duì)點(diǎn)通信,,還不能實(shí)現(xiàn)多片DSP之間的互聯(lián)通信,所以還需要有一個(gè)數(shù)據(jù)的合理調(diào)度過程,。
2.2.1 DSP數(shù)據(jù)報(bào)頭
為了使數(shù)據(jù)調(diào)度變得容易,,本設(shè)計(jì)定義了DSP發(fā)送數(shù)據(jù)報(bào)頭,如圖5所示,。位0~7表示信宿,,位0為1,表示該數(shù)據(jù)塊請(qǐng)求發(fā)送到CPCI自定義接口,,用于板間通信,;位1為1,表示請(qǐng)求發(fā)送到9656;位2~7為1,,分別表示請(qǐng)求發(fā)送到DSP2~DSP7,;若為0,則表示不發(fā)送到任何器件,。位8,、9、10表示信源,,000表示信源為CPCI自定義接口,001表示信源為9656,,010~111分別表示信源為DSP2~DSP7,;位11~31暫時(shí)保留,為以后擴(kuò)展功能時(shí)使用,。
當(dāng)FPGA接收到來自于DSP的數(shù)據(jù)時(shí),,首先要將該數(shù)據(jù)塊的前8 bit提取出來,用以確定目的DSP,,并將該8 bit數(shù)據(jù)稱之為請(qǐng)求發(fā)送信號(hào)require,。
2.2.2 應(yīng)答請(qǐng)求信號(hào)狀態(tài)機(jī)
在2.2.1節(jié)中,提取數(shù)據(jù)報(bào)頭的前8 bit,,得到一個(gè)8 bit require信號(hào),。在FPGA的程序中,對(duì)應(yīng)每片DSP本文都設(shè)計(jì)有一個(gè)這樣的狀態(tài)機(jī),,用于對(duì)其他DSP送來的require信號(hào)進(jìn)行判斷,,然后給出相應(yīng)的應(yīng)答信號(hào)allow,表示允許發(fā)送,,其狀態(tài)轉(zhuǎn)移圖如圖6(a)所示,。該狀態(tài)機(jī)基于令牌和輪詢的思想,并遵循以下原則:
(1)按照require1~require4依次輪詢,,發(fā)現(xiàn)滿足條件的則給與令牌,。
(2)令牌不能同時(shí)擁有,令牌被持有后就將令牌信息置為無效,。
(3)若令牌被持有則輪詢暫停,,等待令牌被釋放,即重置為有效,。
(4)當(dāng)塊發(fā)送完畢信號(hào),、bcmpo信號(hào)為低電平時(shí),釋放令牌,。
(5)令牌被釋放后則繼續(xù)輪詢尚未持有令牌的,,如是重復(fù)。
需要說明的是,當(dāng)bcmpo為低時(shí)雖然也表示數(shù)據(jù)塊發(fā)送完畢,,但低電平只維持4個(gè)周期,,而且當(dāng)有多片DSP向其中一片DSP發(fā)送數(shù)據(jù)時(shí),bcmpo會(huì)被多次拉低來指示某片DSP需要發(fā)送的數(shù)據(jù)已經(jīng)發(fā)送完畢,。所以與鏈路口協(xié)議中的bcmpo已經(jīng)不是一回事了,,只是重名而已。本設(shè)計(jì)的令牌為avail,。
2.2.3 RAM讀地址狀態(tài)機(jī)
在FPGA的程序中,,對(duì)應(yīng)每片DSP本文也有另外一個(gè)狀態(tài)機(jī),用于對(duì)送來的allow信號(hào)進(jìn)行判斷,,給出相對(duì)應(yīng)的RAM的讀地址addrb和FIFO準(zhǔn)寫信號(hào)wr_en,,其狀態(tài)轉(zhuǎn)移圖如圖6(b)所示。所遵循的原則與2.2.2的狀態(tài)機(jī)幾乎一樣,。不同的地方在于:
(1)當(dāng)對(duì)應(yīng)bcmpi為低電平時(shí),,信號(hào)ram_rd_en為高(即DSP數(shù)據(jù)發(fā)送完了才能從RAM中讀出數(shù)據(jù)),狀態(tài)機(jī)開始工作,。
(2)令牌為flag_tx_achiv信號(hào),,addrb等于DSP發(fā)送數(shù)據(jù)深度M時(shí)(即在RAM中的數(shù)據(jù)完全讀出后),釋放令牌,。
(3)只有持有令牌期間,,對(duì)應(yīng)的信號(hào)addrb開始累加,wr_en為高電平,。
2.2.4 FIFO寫使能和輸入數(shù)據(jù)
對(duì)應(yīng)每片DSP都有這樣一個(gè)模塊,,用于將輸入的成對(duì)信號(hào)wr_en和RAM的輸出數(shù)據(jù)ram_dout作出判斷,得到FPGA發(fā)送模塊中FIFO寫使能和輸入數(shù)據(jù),。由于前面狀態(tài)機(jī)控制的結(jié)果,,這里輸入到模塊(與某片DSP相對(duì)應(yīng))的4個(gè)wr_en信號(hào)不可能同時(shí)為高,所以當(dāng)某個(gè)wr_en為高時(shí),,F(xiàn)IFO的寫使能有效,,同時(shí)將與其成對(duì)的數(shù)據(jù)ram_dout作為FIFO的輸入數(shù)據(jù);當(dāng)wr_en都為低時(shí),,F(xiàn)IFO的寫使能無效,。
3 實(shí)驗(yàn)結(jié)果
將用Verilog HDL語言編寫的設(shè)計(jì)程序經(jīng)過綜合、布局布線,、產(chǎn)生位數(shù)據(jù)流,,最后下載到FPGA芯片(XC4VLX25)中;將TS201鏈路口的接收和發(fā)送程序下載到相應(yīng)DSP中,。在DSP的配合以及在調(diào)試工具Xilinx ISE12.2中內(nèi)嵌的邏輯分析儀ChipScope的幫助下,,實(shí)現(xiàn)了DSP之間的廣播通信(即DSP之間一對(duì)一,、一對(duì)多以及多對(duì)多的廣播通信),其數(shù)據(jù)傳輸都可靠,。該設(shè)計(jì)目前要求發(fā)送數(shù)據(jù)長度固定,,數(shù)據(jù)單向吞吐率可達(dá)150 MB/s,雙向可達(dá)300 MB/s,。
本文提出的基于鏈路口及FPGA實(shí)現(xiàn)多DSP系統(tǒng)的數(shù)據(jù)流高效廣播的方法,,經(jīng)過驗(yàn)證是完全可行的,且數(shù)據(jù)傳輸可靠,。要完成更多DSP間的廣播通信,,只需增加狀態(tài)機(jī)的狀態(tài)個(gè)數(shù),而且可擴(kuò)展性好,,很容易擴(kuò)展到更多DSP的高效廣播通信中,。該類型通信方案經(jīng)過適當(dāng)?shù)膬?yōu)化,也可以完成大量的原始回波數(shù)據(jù)流的轉(zhuǎn)發(fā),。在后續(xù)的工作中,將完成CPCI自定義接口以及9656與FPGA2之間的通信,,并在DSP的配合下,,最終達(dá)到上位機(jī)與各DSP的互訪,實(shí)現(xiàn)控制數(shù)據(jù)流和運(yùn)動(dòng)測量參數(shù)實(shí)時(shí)地傳輸?shù)礁鱾€(gè)DSP,,并實(shí)現(xiàn)在調(diào)試時(shí)對(duì)各個(gè)DSP的實(shí)時(shí)監(jiān)控,。
參考文獻(xiàn)
[1] 李建陽,王亮,,常文革,,等.機(jī)載UWB SAR實(shí)時(shí)信號(hào)處理算法研究[J].國防科技大學(xué)學(xué)報(bào),2010(1).
[2] 蘇軍海,,王海亮.基于FPGA的多DSP系統(tǒng)通信的實(shí)現(xiàn)[J].電子科技,,2005(12).
[3] 段巧雄,李悅麗.機(jī)載超寬帶合成孔徑雷達(dá)實(shí)時(shí)信號(hào)處理板的設(shè)計(jì)與實(shí)現(xiàn)[C].第十一屆雷達(dá)學(xué)術(shù)年會(huì),,2010.
[4] 劉書明,,羅勇江.ADSP TS201XS系列DSP原理與應(yīng)用設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[5] 陳春輝,,黃俊,,陳亞俊.利用FPGA實(shí)現(xiàn)與TS201的Link-Port高速數(shù)據(jù)互聯(lián)[J].信息技術(shù),2007(3):56-58.