桂婧 李建東
(1.廣東技術師范學院天河學院 2.廣州多浦樂電子科技有限公司)
隨著科技水平的發(fā)展,高性能、多通道超聲無損探傷儀需要在工作時將實時采集到的圖像數(shù)據(jù)傳輸給PC機進行圖像處理。然而隨著實時成像要求的不斷提高和圖像質量的不斷改善,要求的數(shù)據(jù)傳輸速率呈現(xiàn)出幾何級的增長趨勢。同時,在采集傳輸數(shù)據(jù)的過程中要求數(shù)據(jù)的完整性和正確性是非常重要的,少量的數(shù)據(jù)丟失都可能無法生成正確的圖像,給最終的物體探傷檢測判斷造成影響。所以,如何保證數(shù)據(jù)高速可靠的傳輸,成為超聲探傷儀設計中越來越重要的問題。
本系統(tǒng)中,圖像顯示存儲與操作控制均在PC機上實現(xiàn),受機械傳動機構的限制,要求PC機與超聲檢測單元相距至少 6m;大容量實時數(shù)據(jù)傳輸速度要求達到10MB/s。
當今可用于工業(yè)環(huán)境的高速通信接口包括:PCI、PCI-E、USB3.0、藍牙2.0、WIFI和有線網(wǎng)絡等。但受6m距離的限制,PCI、PCI-E、USB3.0三種接口不可用;藍牙2.0的實際穩(wěn)定速度建議為10kB/s,不滿足速度要求;WIFI理論速度13.5MB/s,速度達到要求,但由于工業(yè)環(huán)境比較復雜,在準確性穩(wěn)定性方面存在一定的不確定性;而有線網(wǎng)絡,尤其是千兆網(wǎng)絡,采用TCP/IP協(xié)議速度可以達到18MB/s,且穩(wěn)定可靠,是一個理想的選擇。
FPGA的以太網(wǎng)控制器設計包括基于FPGA IP核設計的以太網(wǎng)MAC子層,該MAC子層與上層網(wǎng)絡通信協(xié)議的HAL接口設計以及MAC子層與物理層芯片(PHY)的RGMII接口設計。整個系統(tǒng)分為MAC模塊、主機接口模塊和管理數(shù)據(jù)輸入輸出模塊。其中MAC模塊主要執(zhí)行在全雙工模式下的流量控制,MAC模塊實現(xiàn)發(fā)送和接收功能,其主要操作有MAC幀的封裝與解包以及錯誤檢測,物理層處理直接利用商用千兆PHY器件,主要開發(fā)集中在MAC控制器以及軟件協(xié)議的研究。管理數(shù)據(jù)輸入輸出模塊提供了標準的IEEE 802.3介質獨立接口,可用于連接以太網(wǎng)的鏈路層和物理層。主機接口則提供以太網(wǎng)控制器與上層協(xié)議(如TCP/IP協(xié)議)之間的接口,用于數(shù)據(jù)的發(fā)送、接收以及對控制器內各種寄存器的設置。
(1) 添加DDR3 SDRAM控制器,用于存放正在運行的程序和數(shù)據(jù),由于在多通道超聲探傷儀中所需處理的實時數(shù)據(jù)量很大,對存儲器的運行速度和帶寬要求比較高,所以本文選用了大容量的 DDR3 SDRAM,設置其運行在 300MHz,半速率,則本地帶寬為150MHz×64bits;
(2) 添加 Avalon-MM 三態(tài)總線橋,用于外掛的flash存儲器和CPU相連;
(3) 添加flash,用于存放需要固化的FPGA配置文件和所需要運行的程序與數(shù)據(jù),并在掉電時保存數(shù)據(jù);
(4) 添加Nios II處理器IP,在Nios II Core配置選項中選擇全功能型CPU核(Nios II/f)。其最高性能的優(yōu)化,具有Nios II 處理器的所有功能,包括一些高級功能,需要的LE數(shù)目最多;
(5) 添加三速以太網(wǎng);
(6) 添加DMA總線控制器,添加兩個DMA控制器;
(7) 添加片內存儲器,命名為descriptor_memory;
(8) 添加Avalon-MM pipeline bridge,用于簡化CPU和外設的連接;
(9) 添加 JTAG_UART,實現(xiàn) PC與 FPGA 上SOPC系統(tǒng)間串行通信。
根據(jù)uC/OS-II的要求,將uC/OS-II移植到一個新的體系結構上需要提供2~3個文件:OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM。在某些極其罕見的情況下可以不需要 OS_CPU_A.ASM[3],uC/OS-II需要移植的部分見表1。
2.4.1 NicheStack TCP/IP協(xié)議棧的移植
NicheStack在Nios II IDE中配置的過程[4]如下:
① 在IDE環(huán)境中左邊的工程欄中,右鍵單擊要配置的工程,單擊 Nios II→BSP Editor,打開 BSP Editor對話框;
② 選擇Software Packages,顯示所要選擇的軟件包屬性對話框;
③在 Software Packages Name下選擇altera_iniche;
④ 雙擊打開 Settings→Advanced→altera_iniche,不用選擇enable_dhcp_client;
⑤ 單擊Generate按鈕,完成配置。
2.4.2 NicheStack TCP/IP協(xié)議棧的初始化
在初始化之前,需要由main()函數(shù)調用OSStart()函數(shù)開始uC/OS-II調度,并確保RTOS跑起來和相關IO是可用的。初始化協(xié)議棧需要調用兩個函數(shù):alt_iniche_init()和netmain()。當初始化完成后,全局變量 iniche_net_ready會被設置為一個非零值,這時才能啟動用戶應用程序[5]。

表1 uC/OS-II需要移植的代碼
在此項目中,多通道超聲探傷儀作為網(wǎng)絡通路中的服務器端,將超聲探頭收集到的數(shù)據(jù)經由千兆網(wǎng)絡傳送給上位PC機,因此在Nios II上需要編寫服務器端(server)的基于Socket API的程序[6]:


//判斷本地地址綁定所創(chuàng)建的套接字連接是否成功

執(zhí)行完上述程序之后,服務器端會一直監(jiān)聽是否有客戶端申請連接,如果有連接,即可處理客戶端的連接請求并給出回應,這時就可以用send()或sendto()傳送數(shù)據(jù),完成之后服務器端會繼續(xù)監(jiān)聽客戶端的連接請求。
把 Quartus II生成的文件通過 Quartus II Programmer下載到FPGA中,然后回到Nios II IDE,鼠標右鍵點擊左邊工程名,選擇RUN→RUN AS,在Nios II Console中會顯示連接成功。
實驗結果表明:經連續(xù)24小時傳輸測試,速度穩(wěn)定,沒有大的波動;傳輸速度達到10MB/s,見圖1所示。

圖1 網(wǎng)絡傳送數(shù)據(jù)速度測試
本文基于ALTERA大規(guī)模高速FPGA器件,結合內部NIOS II處理器、MAC IP、外部PHY芯片,采用TCP/IP協(xié)議,實現(xiàn)了嵌入式千兆以太網(wǎng)的連接。千兆以太網(wǎng)的穩(wěn)定傳輸速度可以達到 10MB/s,已經高出同樣條件下百兆以太網(wǎng)的實際運行速度,為超聲探傷儀的數(shù)據(jù)傳輸,提供了高效廉價的解決方案。
[1]Altera Corp.Nios II Hardware Development Tutorial,2009.
[2]Jean J.Labrosse.邵貝貝等譯.嵌入式實時操作系統(tǒng) uC/OS-II(第2版)[M].北京:北京航空航天大學出版社,2005.
[3]周立功等.ARM嵌入式系統(tǒng)基礎教程(第2版)[M].北京:北京航空航天大學出版社,2008.
[4]Altera Corp. Using the NicheStack TCP/IP Stack-Nios II Edition Tutorial, 2010.
[5]Altera Corp.Nios II Software Developer’s Handbook, 2010.
[6]Michael J.Donahoo,Kenneth L. Calvert 著,陳宇斌譯. Sockets編程(C語言實現(xiàn))(第2版)[M].北京:清華大學出版社,2009.