張 萌,張海龍,3,王 杰,李 健,托乎提努爾
(1. 中國科學院新疆天文臺,新疆 烏魯木齊 830011;2. 中國科學院大學,北京 100049;3. 中國科學院射電天文重點實驗室,江蘇 南京 210008)
采用多波束及相控陣饋源(1)https://www.skatelescope.org/phased-array-feed/(Phased Array Feed, PAF)接收技術使射電觀測獲取的天文信號數(shù)據(jù)量成倍增長,觀測數(shù)據(jù)需要實時處理來克服傳輸和存儲速度的瓶頸。應用高速寬帶數(shù)字終端[1]進行信號的實時處理,可以滿足未來海量數(shù)據(jù)實時處理的需求,當前數(shù)字終端系統(tǒng)主要包括對天文信號控制和預處理的可編程硬件平臺和進行控制及復雜處理的高性能計算系統(tǒng)。
CASPER[2](Collaboration for Astronomy Signal Processing and Electronics Research)的硬件平臺因其免費、開源、可重用,得到許多大型射電望遠鏡的數(shù)字終端平臺使用。美國綠岸望遠鏡(Green Bank Telescope, GBT)的脈沖星終端系統(tǒng)GUPPI[3](Green Bank Ultimate Pulsar Processing Instrument)、阿雷西博射電望遠鏡(Arecibo Radio Telescope)使用的脈沖星終端PUPPI(2)https://www.naic.edu/puppi-observing/(The Puerto Rico Ultimate Pulsar Processing Instrument),以及澳大利亞帕克斯望遠鏡(Parkes)的CASPSR[4](CASPER Parkes Swinburne Recorder)均采用CASPER早期的硬件系統(tǒng)IBOB[5](Interconnect Break-out Board)和BEE2[6](Berkeley Emulation Engine)。美國綠岸望遠鏡的VEGAS(3)http://www.gb.nrao.edu/vegas/report/,德國埃費爾斯貝格(Effelsberg)的PSRIX[7]終端,以及澳大利亞帕克斯的BPSR[8](Berkeley Parkes Swinburne Recorder)采用了第1代ROACH(Reconfigurable Open Architecture Computing Hardware)系統(tǒng)構建,利用多臺ROACH進行通道劃分,將來自IBOB和BEE2平臺的信號合并到一個板中。我國貴州500米口徑球面射電望遠鏡(Five-hundred-meter Aperture Spherical Telescope, FAST)[9-10]、上海天馬望遠鏡(Tianma)(4)http://radio.shao.cas.cn均使用ROACH2(5)https://casper.ssl.berkeley.edu/wiki/ROACH2構建終端系統(tǒng)進行頻率通道劃分,完成高速數(shù)據(jù)流處理。
為進一步研究現(xiàn)有的數(shù)字終端系統(tǒng),實現(xiàn)高速天文信號的實時處理,需要構建穩(wěn)定的實驗平臺,為高速天文信號實時處理研究提供良好的實驗環(huán)境,由于CASPER的數(shù)字終端軟硬件平臺通用性和開源性,本文基于CASPER軟硬件實現(xiàn)了實驗平臺的搭建,并對所搭建的實驗環(huán)境進行了系統(tǒng)測試。
CASPER團組研發(fā)設計的許多設備都是基于Xilinx公司的現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)[11]芯片,通常典型的CASPER信號處理平臺都有一個或者兩個模數(shù)轉(zhuǎn)換器(Analog-to-Digital Converter, ADC)與其連接,進行信號采集和少量的預處理,然后通過網(wǎng)絡鏈路將數(shù)據(jù)發(fā)送到其他現(xiàn)場可編程門陣列板或者中央處理器、圖形處理器,進行復雜的信號處理。目前可用的CASPER支持的現(xiàn)場可編程門陣列板有IBOB, ROACH系列和SKARAB, SNAP系列。本文搭建的實驗平臺選用穩(wěn)定且使用較廣泛的硬件平臺ROACH2,實物如圖1。
圖1 ROACH2實物圖
Fig. 1 The picture of ROACH2
ROACH系列板卡是可重構開放式計算機硬件體系結構,是用于射電天文信號處理的獨立可編程平臺。ROACH2是ROACH系列的最新版本,使用Xilinx Virtex-6(6)https://www.xilinx.com/support/documentation/data_sheets/ds150.pdf系列現(xiàn)場可編程門陣列,保留了ROACH的優(yōu)點,但在處理能力、輸入/輸出(I/O)吞吐量和內(nèi)存帶寬方面提高了總體性能。它使用與ROACH相同的PowerPC 440EPx,但是增加了用于芯片內(nèi)部測試的聯(lián)合測試工作組(7)https://zh.wikipedia.org/wiki/JTAG(Joint Test Action Group, JTAG)接口。
如圖2,從結構上看,ROACH2硬件平臺主要分成5個相互獨立的子系統(tǒng),包括現(xiàn)場可編程門陣列子系統(tǒng)、處理器子系統(tǒng)、板卡管理子系統(tǒng)、測試調(diào)試子系統(tǒng)和信號存儲子系統(tǒng)。核心部分是Virtex-6系列XC6VSX475T FPGA,用于信號處理;PowerPC 440EPx獨立處理器運行簡易Linux系統(tǒng)提供控制功能;4個36 × 2 M的四倍數(shù)據(jù)倍率(Quad Data Rate 2, QDR2)SRAMs,以及單個72 bit的DDR3 RDIMM(Registered Dual In-line Memory Module)卡槽連接到現(xiàn)場可編程門陣列,可用于數(shù)據(jù)計算與存儲;兩個ZDOK接口,用于連接模數(shù)轉(zhuǎn)換器等設備,4個SFP+(Quad SFP+ Mezzanine board)端口,支持多達8 × 10 GE的數(shù)據(jù)鏈路,能夠?qū)?shù)據(jù)包向下一級高速輸出。
CASPER工具包提供了一個用于硬件平臺的設計環(huán)境。主要組件簡稱MSSGE(8)https://casper.ssl.berkeley.edu/wiki/MSSGE_Toolflow(MATLAB/Simulink/System Generator/EDK),MSSGE工具包是針對基于CASPER硬件平臺的一個軟件開發(fā)平臺,它們整合在一起,形成一個設計和開發(fā)的平臺環(huán)境。這個開發(fā)環(huán)境早期是由伯克利無線電研究中心為伯克利仿真引擎(Berkeley Emulation Egine, BEE)硬件平臺設計開發(fā)的BEE_XPS工具包,后來升級擴展到可以通用的CASPER硬件平臺。開發(fā)環(huán)境提供了圖形化的設計界面,使用Xilinx系統(tǒng)生成工具包,使得設計編譯實現(xiàn)過程整體化。
MSSGE工具包的各個組件中,MATLAB為Simulink提供了一個可編寫腳本的后端,所有腳本均可通過MATLAB實現(xiàn)。Simulink既可作為CASPER ROACH2的系統(tǒng)模型的原理繪圖工具,也可作為一種高層次的用于信號處理系統(tǒng)設計的仿真環(huán)境。系統(tǒng)生成器(System Generator)可以用于現(xiàn)場可編程門陣列編程實現(xiàn),是Xilinx公司的系統(tǒng)級設計工具,可以將其理解成一個轉(zhuǎn)換工具,自動地將Simulink中設計的抽象模塊映射成可靠的硬件實現(xiàn)[12]。系統(tǒng)生成器在編譯期間將Simulink原理圖轉(zhuǎn)換為HDL代碼(VHDL或Verilog),大大簡化了開發(fā)數(shù)字信號處理算法的設計過程。嵌入式開發(fā)套件(Embedded Development Kit, EDK)用于現(xiàn)場可編程門陣列的嵌入式開發(fā),CASPER硬件的編譯基于Xilinx EDK,通過它能夠?qū)⑸弦徊缴傻挠布枋稣Z言的代碼編譯成比特流文件并轉(zhuǎn)換成操作系統(tǒng)可執(zhí)行的bof文件,EDK是ISE的擴展功能工具集合。
該實驗平臺軟件可搭建在Ubuntu x64, RHEL, CentOS x64系統(tǒng)上。經(jīng)過實際測試MALTAB服務包與Xilinx的XSG,系統(tǒng)生成器存在版本兼容差異,須下載對應版本的MATLAB和Xilinx以及相應MSSGE庫。
本文以系統(tǒng)CentOS 7,軟件MATLAB 2012b,Xilinx14.7為例說明,環(huán)境搭建流程如圖3,在CentOS 7上依次安裝Xilinx14.7,MATLAB2012b。工具包需要兩個庫,即DSP塊的CASPER庫和硬件支持塊的BEE XPS庫,現(xiàn)在兩個庫已捆綁在一個mlib_devel目錄中,用戶可以從github下載,需要注意的是,在開發(fā)環(huán)境搭建過程中,應注意軟件版本、安裝路徑與庫文件存放路徑一致。
圖3 軟件安裝流程圖
Fig.3 Flow chart of software installation
在Xilinx14版本中刪除了ROACH2依賴的部分模塊,這些模塊存在于EDK中,稱為pcores(peripheral cores),因此,需要將刪除的部分復制到XPS_ROACH2_base/pcores文件夾中進行更新。下載并安裝完成后,編輯startsg的默認路徑為文件存放的真實路徑。更改完成后直接運行startsg,即可啟動MATLAB,等待成功導入Xilinx庫和CASPER庫后可進行設計工作。
實驗平臺的軟硬件系統(tǒng)搭建完成后,需要實例驗證其可用性。本文利用CASPER平臺提供的實例對搭建的平臺進行測試。
實例測試實現(xiàn)了從平臺軟件設計到硬件執(zhí)行的完整處理流程,如圖4。使用MATLAB中的Simulink進行設計、仿真,使用casper_xps編譯文件,文件編譯生成可執(zhí)行文件后,將后綴名為bof的可執(zhí)行文件上傳到ROACH2平臺的相應文件夾中,通過Python腳本遠程控制文件在ROACH2上執(zhí)行。
圖4 實驗開發(fā)流程
Fig.4 Flow chart of experimental process
首先在Simulink編譯界面進行圖形化設計。創(chuàng)建新的仿真圖形,添加Xilinx系統(tǒng)生成器和XSG核心配置塊,然后按照描述的設計構架圖,通過定位庫基本元素選擇需要的模塊,并設置參數(shù),搭建完整的頂層設計結構,本文以建立寬帶頻譜儀為例,其整體圖形化程序如圖5。在Simulink中建立架構圖時主要應用3個庫:CASPER XPS庫,包括封裝了硬件之間接口等的黃色塊;CASPER DSP庫,包括實現(xiàn)輸出DSP功能等的綠色塊;Xilinx庫,提供復用、延遲、添加等低級功能的藍色塊。
在Simulink中的設計完成之后,可直接在其內(nèi)部進行仿真,確保在編譯之前沒有錯誤,點擊頂部工具欄中的執(zhí)行按鈕,即可實現(xiàn)仿真。如有錯誤則彈出診斷窗口,可以單獨處理,有些設計也可以查看示波器中的顯示是否與設置一致,以判斷對錯。
驗證設計功能正確后,需將其編譯成現(xiàn)場可編程門陣列可以識別的代碼。在MATLAB中輸入指令casper_xps,啟動編譯器模塊,這時會彈出如圖6的編譯界面,所有選項保持默認,確保列出的設計是想要編譯的,然后單擊gcs返回最近選擇的模塊所在的系統(tǒng)路徑,最后單擊Run XPS開始編譯。經(jīng)過較長一段時間的等待,編譯正確并且完成之后,彈出一個編譯成功的對話框,如圖7。
編譯通過后在右側文件夾目錄欄顯示生成了多個文件,其中,在bit_files文件夾中能夠找到后綴名為bof的二進制文件,*.bof文件即是可以在ROACH2上運行的文件。
設計、仿真、執(zhí)行、編譯等過程都在CASPER的軟件開發(fā)平臺上實現(xiàn),要在硬件平臺ROACH2上執(zhí)行下一步操作,需要將編譯生成的bof文件上傳到ROACH2平臺相應文件夾中。經(jīng)過多次嘗試,針對bof文件上傳,建議采用網(wǎng)絡文件系統(tǒng)(Network File System, NFS)方式,遠程掛載其它服務器相關目錄到ROACH2平臺相應目錄,這樣只需復制bof文件到服務器上即可實現(xiàn)bof文件上傳。遠程控制將編譯的可執(zhí)行文件在ROACH2上運行,完成配置和通信并實現(xiàn)顯示輸出。
本文以建立2 048通道的頻譜儀為例,使用BPSG4(9)https://www.aaronia.com/products/signal-generators/Signal-Generator-BPSG4/信號發(fā)生器產(chǎn)生800 MHz時鐘信號,將時鐘源連接到模數(shù)轉(zhuǎn)換器上的clk_i,并將ROACH2的時鐘頻率設置為200 MHz,輸入信號由模數(shù)轉(zhuǎn)換器數(shù)字化產(chǎn)生4個并行時間序列。利用python控制頻譜儀在ROACH2上執(zhí)行,將其轉(zhuǎn)換為頻域信號,最終輸出頻譜。
實驗過程中,首先利用噪聲源產(chǎn)生寬帶信號,再利用帶寬為98~122 MHz的帶通濾波器選擇指定范圍內(nèi)的頻率分量,積分60次時的信號頻譜如圖8。
搭建的實驗平臺可以通過10 GbE的SFP+端口實現(xiàn)實驗平臺硬件設備之間的數(shù)據(jù)傳輸,通過PPC的1 GbE端口讀出預處理數(shù)據(jù),通過ZDOK端口傳輸模數(shù)轉(zhuǎn)換器數(shù)字化信號到現(xiàn)場可編程門陣列;可在Simulink設計中嵌入HDL定義的模塊并進行實例化,創(chuàng)建新的Xilinx模塊、CASPER模塊;利用Simulink和CASPER庫中的模塊,可以構建新的硬件設計,實現(xiàn)相關的天文信號處理功能。經(jīng)過測試,本文搭建的實驗平臺可滿足射電天文數(shù)字終端算法測試的需求。
由于操作系統(tǒng)及應用軟件版本不斷更新并且相互不兼容,在實驗過程中遇到了一系列版本不匹配問題。由于軟硬件平臺的更新?lián)Q代,設計模塊也在不斷修正、替換、棄用、添加等,都影響對不同版本庫的調(diào)用,在建設過程中遇到了模塊版本老、EDK版本落后、參數(shù)不存在等報錯提示,通過嘗試替換不同版本的軟件包解決了相關問題。CASPER教程說明現(xiàn)已不在原網(wǎng)站上更新,本文實驗平臺搭建涉及的庫、實驗中的bof文件可以到新疆天文臺數(shù)據(jù)中心下載,網(wǎng)址http://data.xao.ac.cn/static/RAOCH2_platform.tar.gz。
圖6 編譯啟動界面
Fig.6 Compile startup interface
圖7 編譯通過圖示
Fig.7 The diagram of successful compilation
圖8 帶寬98~122 MHz信號頻譜
Fig.8 Bandwidth 98-122MHz signal spectrum
本文根據(jù)射電天文海量信號實時處理的需求,對數(shù)字終端系統(tǒng)環(huán)境建設進行了研究,借助通用性良好的CAPSER硬件開發(fā)平臺及其相應軟件環(huán)境,搭建了基于ROACH2的數(shù)字終端系統(tǒng)實驗平臺。利用CAPSER提供的示例對搭建的實驗平臺進行了測試、調(diào)試和分析,實現(xiàn)了相關實例設計、仿真、編譯、運行的完整過程。實驗結果表明,本文所搭建的平臺運行平穩(wěn)、可靠。目前所搭建的數(shù)字終端環(huán)境已經(jīng)應用在脈沖星信號仿真處理、射頻干擾抑制算法測試和高速數(shù)字信號傳輸?shù)认嚓P研究領域。