王靜嬌,周建江,何航峰,黃慧,楊成
(南京航空航天大學 電子信息工程學院,南京 210016)
成像聲納具有作用距離遠、圖像直觀顯示觀測區域狀況和識別目標[1]等特點,提高分辨率是提高水下聲納成像質量的關鍵,而高分辨率也帶來了數據傳輸量大、傳輸速率要求高的問題。
傳統聲納數據傳輸模塊通常采用百兆網卡,實現百兆以太網傳輸[2-4],面對日益趨大的數據量,該方法已經無法滿足需求。為了適應更高的成像分辨率,滿足大數據量的高速傳輸,本文基于Xilinx公司的SOPC架構,片上集成了千兆以太網控制器,無須外加專用的以太網控制芯片;移植VxWorks操作系統,采用TCP/IP協議與顯示控制端通信。設計的數據傳輸系統,經測試得到了247Mbps的數據傳輸速率。
本文成像聲納指標:量程4~100m,波束數512,量程分辨率5cm,最高幀率15Hz,通信接口為以太網接口。
成像聲納中整個工作流程如圖1所示,本文主要研究數據傳輸模塊。數據傳輸的目的是實現從水下設備把大量的聲納成像數據通過以太網發送到干端計算機進行成像顯示。當探測量程為100m時,幀率為7.5Hz,數據輸入速率為7.68MB/s,所以要求網絡傳輸速度能達到61.44Mbps。為了保證網絡速度盡可能高,確保每幀接收到的圖像都能傳送出去,本文以2倍網速120Mbps為開發目標。

圖1 成像聲納數據流向圖
系統中的FPGA選用Xilinx公司Virtex-5系列XC5VFX70T,該FPGA內嵌PowerPC440處理器,最高主頻可達550MHz。系統數據傳輸模塊的總體方案如圖2所示,以Virtex-5FPGA為核心,基于SOPC架構,以PLB為總線,在PowerPC440處理器上移植VxWorks操作系統。通過操作系統來管理網絡、串口等外圍接口,利用FPGA強大的邏輯資源和功能豐富的IP核,配合相應的外圍芯片,在VxWorks操作系統上實現網絡數據的傳輸。

圖2 系統總體設計框圖
本文片上系統的設計框圖如圖3所示。由于系統調試需要,系統中加入了RS232串口;FLASH作為系統ROM,固化操作系統鏡像、存儲TVG曲線等參數;DDR2作為系統RAM,用于緩存數據,DDR2采用MPMC存儲器控制器IP核;以太網MAC核采用Xilinx公司的xps_ll_temac三態以太網MAC IP核。在系統中,要傳輸的數據從自定義IP核中產生或者從外部輸入,通過NPI接口暫存入DDR2中;數據達到一定數量后,通過DMA通道從千兆以太網發送出去。根據該設計框圖在XPS中進行具體配置。

圖3 基于Virtex-5的片上系統設計框圖
以太網接口的通信速度由網卡決定,本系統在干端PC機采用高速率千兆以太網卡,千兆以太網技術具有傳輸速度快、距離遠、向下兼容10/100Mbps以太網特性[4],可以滿足系統需求。
在濕端數據發送端的FPGA中添加用于千兆以太網通信的 MAC核xps_ll_temac,它基于PLB總線控制,通過Xilinx LocalLink總線完成高效的數據傳輸與接收,無需通過verilog代碼編寫MAC協議等。為了達到千兆網速,本系統配置MAC核使用GMII接口運行頻率125 MHz,工作在1Gbps的模式。外圍以太網PHY物理層芯片配合選用美國Marvell公司的88E1111芯片,通過引腳配置芯片為千兆工作模式,從而進行引腳連接,保證硬件工作千兆狀態。
成像聲納中,前端波束形成后的數據輸入,輸入時鐘頻率為7.68MHz,每次輸入8位數據。輸入的數據要通過操作系統的TCP協議發送到上層軟件,而VxWorks操作的數據是在DDR2中,這就需要將外部輸入的數據寫入DDR2,自定義IP核就主要完成這個工作,保證所有數據盡可能快地寫入DDR2并發送給干端顯控軟件。
2.3.1 兩種數據存儲方法
①FIFO緩存。自定義IP核通過PLB總線連接PowerPC440處理器,處理器可以通過寄存器和底層通信,控制數據的傳輸。自定義IP核內部提供FIFO服務,外部數據可以先存入FIFO,然后操作系統端從FIFO中讀出數據并存入DDR2。FIFO接口基于PLB總線控制,數據輸入/輸出工作時鐘頻率都為100MHz,FIFO寬度32位,則理論數據傳輸速率為3.2Gbps。
②NPI接口。MPMC是支持雙數據傳輸模式(DDR和DDR2)和單數據傳輸模式(SDRAM)的參數化內存控制器,提供了8個相互獨立的端口來存取內存[7]。NPI接口是讓用戶在自己的設計中利用MPMC特性的接口。選用MPMC作為DDR2的控制器,并將其配置為兩端口模式,一個端口配置為PPC440MC,和PowerPC440處理器相連;另一個端口配置為NPI接口,和用戶IP核相連,NPI接口可以直接把數據寫入DDR2。DDR2和NPI接口的工作頻率都為200MHz,數據寬度支持64位、32位[7],則理論數據傳輸速率最高可達12.8Gbps,完全可以滿足系統需求。
2.3.2 本系統數據存儲方法
由于數據輸入時鐘頻率為7.68Hz,所以無論采用FIFO或者NPI接口,都需要先經過RAM調整時鐘域。在自定義IP核設計中,先采用兩個雙口RAM進行乒乓緩存,然后采用NPI接口,直接把數據按幀寫入DDR2中,圖4為自定義IP核內部邏輯。clk 7.68MHz為數據輸入時鐘,en為幀使能信號,data 8位為輸入數據。雙口RAM寫時鐘即clk 7.68MHz,每次寫入8位;讀時鐘為200MHz,每次讀取32位,并寫入NPI接口中,寫NPI接口采用8字長帶緩沖行寫操作時序,在地址請求的同一周期給出地址確認信號。

圖4 自定義IP核內部邏輯圖
VxWorks操作系統在Virtex-5FX70T上的移植主要包括板級支持包(BSP)的開發、BSP和VxWorks映像的編譯和下載。BSP是介于主板硬件和操作系統之間的一層,主要目的是為了支持操作系統,使之能夠更好地運行于硬件主板。BSP的開發主要通過修改Xilinx公司EDK套件中BSP生成器產生的BSP包完成。
①config.h文件修改:config.h文件主要設置啟動行、內存地址和大小、屏蔽一些組件、自定義宏等,涉及的主要修改略——編者注。
②Makefile文件修改:Makefile文件是構造Vx-Works映像的批處理文件,本方案在生成SOPC架構時選擇了硬件浮點單元,所以選用gnu為編譯工具,并且ROM和RAM的宏定義和config.h中一致。代碼略——編者注。
本方案采用 MAC(xps_ll_temac)+PHY(88E1111)方案,底層驅動程序在BSP包的ppc440_drv_csp\xsrc文件夾中。在xlltemac_end_adapter.c中選擇使用DMA方式,并在xlltemac_end_adapter.h修改一些常量定義,如緩沖區、緩沖池的大小,產生中斷的門限值等。由于本方案主要用于發送,所以增加發送默認BD值為2 048,這樣在發送大數據包時可以一次性發送,而不需要分多次發送,從而減小延時。其他參數的修改略——編者注。
根據修改的BSP包建立VxWorks工程后,在userA-ppInit.c中編寫網絡通信程序,從而實現波束數據發送。網絡通信一般可以通過套接字(socket)實現,一個套接口是通信的一端,VxWorks提供了標準的BSD套接字[10]。BSD套接字主要有流套接口和數據報套接口兩種。數據報套接字使用UDP協議捆綁某一端口,而流套接字使用TCP協議捆綁某一端口。與TCP相比,UDP提供了一個相對簡單但適應性很強的通信方式,兩者都支持雙向數據流,但是UDP協議并不保證數據的可靠、有序、無重復性,而TCP協議通過三次握手提供雙向、有序、無重復的數據流服務,通信可靠,對數據有重發和校驗機制[10]。
本設計中為了確保數據的正確傳輸,沒有丟失,采用了TCP協議。圖5為VxWorks中網絡數據發送流程圖,采用VxWorks多任務編程模式。SendProc負責發送數據,每次發送2 048個char類型的數據;StopProc任務實時接收停止命令。

圖5 VxWorks網絡數據發送
通信系統的數據傳輸要經過OS內存處理、TCP/IP協議棧和網絡設備及其驅動等,通信過程中的系統開銷包括字節開銷和分組開銷[11]。為了提高數據傳輸性能,需要減少系統開銷。
3.4.1 減少字節開銷
字節開銷主要來自系統中傳送、拷貝數據和計算校驗和。所謂計算校驗和,即網絡傳輸中由于各種干擾,會發生數據傳輸錯誤,為了檢測這種錯誤,通常采用因特網校驗和算法,從而增加了系統開銷[11]。
通常在接收端和發送端的校驗和都是由CPU計算,須有CPU從內存系統載入所有數據,再進行一系列加法操作,必然占用較多的系統資源。本設計通過采用硬件執行校驗和算法,在PC機端和xps_ll_temac核中開啟硬件校驗和,由DMA接口的硬件來計算校驗和,即校驗和卸載,這樣避免占用CPU資源,降低字節開銷。
3.4.2 減少分組開銷
分組開銷包括分配和釋放系統緩沖區、執行TCP/IP協議代碼,以及處理設備中斷帶來的開銷。在發送端,應用程序向接收端發送數據時,操作系統首先分配系統緩沖區,存放傳輸數據,執行TCP/IP協議代碼,將數據分段處理為TCP/IP分組。當發送完一個分組后,就向操作系統發送設備中斷,操作系統就要處理設備中斷,釋放系統緩沖區。TCP/IP段大小一般取 MTU尺寸,MTU即最大網絡傳輸單元。所以,如果增大TCP/IP分組數據包大小,就可以減少分包的次數,從而減少開銷。本設計在配置xps_ll_temac核時,增加接收與發送FIFO容量,并在VxWork網卡驅動中增加MTU的大小。在socket編程時,修改默認的接收發送緩沖區值,從而減少數據的傳輸阻塞,減少分組開銷。
另外,在沒有中斷調節的情況下,系統要處理大量的中斷,CPU的使用量以更高的數據速率增加,所以本設計中開啟中斷調節功能,設置中斷節流率為中,根據網絡的流量情況,動態調整發起處理器中斷的頻率。
在測試數據傳輸性能時采用的PC機的硬件平臺為Intel奔騰,3.19GHz CPU,1.86GB內存,網卡為Intel 82578DM Gigabit Network網卡。
測試網速時,采用while循環不停地向顯控軟件發送數據,測試網絡接口所能達到的最大網絡傳輸速度。網絡傳輸速度測試結果如表1所列,和其他成像聲納數據傳輸方案的對比如表2所列,網速測試圖略——編者注。

表1 網絡傳輸速度測試

表2 和其他成像聲納數據傳輸方案對比
通過測試可以看出,基于Virtex-5FPGA和VxWorks的SOPC架構下網絡數據傳輸方案實際可以達到的網絡傳輸速度平均為245Mbps,達到千兆網性能的25%,并且性能明顯優于參考文獻[2][3]的數據傳輸方案。
實際測量,對比自定義IP核把外部數據寫入DDR2的兩種方案。通過對比測試可以看出,采用MPMC存儲器中的NPI接口寫DDR2,然后進行網絡傳輸數據,速度明顯優于FIFO讀寫,并超過了120Mbps的設計目標。兩種傳輸方案對比如表3所列。

表3 兩種傳輸方案對比
本文在Xilinx Virtex-5FX70T上基于SOPC嵌入式架構,移植VxWorks操作系統進行數據傳輸時,網絡利用率達到25%,明顯優于參考文獻[2][3]的數據傳輸方案。并且,采用MPMC存儲器控制器的NPI接口,將聲納成像數據寫入DDR2并進行網絡傳輸,網絡利用率仍能達到18%。該設計方式已經成功應用于項目,并取得了良好的效果。此外,根據成像聲納的實際工作性能需求,該方案不僅能滿足當前的成像聲納數據傳輸61.44Mbps的需求,還可以適應以后更高分辨率的聲納圖像傳輸,甚至將接口稍作改變,可以應用于其他需要高速率網絡數據傳輸的領域。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1] 王曉峰.成像聲納波束形成新技術研究[D].哈爾濱:哈爾濱工程大學,2011:3-8.
[2] 巫琴.成像聲納數據傳輸和顯控軟件的設計與實現[D].哈爾濱:哈爾濱工程大學,2011.
[3] 張曉蕾.基于SOPC的成像聲納數字系統設計[D].哈爾濱:哈爾濱工程大學,2011:2-4.
[4] IEEE.IEEE 802.3-2005:1-5.Carrier Sense Multiple Access With Collision Detection(CSMA/CD)Access Method and Physical:Layer Specifications[S].
[5] 張文沛,彭先蓉,徐勇.基于SOPC的千兆以太網數據傳輸設計[J].儀器儀表用戶,2010,17(3):66-68.
[6] 溫小勇.基于FPGA和SOPC技術的視頻圖像處理系統的研究[D].天津:天津師范大學,2008.
[7] 葉肇晉,張稀楠,馬磊.基于XILINX FPGA片上嵌入式系統的用戶IP開發[M].西安:西安電子科技大學出版社,2008.
[8] A Barbalace,A Luchetta,G Manduchi,et al.Performance Comparision of VxWorks,Linux,RTAI,and Xenomai in a Hard Real-Time Application[J].IEEE Transactions on nuclear science,2008,55(1):435-439.
[9] 張峰,任國強,申會民.片上PowerPC在 VxWorks下的UDP千兆網通信[J].應用天地,2008(2):52-54.
[10] 孫祥營,柏桂枝.嵌入式實時操作系統VxWorks及其開發環境Tornado[M].北京:中國電力出版社,2002:15-45.
[11] 周敬利,楊芳,汪雪磊.千兆以太網中通信系統優化策略的研究[J].計算機工程與應用,2004(4):149-150.
[12] Chase J S,Gallatin A J,Yocum KG.End-System optimizations for high-speed TCP[J].IEEE Communications Magazine,2001,39(4):68-74.