桂婧 李建東
(1.廣東技術(shù)師范學(xué)院天河學(xué)院 2.廣州多浦樂(lè)電子科技有限公司)
隨著科技水平的發(fā)展,高性能、多通道超聲無(wú)損探傷儀需要在工作時(shí)將實(shí)時(shí)采集到的圖像數(shù)據(jù)傳輸給PC機(jī)進(jìn)行圖像處理。然而隨著實(shí)時(shí)成像要求的不斷提高和圖像質(zhì)量的不斷改善,要求的數(shù)據(jù)傳輸速率呈現(xiàn)出幾何級(jí)的增長(zhǎng)趨勢(shì)。同時(shí),在采集傳輸數(shù)據(jù)的過(guò)程中要求數(shù)據(jù)的完整性和正確性是非常重要的,少量的數(shù)據(jù)丟失都可能無(wú)法生成正確的圖像,給最終的物體探傷檢測(cè)判斷造成影響。所以,如何保證數(shù)據(jù)高速可靠的傳輸,成為超聲探傷儀設(shè)計(jì)中越來(lái)越重要的問(wèn)題。
本系統(tǒng)中,圖像顯示存儲(chǔ)與操作控制均在PC機(jī)上實(shí)現(xiàn),受機(jī)械傳動(dòng)機(jī)構(gòu)的限制,要求PC機(jī)與超聲檢測(cè)單元相距至少 6m;大容量實(shí)時(shí)數(shù)據(jù)傳輸速度要求達(dá)到10MB/s。
當(dāng)今可用于工業(yè)環(huán)境的高速通信接口包括:PCI、PCI-E、USB3.0、藍(lán)牙2.0、WIFI和有線網(wǎng)絡(luò)等。但受6m距離的限制,PCI、PCI-E、USB3.0三種接口不可用;藍(lán)牙2.0的實(shí)際穩(wěn)定速度建議為10kB/s,不滿足速度要求;WIFI理論速度13.5MB/s,速度達(dá)到要求,但由于工業(yè)環(huán)境比較復(fù)雜,在準(zhǔn)確性穩(wěn)定性方面存在一定的不確定性;而有線網(wǎng)絡(luò),尤其是千兆網(wǎng)絡(luò),采用TCP/IP協(xié)議速度可以達(dá)到18MB/s,且穩(wěn)定可靠,是一個(gè)理想的選擇。
FPGA的以太網(wǎng)控制器設(shè)計(jì)包括基于FPGA IP核設(shè)計(jì)的以太網(wǎng)MAC子層,該MAC子層與上層網(wǎng)絡(luò)通信協(xié)議的HAL接口設(shè)計(jì)以及MAC子層與物理層芯片(PHY)的RGMII接口設(shè)計(jì)。整個(gè)系統(tǒng)分為MAC模塊、主機(jī)接口模塊和管理數(shù)據(jù)輸入輸出模塊。其中MAC模塊主要執(zhí)行在全雙工模式下的流量控制,MAC模塊實(shí)現(xiàn)發(fā)送和接收功能,其主要操作有MAC幀的封裝與解包以及錯(cuò)誤檢測(cè),物理層處理直接利用商用千兆PHY器件,主要開(kāi)發(fā)集中在MAC控制器以及軟件協(xié)議的研究。管理數(shù)據(jù)輸入輸出模塊提供了標(biāo)準(zhǔn)的IEEE 802.3介質(zhì)獨(dú)立接口,可用于連接以太網(wǎng)的鏈路層和物理層。主機(jī)接口則提供以太網(wǎng)控制器與上層協(xié)議(如TCP/IP協(xié)議)之間的接口,用于數(shù)據(jù)的發(fā)送、接收以及對(duì)控制器內(nèi)各種寄存器的設(shè)置。
(1) 添加DDR3 SDRAM控制器,用于存放正在運(yùn)行的程序和數(shù)據(jù),由于在多通道超聲探傷儀中所需處理的實(shí)時(shí)數(shù)據(jù)量很大,對(duì)存儲(chǔ)器的運(yùn)行速度和帶寬要求比較高,所以本文選用了大容量的 DDR3 SDRAM,設(shè)置其運(yùn)行在 300MHz,半速率,則本地帶寬為150MHz×64bits;
(2) 添加 Avalon-MM 三態(tài)總線橋,用于外掛的flash存儲(chǔ)器和CPU相連;
(3) 添加flash,用于存放需要固化的FPGA配置文件和所需要運(yùn)行的程序與數(shù)據(jù),并在掉電時(shí)保存數(shù)據(jù);
(4) 添加Nios II處理器IP,在Nios II Core配置選項(xiàng)中選擇全功能型CPU核(Nios II/f)。其最高性能的優(yōu)化,具有Nios II 處理器的所有功能,包括一些高級(jí)功能,需要的LE數(shù)目最多;
(5) 添加三速以太網(wǎng);
(6) 添加DMA總線控制器,添加兩個(gè)DMA控制器;
(7) 添加片內(nèi)存儲(chǔ)器,命名為descriptor_memory;
(8) 添加Avalon-MM pipeline bridge,用于簡(jiǎn)化CPU和外設(shè)的連接;
(9) 添加 JTAG_UART,實(shí)現(xiàn) PC與 FPGA 上SOPC系統(tǒng)間串行通信。
根據(jù)uC/OS-II的要求,將uC/OS-II移植到一個(gè)新的體系結(jié)構(gòu)上需要提供2~3個(gè)文件:OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM。在某些極其罕見(jiàn)的情況下可以不需要 OS_CPU_A.ASM[3],uC/OS-II需要移植的部分見(jiàn)表1。
2.4.1 NicheStack TCP/IP協(xié)議棧的移植
NicheStack在Nios II IDE中配置的過(guò)程[4]如下:
① 在IDE環(huán)境中左邊的工程欄中,右鍵單擊要配置的工程,單擊 Nios II→BSP Editor,打開(kāi) BSP Editor對(duì)話框;
② 選擇Software Packages,顯示所要選擇的軟件包屬性對(duì)話框;
③在 Software Packages Name下選擇altera_iniche;
④ 雙擊打開(kāi) Settings→Advanced→altera_iniche,不用選擇enable_dhcp_client;
⑤ 單擊Generate按鈕,完成配置。
2.4.2 NicheStack TCP/IP協(xié)議棧的初始化
在初始化之前,需要由main()函數(shù)調(diào)用OSStart()函數(shù)開(kāi)始uC/OS-II調(diào)度,并確保RTOS跑起來(lái)和相關(guān)IO是可用的。初始化協(xié)議棧需要調(diào)用兩個(gè)函數(shù):alt_iniche_init()和netmain()。當(dāng)初始化完成后,全局變量 iniche_net_ready會(huì)被設(shè)置為一個(gè)非零值,這時(shí)才能啟動(dòng)用戶應(yīng)用程序[5]。
表1 uC/OS-II需要移植的代碼
在此項(xiàng)目中,多通道超聲探傷儀作為網(wǎng)絡(luò)通路中的服務(wù)器端,將超聲探頭收集到的數(shù)據(jù)經(jīng)由千兆網(wǎng)絡(luò)傳送給上位PC機(jī),因此在Nios II上需要編寫服務(wù)器端(server)的基于Socket API的程序[6]:
//判斷本地地址綁定所創(chuàng)建的套接字連接是否成功
執(zhí)行完上述程序之后,服務(wù)器端會(huì)一直監(jiān)聽(tīng)是否有客戶端申請(qǐng)連接,如果有連接,即可處理客戶端的連接請(qǐng)求并給出回應(yīng),這時(shí)就可以用send()或sendto()傳送數(shù)據(jù),完成之后服務(wù)器端會(huì)繼續(xù)監(jiān)聽(tīng)客戶端的連接請(qǐng)求。
把 Quartus II生成的文件通過(guò) Quartus II Programmer下載到FPGA中,然后回到Nios II IDE,鼠標(biāo)右鍵點(diǎn)擊左邊工程名,選擇RUN→RUN AS,在Nios II Console中會(huì)顯示連接成功。
實(shí)驗(yàn)結(jié)果表明:經(jīng)連續(xù)24小時(shí)傳輸測(cè)試,速度穩(wěn)定,沒(méi)有大的波動(dòng);傳輸速度達(dá)到10MB/s,見(jiàn)圖1所示。
圖1 網(wǎng)絡(luò)傳送數(shù)據(jù)速度測(cè)試
本文基于ALTERA大規(guī)模高速FPGA器件,結(jié)合內(nèi)部NIOS II處理器、MAC IP、外部PHY芯片,采用TCP/IP協(xié)議,實(shí)現(xiàn)了嵌入式千兆以太網(wǎng)的連接。千兆以太網(wǎng)的穩(wěn)定傳輸速度可以達(dá)到 10MB/s,已經(jīng)高出同樣條件下百兆以太網(wǎng)的實(shí)際運(yùn)行速度,為超聲探傷儀的數(shù)據(jù)傳輸,提供了高效廉價(jià)的解決方案。
[1]Altera Corp.Nios II Hardware Development Tutorial,2009.
[2]Jean J.Labrosse.邵貝貝等譯.嵌入式實(shí)時(shí)操作系統(tǒng) uC/OS-II(第2版)[M].北京:北京航空航天大學(xué)出版社,2005.
[3]周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程(第2版)[M].北京:北京航空航天大學(xué)出版社,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語(yǔ)言實(shí)現(xiàn))(第2版)[M].北京:清華大學(xué)出版社,2009.