孔文青,李紫航,宋萬(wàn)杰
(西安電子科技大學(xué) 雷達(dá)信號(hào)處理國(guó)家重點(diǎn)實(shí)驗(yàn)室, 陜西 西安 710000)
數(shù)字相控陣?yán)走_(dá)因?yàn)橛啥鄠€(gè)陣列天線組成使其具有多波束形成的能力,能夠?qū)崿F(xiàn)多目標(biāo)搜索、跟蹤,完成空時(shí)自適應(yīng)處理、自適應(yīng)空間濾波等功能,以及出色的抗干擾能力,因而得到廣泛的應(yīng)用[1]。而光纖是現(xiàn)代通信網(wǎng)絡(luò)中傳輸信息的最佳媒介[2-3],因此,光纖傳輸已經(jīng)成為數(shù)字相控陣?yán)走_(dá)通信系統(tǒng)中的主體。
一方面,數(shù)字相控陣?yán)走_(dá)要求傳輸數(shù)據(jù)的通道數(shù)多、數(shù)據(jù)量大;另一方面,基于FPGA的多路數(shù)據(jù)處理過(guò)程時(shí)序復(fù)雜、控制難度大,會(huì)導(dǎo)致多路數(shù)據(jù)傳輸不同步且不穩(wěn)定[4-6],所以對(duì)多路光纖傳輸中的數(shù)據(jù)處理與時(shí)序控制進(jìn)行研究具有重大的意義。該研究不僅可以使多路雷達(dá)回波數(shù)據(jù)同步穩(wěn)定的發(fā)送至信號(hào)處理系統(tǒng)進(jìn)行后續(xù)處理,還可使相應(yīng)數(shù)據(jù)準(zhǔn)確無(wú)誤的發(fā)送至采集系統(tǒng)進(jìn)行存儲(chǔ)。
本文以多路雷達(dá)回波數(shù)據(jù)采集系統(tǒng)為研究對(duì)象,利用10根光纖將40路經(jīng)雷達(dá)天線接收到的回波數(shù)據(jù)下傳至DDR進(jìn)行乒乓緩存[7-8],再對(duì)數(shù)據(jù)結(jié)構(gòu)調(diào)整后通過(guò)PCI穩(wěn)定無(wú)誤的存儲(chǔ)到上位機(jī)硬盤[9-10],整個(gè)數(shù)據(jù)傳輸過(guò)程利用FIFO組完成數(shù)據(jù)處理與時(shí)序控制。
多路雷達(dá)回波數(shù)據(jù)采集系統(tǒng)架構(gòu)如圖1所示。
在圖1的系統(tǒng)中共有10根光纖,每根攜帶4路I、Q交替的雷達(dá)回波數(shù)據(jù)進(jìn)入光纖接口[11];標(biāo)注1的流程表示,F(xiàn)PGA對(duì)40路16位的數(shù)據(jù)進(jìn)行處理與時(shí)序控制,轉(zhuǎn)為1路位寬256位的數(shù)據(jù)并乒乓緩存至兩片DDR芯片;標(biāo)注2的流程表示,從DDR中乒乓讀出先前緩存的數(shù)據(jù),經(jīng)FPGA進(jìn)行數(shù)據(jù)處理和時(shí)序控制轉(zhuǎn)為1路高16位為I,低16位為Q的32位數(shù)據(jù),保證原40路數(shù)據(jù)經(jīng)PCI可交替存儲(chǔ)至硬盤。其中,光纖傳輸?shù)臄?shù)據(jù)格式為:
……
圖1 多路雷達(dá)回波數(shù)據(jù)采集系統(tǒng)架構(gòu)圖
高速光纖通道數(shù)據(jù)是通過(guò)光纖模塊,將光信號(hào)轉(zhuǎn)換為電信號(hào)傳輸?shù)腫12-13]。多路光纖傳輸時(shí),由于每路信號(hào)光電轉(zhuǎn)換過(guò)程不能保證完全一致、PCB布局布線存在差異、外界影響等因素,導(dǎo)致光信號(hào)傳輸時(shí)間不同,因此通過(guò)控制多路光纖使數(shù)據(jù)同步且平穩(wěn)無(wú)誤傳輸尤為重要。
根據(jù)多路雷達(dá)回波數(shù)據(jù)采集系統(tǒng)的應(yīng)用要求,結(jié)合Altera公司的光纖IP Core設(shè)置特點(diǎn)[14],這里將Channels數(shù)量設(shè)置為10,Deserializer Block Width 設(shè)置為Double, 每個(gè)光纖通道傳遞的數(shù)據(jù)位寬為16,且設(shè)置好其它的控制信號(hào)后可以得知,每路光纖都有獨(dú)立的時(shí)鐘、控制檢測(cè)信號(hào)、錯(cuò)誤檢測(cè)信號(hào)等。
2.1.1 光纖到DDR的同步時(shí)序控制
多路光纖作為輸入接口,考慮到溫度和電壓波動(dòng)容易造成輸入阻抗變化,并且多路光纖之間容易存在擾動(dòng),本文引進(jìn)高級(jí)片內(nèi)匹配(OCT)技術(shù),在FPGA的Assignment Editor中添加 OCT 100 Ω對(duì)光纖的Input Termination進(jìn)行約束,以達(dá)到多路光纖數(shù)據(jù)穩(wěn)定輸入的目的。
另一方面,由于DDR要求位寬為256位的數(shù)據(jù)作為輸入,所以為了充分利用DDR存儲(chǔ)空間且讀寫方便,光纖與DDR間添加FIFO組完成跨時(shí)鐘域轉(zhuǎn)換和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換,如圖2所示,此做法使多路光纖不同步問(wèn)題得到良好的解決。
圖2 光纖到DDR間FIFO組
圖2中共10個(gè)Fiber_FIFO,即每個(gè)光纖通道對(duì)應(yīng)1個(gè)。Fiber_FIFO的寫數(shù)據(jù)即為每路光纖位寬為16的傳輸數(shù)據(jù),寫使能由每路光纖位寬為2的接收控制檢測(cè)信號(hào)或非得到,F(xiàn)iber_FIFO的讀使能由乒乓DDR的寫使能控制,讀時(shí)鐘為DDR的工作時(shí)鐘phy_clk,讀出的數(shù)據(jù)拼成160位且高[255:160]位補(bǔ)零之后乒乓緩存至DDR,該設(shè)置說(shuō)明原10路并行的16位光纖數(shù)據(jù)經(jīng)FIFO組轉(zhuǎn)為了1路160位數(shù)據(jù)。
為了驗(yàn)證數(shù)據(jù)的正確性和穩(wěn)定性,數(shù)據(jù)乒乓緩存至DDR的同時(shí)也將被送到數(shù)據(jù)檢錯(cuò)模塊,其中,檢錯(cuò)步驟如下:
步驟1將多路光纖輸出的理論數(shù)據(jù)緩存至RAM區(qū);
步驟2傳輸數(shù)據(jù)被送入數(shù)據(jù)檢錯(cuò)模塊的同時(shí)讀取相應(yīng)RAM值;
步驟3傳輸數(shù)據(jù)與理論數(shù)據(jù)進(jìn)行異或,完成比較操作。若結(jié)果error=0則表示數(shù)據(jù)傳輸正確,反之,錯(cuò)誤。
在SignalTap仿真工具觸發(fā)error信號(hào)狀態(tài)下,經(jīng)30 min循環(huán)測(cè)試,error信號(hào)沒(méi)有拉高,由此可以得出結(jié)論,以上設(shè)計(jì)方法可使多路光纖數(shù)據(jù)同步且平穩(wěn)傳輸。
2.1.2 DDR到光纖的同步時(shí)序控制
為了更好的研究多路光纖數(shù)據(jù)傳輸?shù)倪^(guò)程,本文也將10路光纖作為輸出端進(jìn)行了研究和設(shè)計(jì),其中,10路光纖傳輸?shù)臄?shù)據(jù)相同,且循環(huán)傳輸AA55 55AA BB44 44BB CC66 66CC DD77 77DD 0001 0002 0003 …… 00FF。
由于DDR讀出的數(shù)據(jù)為256位的數(shù)據(jù),低160位有效。一般情況下,為了達(dá)到數(shù)據(jù)對(duì)齊的目的,將該160位的數(shù)據(jù)經(jīng)一個(gè)FIFO完成跨時(shí)鐘域和數(shù)據(jù)緩存,然后用和光纖時(shí)鐘頻率相同的時(shí)鐘從FIFO中讀出數(shù)據(jù),再每16位分配給一根光纖,完成多路光纖的傳輸。
以上設(shè)計(jì)方案雖然看似簡(jiǎn)單,但卻會(huì)因?yàn)闀r(shí)鐘不匹配造成多路數(shù)據(jù)傳輸不穩(wěn)定,SignalTap采到光纖接收端數(shù)據(jù)檢錯(cuò)模塊的error信號(hào)會(huì)立即拉高。通過(guò)分析相應(yīng)數(shù)據(jù)可知,該數(shù)據(jù)大多出現(xiàn)了移位現(xiàn)象。
為了避免上述問(wèn)題的發(fā)生,應(yīng)對(duì)DDR讀出的160位數(shù)據(jù)以每16位為一組寫入對(duì)應(yīng)的FIFO,組成DDR到光纖的FIFO組。每個(gè)FIFO的讀時(shí)鐘為每路光纖所對(duì)應(yīng)的tx_clkout[x],讀使能根據(jù)實(shí)際情況中的數(shù)據(jù)接收要求由該tx_clkout[x]產(chǎn)生。以光纖1的傳輸為例,其仿真結(jié)果如圖3所示。
圖3 光纖1的傳輸過(guò)程仿真圖
上面 SignalTap仿真圖的采集時(shí)鐘為tx_clkout[0],其中tx_datain[15:0]代表將要傳輸?shù)焦饫w1的數(shù)據(jù),pule0作為光纖1的觸發(fā)信號(hào)由對(duì)應(yīng)FIFO的讀使能產(chǎn)生??梢钥闯?,觸發(fā)信號(hào)拉高的下一個(gè)時(shí)鐘光纖數(shù)據(jù)開(kāi)始發(fā)送,符合光纖發(fā)送數(shù)據(jù)要求,且數(shù)據(jù)與要求發(fā)送的光纖數(shù)據(jù)保持一致。其次,在SignalTap觸發(fā)光纖接收端數(shù)據(jù)檢錯(cuò)模塊的error信號(hào)狀態(tài)下,對(duì)每路光纖數(shù)據(jù)經(jīng)30 min循環(huán)測(cè)試,error信號(hào)都沒(méi)有拉高,所以,在DDR到光纖間添加FIFO組保證了多路光纖數(shù)據(jù)傳輸?shù)耐脚c穩(wěn)定。
為了使40路雷達(dá)回波數(shù)據(jù)能以高16位為I,低16位為Q的格式交替存儲(chǔ)至硬盤,常用方法是:將DDR讀出的160位數(shù)據(jù)乒乓緩存至兩個(gè)FIFO;然后用1 MHz時(shí)鐘從FIFO中同時(shí)讀出,寫作Data_I[159:0],Data_Q[159:0];經(jīng)數(shù)據(jù)拼接模塊再以10 MHz時(shí)鐘將位寬32位的數(shù)據(jù)送至PCI接口前的緩存FIFO;最后完成數(shù)據(jù)存儲(chǔ)過(guò)程,數(shù)據(jù)拼接流程如圖4所示。
圖4 數(shù)據(jù)拼接模塊流程圖
一般來(lái)說(shuō),圖4中的讀使能rd_en受PCI接口前的緩存FIFO的空滿信號(hào)控制,也就意味著產(chǎn)生空滿信號(hào)的時(shí)鐘只能有兩種情況,一種是10 MHz,一種是PCI接口時(shí)鐘33 MHz[15],而這兩種時(shí)鐘并不能與使用rd_en的時(shí)鐘clk_1M相匹配。所以采用以上設(shè)計(jì)方案來(lái)轉(zhuǎn)換數(shù)據(jù)格式,不僅因?yàn)橐? MHz和10 MHz兩個(gè)時(shí)鐘而使電路變得復(fù)雜,還使控制使能變得困難,導(dǎo)致數(shù)據(jù)傳輸不穩(wěn)定。
為了解決上述問(wèn)題,本文在DDR與PCI間添加FIFO組模塊完成跨時(shí)鐘域轉(zhuǎn)換和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換,如圖5所示。
采用狀態(tài)機(jī)實(shí)現(xiàn)DDR_FIFO的讀寫控制,圖6(a)為DDR_FIFO寫使能狀態(tài)機(jī),該狀態(tài)機(jī)嚴(yán)格控制在phy_clk時(shí)鐘域。圖6(b)為DDR_FIFO讀使能狀態(tài)機(jī),該狀態(tài)機(jī)嚴(yán)格控制在PCI接口的工作時(shí)鐘clk_33M時(shí)鐘域。
如圖5所示,將原本位寬160的數(shù)據(jù)劃分為10個(gè)16位的數(shù)據(jù)分別緩存入對(duì)應(yīng)的DDR_FIFO,又在圖6的狀態(tài)機(jī)轉(zhuǎn)換形式下產(chǎn)生DDR_FIFO的寫使能和讀使能,使DDR_FIFO分為數(shù)據(jù)I組和數(shù)據(jù)Q組,其仿真結(jié)果如圖7所示。
從圖3和圖4可以看出0001h為I,0002h為Q,為方便研究,本文將光纖輸出直接與光纖輸入連接。其次,如圖7所示,將rd_en_reg作為狀態(tài)選擇信號(hào),在其對(duì)應(yīng)狀態(tài)下分別把data_a,data_b,……data_j賦值給PCI_data[31:0],則從圖中可以看出,10路光纖數(shù)據(jù)都為00010002h,所以得出結(jié)論,在DDR與PCI間添加FIFO組模塊可以使40路雷達(dá)回波數(shù)據(jù)能以高16位為I,低16位為Q的格式交替存儲(chǔ)至硬盤,同時(shí),通過(guò)讀取硬盤中的數(shù)據(jù)可知,該方法可以保證數(shù)據(jù)準(zhǔn)確無(wú)誤,所以,該方法不僅實(shí)現(xiàn)了數(shù)據(jù)格式的轉(zhuǎn)換,還解決了時(shí)序不穩(wěn)定的問(wèn)題。
圖5 DDR與PCI間FIFO組模塊
圖6 DDR_FIFO寫、讀使能狀態(tài)機(jī)
圖7 經(jīng)DDR與PCI間FIFO組模塊后的數(shù)據(jù)仿真圖
多路光纖傳輸接口是高速、復(fù)雜而嚴(yán)格的控制邏輯和時(shí)序接口,要正確實(shí)現(xiàn)需要非常細(xì)致的工作。利用設(shè)置FIFO組以及控制相應(yīng)的讀寫使能,完成多路光纖數(shù)據(jù)的同步與數(shù)據(jù)結(jié)構(gòu)的改變,避免了因數(shù)據(jù)要求而引入復(fù)雜時(shí)序建立數(shù)據(jù)轉(zhuǎn)換模塊導(dǎo)致時(shí)序錯(cuò)亂、數(shù)據(jù)不穩(wěn)定等問(wèn)題。FIFO組可保證讀寫使能、數(shù)據(jù)和讀寫時(shí)鐘同源,避免跨時(shí)鐘域?qū)е聜鬏敳环€(wěn)定的問(wèn)題發(fā)生。
參考文獻(xiàn)
[1] 陳伯孝. 現(xiàn)代雷達(dá)系統(tǒng)分析與設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社, 2012.
[2] 馬向玲,楊輝,王海玲,等. 基于FPGA的多路數(shù)據(jù)光纖傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制, 2011,19(2): 363-366.
[3] 杜建華,瞿海娜. 基于光纖通道的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)設(shè)計(jì)與應(yīng)用, 2013(6): 41-43.
[4] 候朝勇,胡學(xué)浩,莊童. 基于FPGA的多路同步實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)[J]. 電子技術(shù)應(yīng)用,2009 (10): 168-171.
[5] 韓西寧,許暉,焦留芳. 基于FPGA的同步數(shù)據(jù)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用, 2009(1): 89-91.
[6] 楊隆梓,段星輝,魏煥東,等. 基于FPGA的多通道同步數(shù)據(jù)采集系統(tǒng)[J]. 科學(xué)技術(shù)與工程,2008, 8(6): 1466-1469.
[7] 馬靈,楊俊峰,宋克柱,等. 地震數(shù)據(jù)采集中基于FPGA的多DDR SDRAM控制器設(shè)計(jì)[J]. 中國(guó)科學(xué)技術(shù)大學(xué)學(xué)報(bào), 2010.40(9): 939-945.
[8] 王淑靜,史忠科. 乒乓緩存及其在DSP視頻實(shí)時(shí)處理系統(tǒng)中的應(yīng)用[J]. 工業(yè)儀表與自動(dòng)化裝置, 2008(1): 42-45.
[9] 胡菲,盧益明. 基于FPGA的PCI接口控制器設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子科技,2002(4): 34-37.
[10] 馬鳴錦,朱劍冰,何紅旗,等. PCI、PCI-X和PCI Express 的原理及體系結(jié)構(gòu)[M]. 北京: 清華大學(xué)出版社, 2007.
[11] 孫高俊,劉志英. 基于FPGA的雷達(dá)IQ光纖數(shù)據(jù)采集及傳輸系統(tǒng)[J].電子科技,2016,29(4): 169-172.
[12] 劉志英,孫高俊,吳關(guān).光纖傳輸技術(shù)在雷達(dá)信號(hào)記錄重演系統(tǒng)中的應(yīng)用[J].電子科技,2012, 25(3):104-106.
[13] 呂迎春,譚慶貴,謝軍,等. 光纖通道數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 航空電子技術(shù),2014.45(3): 17-21.
[14] Alter Corporation. Stratix IV device handbook 2012[M]. TX,USA: Altera Corporation, 2012.
[15] Mohit Arora. 硬件架構(gòu)的藝術(shù)—數(shù)字電路的設(shè)計(jì)方法與技術(shù)[M].李海東,來(lái)萍,師謙,等,譯.北京:機(jī)械工業(yè)出版社, 2014.