尹 康,羅義軍
(武漢大學(xué)電子信息學(xué)院,湖北武漢 430072)
在某些通信測(cè)試中(如電子對(duì)抗、電網(wǎng)規(guī)劃、探測(cè)等),為了檢驗(yàn)設(shè)備和系統(tǒng)的性能及參數(shù)指標(biāo),需要產(chǎn)生真實(shí)或仿真信號(hào)以及模擬復(fù)雜電磁環(huán)境,但是傳統(tǒng)的信號(hào)發(fā)生器難以滿足特殊需求,很難產(chǎn)生所需要的復(fù)雜信號(hào)[1-2]。基于此,設(shè)計(jì)一種能發(fā)送用戶所需的測(cè)試信號(hào),模擬復(fù)雜電磁環(huán)境,并且同時(shí)能快速切換頻點(diǎn)并迅速響應(yīng)的矢量信號(hào)源,是非常具有實(shí)用價(jià)值和應(yīng)用前景的[3]。
目前,隨著半導(dǎo)體技術(shù)高速發(fā)展,寬帶高速收發(fā)器以及現(xiàn)場(chǎng)可編程邏輯陣列芯片(FPGA)的出現(xiàn),基于軟件無線電的數(shù)字式信號(hào)源迅速發(fā)展起來[4]。可應(yīng)用于FPGA的高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn)接口(PCIe),可以連接上位機(jī)與FPGA,進(jìn)行穩(wěn)定的高速數(shù)據(jù)傳輸[5]。為了設(shè)計(jì)能滿足上述需求的矢量信號(hào)源,本文利用以上技術(shù),通過PC端上位機(jī)產(chǎn)生或存儲(chǔ)所需信號(hào),經(jīng)PCIe接口傳輸?shù)紽PGA并存儲(chǔ)到外部存儲(chǔ)器,利用FPGA讀取存儲(chǔ)的數(shù)據(jù),通過AD9364射頻發(fā)射器發(fā)射,提供了一種便攜式、低成本及高靈活性的矢量信號(hào)源設(shè)計(jì)方案。
矢量信號(hào)源的硬件部分包括FPGA載板、射頻捷變發(fā)射器、數(shù)據(jù)存儲(chǔ)板以及PCIe板卡。FPGA芯片采用XC7K325TFFG900;射頻發(fā)射器采用AD9364的評(píng)估板;外部存儲(chǔ)用第三代同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(DDR3);PCIe接口采用金手指插槽,節(jié)省體積;整體設(shè)計(jì)方案如圖1所示。
PCIe通道分為數(shù)據(jù)通道和命令通道。其中命令通道主要傳輸AD9364的寄存器配置信息和數(shù)據(jù)發(fā)送的控制命令,上位機(jī)通過解析AD936x評(píng)估板軟件(ADI公司提供)生成的配置信息,下發(fā)配置命令到FPGA,F(xiàn)PGA利用串行外設(shè)接口(SPI)進(jìn)行寄存器配置,配置完成后,上位機(jī)下發(fā)信源發(fā)送命令,激活數(shù)據(jù)通道。數(shù)據(jù)通道負(fù)責(zé)傳輸上位機(jī)下發(fā)的大量所需信源數(shù)據(jù),經(jīng)FPGA控制存儲(chǔ)到DDR3。再?gòu)腄DR3取出信源數(shù)據(jù),通過AD9364的Tx端發(fā)送出去。
選用的射頻捷變收發(fā)器AD9364支持I/Q 2路,具有帶寬大、可編程性強(qiáng)、數(shù)字分頻精確等特點(diǎn),AD9364內(nèi)部包括混頻器、發(fā)射通道的頻率合成器、模擬濾波、數(shù)據(jù)轉(zhuǎn)換器和其他功能,將數(shù)模轉(zhuǎn)換、射頻鎖相環(huán)、上變頻等功能合為一體,降低了硬件電路設(shè)計(jì)的復(fù)雜度[6-7]。AD9364支持頻段為70 MHz~6.0 GHz,可調(diào)諧帶寬低于200 kHz~56 MHz,最高采樣率為122.88 MSPS,發(fā)送誤差矢量(Tx EVM)小于等于-40 dB,收發(fā)增益可控。AD9364通過FMC(FPGA mezzanine card)接口與FPGA載板連接,進(jìn)行數(shù)據(jù)的交互。AD9364在發(fā)射信號(hào)時(shí),發(fā)送數(shù)據(jù)需要經(jīng)過單端轉(zhuǎn)差分,單倍數(shù)據(jù)速率(SDR)轉(zhuǎn)雙倍數(shù)據(jù)速率(DDR),其發(fā)射通道操作如圖2所示。
上位機(jī)軟件的作用是向FPGA發(fā)送各種控制、配置信號(hào)以及信源數(shù)據(jù)。按照功能劃分,需要設(shè)計(jì)以下幾個(gè)部分:
(1)啟動(dòng)設(shè)備,初始化PCIe設(shè)備寄存器,獲取內(nèi)存映射地址。
(2)下發(fā)AD9364配置信息,對(duì)從AD936x評(píng)估板軟件生成的配置信息進(jìn)行有效提取,每次操作都生成為32 bit的配置信息。如圖3所示,[7∶0]為寄存器數(shù)據(jù);[17∶8]為寄存器地址;[22∶18]全0;[23]為讀寫標(biāo)志位;[31∶24]為幀頭,判斷是否為等待狀態(tài)。
(3)開啟PCIe數(shù)據(jù)通道,向FPGA發(fā)送用戶自己定義的信源數(shù)據(jù),由于下發(fā)速度快于AD9364采樣速率,所以需要接收來自FPGA的反饋命令,間斷地下發(fā)大量信源數(shù)據(jù)。
(4)停止和復(fù)位,停止下發(fā)信源數(shù)據(jù),利用命令通道給FPGA內(nèi)資源進(jìn)行全局復(fù)位。
PCIe總線使用了高速差分總線,采用端到端的連接方式,實(shí)現(xiàn)高速串行點(diǎn)對(duì)點(diǎn)的雙通道高帶寬傳輸。PCIe通道是本方案最關(guān)鍵的模塊,它能夠架起上位機(jī)與FPGA之間高速數(shù)據(jù)和命令的傳輸。
本方案中的PCIe接口采用的是PCIe2.0 x8接口,可提供的數(shù)據(jù)傳輸速率最高可達(dá)4 GB/s,而AD9364發(fā)送數(shù)據(jù)最大速率約為196.6 MB/s,本次采用的PCIe接口能夠滿足上位機(jī)和FPGA之間的數(shù)據(jù)傳輸帶寬要求。XC7K325TFFG900FPGA芯片內(nèi)部集成了PCIe硬核,硬核中已完成物理層與數(shù)據(jù)鏈路層的設(shè)計(jì),這簡(jiǎn)化了不少的開發(fā)流程[8]。Xilinx公司提供了XDMA這款I(lǐng)P核,它可以提供AXI Memory Mappe(MM)選項(xiàng),主要針對(duì)通過DDR進(jìn)行大量的數(shù)據(jù)讀寫,又可以使用AXI-Lite選項(xiàng),讓上位機(jī)通過PCIe接口向FPGA發(fā)送各種控制或者配置指令。圖4為XDMA IP核結(jié)構(gòu)總覽圖。
PCIe與DDR控制頂層RTL圖如圖5所示。當(dāng)上位機(jī)向FPGA下發(fā)命令時(shí),會(huì)往專用的寄存器地址里寫入相應(yīng)的命令信息,通過PCIe接口的命令通道,從XDMA IP核的AXI-Lite接口里解析相關(guān)地址與數(shù)據(jù)。獲得有效命令信息,完成解析后通過跨時(shí)鐘域方式,送往命令相對(duì)應(yīng)的模塊,如AD9364的配置模塊和發(fā)送數(shù)據(jù)通路模塊等。
當(dāng)上位機(jī)下發(fā)大量信源數(shù)據(jù)時(shí),需要DDR3進(jìn)行數(shù)據(jù)緩存,其控制由MIG IP核來完成,并且該IP核提供AXI接口。本方案PCIe采用SG_DMA方式來對(duì)DDR進(jìn)行數(shù)據(jù)讀寫,只需啟動(dòng)一次DMA操作,便可傳輸多個(gè)非連續(xù)存儲(chǔ)塊數(shù)據(jù),這樣對(duì)大數(shù)據(jù)傳輸(大于4 KB)效率要高得多[9]。
數(shù)據(jù)下發(fā)到DDR3存儲(chǔ)后,信號(hào)發(fā)送到AD9364中間需要一個(gè)異步FIFO來進(jìn)行緩存和跨時(shí)鐘域輸出,通過設(shè)置FIFO的快滿信號(hào)(prog_full)和快空信號(hào)(prog_empty)信號(hào)來控制FIFO的讀寫,讓數(shù)據(jù)能夠源源不斷地送到AD9364,可以保證信號(hào)發(fā)送的連續(xù)性。
AD9364是由通過SPI寫入的寄存器信息來控制的。通過AD936x評(píng)估板軟件完成AD9364的配置信息生成,由上位機(jī)處理后,通過PCIe命令通道一次性將所有寄存器配置信息發(fā)送到FPGA,由于AD9364內(nèi)部寄存器有上千個(gè),并且可能會(huì)重復(fù)配置,所以將配置信息存入一個(gè)深度為4 096,位寬32 bit的FIFO[10]。32 bit數(shù)據(jù)經(jīng)提取配置信息后,通過SPI對(duì)AD9364完成配置。當(dāng)配置完寄存器后,讀取地址為0x017的寄存器數(shù)據(jù),判斷AD9364是否在FDD模式,如果在,則結(jié)束這一次AD9364的配置,AD9364開始正常工作,否則向上位機(jī)請(qǐng)求重新配置。AD9364配置操作流程如圖6所示。
在正常工作后,PCIe數(shù)據(jù)通道便可以下發(fā)準(zhǔn)備好的信源數(shù)據(jù),F(xiàn)PGA內(nèi)部接收AD9364的隨路時(shí)鐘作為發(fā)射數(shù)據(jù)時(shí)鐘data_clk,按照?qǐng)D2的發(fā)射通道操作,首先進(jìn)行I/Q數(shù)據(jù)的拆分,那么I/Q數(shù)據(jù)下行到發(fā)射通道的數(shù)據(jù)速率應(yīng)為data_clk的一半,然后利用原語ODDR,讓data_clk的上升沿發(fā)送I路數(shù)據(jù),下降沿發(fā)送Q路數(shù)據(jù)。AD9364也需要根據(jù)tx_frame這一信號(hào)來判斷當(dāng)前一路6 bit I/Q 2路數(shù)據(jù)為完整12 bit I/Q 2路數(shù)據(jù)的高6位還是低6位。最后利用原語OBUFDS轉(zhuǎn)為L(zhǎng)VDS差分信號(hào)送入AD9364子板。圖7為AD9364寄存器配置頂層RTL圖,圖8為AD9364發(fā)射通路模塊RTL圖。
上位機(jī)作為交互界面,需要給FPGA發(fā)出各種指令以及準(zhǔn)備好將要發(fā)送的信號(hào)數(shù)據(jù)。FPGA在接收到各種指令后,會(huì)完成AD9364的配置,進(jìn)入工作狀態(tài),然后上位機(jī)下發(fā)數(shù)據(jù),AD9364就可以將信源數(shù)據(jù)發(fā)射出去。操作界面如圖9所示。
上位機(jī)操作步驟:
(1)前期準(zhǔn)備。按照所需要發(fā)射內(nèi)容對(duì)AD9364進(jìn)行配置,利用AD936x評(píng)估板軟件生成相關(guān)寄存器配置文件。同時(shí),用戶準(zhǔn)備好所需發(fā)送的信源數(shù)據(jù)。
(2)啟動(dòng)設(shè)備。確認(rèn)FPGA載板插入卡槽,點(diǎn)擊“啟動(dòng)設(shè)備”按鈕,如果日志區(qū)顯示“啟動(dòng)成功”,說明設(shè)備開始運(yùn)行;如果顯示“啟動(dòng)失敗”,就需要重新確認(rèn)載板是否插好,確保無接觸不良后,關(guān)掉上位機(jī)后重新啟動(dòng)。
(3)FPGA復(fù)位。點(diǎn)擊FPGA復(fù)位按鈕,在任何狀態(tài)下,都會(huì)使FPGA內(nèi)所有資源處于復(fù)位后狀態(tài),日志區(qū)會(huì)顯示“復(fù)位成功”,如果顯示“復(fù)位失敗”,那么也需要關(guān)掉上位機(jī)重新打開。
(4)配置AD9364。前期準(zhǔn)備好AD9364的配置文件,在AD9364配置框內(nèi),打開配置文件所處的位置,點(diǎn)擊“開始配置”按鈕,AD9364的配置信息將從上位機(jī)下發(fā)到FPGA,對(duì)AD9364進(jìn)行配置。日志區(qū)顯示“配置失敗”則需要重新再配置一次。
(5)發(fā)送信源數(shù)據(jù)。前期準(zhǔn)備好信源數(shù)據(jù),在信號(hào)源框內(nèi),打開信源數(shù)據(jù)所在文件位置,點(diǎn)擊發(fā)送信號(hào),上位機(jī)就會(huì)利用PCIe通道將信源數(shù)據(jù)重復(fù)地發(fā)送到FPGA,經(jīng)AD9364發(fā)射端發(fā)出,日志區(qū)會(huì)顯示“數(shù)據(jù)正在發(fā)送”。
(6)停止發(fā)送。如果需要停止發(fā)送,按下“停止發(fā)送”按鈕即可;按下“繼續(xù)發(fā)送”按鈕就可以繼續(xù)發(fā)送信源數(shù)據(jù)。
根據(jù)圖1的整體設(shè)計(jì)方案,在Vivado2018.2內(nèi)完成硬件電路的邏輯設(shè)計(jì),搭建了信號(hào)源設(shè)備用以測(cè)試。如圖10、圖11所示,F(xiàn)PGA載板通過FMC與AD9364相連,然后通過PCIe的插槽與便攜式工控機(jī)相連。
在Vivado2018.2的開發(fā)平臺(tái)下,用verilog語言完成硬件邏輯設(shè)計(jì),經(jīng)過綜合和布局布線,Vivado提供了本次設(shè)計(jì)的FPGA資源消耗情況,如表1所示??梢詮谋?看出FPGA芯片的內(nèi)部資源豐富,整個(gè)邏輯設(shè)計(jì)占用的資源并不是太高,其中主要的FF、LUT和RAM資源還有很多未利用,未來可以在這個(gè)設(shè)備的基礎(chǔ)上添加其他功能。
表1 FPGA資源使用情況表
AD9364芯片支持最高載波頻率為6 GHz,本文的設(shè)計(jì)方案中采用的AD9364射頻部分是評(píng)估板EVAL-AD-FMCOMMS4-EBZ。在實(shí)際測(cè)試中,利用配置軟件生成不同頻率載波的配置信息,通過上位機(jī)經(jīng)FPGA對(duì)AD9364進(jìn)行配置,不斷調(diào)整發(fā)射載波頻率,測(cè)試發(fā)現(xiàn)可以實(shí)現(xiàn)載波頻率70 MHz~6 GHz的變化,圖12為其中AD9364單獨(dú)發(fā)射載波頻率為6 GHz的頻譜圖。
用來測(cè)試的源信號(hào)由Simulink產(chǎn)生,利用它來產(chǎn)生QPSK調(diào)制信號(hào),符號(hào)速率為16.384 Mbit/s,并在上位機(jī)做好處理,歸一化后乘以2 047后取整,保證有效數(shù)據(jù)11 bit,加上符號(hào)位為12 bit,符合AD9364的12 bit精度。完成AD9364的相關(guān)配置信息生成,主要選擇采樣速率、載波頻率、濾波器設(shè)置和數(shù)據(jù)速率等,按照上位機(jī)步驟下發(fā)信源數(shù)據(jù),圖13為ILA中被正確識(shí)別拆分的I,Q 2路信號(hào),圖14為AD9364輸出載波頻率為230 MHz的QPSK信號(hào)頻譜圖,可以看出QPSK調(diào)制信號(hào)帶寬為符號(hào)速率2倍,雜波抑制約為60 dB。
在上位機(jī)修改AD9364的配置信息,將載波頻率提高到1.4 GHz,然后在上位機(jī)操作下發(fā)到FPGA進(jìn)行重新配置,由圖15可以看到成功地將載波頻率修改到1.4 GHz。
本文設(shè)計(jì)了基于FPGA與AD9364的便攜式矢量信號(hào)源設(shè)備并成功實(shí)現(xiàn),經(jīng)測(cè)試驗(yàn)證,該設(shè)備能正確發(fā)送用戶所需的信號(hào),發(fā)射信號(hào)源數(shù)據(jù)為用戶根據(jù)需求自定義生成,與傳統(tǒng)的矢量信號(hào)源相比,具有低成本、靈活性高、適用性高及便攜式等特點(diǎn)。該設(shè)備可以利用在復(fù)雜電磁環(huán)境下實(shí)際采集的信號(hào),在其他地點(diǎn)完成此復(fù)雜電磁環(huán)境的模擬。本文給出的方案在信號(hào)源的設(shè)計(jì)中具有很好的應(yīng)用價(jià)值。