趙 鑫,趙 赟
(中國(guó)船舶集團(tuán)有限公司第七二三研究所,江蘇 揚(yáng)州 225101)
JESD204B是一種高速串行傳輸協(xié)議,目前是模數(shù)轉(zhuǎn)換器(ADC)采樣數(shù)據(jù)傳輸中重要的接口標(biāo)準(zhǔn),廣泛用于高速模數(shù)轉(zhuǎn)換器與后端數(shù)字信號(hào)處理設(shè)備間的數(shù)據(jù)傳輸[1-2]。此類應(yīng)用場(chǎng)景需保證整個(gè)鏈路延遲要固定,但是實(shí)際中存在的不穩(wěn)定因素極大地阻礙了確定性延遲的實(shí)現(xiàn)。因此,通過(guò)一定的設(shè)計(jì)和算法,使得最差的鏈路在重復(fù)上電或者重建鏈路的時(shí)候都能實(shí)現(xiàn)確定性延遲成為必要。本文提出了一種基于JESD204B的采樣系統(tǒng)設(shè)計(jì)方案,主要應(yīng)用于雷達(dá)、電子對(duì)抗系統(tǒng)中的高速采樣和數(shù)字信號(hào)處理領(lǐng)域。
整個(gè)采樣系統(tǒng)包含整機(jī)時(shí)鐘源、時(shí)鐘分發(fā)板、多塊采樣板和多塊信號(hào)處理板[3],其中單塊采樣板可由多片現(xiàn)場(chǎng)可編程門陣列(FPGA)和多片ADC根據(jù)設(shè)計(jì)需求組合,同樣結(jié)構(gòu)的采樣板卡可進(jìn)行堆疊,通過(guò)背板VPX架構(gòu)組成采樣系統(tǒng),增加采樣通道,增強(qiáng)采樣能力,如圖1所示。
圖1 采樣系統(tǒng)原理框圖
多ADC同步的實(shí)現(xiàn)依賴整機(jī)時(shí)鐘源、時(shí)鐘分發(fā)板,而整個(gè)鏈路延遲由ADC發(fā)送端延遲、ADC至FPGA物理鏈路延遲、FPGA接收端延遲三部分組成。ADC發(fā)送端和FPGA接收端延遲可通過(guò)寄存器層面優(yōu)化,ADC至FPGA物理鏈路延遲可通過(guò)硬件電路設(shè)計(jì)優(yōu)化,再配合調(diào)節(jié)接收端緩沖器釋放點(diǎn)從而達(dá)到整個(gè)鏈路的最小確定性延遲。
時(shí)鐘分發(fā)板卡同步時(shí)鐘電路選用LMK04828芯片搭建,外部VCXO選取CRYSTEK的CVHD-950X-122.88,低相噪線性電源取TI的TPS7A4700;ADC選用4片TI的芯片ADC12DJ3200,FPGA選用2片Xilinx的芯片Virtex-7 XC7VX690T,每片F(xiàn)PGA作為數(shù)據(jù)接收端對(duì)應(yīng)2片ADC12DJ3200。
整機(jī)系統(tǒng)時(shí)鐘源Clkin假設(shè)為8 M,輸入時(shí)鐘分發(fā)板卡的LMK04828經(jīng)PLL2輸出4路ADC的采樣時(shí)鐘DevClk_ADC 2.56 G,4路ADC的參考時(shí)鐘SYSREF_ADC 8 M,2路FPGA的工作時(shí)鐘DevClk_FPGA 128 M,2路FPGA的參考時(shí)鐘SYSREF_FPGA 8 M[4]。
如圖2所示,8 M時(shí)鐘SYSREF反饋至PLL1的鑒相器完成和Clkin鑒相鎖相功能,R1/N1=K/1,K為整數(shù),防止分頻模糊,保證輸出的6路SYSREF全部相位一致;再通過(guò)LMK04828的SYSREF沿觸發(fā)同步所有的DevClk分頻器,無(wú)需外部同步信號(hào)即可使輸出的6路DevClk相位一致。
調(diào)整PLL1和PLL2的環(huán)路濾波器參數(shù),凈化時(shí)鐘源,壓低相噪,獲得最好的輸出時(shí)鐘同步性能,C1取100 nF,C2取680 nF,R2取39 kΩ,PLL2的環(huán)路濾波器參數(shù)C1取0.047 nF,C2取3.9 nF,R2取0.62 kΩ。
單塊采樣板由4片ADC+2片F(xiàn)PGA組合而成,時(shí)鐘分發(fā)板送出的ADC端的采樣時(shí)鐘DevClk_ADC和參考時(shí)鐘SYSREF_ADC布線均無(wú)需嚴(yán)格控制PCB等長(zhǎng)設(shè)計(jì);FPGA端的DevClk_FPGA和SYSREF_FPGA布線也無(wú)需嚴(yán)格控制硬件電路等長(zhǎng)設(shè)計(jì)。多塊采樣板卡進(jìn)行組合,結(jié)合時(shí)鐘分發(fā)板卡、背板VPX架構(gòu)組成采樣系統(tǒng),時(shí)鐘分發(fā)板卡輸出的參考時(shí)鐘SYSREF和采樣時(shí)鐘DevClk以LVPECL差分電平標(biāo)準(zhǔn)或同相射頻線纜方式傳輸至各單塊采樣板。
時(shí)鐘分發(fā)板卡能夠產(chǎn)生多路同相時(shí)鐘SYSREF和多路同相時(shí)鐘DEVCLK,分別輸入到各片ADC和FPGA中。ADC發(fā)送端通過(guò)寄存器設(shè)置調(diào)整ADC端參考時(shí)鐘相對(duì)采樣時(shí)鐘的位置,確保滿足建立保持時(shí)間[5-6],計(jì)算ADC多幀大小M=F×K(F為每幀的字節(jié)數(shù),K為1個(gè)多幀的幀數(shù))。FPGA接收端確定多幀數(shù)據(jù)到達(dá)的最大安全窗口,通常要落在本地多幀時(shí)鐘(LMFC)邊沿的前后N個(gè)核時(shí)鐘周期區(qū)間,換算成字節(jié)常量即N×4到M-N×4之間,如圖3所示。讀取接收端每條Lane的buffer_adjust值進(jìn)行調(diào)整,使多幀數(shù)據(jù)到達(dá)的時(shí)間點(diǎn)處于安全窗口內(nèi),以獲得最好的穩(wěn)定性,確保最差的鏈路在重復(fù)上電或者重建鏈路時(shí)都能實(shí)現(xiàn)確定性延遲。最后,配合調(diào)節(jié)接收端彈性緩沖器釋放點(diǎn)取得最小確定性延遲。
圖3 多幀數(shù)據(jù)到達(dá)接收端的安全窗口
為實(shí)現(xiàn)最小確定性延遲,要確保多ADC之間同步,每片ADC可調(diào)節(jié)SYSREF_ADC的采樣位置,使每片ADC具有相同的TTXLMFC,保持狀態(tài)一致。TTXLMFC為發(fā)送端即ADC中LMFC到SYSREF_ADC上升沿之間的時(shí)間間隔。每片F(xiàn)PGA的SYSREF_FPGA通過(guò)D觸發(fā)器輸入JESD204B RX core,再通過(guò)DEVCLK_FPGA下降沿采樣,使每片F(xiàn)PGA具有相同的RRXLMFC,保持狀態(tài)一致。RRXLMFC為接收端即FPGA中LMFC到SYSREF_FPGA上升沿之間的時(shí)間間隔。
多幀數(shù)據(jù)到達(dá)FPGA接收端的位置通常要遠(yuǎn)離LMFC邊沿,否則ADC端或者物理鏈路上的一點(diǎn)干擾抖動(dòng),都有可能產(chǎn)生大小為1個(gè)LMFC周期的延遲變化,所以安全窗口要有一定的冗余設(shè)計(jì),如圖4所示。如果前端輸出抖動(dòng)小于4個(gè)字節(jié),那么遠(yuǎn)離LMFC邊沿8個(gè)字節(jié)區(qū)間內(nèi)為宜;如果前端輸出抖動(dòng)超過(guò)4個(gè)字節(jié),那么安全窗口需進(jìn)一步縮小。
圖4 多幀數(shù)據(jù)到達(dá)接收端非安全窗口引發(fā)的錯(cuò)拍
讀取接收端每條Lane的buffer_adjust值,根據(jù)讀取的最小值buf_fill調(diào)整LMFC相對(duì)SYSREF的位置,使多幀數(shù)據(jù)到達(dá)時(shí)間點(diǎn)處于安全窗口內(nèi)。SYSREF_HANDLING寄存器最多可使LMFC相對(duì)SYSREF延遲16個(gè)核時(shí)鐘周期,1個(gè)核時(shí)鐘周期相當(dāng)于4個(gè)字節(jié)。當(dāng)最小值buf_fill小于4個(gè)字節(jié)時(shí),設(shè)置SYSREF_HANDLING寄存器值為2,可使LMFC延遲2個(gè)核時(shí)鐘周期;當(dāng)最小值buf_fill在4~8個(gè)字節(jié)之間時(shí),設(shè)置SYSREF_HANDLING寄存器值為1,可使LMFC延遲1個(gè)核時(shí)鐘周期;當(dāng)最小值buf_fill大到接近前一個(gè)LFMC邊沿,這里可通過(guò)設(shè)置SYSREF_HANDLING寄存器值使LMFC延遲3~4個(gè)甚至更多核時(shí)鐘周期,使多幀數(shù)據(jù)到達(dá)時(shí)間點(diǎn)跳入前一個(gè)LFMC的安全窗口內(nèi),縮減端到端的固定延遲。
接收端緩沖器釋放點(diǎn)默認(rèn)在LMFC邊沿釋放,可在縮減端到端的固定延遲基礎(chǔ)上進(jìn)一步提前釋放,以達(dá)到最小確定性延遲。如圖5所示。TADC為數(shù)據(jù)采樣輸出時(shí)間,TLANE為數(shù)據(jù)鏈路傳輸時(shí)間,TFPGA為數(shù)據(jù)接收處理時(shí)間。通過(guò)設(shè)置接收端rx_buffer_delay(RBD)的值將釋放點(diǎn)從LMFC邊沿移動(dòng)適當(dāng)數(shù)量的核時(shí)鐘周期,并確保仍然落在LMFC周期的有效區(qū)域之內(nèi),從而提前釋放彈性緩沖區(qū)的數(shù)據(jù)[7]。
圖5 接收端彈性緩沖器釋放點(diǎn)的有效區(qū)
本設(shè)計(jì)中ADC選取傳輸模式中的JMODE 3模式,即12位、雙通道、16 lane,采樣時(shí)鐘取2.56 Gsps,K取4,F取8,根據(jù)fSYSREF=fBITRATE/(10×F×K×n),參考時(shí)鐘SYSREF取8 MHz[8]。
主要利用VIVADO軟件調(diào)用JESD204B相關(guān)IP核搭建工程,SDK軟件負(fù)責(zé)應(yīng)用程序模塊,錄得采樣數(shù)據(jù),再利用MATLAB軟件做相關(guān)指標(biāo)分析,軟件流程如圖6所示。
圖6 軟件流程
通過(guò)SPI配置ADC12DJ3200,為確保滿足建立保持時(shí)間,讀取寄存器SYSREF_POS[23∶0]。其中0x02E[7∶0]= b10000000,0x02D[7∶0]= b00000011,0x02C[7∶0]= b00000001。通過(guò)24 bit采樣窗,將正常采樣點(diǎn)記為0,有風(fēng)險(xiǎn)的采樣點(diǎn)記為1。因此選擇長(zhǎng)0中最中間的位置,配置寄存器SYSREF_SEL值為15,即為SYSREF_ADC的最優(yōu)采樣位置,配置SYSREF_ZOOM寄存器值為1,即步進(jìn)值為77 ps,即SYSREF_ADC相對(duì)DEVCLK_ADC移動(dòng)77 ps×15,最大化滿足建立和保持時(shí)間,同時(shí)調(diào)節(jié)LMFC相對(duì)SYSREF_ADC的位置一致確保同步。
計(jì)算多幀大小M=F·K,K取4,F取8,M為32,多幀數(shù)據(jù)到達(dá)接收端的最大安全窗口為8~24之間。FPGA端SYSREF_FPGA通過(guò)D觸發(fā)器輸入JESD204B RX core,并利用DEVCLK_FPGA的下降沿采樣,確保滿足建立和保持時(shí)間,同時(shí)調(diào)節(jié)LMFC相對(duì)SYSREF_FPGA的位置一致確保同步。如圖7所示,2片ADC四通道分屬于2塊采樣板卡,經(jīng)過(guò)不斷的重復(fù)上電,不斷的重復(fù)測(cè)試,通道兩兩相減相位差固定,證明實(shí)現(xiàn)了不同板間多ADC同步。
圖7 多ADC同步驗(yàn)證
讀取接收端每片ADC每條Lane的buffer_adjust值,ADC1的為{28,28,32,28,28,32,28,32},ADC2的為{24,24,28,28,28,28,28,28},進(jìn)行調(diào)整使多幀數(shù)據(jù)到達(dá)的時(shí)間點(diǎn)處于安全窗口內(nèi),從讀出的值看出數(shù)據(jù)到達(dá)時(shí)間點(diǎn)接近前一個(gè)LMFC沿,并不在安全窗口內(nèi),容易引發(fā)一個(gè)LMFC周期的誤差,設(shè)置ADC1的SYSREF_HANDLING寄存器值為0x10501,設(shè)置ADC2的SYSREF_HANDLING寄存器值為0x10601,使其跳進(jìn)前一個(gè)LMFC周期內(nèi)并落在安全窗口8~24之間,ADC3,ADC4依此類推。
調(diào)整緩沖器延遲參數(shù)(RBD)將釋放點(diǎn)從LMFC邊沿移動(dòng)適當(dāng)數(shù)量的幀時(shí)鐘,并使之保持在LMFC周期的有效區(qū)域之內(nèi),這里取8,進(jìn)一步縮小確定性延遲。
本文通過(guò)硬件設(shè)計(jì)和軟件調(diào)節(jié)方式實(shí)現(xiàn)采樣系統(tǒng)多ADC同步和各鏈路最小確定性延遲,并且經(jīng)過(guò)長(zhǎng)時(shí)間、反復(fù)上電測(cè)試,采樣系統(tǒng)運(yùn)行穩(wěn)定可靠,增加了采樣通道,增強(qiáng)了采樣能力,具有較高的實(shí)際應(yīng)用價(jià)值。