張躍為,于宗光,陸皆晟
(1.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫 214122;2.中科芯集成電路有限公司,江蘇無錫 214072)
軟件無線電中的數(shù)字化處理系統(tǒng)離天線非常近,所以整個(gè)系統(tǒng)對(duì)數(shù)字接收端的接口傳輸速率要求較高。傳統(tǒng)的通信硬件架構(gòu)中的模數(shù)轉(zhuǎn)換器(ADC)會(huì)使用各種不同的器件作為物理層去驅(qū)動(dòng)信號(hào)[1],如串并行CMOS 信號(hào)、低電壓差分信號(hào)(LVDS)、低電壓正極性發(fā)射耦合邏輯(LVPECL)、電流模式邏輯(CML)等,并遵循特定的數(shù)據(jù)樣式和標(biāo)準(zhǔn)[2],因此在基帶數(shù)據(jù)傳輸中,需要對(duì)FPGA 接口進(jìn)行設(shè)計(jì)以兼容驅(qū)動(dòng)ADC的特定器件,并且滿足對(duì)應(yīng)的數(shù)據(jù)格式和標(biāo)準(zhǔn)。在100 MHz 以下的低速數(shù)據(jù)接口中,單倍數(shù)據(jù)速率(SDR)CMOS 非常普遍[3],目前主流的基于CMOS 的通信接口有串行端口(SPORT)、集成電路互連總線(I2C)、串行外設(shè)接口(SPI)、通用異步收發(fā)器(UART)等,通過特定的接口協(xié)議標(biāo)準(zhǔn)可大幅降低接口的開發(fā)難度與成本[4]。但CMOS 的高低電平擺動(dòng)幅度大,電平狀態(tài)的切換時(shí)間長(zhǎng),不適用于傳輸速率高于100 MHz的信號(hào);輸出信號(hào)為單端信號(hào),信號(hào)傳輸過程中易被干擾[5];通信接口存在功耗高的問題,即使COMS 器件的靜態(tài)功耗較低,由于電平轉(zhuǎn)換的范圍較大,這些CMOS 接口產(chǎn)生的動(dòng)態(tài)功耗也較高[6]。在100 MHz 以上的高速數(shù)據(jù)接口中,目前主流的接口標(biāo)準(zhǔn)為聯(lián)合電子器件工程委員會(huì)204 標(biāo)準(zhǔn)(JESD204),數(shù)據(jù)速率可達(dá)12.5 GB/s[7],具有抗干擾能力強(qiáng)、低功耗、高速傳輸?shù)忍攸c(diǎn),用于單一主機(jī)(如FPGA 或ASIC 等)與一個(gè)或多個(gè)ADC 之間的高速串行鏈路。但為實(shí)現(xiàn)數(shù)據(jù)幀的傳輸,JESD204 需要的資源遠(yuǎn)遠(yuǎn)多于簡(jiǎn)單的LVDS或CMOS,并且需要使用更昂貴的FPGA,PCB 布線也更復(fù)雜[8]。
為了滿足高速率、高可靠、可配置等需求,同時(shí)兼顧成本和功耗的問題,本文針對(duì)“AD936x+ZYNQ”的軟件無線電架構(gòu),設(shè)計(jì)了一種高效的無線通信數(shù)字基帶接口。該接口物理層采用簡(jiǎn)單且低成本的并行LVDS 來發(fā)送數(shù)據(jù)[9],數(shù)字?jǐn)?shù)據(jù)標(biāo)準(zhǔn)采用的是高速率的LVDS 雙倍數(shù)據(jù)速率(DDR)傳輸模式,該模式下的并行LVDS 的功耗低于CMOS[10],該模式包含數(shù)據(jù)速率時(shí)鐘和幀時(shí)鐘,這兩個(gè)時(shí)鐘結(jié)合FPGA 中特有的DELAY、BUF 等延遲緩沖原語資源實(shí)現(xiàn)了差分轉(zhuǎn)換、幀數(shù)據(jù)同步、可配置延遲等模塊,這些模塊可保證系統(tǒng)的高可靠數(shù)據(jù)采集。
目前AD936x 和數(shù)字基帶處理器之間的數(shù)據(jù)接口有兩種常用的工作模式:標(biāo)準(zhǔn)CMOS 兼容模式與LVDS 兼容模式。在CMOS 模式下,接口的時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)均可以用單端信號(hào)線進(jìn)行傳輸,雖然簡(jiǎn)化了端口信號(hào),但在有噪聲的環(huán)境下,CMOS 模式容易出現(xiàn)共模噪聲、電磁干擾(EMI)等問題[11];在LVDS 模式下,AD936x 擁有較強(qiáng)的靈活性和穩(wěn)定性,當(dāng)使用LVDS 接口作為數(shù)據(jù)傳輸接口時(shí),更有助于自定義的ASIC 連接具有LVDS 功能的FPGA。LVDS 由于其差分特性,在對(duì)低串?dāng)_和共模特性有較高要求的應(yīng)用場(chǎng)景中優(yōu)勢(shì)明顯并且綜合成本較低,尤其在高速率、大容量數(shù)據(jù)傳輸系統(tǒng)中體現(xiàn)得更加明顯[12]。LVDS 的輸出電壓擺幅可以保持在300~400 mV,同時(shí)可以兼容低于2 V 的電壓;在信號(hào)傳輸過程中,其不僅抗干擾能力強(qiáng),速率還可高達(dá)幾百M(fèi)B/s,并且功耗和噪聲干擾也很低。
由于高速率的需求,系統(tǒng)需要提高一個(gè)時(shí)鐘周期內(nèi)可被采集的數(shù)據(jù)量,因此對(duì)于AD936x 和FPGA 之間的數(shù)據(jù)傳輸協(xié)議,接口主要采用LVDS DDR 數(shù)據(jù)傳輸模式,在單通道情況下,只需要兩個(gè)時(shí)鐘周期即可完成12 bit I/Q 數(shù)據(jù)傳輸,傳輸協(xié)議時(shí)序如圖1 所示。
圖1 傳輸協(xié)議時(shí)序
由圖1 可知,在接收幀信號(hào)rx_frame_p 為高時(shí),消耗一個(gè)時(shí)鐘周期可接收到一個(gè)通道的高6 bit I/Q 數(shù)據(jù);接收幀信號(hào)rx_frame_p 為低時(shí),消耗一個(gè)時(shí)鐘周期可接收到一個(gè)通道的低6 bit I/Q 數(shù)據(jù);在數(shù)據(jù)時(shí)鐘data_clk_p 的下降沿能夠采集到I 路數(shù)據(jù)而上升沿能夠接收Q 路數(shù)據(jù),兩個(gè)時(shí)鐘沿即可采集到一個(gè)通道的I 路和Q 路的完整12 bit 數(shù)據(jù)。
當(dāng)時(shí)鐘頻率較高時(shí),實(shí)際情況下會(huì)出現(xiàn)走線延遲,并行數(shù)據(jù)信號(hào)線的時(shí)序很難做到完美對(duì)齊,會(huì)有些相位的偏差。例如100 MHz 時(shí)鐘,一個(gè)時(shí)鐘周期只有10 ns,采樣波形如圖2 所示,數(shù)據(jù)線之間的時(shí)間延遲會(huì)對(duì)系統(tǒng)的數(shù)據(jù)接收產(chǎn)生一定的影響,因此將數(shù)據(jù)線的時(shí)序校正到可接收范圍內(nèi)非常關(guān)鍵[13]。為了確保幀時(shí)鐘能正確采集到數(shù)據(jù),防止出現(xiàn)無法解碼的情況,本文引入了時(shí)鐘數(shù)據(jù)恢復(fù)技術(shù)(CDR)[14],采用幀滑動(dòng)窗口觀察多組數(shù)據(jù)樣本。根據(jù)協(xié)議時(shí)序要求,模塊中設(shè)計(jì)了4 bit 的幀滑動(dòng)窗口。幀滑動(dòng)窗口若采集到4’b1100 或4’b0011,則滿足協(xié)議要求,可將12 bit 的I/Q數(shù)據(jù)緩存入寄存器,進(jìn)行數(shù)據(jù)處理;若采集到4’b1001或4’b0110,則說明數(shù)據(jù)信號(hào)在傳輸期間存在延遲,需要通過延遲模塊進(jìn)行相位偏移,直到初始相位對(duì)齊,為了確保數(shù)據(jù)采集的穩(wěn)定性,整個(gè)幀數(shù)據(jù)同步操作都會(huì)經(jīng)過鑒相編碼,以獲得最佳的采樣位置;若采集到的幀信號(hào)不滿足以上兩種情況,則可判斷為出現(xiàn)了失真等情況,不宜采樣。幀數(shù)據(jù)同步邏輯如圖3 所示。
圖2 采樣波形
圖3 幀數(shù)據(jù)同步邏輯
系統(tǒng)以ZYNQ 作為主控模塊,通過SPI 接口控制AD936x 射頻前端芯片完成各種收發(fā)通道參數(shù)的設(shè)置,實(shí)現(xiàn)射頻收發(fā),利用FPGA 的內(nèi)部資源搭建AD936x 芯片與FPGA 內(nèi)部基帶數(shù)據(jù)處理模塊之間的數(shù)字基帶接口模塊。為了使該基帶接口模塊具有可配置性,通過ZYNQ 的高級(jí)可擴(kuò)展接口(AXI-Lite)實(shí)現(xiàn)時(shí)鐘數(shù)據(jù)的延遲可配置;為了使該基帶接口模塊擁有高速抗干擾的性能,通過Xilinx FPGA 的輸入延遲單元(IDELAYE2)、輸入緩沖差分信號(hào)(IBUFDS)、帶有門控時(shí)鐘啟用的緩沖器(BUFGCE)等原語資源以及FPGA 內(nèi)部的邏輯運(yùn)算資源實(shí)現(xiàn)幀數(shù)據(jù)同步;接口設(shè)計(jì)所用的數(shù)據(jù)傳輸格式為L(zhǎng)VDS DDR 模式,在此模式下,通過輸入雙倍速率器件(IDDR)實(shí)現(xiàn)了數(shù)據(jù)速率時(shí)鐘、幀時(shí)鐘和數(shù)據(jù)等信號(hào)從雙邊沿采集轉(zhuǎn)換至單邊沿采集的高效操作,整體系統(tǒng)架構(gòu)如圖4 所示。
圖4 整體系統(tǒng)架構(gòu)
為了滿足LVDS DDR 通信協(xié)議,AD936x 的數(shù)據(jù)送入FPGA 時(shí),LVDS 數(shù)字基帶接口模塊需要將雙邊沿輸出數(shù)據(jù)轉(zhuǎn)換成單邊沿?cái)?shù)據(jù),Xilinx 提供的IDDR和ODDR 兩個(gè)原語便符合數(shù)據(jù)沿轉(zhuǎn)換的要求,主要通過IDDR 原語的SAME_EDGE_PIPELINE 模式來實(shí)現(xiàn),IDDR 接口和數(shù)據(jù)采集時(shí)序如圖5 所示。
圖5 IDDR 接口及數(shù)據(jù)采集時(shí)序
為了確保接收端接收到的幀和數(shù)據(jù)與發(fā)送端一致,LVDS 數(shù)字基帶接口模塊在數(shù)據(jù)輸入端利用Xilinx FPGA 的延遲原語資源,通過CDR 技術(shù)實(shí)現(xiàn)幀數(shù)據(jù)同步,因此該模塊使用了Xilinx 的IDELAYE2 原語,并通過用AXI-Lite 接口實(shí)現(xiàn)PS 端的軟件配置的方式使其延遲值Idelay_d 的動(dòng)態(tài)可調(diào)節(jié)能力大大增強(qiáng)。AD936x 數(shù)字基帶接口架構(gòu)如圖6 所示。
圖6 AD936x 數(shù)字基帶接口架構(gòu)
在數(shù)據(jù)傳輸過程中,數(shù)據(jù)時(shí)鐘與幀數(shù)據(jù)之間的延遲比較大時(shí),會(huì)出現(xiàn)數(shù)據(jù)無法被正確采集到的情況,為了解決該問題,接口設(shè)計(jì)引入了幀數(shù)據(jù)同步模塊,在數(shù)據(jù)輸入端采用CDR 技術(shù)實(shí)現(xiàn)幀數(shù)據(jù)同步。利用Xilinx FPGA 的IDELAYE2、IBUFDS、BUFGCE 等原語資源,幀數(shù)據(jù)同步模塊在接收端可以獲得靈活調(diào)整接收數(shù)據(jù)與數(shù)據(jù)時(shí)鐘/幀時(shí)鐘延遲的能力[15]。由于前面通過IDDR 實(shí)現(xiàn)了雙邊沿信號(hào)的單邊沿采集,因此在該模塊中的所有信號(hào)均采用單端信號(hào),在開始輸入端采用IBUFDS 原語,將數(shù)據(jù)和時(shí)鐘均變?yōu)閱味诵盘?hào)。每當(dāng)data_clk 產(chǎn)生一次上升沿,通過一個(gè)4 bit 移位寄存器便可采集新的2 bit 接收幀信號(hào)rx_frame,實(shí)現(xiàn)幀滑動(dòng)窗口,用以檢查進(jìn)入該接口的幀信號(hào)是否滿足LVDS DDR 數(shù)據(jù)格式4’b1100 或4’b0011,若不滿足,則進(jìn)行邊沿檢測(cè)和邏輯判斷,并校正得到最佳數(shù)據(jù)采樣位置。當(dāng)時(shí)鐘與幀數(shù)據(jù)相位差較大時(shí),需要通過IDELAYE2 原語對(duì)數(shù)據(jù)rx_data 和rx_frame 進(jìn)行多級(jí)延遲,該IDELAYE2 原語可進(jìn)行32 級(jí)延遲,延時(shí)分辨率由參考時(shí)鐘決定,該模塊采用FPGA 內(nèi)部的鎖相環(huán)生成的200 MHz 參考時(shí)鐘產(chǎn)生78 ps 分辨率的延遲。幀數(shù)據(jù)同步模塊結(jié)構(gòu)如圖7 所示。
圖7 幀數(shù)據(jù)同步模塊結(jié)構(gòu)
為了確定最佳數(shù)據(jù)采集位置所需要延遲的級(jí)數(shù),在數(shù)據(jù)幀同步模塊中需要進(jìn)行鑒相編碼,由于共有32級(jí)延遲,因此可設(shè)置的編碼位數(shù)為5 bit,最大編碼值為31,當(dāng)采集到的幀信號(hào)為4’b1001 或4’b0110 時(shí),設(shè)置編碼為0,之后的編碼值均為前一個(gè)編碼值加1,同時(shí)進(jìn)行與編碼值一樣的級(jí)數(shù)的延遲,直到采集到的幀信號(hào)為4’b1100 或4’b0011;為了確定正確信號(hào)的邊緣,可將當(dāng)前幀滑動(dòng)窗口值與上個(gè)時(shí)鐘沿采到的值進(jìn)行對(duì)比;確定了邊緣后,還需要對(duì)邊緣信號(hào)的編碼值進(jìn)行記錄、保存,并繼續(xù)進(jìn)行編碼延遲,直到獲得下一個(gè)邊緣信號(hào),即可確定兩個(gè)邊緣中間時(shí)的編碼值,以獲得最佳采樣位置。幀數(shù)據(jù)滑動(dòng)窗口值同步前后時(shí)序如圖8 所示。
圖8 幀數(shù)據(jù)滑動(dòng)窗口值同步前后時(shí)序
在實(shí)驗(yàn)室中采用ZYNQ-7020 和AD936x 的通用軟件無線電平臺(tái)對(duì)該接口進(jìn)行了測(cè)試。采用DDS IP核產(chǎn)生正弦波單音輸入信號(hào),配置AD936x 內(nèi)部時(shí)鐘獲得同步采樣時(shí)鐘,通過JTAG 測(cè)試接口將該接口接收到的采樣數(shù)據(jù)在ILA 中顯示。采樣時(shí)鐘為80 MHz時(shí),位寬為12 bit、頻率為780 kHz 的正弦波單音輸入信號(hào)的測(cè)試結(jié)果如圖9 所示,其中移位幀寄存器rx_frame_shift 用于獲取數(shù)據(jù)位的幀時(shí)鐘數(shù)據(jù)滑動(dòng)窗口,dac_data_q1 和dac_data_i1 是發(fā)送端數(shù)據(jù)時(shí)序波形,adc_data_q1 和adc_data_i1 是采樣數(shù)據(jù)時(shí)序波形,每?jī)蓚€(gè)采樣時(shí)鐘周期可采集到I/Q 兩路共24 bit 數(shù)據(jù),因此傳輸速率達(dá)到了120 MB/s。接口傳輸速率及誤碼測(cè)試結(jié)果如圖10 所示。
圖9 正弦波單音輸入信號(hào)的測(cè)試結(jié)果
圖10 接口傳輸速率及誤碼測(cè)試結(jié)果
基于LVDS DDR 數(shù)據(jù)傳輸協(xié)議,本文提出了一種可進(jìn)行幀數(shù)據(jù)同步且可靈活配置調(diào)控的基帶數(shù)字接口模塊設(shè)計(jì)方法,并進(jìn)行了驗(yàn)證和測(cè)試。該模塊引用了Xilinx 的IDELAYE2、IBUFDS、IDDR 等原語模塊進(jìn)行差分與單端信號(hào)之間的高速設(shè)計(jì),實(shí)現(xiàn)了幀數(shù)據(jù)同步功能,同時(shí)也實(shí)現(xiàn)了使用ARM Cortex-A9 嵌入式硬核完成對(duì)AD936x 的初始化以及狀態(tài)的控制和參數(shù)的配置。此外,對(duì)該模塊進(jìn)行了單音正弦波信號(hào)的收發(fā)實(shí)驗(yàn),通過ILA 觀測(cè)到了完整的收發(fā)數(shù)據(jù),并通過采樣時(shí)鐘速率以及接收數(shù)據(jù)位數(shù)計(jì)算了該接口的傳輸速率,同時(shí)進(jìn)行了數(shù)據(jù)對(duì)比、計(jì)算了誤碼率。結(jié)果表明,傳輸速率達(dá)120 MB/s,未出現(xiàn)誤碼,接口模塊性能良好,進(jìn)一步提高了AD936x 的通信性能。