劉瑞麒,楊 劍,姚志成,耿 志
(1.火箭軍工程大學 控制工程系,陜西 西安 710025;2.原成都軍區聯勤部 后勤信息中心,成都 四川 610015)
隨著電子對抗活動的發展,對信號源在高速率、寬頻段及可靈活配置等方面提出了迫切需求。高速DAC技術的發展使器件具備極高的采樣速率與轉換精度,使多樣化、寬頻段信號的產生成為可能[1-6],但對控制端上位機數據傳輸總線速率提出了更高要求。傳統的PCI總線帶寬過小,難以滿足需求。PCIe總線技術是由英特爾提出的第三代高性能I/O總線技術,其提供了更加完善的性能,更強的可擴展性和更低的成本,充分彌補了PCI總線的不足,能夠滿足大量數據的高速傳輸需要。對PCIe總線接口開發,通常使用專用接口芯片進行,硬件開銷大且可拓展性低,降低了設計配置的靈活性。Xilinx公司推出的第6代高性能FPGA芯片——Virtex-6內部集成了高速收發器GTX Transiver及PCIe硬核,能夠通過編程實現PCIe總線接口功能。利用其開發PCIe總線接口,既可降低開發成本,又可充分利用FPGA資源豐富、速度高和可重構的特點,提高了PCIe總線接口開發速度和使用靈活性。且相較PEX8111、PEX8311等專用接口芯片,其最高支持總線數據位數達到128位,單鏈路最高數據傳輸速率達5.0 Gb/s[7],能夠滿足PCIe高速數據通信需要。
基于此,本文針對射頻信號生成系統數據高速交互需求,在Virtex-6 FPGA上開發了PCIe總線接口并實現DMA傳輸,最后在X8鏈路寬度下進行了測試。
本設計中高速射頻數模轉換(DAC)板卡的核心為EV12DS130ACZPY芯片,其具有12位分辨率、3 Gs/s轉換速率、7 GHz模擬輸出帶寬[8]。為使其正常工作,設計實現了如圖1所示射頻信號生成系統,主要由上位機、FPGA載板、高速DAC板卡組成。

圖1 射頻信號生成系統結構
在該系統中,上位機作為主控端,提供給操作者控制界面并生成射頻信號對應的數據;FPGA載板為一塊Xilinx ML605板卡,其通過PCIe插槽同上位機連接,通過FMC-HPC接口同高速DAC板卡連接,完成從上位機接收信號數據緩存及向DAC發送功能;DAC板卡為以EV12DS130芯片為核心的板卡,通過FPGA配置后可直接生成各類射頻信號。
系統中使用的PCIe總線是一種高速串行總線,為實現高速數據傳輸功能,在電氣連接上PCIe總線采用了差分信號傳輸方式,同單端信號相比,差分信號抗干擾能力更強,且差分信號對外界的電磁干擾較小,能夠滿足更高的總線頻率需求。在數據傳送上,PCIe總線采用了端到端的數據傳送方式,其發送端和接收端中都含有發送邏輯和接收邏輯。PCIe總線的一個基本數據通路結構如圖2所示。

圖2 PCIe總線接口結構
PCIe總線使用數據包(Packet)進行數據傳輸,數據報文在接收和發送過程中。首先在設備的核心層(device core)中產生,然后再經過該設備的事務層(transaction layer)形成事務層包(TLP)向數據鏈路層(data link layer)發送,數據鏈路層在TLP包上附加錯誤核對標志信息后向物理層發送(physical layer),物理層對TLP包進行編碼后,最終發送出去。而接收端的數據也需要通過物理層、數據鏈路和事務層,并最終到達設備核(device core),完成數據的傳遞[9-11]。數據通信結構如圖3所示。

圖3 PCIe通信結構
利用FPGA實現PCIe總線接口功能,需要搭建PCIe總線端點模塊并設計總線數據傳輸控制邏輯。Xilinx Virtex-6為PCIe開發方便,集成了PCIe總線接口硬核,該模塊支持2.0版本的PCIe協議,經由GTX收發器能夠支持Gen 2(5 Gb/s速率),并且接口模塊支持X1,X2,X4或者X8的位寬[12]。為測試方便,本設計在設備端專門添加了雙端口BRAM以便接收和發送PCIe總線上的數據。本文設計的PCIe頂層模塊結構及接口如圖4所示。
為搭建PCIe總線接口端點模塊,需在FPGA中編寫相應邏輯以實現PCIe協議中的事務處理層、數據鏈路層及物理層結構。本文所設計的PCIe端點模塊結構如圖5所示。

圖4 PCIe總線接口頂層結構及接口
PCIe_pipe模塊,為PCIe內部各條鏈路搭建了信號通道,每條鏈路包含一對差分的發送和接收信號,與GTX收發器相連,保證信號在PCIe核中的傳輸;
PCIe_gt模塊,通過調用GTXE1 IP核,封裝PCIe各個鏈路信號與GTX收發器的連接關系,實現同外部設備間的高速信號連接;
PCIe_brams模塊,通過調用RAM IP核,搭建塊隨機存儲器(Block RAM),實現總線高速信號的緩存;

圖5 PCIe端點模塊結構
PCIe_upconfig模塊,為端口配置模塊,內部包含PCIe配置空間及狀態與控制寄存器,實現PCIe配置及數據統計監測功能;
PCIe_clocking模塊,通過調用MMCM時鐘管理IP核,將外部輸入時鐘分頻變換后為PCIe程序中的各個模塊提供所需時鐘。
由于PCIe設備的時鐘信號是保證PCIe設備正確工作的關鍵信號,在PCIe協議中規定時鐘信號為100 MHz。本設計為提高外部PCIe設備工作的獨立性及設備性能,針對ML605板上獨立250 MHz時鐘信號設計了時鐘管理模塊PCIe_clocking,為PCIe 2.0模塊、PCIe_pipe、PCIe_gt、PCIe_upconfig模塊提供時鐘信號[13]。
由ISE軟件生成的RTL如圖6所示。

圖6 時鐘模塊RTL級結構
為確保時鐘設計正確,使用Isim對該模塊進行仿真,通過圖7中仿真結果,可以看出時鐘轉換模塊所產生的各個時鐘信號與所設計的時鐘邏輯相符。
射頻信號生成過程中需要對數據進行猝發式傳輸,通過CPU執行I/O端口指令來進行數據的讀寫的PIO數據交換模式已經不能夠滿足要求,需要采取通過DMA控制器控制傳輸過程,且傳輸速率較高的直接內存訪問方式來對數據進行傳輸[14-16]。為在PCIe總線接口中實現DMA傳輸,設計了結構如圖8所示的總線控制模塊,與PCIe總線接口通道模塊一起實現DMA傳輸。

圖7 時鐘模塊時序仿真結果
EP_TX和EP_RX模塊,通過調用FIFO IP核,實現對端口發送和接收數據的緩存,其中的中斷控制模塊對收發數據進行精確控制;
BMD_EP_MEM模塊,為端點控制和狀態寄存器,實現對總線數據的暫存和工作狀態的控制;
BMD_GEN2模塊,是針對64位系統接口設計的直接連接轉換模塊,實現對總線連接的檢查和相關協議的轉換;
BMD_RD_THROTTLE模塊,通過測量讀到的數據并進行控制,實現對讀到的數據位數的控制;

圖8 總線控制邏輯結構
BMD_TO_CTRL模塊,通過檢測總線傳輸請求和等待狀態,實現對總線工作的開關控制;
BMD_CFG_CTRL模塊,實現對總線的配置控制。
在數據傳輸時,上位機發送DMA地址及相關控制指令給端點模塊,經由其轉換后發送給BMD模塊中的TO_CTRL及CFG_CTRL模塊啟動DMA傳輸。上位機發送的TLP包經過端點模塊后取得相應的數據暫存在BMD FIFO中,并向雙端口RAM發送供用戶端調用,當RD_THROTTLE檢測到傳輸數據位數達到設定值時向端點模塊發送中斷請求指令,端點模塊向上位機發送總線中斷請求,如此反復,直到上位機發出停止DMA傳輸指令,完成一次數據傳輸。
為驗證程序邏輯設計正確,以Isim軟件對BMD模塊的讀數據操作進行仿真為例,得到圖9的仿真結果。從中可以看出,trn_reset_n給出復位信號后,當trn_rsof_n,trn_tdst_rdy_n置0,程序從trn_rd讀入TLP包數據,當數據接收完后,trn_reof_n變為置0、trn_rsof_n置1,同設計的邏輯一致。

圖9 程序DMA讀操作時序仿真
為滿足總線接口程序高速數據傳輸硬件實現,在設計中需要使用GTX模塊對數據進行傳輸。GTX是Virtex-6系列FPGA上的低功耗吉比特收發器,其由FPGA的可編程邏輯資源集成且具有較高的可配置性。相較于早期Virtex-5芯片中的低電壓吉比特收發器GTP,其性能明顯提高,器件線性工作速率覆蓋750Mb/s-6.6Gb/s,正確配置與使用GTX收發器能更好發揮器件性能。
在配置GTX收發器時,通過GTX Wizard在圖形化界面中完成參數配置,并生成IP核進行調用。由于高速信號傳輸對管腳布置要求較高,在不同型號的FPGA芯片具有專門的GTX管腳分布及約束方式,因而在設計中需要針對所使用的xc6vlx240t-1156芯片的約束文件進行專門配置。
針對參考時鐘信號,本設計對應的硬件板卡采用了單個250 MHz外部差分參考時鐘輸入方式。在對GTX收發器配置時,此信號必須被作為一個專用時鐘信號,并且在引入GTX傳輸模塊前,必須要經過一個差分緩沖器IBUFDS,因此需要在UCF文件中利用語句IBUFDS_GTXE1實例化該模塊已完成時鐘信號的配置。最后,為產生多種時鐘信號供不同GTX模塊使用,在設計中調用了時鐘管理模塊MMCM對250 MHz的參考時鐘信號進行變換,因而在約束文件中利用語句MMCM_ADV實例化時鐘管理模塊的相關連接。
針對PCIe傳輸的8條通道,由于其相互獨立工作,因而在為其設計約束時,應使各條Lane的連接相互獨立,為其配置不同的GTX收發器。
此外,在Virtex-6中每4個GTX收發器被串在一個Qaud中,每個Qaud中的4個GTX收發器共用一個差分時鐘信號。由于這種特殊的構成方式,當FPGA芯片中的多個GTX被使用時,為了避免在高速設計中信號的抖動幅度過大,需要合理分布GTX信號與時鐘輸入信號在FPGA中的位置。
針對以上信號在FPGA位置的分配,Xilinx規范同一個參考時鐘信號最多供給3個Quad使用,并且在時鐘信號資源上方和下方的Quad數量都不能超過1個。設計時還需要遵循同一個物理接口的幾個GTX放在一起,由同一個參考時鐘作為時鐘輸入;不同物理接口的GTX如果在同一個參考時鐘的驅動覆蓋范圍內,可以采用同一個參考時鐘輸入的原則[17]。
通過查閱芯片手冊,在該款芯片中,GTX收發器共有5個Quad,分布于FPGA的X0Y1-X0Y15區,綜合考慮后以上原則后對各個GTX模塊做約束配置見表1。

表1 GTX模塊約束設計
為驗證PCIe總線接口可用性及設計效果,將設計的FPGA程序通過Xilinx公司提供的ISE軟件進行綜合編譯及布線后生成.bit文件,下載到FPGA中并將板卡與上位機連接,測試PCIe總線接口性能。
PCIe總線接口設備正常工作需要由上位機通過插槽給出全局復位信號,因而當FPGA程序加載完畢后需重啟計算機,之后計算機自動識別位于其主板PCIe插槽上的PCIe設備并提示安裝驅動程序。通過硬件讀寫操作軟件RW-everything能夠對PCIe設備上的BAR 0空間進行讀寫操作,改變軟件界面中各個地址空間所對應的寄存器值,能夠使PCIe設備工作狀態及存儲值相應改變,可證明設備工作正常。
為檢查在程序仿真中沒有能夠發現的錯誤,通過Xilinx提供的在線調試工具Chipscope對程序進行檢測[18,19]。通過ISE在設計文件中加入Chipscope IP核,并添加期望觀察的信號,編譯成功并下載到FPGA后,可通過Chipscope pro Analyzer對PCIe設計中各個信號在FPGA中的值進行觀察分析,并與PCIe協議相比對。在此由FPGA通過PCIe總線向上位機發送一個TLP包,并進行抓取波形觀測。從圖10中可以看出,在發送TLP包開始時trn_tsof_n(包開始信號)為低電平,結束時trn_teof_n(包結束信號)為高電平,trn_tdst_rdy_n(數據接收準備好信號)為低電平,與正確的發送邏輯相符。

圖10 TLP包傳送信號抓取
利用WinDriver軟件對PCIe設備開發相應驅動程序并安裝,在VisualStudio 2010上編寫測試程序,通過調用WinDriver提供的API函數訪問PCIe設備,向板卡發送和讀回TLP包。通過記錄傳輸過程中經過的TRN_CLK脈沖數n,由式(1)可精確計算傳輸速度
(1)
性能測試數據包設定見表2。

表2 測試用TLP包數據
通過計算,此PCIe設備的讀寫速度測試結果見表3,從測試結果可以看出,設計的PCIe總線接口讀寫速度接近于PCIe 2.0協議中給出的4 GB/s(X8鏈路最高速率)。

表3 讀寫測試結果
注:本測試基于Xilinx ML605評估板,ASUS B85-PLUS R2.0主板。
本文針對射頻信號生成系統數據高速交互需求,在Xilinx Vertex6 FPGA芯片為核心的平臺上開發了PCIe總線接口及DMA傳輸方式控制程序。經測試,本文開發的硬件程序邏輯正確,功能完備,并且在通用平臺下測試,半雙工模式下能夠達到最高3.53 GB/s的寫速率及3.41 GB/s的讀速率,接近理論最大值4 GB/s。能夠滿足數據高速傳輸需求,解決了射頻信號生成系統數據高速交互的瓶頸問題,具有良好的可拓展性及實用價值。
參考文獻:
[1]ZHAO Li,LIU Chaohua.Analysis of the current situation of military communications countermeasures[J].Digital Technology and Applications,2014,16(8):48(in Chinese).[趙莉,劉超華.軍事通信對抗發展現狀分析[J].數字技術與應用,2014,16(8):48.]
[2]ZHANG Naiqian,MA Jianguang.Looking at the development and application of Russian electronic warfare equipment from the Syria war[J].National Defense Science and Technology,2016,37(4):21-25(in Chines).[張乃千,馬建光.從敘利亞戰爭看俄羅斯電子戰裝備發展與運用[J].國防科技,2016,37(4):21-25.]
[3]Liu H J.Overview of U.S.military airborne RF and FSO hybrid communication[J].Telecommunication Engineering,2014,54(12):1711.
[4]Qiu L.Design of high speed high resolution ADC with innovative architecture and circuits[D].Singapore:Nanyang Technological University,2016:46-65.
[5]BAO Xiaoqi.Research and design of high-speed arbitrary waveform synthesis technology[D].Taiyuan:North Central University,2015:86-97(in Chinese).[鮑曉祺.高速任意波形合成技術研究與設計[D].太原:中北大學,2015:86-97.]
[6]Sadri M,Schryver C D,Wehn N.High-bandwidth low-latency interfacing with FPGA accelerators using PCI express[M].Germany:Springer International Publishing,2015:117-141.
[7]Virtex-6 family overview v2.5[M].America:Xilinx,2015:16-31.
[8]EV12DS130ACZPY/EV12DS130AVZPY low power 12-bit 3 GSps DAC with 4/2:1 MUX datasheet[M].England:e2v,2012:2-10.
[9]XU Feng.Design of PCI Express high-speed acquisition card based on Virtex-6[J].Modern Electronic Technology,2012,35(16):79-81(in Chinese).[許峰.基于Virtex-6的PCI Express高速采集卡設計[J].現代電子技術,2012,35(16):79-81.]
[10]LUO Xuanping,LIU Benyuan,LU Zaiqi.Design of PCIE interface based on Wishbone and endpoint IP[J].Modern Electronic Technology,2012,35(11):23-26(in Chinese).[羅宣平,劉本源,盧再奇.基于Wishbone和端點IP的PCIE接口設計[J].現代電子技術,2012,35(11):23-26].
[11]XIAO Mingguo,DONG Mingli,LIU Feng,et al.Design and implementation of data acquisition card based on PCIe bus[J].Computer Measurement and Control,2016,24(3):252-254(in Chinese).[肖明國,董明利,劉鋒,等.基于PCIe總線的數據采集卡設計與實現[J].計算機測量與控制,2016,24(3):252-254.]
[12]Virtex-6 FPGA integrated block for PCI express user guide v1.3[M].America:Xilinx,2012:27-82.
[13]Virtex-6 FPGA clocking resources user guide v2.5[M].America:Xilinx,2014:86-121.
[14]LI Jingzhang.Based on design of PCI Express transmission FPGA[D].Chongqing:Chongqing University,2012:35-75(in Chinese).[李經章.基于FPGA的PCI Express傳輸設計[D].重慶:重慶大學,2012:35-75.]
[15]LI Muguo,HUANG Ying,LIU Yuzhi.DMA transmission design of PCIe bus interface based on FPGA[J].Computer Measurement and Control,2013,21(1):247-249(in Chinese).[李木國,黃影,劉于之.基于FPGA的PCIe總線接口的DMA傳輸設計[J].計算機測量與控制,2013,21(1):247-249.]
[16]CHEN Gang,ZHANG Jing,TANG Jian.A design method of PCIe bus and DMA based on FPGA[J].Ordnance Industry Automation,2014(5):75-77(in Chinese).[陳剛,張京,唐建.一種基于FPGA的PCIe總線及其DMA的設計方法[J].兵工自動化,2014(5):75-77.]
[17]LogiCORE IP Virtex-6 FPGA GTX transceiver wizard user guide v1.12[M].America:Xilinx,2012:23-45.
[18]CHENG Litao.Design and implementation of high speed PCIe optical fiber interface card based on FPGA[D].Harbin:Harbin Institute of Technology,2015:45-80(in Chinese).[成立濤.基于FPGA的高速PCIe光纖接口卡設計與實現[D].哈爾濱:哈爾濱工業大學,2015:45-80.]
[19]Chipscope pro software and cores user guide v14.3[M].America:Xilinx,2012:21-90.