根據(jù)TCP/IP的浮標網(wǎng)絡(luò)通訊系統(tǒng)設(shè)計
水聲信道匹配基礎(chǔ)研究是建立在水聲學、海洋物理聲學以及現(xiàn)代信號處理技術(shù)基礎(chǔ)上的新興研究領(lǐng)域。為滿足研究需要而構(gòu)建的局部海域水聲信道測量平臺(圖 1),能夠?qū)崿F(xiàn)環(huán)境信息和信道參量的系統(tǒng)采集和實時傳遞,對信道寬容匹配方法的可行性進行檢驗。
浮標系統(tǒng)以它的靈活、高效、自身干擾小等特點,在水聲信道研究中發(fā)揮著其它設(shè)備不可替代的作用?,F(xiàn)有的浮標系統(tǒng)大多采用直接序列擴頻電臺直接進行水面通訊,這種方式往往不使用網(wǎng)絡(luò)協(xié)議或使用自定義的網(wǎng)絡(luò)協(xié)議。而采用無線網(wǎng)橋進行水面通訊,以TCP/IP作為網(wǎng)絡(luò)協(xié)議,將大大增強浮標系統(tǒng)網(wǎng)絡(luò)化。同時由于TCP/IP協(xié)議是目前最為成熟的網(wǎng)絡(luò)協(xié)議之一,浮標網(wǎng)絡(luò)的穩(wěn)定性、可擴展性都得以提高,甚至通過互聯(lián)網(wǎng)直接控制浮標系統(tǒng)也成為可能。因此,本文基于TCP/IP網(wǎng)絡(luò)協(xié)議設(shè)計并實現(xiàn)了浮標網(wǎng)絡(luò)通信系統(tǒng)。
1、浮標網(wǎng)絡(luò)通訊系統(tǒng)設(shè)計
1.1 基于TCP/IP網(wǎng)絡(luò)協(xié)議的浮標通訊系統(tǒng)
水聲信道匹配基礎(chǔ)研究所使用的浮標具有水下傳感器單元、信號處理單元及水面通訊單元。其中水面通訊單元負責浮標與岸基控制站、測量船及其它浮標的信息交換,要求具備網(wǎng)絡(luò)通訊功能。
浮標網(wǎng)絡(luò)通訊系統(tǒng)由無線網(wǎng)橋、TCP/IP協(xié)議控制單元及微控制器(MCU)組成,如圖 2所示。無線網(wǎng)橋采用較為成熟網(wǎng)橋產(chǎn)品,如BreezeNET無線網(wǎng)橋,其功能是通過無線網(wǎng)路傳輸TCP/IP數(shù)據(jù)包。MCU負責對TCP/IP協(xié)議棧的進行設(shè)置,并寫入待發(fā)數(shù)據(jù)及讀出接收數(shù)據(jù)。
TCP/IP協(xié)議棧的實現(xiàn)是浮標網(wǎng)絡(luò)通訊系統(tǒng)的核心部分。其實現(xiàn)方式可以采用軟件實現(xiàn),但該方法一般要求處理速度較高的MCU,而且占用大量代碼空間,同時編程需要對整個TCP/IP 協(xié)議的機制和細節(jié)十分熟悉,開發(fā)難度大。而硬件實現(xiàn)方式則把MCU從繁重的網(wǎng)絡(luò)協(xié)議運行工作中解放出來,從而提高了系統(tǒng)效率。
數(shù)據(jù)或指令由無線網(wǎng)橋發(fā)送或接收。它通過RJ45接口經(jīng)變壓器與10Base-T通用以太網(wǎng)接口控制器RTL8201相連。RTL8201通過MII標準接口與W3100A交換數(shù)據(jù)。RTL8201從W3100A處接收以太幀,然后進行曼徹斯特編碼,發(fā)送以太網(wǎng)幀時,先在幀前端加上幀起始標志。當*到網(wǎng)絡(luò)中有以太網(wǎng)幀存在時,RTL8201接收模塊首先用鎖相環(huán)電路實現(xiàn)與物理信號同步,然后對物理信號采樣接收并送給曼徹斯特解碼功能塊,最后得到W3100A能識別的歸“0”碼(已把幀前導(dǎo)碼分離),并將其通過MII接口送入網(wǎng)絡(luò)接口層模塊。
發(fā)送數(shù)據(jù)時,數(shù)據(jù)由MCU數(shù)據(jù)接口寫入W3100A的發(fā)送緩沖區(qū),通過控制各個協(xié)議層的相關(guān)控制寄存器,數(shù)據(jù)在TCP層中添加上各個控制標志等,封裝成為TCP段,實現(xiàn)面向連接的可靠傳輸;TCP段接著交給IP層進行打包,IP層的一個重要功能是實現(xiàn)對TCP段的分片,以達到IP數(shù)據(jù)報能夠最大效率利用以太網(wǎng)幀的數(shù)據(jù)區(qū)的目的。完整的IP數(shù)據(jù)報繼續(xù)傳給網(wǎng)絡(luò)接口層,LLC子層使用物理層提供的不可靠的比特鏈路,實現(xiàn)可靠的分組傳輸服務(wù),MAC子層為數(shù)據(jù)分組添加目的節(jié)點的物理地址,MAC實現(xiàn)不可靠的分組傳輸。經(jīng)過網(wǎng)絡(luò)接口層后,最終封裝成幀格式,然后再經(jīng)過MII接口送入RTL8201,在RTL8201里進行曼徹斯特編碼并添加前導(dǎo)信號等。當RTL8201*到物理鏈路空閑時,立即通過RJ45接口把數(shù)據(jù)幀發(fā)送到以太網(wǎng)上。
接收數(shù)據(jù)時則進行相反的操作,收發(fā)器接收以太網(wǎng)上的物理信號把前導(dǎo)碼分離出來并進行曼徹斯特解碼,把結(jié)果傳送給網(wǎng)絡(luò)接口層,網(wǎng)絡(luò)接口層MAC子層檢查幀的物理目的地址是否與自己的相同,以決定是否交給LLC子層,LLC用差錯檢測位判斷分組是否正確。正確的分組被送入IP層,在IP層中檢測錯誤、拆封并進行分片重組后送給TCP層,TCP層實現(xiàn)面向連接的可靠傳輸,所以TCP層將進行嚴格的差錯控制,再從TCP段中取出數(shù)據(jù),然后通過數(shù)據(jù)接口傳送回MCU。物理幀經(jīng)過各個協(xié)議層進行解包,最終把數(shù)據(jù)傳回MCU,但在各層解包時如果IP地址或數(shù)據(jù)出錯等,數(shù)據(jù)包將被丟棄,并要求重傳。如果處理的報文是ICMP、UDP 或ARP等時,其大致流程是一樣的,不同報文的區(qū)別會在相應(yīng)的包頭指示出來,供協(xié)議識別。
1.2 TCP/IP協(xié)議棧W3100A簡介
W3100A是一種TCP/IP協(xié)議棧芯片,它包含了TCP、IP Ver.4、UDP、ICMP、ARP等Internet協(xié)議和DLC、MAC以太網(wǎng)協(xié)議。其功能框圖如圖 3所示。W3100A芯片由4部分組成:微控器接口單元、網(wǎng)絡(luò)協(xié)議引擎、雙口RAM及網(wǎng)絡(luò)物理層介質(zhì)開關(guān)接口MII(Media Independent Interface)單元。W3100A支持全雙工20Mbps的數(shù)據(jù)通信,并可同時支持4個獨立的網(wǎng)絡(luò)連接;提供16KB的數(shù)據(jù)緩沖雙口SRAM;采用0.35μm的CMOS工藝,64引腳LQFP封裝;采用3.3V電源電壓,其I/O接口兼容了5V的數(shù)字邏輯電平,可非常方便地與MCU和DSP接口連接。
2、電路設(shè)計
該系統(tǒng)的主要電路由微控制器MSP430F169、網(wǎng)絡(luò)協(xié)議棧W3100A、以太網(wǎng)接口控制器RTL8201及網(wǎng)絡(luò)接口構(gòu)成。W3100A與MSP430F169的連接可采用I2C接口模式或直接總線模式。采用I2C接口模式的優(yōu)點是電路簡潔,占用端口資源少。但I2C接口的傳輸速度會受到一定限制,所以當要求更高傳輸速度時,可采用直接總線接口方式,如圖 4所示。W3100A提供MII接口與RTL8201相連,其中引腳RX_CLK、RXDV、RXD[0:3]以及COL用于數(shù)據(jù)的接收,而TX_CLK、TXE、TXD[0:3]用于數(shù)據(jù)的發(fā)送。
在接口的實現(xiàn)中,以太網(wǎng)變壓器是不可缺少的。在差分發(fā)送引腳(TX+/TX-)上,需要一個專用于10BASE-T 操作的脈沖變壓器,將要發(fā)送的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。網(wǎng)絡(luò)傳來的數(shù)據(jù)也經(jīng)過變壓器,由差分接收引腳(RX+/RX-)接收。以太網(wǎng)變壓器的作用主要是將外部線路與RTL8201隔開,防止干擾和燒壞元器件,實現(xiàn)帶電的插拔功能。本設(shè)計采用了PULES的J0011型變壓器,其內(nèi)部結(jié)構(gòu)如圖 5所示。該變壓器集成了RJ-45接頭,在簡化了連線的同時也提高了高頻信號傳輸?shù)目煽啃浴?
同時在設(shè)計復(fù)位電路時應(yīng)注意,由于W3100A的復(fù)位引腳為高電平有效,而MSP430F169和RTL8021的復(fù)位引腳為低電平有效,所以在設(shè)計復(fù)位電路時要求同時產(chǎn)生高、低兩路復(fù)位信號,如圖 6所示。
3、軟件設(shè)計
3.1 MSP430總線讀寫
W3100A有專門的微控制器接口與MCU相連,其總線操作類似于MCU對外部存儲器的讀寫。但MSP430微控制器沒有專門的外部擴展總線接口,所以這里采用通用端口模擬外部擴展總線端口。對于W3100A的訪問要依照其讀寫時序進行操作,如圖 7、圖 8所示,可將讀寫程序作為函數(shù)在主程序中調(diào)用。
下面列舉了部分讀總線程序:
寫總線過程與讀總線類似,不同的是將P4端口設(shè)為輸出狀態(tài),并操作寫有效(/WE)。要注意的是/WE恢復(fù)到高電平時的上升沿觸發(fā)數(shù)據(jù)寫入。
3.2 網(wǎng)絡(luò)傳輸控制
通過Wiznet公司為W3100A專門提供的Socket API函數(shù),可使網(wǎng)絡(luò)通訊的軟件設(shè)計更加方便。首先初始化W3100A的網(wǎng)絡(luò)設(shè)置,即在相應(yīng)的寄存器中設(shè)置默認網(wǎng)關(guān)、子網(wǎng)掩碼、本機物理地址和IP地址,然后建立Socket連接以實現(xiàn)通訊。整個過程與Windows Socket編程十分類似。
建立TCP連接的流程如圖 9所示。首先完成芯片的TCP/IP初始化,設(shè)置相應(yīng)通道如0通道的協(xié)議選擇寄存器C0_SPOR為0X01;選擇TCP協(xié)議,執(zhí)行通道0命令寄存器C0_CR中的sock_init命令位, 同時將C0_TW_PR、C0_TR_PR及C0_TA_PR置成同一值;然后執(zhí)行C0_CR的connect和listen命令位,此時TCP連接就建立起來。
W3100A內(nèi)部的16KB的雙口RAM作為數(shù)據(jù)發(fā)送和接收緩沖。其中0x4000~0x5FFF的地址空間是發(fā)送數(shù)據(jù)緩沖區(qū),0x6000~0x7FFF的地址空間是接收數(shù)據(jù)緩沖區(qū)。MCU程序?qū)⒁l(fā)送的數(shù)據(jù)寫入發(fā)送緩沖區(qū),并從接收緩沖區(qū)讀出收到的數(shù)據(jù)。當成批的數(shù)據(jù)發(fā)送時,一定要先查詢1次發(fā)送數(shù)據(jù)指針,從而計算出可以利用的發(fā)送緩沖區(qū)的大小。圖 10示意了TCP數(shù)據(jù)發(fā)送的程序流程。數(shù)據(jù)接收的過程與發(fā)送過程類似,在此不再贅述。
4、測試及分析
功能測試的關(guān)鍵在于對系統(tǒng)的可用性及穩(wěn)定性進行實驗。為此,建立了一個簡化通訊網(wǎng)絡(luò),采用PC機作為通訊網(wǎng)絡(luò)的一個終端,浮標作為另一終端。通過測試兩者間的通訊情況來實驗本系統(tǒng)功能。
首先,測試網(wǎng)絡(luò)連接情況。作為必要的IP實驗,由PC機將PING命令發(fā)送給浮標,PC機顯示結(jié)果如圖 11所示。
在局域網(wǎng)暢通的情況下,理論上0字節(jié)的PING請求平均響應(yīng)時間為1ms,實驗結(jié)果驗證了網(wǎng)絡(luò)連接的正常。
通過大量轉(zhuǎn)發(fā)數(shù)據(jù)的方法測試系統(tǒng)穩(wěn)定性。由PC機發(fā)送數(shù)據(jù)至浮標,浮標將數(shù)據(jù)直接轉(zhuǎn)發(fā)回PC機,PC機比較發(fā)出數(shù)據(jù)與接收數(shù)據(jù),以判斷誤碼情況。室溫條件下,通訊距離100米,進行三組各持續(xù)10小時的收發(fā)實驗,無丟包現(xiàn)象,誤碼率<10-9,符合設(shè)計要求。要指出的是,由于海況及通訊距離的不同,系統(tǒng)的傳輸誤碼率將有所不同,但在多數(shù)情況下該系統(tǒng)作為指令收發(fā)的通道是完全可靠的。
5、結(jié)論
TCP/IP協(xié)議在浮標系統(tǒng)中的應(yīng)用極大的增強了浮標網(wǎng)絡(luò)的穩(wěn)定性及可擴展性。本設(shè)計采用MSP430微控制器及網(wǎng)絡(luò)協(xié)議棧W3100A很好地實現(xiàn)了浮標系統(tǒng)的低功耗網(wǎng)絡(luò)通訊系統(tǒng),為水聲信道匹配基礎(chǔ)研究提供了理想的網(wǎng)絡(luò)通訊保障。同時本設(shè)計也可以嵌入到其它設(shè)備中,如野外測量儀器、車載系統(tǒng)等,為更多的嵌入式系統(tǒng)提供網(wǎng)絡(luò)化服務(wù),具有非常廣闊的應(yīng)有前景。