王俊林,劉 宇,趙斌陶
(西安應(yīng)用光學(xué)研究所 陜西 西安 710029)
隨著光電偵察技術(shù)的飛速發(fā)展,并以最大的廣度和深度滲透到現(xiàn)代軍事斗爭的各個領(lǐng)域,使其成為實現(xiàn)軍事偵察高技術(shù)化、信息化的核心和支柱。目前,光電偵察設(shè)備正朝著適應(yīng)未來復(fù)雜戰(zhàn)場環(huán)境,進一步提高精度、分辨率,提高智能化,網(wǎng)絡(luò)協(xié)同多種偵察設(shè)備的方向發(fā)展[1]。因此,光電偵察設(shè)備如何將大容量高速數(shù)據(jù)進行可靠的網(wǎng)絡(luò)接入是首先需要解決的問題之一。
經(jīng)過多年的發(fā)展,以太網(wǎng)通信的傳輸速率已經(jīng)從最早的10 Mb/s到現(xiàn)在的1 Gb/s,它具有通信容量大、傳輸距離遠,信號傳輸質(zhì)量高、保密性好等諸多優(yōu)點[2],在光電偵察信息數(shù)據(jù)傳輸中有著廣泛的應(yīng)用前景。本文以帶硬件TCP/IP模塊的8051控制器W7100A設(shè)計和實現(xiàn)了偵察設(shè)備與其他遠程設(shè)備之間的光電偵察信息網(wǎng)絡(luò)接入接口,使之遵守以太網(wǎng)通信規(guī)范。
光電偵察設(shè)備系統(tǒng)整體由采集模塊、控制模塊、網(wǎng)絡(luò)模塊等組成,其連接關(guān)系如圖1所示。采集模塊主要是采集光電傳感器的圖像、軸角等信息,并輸出經(jīng)過處理的數(shù)字信號;控制模塊則主要控制各模塊之間按照系統(tǒng)功能協(xié)調(diào)工作;網(wǎng)絡(luò)模塊主要是將數(shù)據(jù)按照以太網(wǎng)協(xié)議規(guī)范進行處理以實現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)接入功能。系統(tǒng)的核心在于網(wǎng)絡(luò)接入功能的實現(xiàn),因此文中將對網(wǎng)絡(luò)接口的設(shè)計做重點說明。
圖1 系統(tǒng)整體設(shè)計Fig.1 The system block diagram
網(wǎng)絡(luò)接口是為系統(tǒng)實現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸服務(wù)的,主要由接口控電路和隔離耦合電路組成。在接口控制電路中,由系統(tǒng)控制器完成對網(wǎng)絡(luò)芯片的控制功能;耦合隔離電路是為完善網(wǎng)絡(luò)接口設(shè)計的,起到耦合傳輸和隔離保護的作用。
文中的以太網(wǎng)控制器采用WIZnet公司的網(wǎng)絡(luò)微處理器W7100A,其包含一個與8051兼容的8位微處理器內(nèi)核和硬件TCP/IP內(nèi)核[3]。W7100A的CPU內(nèi)核是一款高性能、速率優(yōu)化的8位嵌入式控制器,具有64 k字節(jié)程序存儲器和64 k字節(jié)數(shù)據(jù)存儲器,與工業(yè)標(biāo)準(zhǔn)的8051微處理器二進制代碼兼容。圖 2為網(wǎng)絡(luò)接口的電路原理圖。
圖2 網(wǎng)絡(luò)接口電路原理圖Fig.2 Network interface cicuit diagram
W7100A負(fù)責(zé)完成高速數(shù)據(jù)的傳輸工作,把數(shù)據(jù)傳送給FPGA進行數(shù)據(jù)處理。W7100A的P0~P3口分別與FPGA的IO口相連接,完成與FPGA的數(shù)據(jù)傳輸。由于W7100A沒有外部數(shù)據(jù)總線和地址總線,所以在與FPGA進行通信時用P0~P3 4個通用IO口模擬數(shù)據(jù)總線進行數(shù)據(jù)傳輸,且其通用IO口都沒有內(nèi)部上拉電阻,需要外部加上拉電阻。
網(wǎng)絡(luò)變壓器20F001N實現(xiàn)W7100A芯片的網(wǎng)絡(luò)輸入輸出信號的隔離,構(gòu)成模塊的網(wǎng)絡(luò)接口。由于網(wǎng)絡(luò)通訊速度高達100 M,為減小電干擾,W7100A芯片的網(wǎng)絡(luò)數(shù)據(jù)輸入和輸出的兩對信號線要分別平行布放且不要與其他連線交叉。
因為W7100A內(nèi)部嵌入一個8051兼容的MCU內(nèi)核和硬件的TCP/IP內(nèi)核[4],它可以不需要其它器件而獨立實現(xiàn)以太網(wǎng)的應(yīng)用。使用W7100A時要先進行初始化配置,初始化分3個步驟:設(shè)置8051 MCU,網(wǎng)絡(luò)信息和內(nèi)部TX/RX存儲器。
3.1.1 初始化MCU
MCU的初始化包括中斷設(shè)置,存儲器訪問時間設(shè)置和串口波特率、寄存器設(shè)置等。設(shè)置如下:
3.1.2 設(shè)置網(wǎng)絡(luò)信息
必須設(shè)置的網(wǎng)絡(luò)基本信息有:SHAR(本機物理地址寄存器)、GAR(網(wǎng)關(guān)地址寄存器)、SUBR(子網(wǎng)掩碼寄存器)、SIPR(本機IP地址寄存器)。
為了設(shè)置重發(fā)時間,需要設(shè)置的寄存器如下:
1)RTR(重發(fā)時間寄存器),RTR的‘1’代表‘100us’。
2)RCR(重發(fā)次數(shù)寄存器)
網(wǎng)絡(luò)信息初始化的程序如下:
3.1.3 分配SOCKET n內(nèi)部TX/RX存儲器大小
每一個可配置的TX/RX存儲器的最大長度為16 k字節(jié),在16 K字節(jié)的范圍內(nèi),用戶可以將存儲器給8個SOCKET任意分配為1 k、2 k、4 k和8 k字節(jié)。但TX和RX存儲器的總合不能超過16 k字節(jié)(TXmax=16 kB, RXmax=16 kB)。
圖3 TX寄存器的分配Fig.3 TX memory allocation
完成W7100A的這3步初始化設(shè)置,W7100A就可以通過以太網(wǎng)進行數(shù)據(jù)傳輸。此刻,W7100A可以響應(yīng)來自于網(wǎng)絡(luò)的Ping請求。
初始化完成以后,W7100A就可以以TCP、UDP、IPRAW或MACRAW的模式打開端口,并發(fā)送和接收數(shù)據(jù)。W7100A支持8個端口以不同的方式同時進行工作。本系統(tǒng)選用UDP模式的多播方式工作。
UDP是無連接的通信,它的通信是不需要端口建立連接,因此它可以與多個IP地址的多個端口進行數(shù)據(jù)交換[5]。UDP協(xié)議支持單播、廣播和多播等通信方式。它遵循以下通信流程。
多播是與多個、但在多播組注冊的目的站點進行通信。為了使用多播通信,使用IGMP協(xié)議將目的站點列表注冊到多播組。多播組包括:分組硬件地址、分組IP地址和組端口號。用戶不能夠更改“分組硬件地址”和“分組IP地址”。但用戶可以更改“分組端口號”。
圖4 UDP操作流程Fig.4 UDP operation flow
在W7100A內(nèi)部,IGMP處理多播注冊是由內(nèi)部自動完成的。當(dāng)用戶以多播的模式打開端口時,“JOIN”信息將在內(nèi)部自動傳送。如果用戶關(guān)閉端口,“LEAVE”信息將在內(nèi)部自動傳送。端口打開以后,“REPORT”信息將在數(shù)據(jù)傳輸過程中每隔一定的時間傳送。
3.2.1 打開(OPEN)
在W7100 A的8個端口中選擇一個端口作為多播通信的工作端口。設(shè)置Sn_DHAR0為多播組硬件地址,設(shè)置Sn_DIPR0為多播組IP地址。然后設(shè)置Sn_PORT0和Sn_DPORT0為多播組端口號,將Sn_MR (P3:P0)設(shè)置為UDP,且將Sn_MR(MULTI)設(shè)置為‘1’。最后運行OPEN命令。如果Sn_SR的狀態(tài)在執(zhí)行完OPEN命令后改變?yōu)镾OCK_UDP,端口的打開即完成。
3.2.2 接收數(shù)據(jù)
處理接收的UDP數(shù)據(jù),在內(nèi)部RX存儲器中接收的數(shù)據(jù)包格式如下:
接收的UDP數(shù)據(jù)包含8個字節(jié)的數(shù)據(jù)包信息和有效數(shù)據(jù)。數(shù)據(jù)包信息包括兩個部分:發(fā)送者的信息(IP地址和端口號)和數(shù)據(jù)包的長度。UDP可以接收其它的很多UDP數(shù)據(jù),用戶可以通過發(fā)送者的信息區(qū)分UDP數(shù)據(jù)來源。它也接收以“255.255.255.255”的廣播地址發(fā)送的信息。因此主機可以通過分析發(fā)送者的信息,丟掉那些不需要的數(shù)據(jù)。
如果要接收的數(shù)據(jù)長度大于端口RX存儲器的剩余空間,用戶將無法接收到數(shù)據(jù),也不能夠接收分片的數(shù)據(jù)。
3.2.3 發(fā)送數(shù)據(jù)
因為在端口初始化時用戶設(shè)置了組播信息,用戶不需要再設(shè)置目的IP和目的端口號。因此,將數(shù)據(jù)拷貝到內(nèi)部TX存儲器然后執(zhí)行SEND命令。
3.2.4 關(guān)閉(CLOSE)
如果不需要再進行數(shù)據(jù)通信,則將端口關(guān)閉。
文中介紹了一種基于W7100A網(wǎng)絡(luò)微處理器實現(xiàn)光電偵察信息網(wǎng)絡(luò)接入的方案。由于該網(wǎng)絡(luò)微處理器嵌入了MCU 8051內(nèi)核和硬件TCP/IP內(nèi)核,使用時不需要考慮以太網(wǎng)的控制,只需要進行簡單的端口(Socket)編程[6],而且該設(shè)備外圍器件較少,硬件成本低廉,實現(xiàn)較為簡單方便,該方案具有集成度高、穩(wěn)定性高、高性能和低成本的特點,具有廣闊的應(yīng)用前景。
[1]鄭燁,張伯虎,李孔震.光電偵察裝備的現(xiàn)狀與發(fā)展前景探析[J].科技資訊,2010(1):4-6.
[2]楊磊.基于工業(yè)以太網(wǎng)的數(shù)控系統(tǒng)實時性問題研究[D].北京:中國科學(xué)技術(shù)大學(xué),2014.
[3]WIZnet Co.,Inc.Internet embedded MCU W7100A datasheet[EB/OL].Korea:WIZnet,2012.http://www.wiznet.co.k
[4]Atmel.8051 Microcontrollers Hardware Manual[EB/OL].California:Atmel,2007.http://www.atmel.com.
[5]Richard S W,范建華,等譯.TCP/IP詳解卷1:協(xié)議[M].北京:機械工業(yè)出版社,2008.
[6]王偉,藍雯飛,高偉華.用Socket實現(xiàn)UDP協(xié)議下的網(wǎng)絡(luò)通信[J].軟件導(dǎo)刊,2009,8(9):115-117.