宋家平,朱衍明,劉一博,王天昊
(中國(guó)船舶集團(tuán)有限公司 系統(tǒng)工程研究院,北京 100036)
隨著目前集成電路的工藝和技術(shù)的高速發(fā)展,電子信息技術(shù)也在高速發(fā)展中,DSP(digital signal processor)已經(jīng)成為數(shù)字信號(hào)處理技術(shù)應(yīng)用中必不可少的重要器件之一。DSP已經(jīng)廣泛應(yīng)用到航天航空、軍事領(lǐng)域等相關(guān)領(lǐng)[1]。在一些對(duì)信號(hào)處理數(shù)據(jù)量大、實(shí)時(shí)性高、高速計(jì)算的應(yīng)用中,單單依靠DSP芯片的信號(hào)處理能力往往不能滿足需求,高度集成的多處理器系統(tǒng)逐步成為高速信號(hào)處理平臺(tái)的主流方案[2]。FPGA(field programmable gate array)是一種可編程邏輯器件,擁有豐富的高速接口,能通過使用預(yù)建的邏輯塊可重新編程布線資源來實(shí)現(xiàn)特定的電路結(jié)構(gòu)[3]。
當(dāng)前DSP和FPGA的協(xié)同數(shù)字信號(hào)處理系統(tǒng)主要應(yīng)用于雷達(dá)信號(hào)處理[4]、語音信號(hào)處理[5]、圖像處理[6]等領(lǐng)域。在[7]中,實(shí)現(xiàn)了一種能夠?qū)σ蕴W(wǎng)、CAN等不同協(xié)議數(shù)據(jù)進(jìn)行解析、過濾及轉(zhuǎn)發(fā)的多協(xié)議網(wǎng)關(guān),該網(wǎng)關(guān)采用DSP+FPGA的控制器架構(gòu)DSP作為控制核心,調(diào)用FPGA實(shí)現(xiàn)的驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)以太網(wǎng)和CAN數(shù)據(jù)收發(fā),并根據(jù)特定的轉(zhuǎn)發(fā)策略對(duì)接收數(shù)據(jù)進(jìn)行解析、過濾和轉(zhuǎn)發(fā),試驗(yàn)結(jié)果表明,該多協(xié)議網(wǎng)關(guān)單元具有通信接口種類多、數(shù)量多,數(shù)據(jù)轉(zhuǎn)發(fā)實(shí)時(shí)性強(qiáng)、可靠性高,數(shù)據(jù)解析、轉(zhuǎn)發(fā)規(guī)則可編程設(shè)定、靈活性高等特點(diǎn),能夠適應(yīng)不同系統(tǒng)的應(yīng)用需求。在文獻(xiàn)[8]中提出運(yùn)用DSP與FPGA相配合的方式控制CAN總線實(shí)現(xiàn)數(shù)據(jù)傳輸,提高高速條件下數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性,實(shí)驗(yàn)結(jié)果表明,系統(tǒng)數(shù)據(jù)傳輸過程穩(wěn)定可靠,可以基本滿足高速信號(hào)的處理與傳輸要求。
水下無人航行器(UUV,unmanned underwater vehicle)作為一種復(fù)雜的水下機(jī)器人,其探測(cè)系統(tǒng)主要通過聲、光、電、磁等多種物理場(chǎng)信息的采集和處理,實(shí)現(xiàn)對(duì)水下目標(biāo)的搜索、探測(cè)等任務(wù)。因此,利用DSP的數(shù)據(jù)高速處理能力和FPGA的高速接口數(shù)據(jù)交互能力,基于DSP和FPGA協(xié)同處理架構(gòu),在高速數(shù)據(jù)通信、高實(shí)時(shí)性聲、光、電、磁等數(shù)字信號(hào)處理的UUV水下目標(biāo)探測(cè)應(yīng)用場(chǎng)景中,實(shí)現(xiàn)同時(shí)具備兩者優(yōu)勢(shì),發(fā)揮各自特點(diǎn)優(yōu)勢(shì)。實(shí)現(xiàn)了通用的目標(biāo)探測(cè)處理系統(tǒng)平臺(tái)。通過FPGA擴(kuò)展DSP,不僅解決了DSP通信資源不足的問題,而且通過FPGA實(shí)現(xiàn)一些通信接口的邏輯設(shè)計(jì),降低了電路設(shè)計(jì)的復(fù)雜度。并通過以太網(wǎng)完成上位機(jī)到目標(biāo)探測(cè)系統(tǒng)的指令或數(shù)據(jù)映射,以設(shè)備地址定義不同RS232設(shè)備等,通過對(duì)不同地址進(jìn)行讀寫地址數(shù)據(jù)操作,從而實(shí)現(xiàn)了對(duì)不同探測(cè)系統(tǒng)外圍設(shè)備在目標(biāo)探測(cè)前和處理后的控制。
基于DSP的UUV目標(biāo)探測(cè)系統(tǒng)總體設(shè)計(jì)的核心思想是構(gòu)造一個(gè)具有可擴(kuò)展性、標(biāo)準(zhǔn)化、模塊化的硬件平臺(tái),再結(jié)合模塊化軟件設(shè)計(jì),使平臺(tái)具有很高的靈活和通用性。該系統(tǒng)主要實(shí)現(xiàn)了16路RS232串口數(shù)據(jù)的發(fā)送及接收,根據(jù)不同的需求后期可擴(kuò)展 CAN通信以及RS485通信等,實(shí)現(xiàn)對(duì)不同接口的外圍設(shè)備的控制,從而更快地獲得更多、更全面的目標(biāo)信息,便于目標(biāo)的處理和識(shí)別,總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)框圖
由于DSP的接口資源有限,以及FPGA具備多個(gè)工作單元并行處理和實(shí)時(shí)數(shù)據(jù)傳輸?shù)哪芰9],為降低外圍硬件電路的設(shè)計(jì)難度和提高該系統(tǒng)的靈活性、通用性、擴(kuò)展性[10],該系統(tǒng)采用了FPGA來對(duì)DSP進(jìn)行功能的擴(kuò)展。
圖1中,通過TCP/IP協(xié)議棧的網(wǎng)絡(luò)通信實(shí)現(xiàn)以太網(wǎng)到目標(biāo)探測(cè)系統(tǒng)的指令或數(shù)據(jù)映射,以設(shè)備地址定義不同RS232外圍設(shè)備,通過對(duì)不同地址進(jìn)行讀地址數(shù)據(jù)操作,并將這些數(shù)據(jù)信息發(fā)送到FPGA,在FPGA內(nèi)部做FIFO緩存、串并轉(zhuǎn)化等;再通過EMIF接口將處理后的數(shù)據(jù)傳輸給DSP端,充分使用DSP強(qiáng)大的數(shù)據(jù)處理能力和靈活的配置能力[11],實(shí)現(xiàn)目標(biāo)探測(cè)信號(hào)處理和識(shí)別的各種復(fù)雜的算法;DSP端先將數(shù)據(jù)存儲(chǔ)到DDR3中,再根據(jù)需要將數(shù)據(jù)讀出內(nèi)存進(jìn)行相應(yīng)的處理,處理后通過EMIF接口傳輸給FPGA端;最后,再由網(wǎng)絡(luò)通信實(shí)現(xiàn)對(duì)不同RS232外圍設(shè)備的寫操作,從而將最終處理的數(shù)據(jù)映射到不同的外圍設(shè)備,經(jīng)行目標(biāo)識(shí)別后的操作,如:顯示目標(biāo)的特征信息、具體方位信息等。至此便實(shí)現(xiàn)了目標(biāo)探測(cè)信號(hào)處理和識(shí)別的整個(gè)過程。FPGA Flash控制模塊和DSP Flash控制模塊,分別實(shí)現(xiàn)FPGA和DSP各自程序的在線加載和更新。
本系統(tǒng)設(shè)計(jì)的主控單元使用Xilinx 公司Zynq7000系列的XC7Z045T芯片。該芯片集成了ARMCortex-A9雙核處理器的處理系統(tǒng)(PS)和基于Xilinx 可編程邏輯資源的可編程邏輯系統(tǒng)(PL)??蓪?duì)該芯片的PS端和PL端進(jìn)行獨(dú)立開發(fā),并根據(jù)控制需求進(jìn)行系統(tǒng)的軟件和硬件劃分,從而將PS和PL各自的優(yōu)勢(shì)發(fā)揮出來,讓整個(gè)系統(tǒng)呈現(xiàn)出最佳性能,該芯片還具有豐富的外部接口、內(nèi)外部存儲(chǔ)以及靈活的配置[12]。
DSP采用美國(guó)TI公司的8核C66x CorePac芯片TMS320C6678,其核心工作頻率為1.25 GHz,運(yùn)算速度最高可達(dá)320 GMACS/160 GFLOPS。該芯片采用了同構(gòu)多核架構(gòu),具有4 MB供8個(gè)核心訪問的共享內(nèi)存,以及具有SRIO、PCIe等多種接口,每個(gè)核均有512 KB的私有內(nèi)存,可獨(dú)立地執(zhí)行特定的計(jì)算任務(wù)??蓾M足各種不同數(shù)據(jù)傳輸?shù)膽?yīng)用需求,完全向后兼容所有現(xiàn)有的C6000系列定點(diǎn)和浮點(diǎn)DSP[13]。配合外圍DDR3、Flash等,為整個(gè)模塊提供數(shù)字處理平臺(tái)。
多模塊集成設(shè)計(jì)需要具備相應(yīng)的時(shí)鐘分配方案,如圖2所示。在本設(shè)計(jì)中使用1片ADI公司的AD9520時(shí)鐘產(chǎn)生芯片為所有的工作模塊提供低抖動(dòng)、穩(wěn)定的參考時(shí)鐘。該芯片是一款極低噪聲PLL時(shí)鐘頻率合成器,集成VCO、時(shí)鐘分頻器和12路1.6 GHz LVPECL/CMOS輸出,具有自動(dòng)保持和靈活的參考輸入電路,支持非常平穩(wěn)的參考時(shí)鐘切換,該系列還可以提供用于外部VCXO的必要配置[14]。
圖2 時(shí)鐘分配方案
通過配置SPI總線對(duì)其進(jìn)行編程設(shè)計(jì),產(chǎn)生250 MHz、156.25 MHz、100 MHz和50 MHz 的時(shí)鐘分別提供給DDR3工作時(shí)鐘、SRIO模塊時(shí)鐘、FPGA的系統(tǒng)時(shí)鐘及多核DSP內(nèi)核和以太網(wǎng)模塊時(shí)鐘等。
在整個(gè)系統(tǒng)的設(shè)計(jì)中電源設(shè)計(jì)作為平臺(tái)設(shè)計(jì)的基本環(huán)節(jié),為了達(dá)到給多核DSP、FPGA以及其他的芯片提供正確、安全、穩(wěn)定供電的目的,電源部分設(shè)計(jì)也是最為復(fù)雜和繁瑣的一個(gè)環(huán)節(jié)。本系統(tǒng)采用了3片ADI公司的LTM4644降壓型μModule(電源模塊)穩(wěn)壓器為總體系統(tǒng)提供所需要的各種電壓值。
LTM4644可在一個(gè)4~14 V或2.375~14 V(采用一個(gè)外部偏置電源)的輸入電壓范圍內(nèi)運(yùn)作,LTM4644/LTM4644-1支持一個(gè)0.6~5.5 V的輸出電壓范圍。該器件的高效率設(shè)計(jì)使每個(gè)通道能夠提供4 A連續(xù)(5 A峰值)輸出電流,僅需大容量的輸入和輸出電容器[15]。
以太網(wǎng)接口采用TI公司DP83848以太網(wǎng)PHY,DP83848C是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的一款魯棒性好、功能全、功耗低的10/100 Mbps單路物理層(PHY)器件。支持10 Base-T和100 Base-TX以太網(wǎng)外設(shè),對(duì)其他標(biāo)準(zhǔn)以太網(wǎng)解決方案有良好的兼容性和通用性,其電路結(jié)構(gòu)如圖3所示。
圖3 百兆以太網(wǎng)接口
該系統(tǒng)的RS232串口部分采用了模塊化的電路設(shè)計(jì)。FPGA的功能邏輯如圖4所示,它包括發(fā)送模塊、接收模塊和數(shù)據(jù)處理模塊[10]。由于不同的外圍設(shè)備有不同的串口通信需求,因此,該系統(tǒng)每一路串口通道均采用了獨(dú)立的設(shè)計(jì),而且,DSP可根據(jù)各自的需求對(duì)每一路串口動(dòng)態(tài)設(shè)置波特率、起始位、數(shù)據(jù)位、奇偶校驗(yàn)位及停止位等工作參數(shù),以提高其靈活性和通用性。
圖4 串口邏輯設(shè)計(jì)
2.6.1 RS232接口設(shè)計(jì)
RS232接口電平轉(zhuǎn)換芯片采用芯佰微公司的CBM3232。它是一種基于EIA/TIA-232標(biāo)準(zhǔn)和V.28/V.24標(biāo)準(zhǔn)的通訊接口,其供電電壓為3.3 V、具有低功耗需求,高數(shù)據(jù)傳輸率能力,其電路結(jié)構(gòu)如圖5所示。
圖5 RS232接口電路圖
CBM3232有兩個(gè)接收器和一個(gè)驅(qū)動(dòng)器,該設(shè)備可以確保以RS-232標(biāo)準(zhǔn)輸出電平水平的情況下以120 kbps數(shù)據(jù)傳輸率運(yùn)行。典型應(yīng)用包括筆記本計(jì)算機(jī)、輕型便攜掌上電腦、電池供電的設(shè)備、手持式設(shè)備、電子周邊設(shè)備和打印機(jī)[16]。
2.6.2 UART通信
通用異步接收器或發(fā)送器(UART,universal asynchronous receiver/transmitter)是一種全雙工傳輸模式[17],主要用于串行傳遞數(shù)據(jù)。它的基本原理是:一方面,在接收數(shù)據(jù)時(shí),將接收到的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù);另一方面,在發(fā)送數(shù)據(jù)時(shí),將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來進(jìn)行傳輸,實(shí)現(xiàn)將信息在串行通信與并行通信之間傳輸和轉(zhuǎn)換。
UART的傳輸鏈路時(shí)以數(shù)據(jù)幀為基本單元進(jìn)行傳輸?shù)?,如圖6所示。其一幀數(shù)據(jù)長(zhǎng)度一般是5~8 bit,包括起始位、數(shù)據(jù)位、校驗(yàn)位與停止位;可根據(jù)需要選擇是否采用校驗(yàn)位,校驗(yàn)?zāi)J桨ㄆ嫘r?yàn)和偶校驗(yàn),停止位長(zhǎng)度包括1 bit、1.5 bit、2 bit,一般根據(jù)當(dāng)前UART鏈路傳輸要求選用合適的數(shù)據(jù)格式[18]。
圖6 UART串行異步通信數(shù)據(jù)格式
2.6.3 收發(fā)FIFO緩存數(shù)據(jù)
FPGA使用的FIFO一般指的是對(duì)數(shù)據(jù)的存儲(chǔ)具有先進(jìn)先出特性的一個(gè)緩存器,常被用于數(shù)據(jù)的緩存,或者高速異步數(shù)據(jù)的交互也即所謂的跨時(shí)鐘域信號(hào)傳遞[19]。FIFO 可以將連續(xù)的數(shù)據(jù)流在進(jìn)棧和存儲(chǔ)之前集中緩存起來,不僅可以防止數(shù)據(jù)丟失,還可以使若干個(gè)數(shù)據(jù)一起進(jìn)行處理避免頻繁的總線操作。收發(fā)FIFO采用8×256的容量,數(shù)據(jù)位寬度為8位,存儲(chǔ)深度為256 byte,F(xiàn)IFO_empty作為FIFO是否有數(shù)據(jù)的標(biāo)志信號(hào)。
2.6.4 數(shù)據(jù)處理及與DSP的通信
FPGA芯片對(duì)不同的串口通道分配了不同的片選地址,DSP在每個(gè)串口通道進(jìn)行參數(shù)初始化設(shè)置和收發(fā)數(shù)據(jù)設(shè)置時(shí),首先,根據(jù)設(shè)置的片選地址找到相應(yīng)的寄存器,其次,通過總線的形式收發(fā)存放在不同地址中的數(shù)據(jù),最后,根據(jù)需求對(duì)所有通道的數(shù)據(jù)進(jìn)行相應(yīng)處理。根據(jù)圖4中的串口邏輯設(shè)計(jì),當(dāng)接收到其中某一路串口通道數(shù)據(jù)時(shí),DSP讀取該通道對(duì)應(yīng)的FIFO_empty值,若有數(shù),則DSP從該通道對(duì)應(yīng)的寄存器地址獲取已完成串并轉(zhuǎn)換的數(shù)據(jù)。類似地,在發(fā)送指令或數(shù)據(jù)至串口通道時(shí),DSP通過總線把帶有幀頭、幀尾的完整數(shù)據(jù)包發(fā)送到對(duì)應(yīng)的FPGA寄存器,然后,F(xiàn)PGA將該數(shù)據(jù)存入對(duì)應(yīng)串口通道的發(fā)送FIFO中,最后,完成并串轉(zhuǎn)換后把該FIFO中的數(shù)據(jù)轉(zhuǎn)成串行形式逐位傳送至外部設(shè)備。
通過采用VIVADO開發(fā)平臺(tái)和VHDL 硬件描述語言,UART通信在邏輯電路層面開展了模塊化的設(shè)計(jì)和開發(fā)。包括波特率發(fā)生器;UART接收器;UART發(fā)送器三個(gè)功能設(shè)計(jì)模塊。
首先,波特率發(fā)生器的設(shè)計(jì)本質(zhì)就是對(duì)分頻器的設(shè)計(jì)。而分頻器的設(shè)計(jì)最重要的步驟就是確定分頻數(shù),即波特率的分頻因子。本系統(tǒng)的UART通信分頻因子通過給定的UART時(shí)鐘頻率和外圍設(shè)備要求的波特率計(jì)算得出。根據(jù)UUV目標(biāo)探測(cè)系統(tǒng)不同傳感器設(shè)備的通信協(xié)議可對(duì)波特率分頻因子更改。
UART接收器設(shè)計(jì)的目的是接收串行通信數(shù)據(jù)。當(dāng) UART 接收使能變量置1時(shí),開始接收RXD數(shù)據(jù)信號(hào),直至信號(hào)FIFO_empty變?yōu)?1,此時(shí) FIFO已滿。串行通信數(shù)據(jù)接收的幀格式如圖6所示,UART接收器的設(shè)計(jì)通過狀態(tài)機(jī)來實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)移過程如圖7所示。
圖7 UART接收器狀態(tài)轉(zhuǎn)移過程圖
S0表示空閑等待狀態(tài),具體表現(xiàn)是RXD數(shù)據(jù)線為低電平,此時(shí)UART接收器模塊一直在等待狀態(tài)。當(dāng)UART接收的數(shù)據(jù)被檢測(cè)到低電平后,便進(jìn)入到S1狀態(tài)。S1狀態(tài)的目的是消除電磁干擾所產(chǎn)生的低電壓毛刺對(duì)UART接收數(shù)據(jù)的干擾,若是干擾,返回到S0狀態(tài),否則進(jìn)入數(shù)據(jù)接收狀態(tài)S2狀態(tài)。在S2狀態(tài)下通過9位的寄存器完成包含8位數(shù)據(jù)和1位奇偶校驗(yàn)位的數(shù)據(jù)接收和存儲(chǔ),然后進(jìn)入S3狀態(tài)。S3狀態(tài)是對(duì)接收到的數(shù)據(jù)進(jìn)行奇偶校驗(yàn)的狀態(tài),若校驗(yàn)有誤,提示相關(guān)錯(cuò)誤信息;反之,提示完成數(shù)據(jù)接收,并進(jìn)入下一次接收等待的S0狀態(tài)。
UART發(fā)送器模塊設(shè)計(jì)的目的是串行發(fā)送數(shù)據(jù),在發(fā)送使能變量和發(fā)送 FIFO均不為0時(shí),讀取該FIFO中的并行數(shù)據(jù),經(jīng)過并串轉(zhuǎn)換后,在首位加入數(shù)據(jù)起始位,末位加入奇偶校驗(yàn)位以及停止位,形成完整的串行數(shù)據(jù)幀;最后按照事先設(shè)定的波特率完成串行發(fā)送,UART發(fā)送器模塊狀態(tài)轉(zhuǎn)移過程如圖8所示。
圖8 UART發(fā)送器狀態(tài)轉(zhuǎn)移過程圖
S0表示空閑等待狀態(tài),在該狀態(tài)下一直等待主控處理器發(fā)來數(shù)據(jù)。當(dāng)發(fā)現(xiàn)有數(shù)據(jù)寫入時(shí),由S0狀態(tài)轉(zhuǎn)為S1狀態(tài)。S1為奇偶校驗(yàn)位設(shè)置狀態(tài),通過開啟校驗(yàn)電路,根據(jù)寫入的數(shù)據(jù)和奇偶校驗(yàn)規(guī)則或算法設(shè)置并獲取相應(yīng)的校驗(yàn)結(jié)果,并將其添加到數(shù)據(jù)特定位后,完成相應(yīng)的校驗(yàn)位生成,S1狀態(tài)進(jìn)入S2狀態(tài)。S2狀態(tài)為數(shù)據(jù)發(fā)送狀態(tài),將包含數(shù)據(jù)起始位、奇偶校驗(yàn)位以及停止位的完整數(shù)據(jù)幀向外發(fā)送,直至完成所有數(shù)據(jù)的發(fā)送,接著回到S0狀態(tài),進(jìn)入下一次發(fā)送等待狀態(tài)。
由于TMS320C6678的外部存儲(chǔ)器控制接口是EMIF16,因此,EMIF通信的軟件設(shè)計(jì)就是對(duì)EMIF16模塊的初始化參數(shù)配置進(jìn)行設(shè)計(jì)。該EMIF16模塊的寄存器地址配置范圍是0x20C00000~20C000FF,它包括26組寄存器[20]共256字節(jié)。具體包括異步等待周期寄存器(AWCCR)、EMIF模塊中斷相關(guān)寄存器(IRR、IMR、IMSR、IMCP)、EMIF模塊版本及狀態(tài)寄存器(RCSR)、異步配置寄存器(ACR)等[21]。該系統(tǒng)通過對(duì)上述寄存器逐一進(jìn)行相應(yīng)的編程配置,完成了DSP對(duì)EMIF16模塊的初始化編程。寄存器編程配置時(shí)根據(jù)其需求進(jìn)行重點(diǎn)位域的編碼,與本系統(tǒng)無關(guān)的寄存器選擇默認(rèn)值對(duì)其進(jìn)行了配置。完成配置后開始設(shè)計(jì)和實(shí)現(xiàn)上層應(yīng)用系統(tǒng),本系統(tǒng)中DSP和FPGA基于EMIF16異步通信的軟件流程如圖9所示,主要實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送功能。
圖9 EMIF通信軟件流程圖
該系統(tǒng)上電后,EMIF模塊接口完成初始化程序后開始和外接設(shè)備進(jìn)行通信。對(duì)于需要依靠系統(tǒng)告知EMIF模塊進(jìn)行數(shù)據(jù)接收這種被動(dòng)模式下,通過GPIO發(fā)送中斷信號(hào)以實(shí)現(xiàn)輔助接收數(shù)據(jù)的功能;即FPGA端即將發(fā)送的數(shù)據(jù)在準(zhǔn)備好之后,拉高GPIO管腳電平,DSP端收到該GPIO上升沿信號(hào)后觸發(fā)中斷信號(hào)Interrupt,開始執(zhí)行中斷函數(shù),判斷數(shù)據(jù)接收控制寄存器(RCR),并開始接收數(shù)據(jù)。對(duì)于DSP端直接讀取EMIF模塊完成數(shù)據(jù)發(fā)送這種主動(dòng)模式,在每次發(fā)送數(shù)據(jù)時(shí)需要對(duì)FPGA端的數(shù)據(jù)準(zhǔn)備狀態(tài)進(jìn)行查詢,確保發(fā)送控制寄存器(TCR)對(duì)應(yīng)的狀態(tài)準(zhǔn)備已完成才開始發(fā)送相應(yīng)的數(shù)據(jù),以保證發(fā)送數(shù)據(jù)的穩(wěn)定性。
在該系統(tǒng)中,為實(shí)現(xiàn)基于TCP/IP以太網(wǎng)協(xié)議的上位機(jī)與UUV目標(biāo)探測(cè)傳感系統(tǒng)之間的通信,XC7Z045T芯片對(duì)硬件邏輯電路模塊和IP核采用Verilog語言設(shè)計(jì)編程。傳輸控制協(xié)議/網(wǎng)際協(xié)議簡(jiǎn)稱為TCP/IP協(xié)議,它包含多個(gè)不同層次的協(xié)議族組合[22],其中的TCP和IP 協(xié)議是兩個(gè)重要的計(jì)算機(jī)通信協(xié)議。本系統(tǒng)以太網(wǎng)通信的設(shè)計(jì)使用應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層,以及一路物理層組成的五層網(wǎng)絡(luò)協(xié)議,其設(shè)計(jì)流程如圖10所示。
圖10 以太網(wǎng)通信設(shè)計(jì)流程圖
上位機(jī)應(yīng)用程序在通過TCP/IP以太網(wǎng)協(xié)議棧發(fā)送數(shù)據(jù)時(shí),要對(duì)數(shù)據(jù)進(jìn)行逐級(jí)打包和封裝,在該過程中,接收數(shù)據(jù)的首部或尾部將會(huì)被每個(gè)協(xié)議層添加相應(yīng)的信息;在目標(biāo)探測(cè)傳感系統(tǒng)接收通過TCP/IP協(xié)議發(fā)送過來的數(shù)據(jù)時(shí),首先將數(shù)據(jù)流由下往上逐層解析相應(yīng)接收到的數(shù)據(jù),然后去除對(duì)應(yīng)的首部或尾部的信息,保留其發(fā)送的有效數(shù)據(jù)。
應(yīng)用層通過提供各種協(xié)議目的是對(duì)接收的數(shù)據(jù)進(jìn)行解釋。TCP/IP的應(yīng)用層協(xié)議包括文件傳輸協(xié)議(FTP 協(xié)議)、TELNET協(xié)議、超文本傳輸協(xié)議(HTTP 協(xié)議)和簡(jiǎn)單郵件協(xié)議(SMTP 協(xié)議),在使用過程中根據(jù)傳輸不同數(shù)據(jù)的需要選擇不同的協(xié)議。本系統(tǒng)主要采用了文件傳輸協(xié)議(FTP協(xié)議)和超文本傳輸協(xié)議(HTTP 協(xié)議)。
傳輸層主要時(shí)負(fù)責(zé)兩個(gè)端系統(tǒng)之間的可靠數(shù)據(jù)傳輸,為傳輸數(shù)據(jù)兩端的系統(tǒng)提供建立、維護(hù)和斷開連接等功能。在 TCP/IP 的傳輸層協(xié)議族中,一般使用可靠傳輸?shù)膫鬏斂刂茀f(xié)議(TCP)和不可靠傳輸?shù)挠脩魯?shù)據(jù)報(bào)協(xié)議(UDP)。UDP 協(xié)議是不面向連接的,其無法保證數(shù)據(jù)傳輸?shù)目煽啃?;?TCP 協(xié)議是面向連接的,可保證可靠的數(shù)據(jù)傳輸。若傳輸層接收的是 UDP 報(bào)文,則根據(jù) UDP 協(xié)議中對(duì)應(yīng)的端口,分別送給不同的應(yīng)用程序;若接收的是 TCP 報(bào)文,則需要根據(jù) TCP 的狀態(tài)轉(zhuǎn)換過程圖進(jìn)行處理。在本系統(tǒng)中采用 TCP 協(xié)議為傳輸層協(xié)議。
網(wǎng)絡(luò)層在數(shù)據(jù)鏈路層傳輸功能上,進(jìn)一步處理網(wǎng)絡(luò)中發(fā)送方到目的地報(bào)文地址和路由信息等數(shù)據(jù)的通信,并且一般具備為傳輸層提供服務(wù)、組包和拆包、選擇路由等功能,目的是實(shí)現(xiàn)兩個(gè)數(shù)據(jù)傳輸端之間的數(shù)據(jù)透明傳送及相關(guān)的協(xié)議封裝。具體的過程是,網(wǎng)絡(luò)層在接收到數(shù)據(jù)鏈路層發(fā)送的數(shù)據(jù)包后,根據(jù) IP 數(shù)據(jù)幀中的協(xié)議種類,首先去掉 IP 首部數(shù)據(jù),然后形成 TCP、UDP 或是 ICMP報(bào)文后再對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理。網(wǎng)絡(luò)層傳送數(shù)據(jù)采用IP 協(xié)議機(jī)制,它是 TCP/IP協(xié)議棧的核心。因此,本系統(tǒng)的網(wǎng)絡(luò)層們選用了IP協(xié)議和ARP 協(xié)議來實(shí)現(xiàn) IP 地址到 MAC 物理地址的轉(zhuǎn)換。
鏈路層一般包括系統(tǒng)的網(wǎng)絡(luò)接口和設(shè)備驅(qū)動(dòng)應(yīng)用程序,目的是用于定義計(jì)算機(jī)如何連接網(wǎng)絡(luò)。數(shù)據(jù)鏈路層要實(shí)現(xiàn)數(shù)據(jù)傳輸功能必須要連接網(wǎng)絡(luò),它主要負(fù)責(zé)接收和發(fā)送以太網(wǎng)數(shù)據(jù)幀,并將數(shù)據(jù)首部信息剝離,然后根據(jù)以太網(wǎng)數(shù)據(jù)幀的上層協(xié)議分別傳輸?shù)缴弦粚?,完成將所傳輸?shù)脑紨?shù)據(jù)轉(zhuǎn)換成上一層能夠識(shí)別的邏輯幀。
物理層包括MII/GMII(介質(zhì)獨(dú)立接口)子層,PCS(物理編碼子層),PMA(物理介質(zhì)附加)子層,PMD(物理介質(zhì)相關(guān))子層以及MDI(媒介相關(guān)接口)子層。本系統(tǒng)的設(shè)計(jì)使用了MDI子層,即使用 RJ45 接口將設(shè)備接入網(wǎng)絡(luò)。
基于DSP的UUV目標(biāo)探測(cè)通用系統(tǒng)設(shè)計(jì)完成后,需要對(duì)其進(jìn)行功能性數(shù)據(jù)測(cè)試,測(cè)試的內(nèi)容包括網(wǎng)口硬件測(cè)試、系統(tǒng)與上位機(jī)的連接測(cè)試,以及RS232設(shè)備的讀寫操作測(cè)試。其測(cè)試環(huán)境的搭建過程為:首先使用筆記本電腦作為以太網(wǎng)通信上位機(jī),然后通過網(wǎng)線將上位機(jī)與被測(cè)板卡百兆網(wǎng)口相連,最后使用RS232調(diào)試串口觀測(cè)每一路的調(diào)試結(jié)果。
使用JTAG將測(cè)試?yán)?,加載到FPGA中,再使用SDK軟件加載測(cè)試執(zhí)行程序,通過調(diào)試串口觀測(cè)結(jié)果如圖11所示。
圖11 程序加載后,串口的觀測(cè)結(jié)果
以上結(jié)果,顯示百兆網(wǎng)PHY自協(xié)商正常,測(cè)試Server配置正常,目標(biāo)端機(jī)IP:192.168.1.10,端口:7;再通過使用Ping命令,測(cè)試網(wǎng)絡(luò)通信是否正常,其測(cè)試結(jié)果如圖12所示。
圖12 網(wǎng)絡(luò)通信的測(cè)試結(jié)果
由圖12可知,百兆網(wǎng)口通信正常,至此,硬件測(cè)試完畢,進(jìn)行上下位機(jī)軟件功能測(cè)試。
該上位機(jī)軟件通過TCP/IP協(xié)議與下位機(jī)進(jìn)行交互,上位機(jī)作為客戶端,下位機(jī)作為服務(wù)端。下位機(jī)的IP和端口可在上位機(jī)可執(zhí)行程序?qū)?yīng)目錄下的配置文件中配置,實(shí)現(xiàn)上位機(jī)軟件啟動(dòng)時(shí)主動(dòng)連接下位機(jī)的操作。也可以在上位機(jī)軟件啟動(dòng)后連接下位機(jī)失敗時(shí),手動(dòng)輸入下位機(jī)IP和端口進(jìn)行連接。手動(dòng)連接:點(diǎn)擊【網(wǎng)絡(luò)配置】—>【下位機(jī)】,在彈出窗體中輸入正確的IP和端口號(hào),然后點(diǎn)擊連接,完成系統(tǒng)與上位機(jī)的連接測(cè)試,其操作界面和測(cè)試結(jié)果如圖13所示。
圖13 上、下位機(jī)連接的操作界面和測(cè)試結(jié)果
通過上位機(jī),實(shí)現(xiàn)以太網(wǎng)到設(shè)備端的指令或數(shù)據(jù)映射,以設(shè)備地址定義不同RS232設(shè)備,通過對(duì)不同地址進(jìn)行讀寫地址數(shù)據(jù)操作,實(shí)現(xiàn)對(duì)不同RS232設(shè)備的讀寫操作。
1)寫操作測(cè)試:在圖13中的“設(shè)備寫訪問”功能區(qū)中,向設(shè)備地址0x11寫入十進(jìn)制數(shù)據(jù)5,后側(cè)顯示數(shù)據(jù)下發(fā)成功,返回成功標(biāo)識(shí),測(cè)試結(jié)果如圖14左側(cè)所示。
2)讀操作測(cè)試:在圖13中的“設(shè)備讀訪問”功能區(qū)中,向設(shè)備地址0x12發(fā)起讀請(qǐng)求,后側(cè)顯示數(shù)據(jù)下發(fā)成功,回讀十進(jìn)制數(shù)據(jù)4660,測(cè)試結(jié)果如圖14右側(cè)所示。
圖14 寫和讀操作測(cè)試結(jié)果
本文設(shè)計(jì)和實(shí)現(xiàn)了基于DSP的UUV目標(biāo)探測(cè)通用系統(tǒng)。首先考慮到DSP的高速數(shù)據(jù)處理能力,以及FPGA的高速接口數(shù)據(jù)交互能力,通過FPGA對(duì)其進(jìn)行擴(kuò)展。再結(jié)合FPGA自身的編程能力和模塊化的設(shè)計(jì),實(shí)現(xiàn)了每一路RS232通信接口邏輯獨(dú)立化地設(shè)計(jì)。最后利用以太網(wǎng)完成上位機(jī)到探測(cè)系統(tǒng)指令或數(shù)據(jù)的映射,先給不同的RS232設(shè)備定義不同的地址,再通過對(duì)不同地址進(jìn)行讀寫地址數(shù)據(jù)操作,從而實(shí)現(xiàn)了對(duì)UUV探測(cè)系統(tǒng)不同探測(cè)載荷及外圍設(shè)備在目標(biāo)探測(cè)前和識(shí)別后的處理和控制。經(jīng)測(cè)試實(shí)驗(yàn)表明,該系統(tǒng)設(shè)計(jì)方案達(dá)到了對(duì)以太網(wǎng)傳感設(shè)備和不同RS232外圍傳感器快速處理和控制的目的,實(shí)現(xiàn)了基于DSP的UUV目標(biāo)探測(cè)通用系統(tǒng)設(shè)計(jì)。