作者:王威,張秋云,江虹,余恒松,易志強(qiáng),朱笛
引言
隨著信息網(wǎng)絡(luò)與分布式采集技術(shù)的飛速發(fā)展,在智能交通、工業(yè)測(cè)控等領(lǐng)域,對(duì)網(wǎng)絡(luò)數(shù)據(jù)傳輸處理速度、可靠性及實(shí)時(shí)性的要求越來越高。同時(shí),現(xiàn)場(chǎng)可編程門陣列(FPGA)憑借日益豐富的片內(nèi)資源、運(yùn)行速度快和并行處理等特點(diǎn),使其成為高速采集傳輸系統(tǒng)設(shè)計(jì)的一個(gè)有效手段。以太網(wǎng)標(biāo)準(zhǔn)TCP/IP協(xié)議是Internet互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),其不依賴固定的硬件或軟件系統(tǒng),可以集成于不同的網(wǎng)絡(luò)環(huán)境中,具有通信可靠、使用普遍、易于適配接口等優(yōu)點(diǎn)。但傳統(tǒng)的基于CPU軟件實(shí)現(xiàn)的TCP/IP協(xié)議處理方式,占用大量的CPU資源,消耗存儲(chǔ)空間,無論在處理速度還是穩(wěn)定性方面,都無法與基于硬件實(shí)現(xiàn)的相比。韓國WIZnet公司推出的以太網(wǎng)控制芯片W5500支持硬件TCP卸載引擎(TCP Offload Engine,TOE),其集成了TCP/IP全硬件協(xié)議棧,能夠大幅提高應(yīng)用設(shè)備的網(wǎng)絡(luò)性能,降低CPU占用率,減少FPGA邏輯資源使用,縮短響應(yīng)時(shí)間。
針對(duì)上述研究現(xiàn)狀和分布式采集場(chǎng)景分析,本文介紹了一種基于FPGA和TOE架構(gòu),實(shí)現(xiàn)TCP/IP協(xié)議數(shù)據(jù)傳輸?shù)亩嗦凡杉c切換系統(tǒng)。該系統(tǒng)涉及并行數(shù)據(jù)采集、多路通道切換、TCP/IP協(xié)議通信等模塊,并通過上位機(jī)PC(或鍵盤與LCD)進(jìn)行遠(yuǎn)程(或本地)準(zhǔn)確控制與實(shí)時(shí)顯示,滿足多路通道切換、模擬信號(hào)并行采集、可靠性傳輸?shù)裙δ艿男枨蟆?/p>
1 系統(tǒng)總體設(shè)計(jì)
該系統(tǒng)包含上、下位機(jī)設(shè)計(jì),組成一個(gè)完整的多路采集與切換系統(tǒng),系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。上位機(jī)部分中的PC控制與顯示子系統(tǒng),可根據(jù)監(jiān)測(cè)需求,遠(yuǎn)程對(duì)下位機(jī)進(jìn)行配置和部署,并實(shí)時(shí)顯示獲取的數(shù)據(jù)。LCD顯示與鍵盤控制子系統(tǒng),與下位機(jī)安裝為一體,可獨(dú)立地對(duì)下位機(jī)進(jìn)行通道控制與信號(hào)檢測(cè),提升該系統(tǒng)的便捷性和實(shí)用性。下位機(jī)作為該系統(tǒng)的主體部分,主要由基于FPGA芯片的核心調(diào)度、數(shù)據(jù)處理、通道管理、信號(hào)調(diào)理與采集、網(wǎng)絡(luò)通信、串口通信、單片機(jī)控制及電源與時(shí)鐘管理七大模塊組成。FPGA核心調(diào)度模塊是下位機(jī)的核心部分,完成對(duì)下位機(jī)各個(gè)模塊間的協(xié)調(diào)運(yùn)行與邏輯控制,實(shí)現(xiàn)全局時(shí)鐘管理、TCP/IP協(xié)議與串口通信、命令和數(shù)據(jù)的組幀與解析、通道切換與配置、信號(hào)采集與數(shù)據(jù)處理等功能。
基本工作原理:系統(tǒng)上電后,首先等待FPGA初始化,完成默認(rèn)配置,被測(cè)外圍接口保持關(guān)閉,下位機(jī)處于TCP服務(wù)器模式,等待上位機(jī)連接。上位機(jī)PC連接成功后,進(jìn)行通道切換與選擇命令配置,并通過以太網(wǎng)將命令數(shù)據(jù)傳至下位機(jī)。然后,下位機(jī)通過以太網(wǎng)通信模塊接收TCP數(shù)據(jù),解析數(shù)據(jù)獲取命令后,逐一對(duì)各通道管理模塊進(jìn)行配置,切換到被測(cè)通道,并對(duì)其中8路通道的電壓和電流進(jìn)行信號(hào)調(diào)理與采集。每次采集的數(shù)據(jù)和狀態(tài)信息,再通過數(shù)據(jù)處理模塊組幀后,交付給以太網(wǎng)通信模塊以TCP/IP協(xié)議發(fā)送數(shù)據(jù)至上位機(jī)。最后,上位機(jī)對(duì)接收數(shù)據(jù)進(jìn)行分析和顯示,完成對(duì)多路通道的遠(yuǎn)程切換、采集與監(jiān)測(cè)。
若無PC連接,系統(tǒng)可使用鍵盤進(jìn)行命令配置,LCD顯示部分測(cè)試結(jié)果,采用串口通信與下位機(jī)進(jìn)行命令和數(shù)據(jù)的交互,實(shí)現(xiàn)本地便捷控制與監(jiān)測(cè)。
2 系統(tǒng)硬件及FPGA設(shè)計(jì)
多路采集與切換系統(tǒng)的硬件設(shè)計(jì)主要由電源與時(shí)鐘模塊、FPGA邏輯控制模塊、以太網(wǎng)通信模塊、通道管理與切換模塊、ADC信號(hào)采集模塊和STM32控制模塊組成,硬件設(shè)計(jì)結(jié)構(gòu)框圖如圖2所示。
2.1 FPGA邏輯控制模塊
FPGA邏輯控制模塊采用了基于Xilinx公司Spartan-6系列的XC6SLX150-2FG484C開發(fā)的核心板AC6150具有高速、高帶寬、高容量等特點(diǎn)。這款核心板尺寸為60 mm×60 mm,搭載FPGA上電配置功能,擴(kuò)展用戶I/O接口168個(gè),并具備豐富的內(nèi)部邏輯資源。其作為載板直插使用,為工程技術(shù)人員提供了一個(gè)簡(jiǎn)便的FPGA使用方案,極大降低了設(shè)計(jì)復(fù)雜度與周期。
FPGA是下位機(jī)部分的核心控制單元,邏輯設(shè)計(jì)采用硬件描述語言(Verilog HDL)和集成開發(fā)套件ISE14.7實(shí)現(xiàn)。FPGA邏輯控制模塊的頂層設(shè)計(jì)包括時(shí)鐘管理與系統(tǒng)復(fù)位、W5500控制、數(shù)據(jù)處理、通道切換、AD采集控制以及STM32控制等子模塊,頂層模塊負(fù)責(zé)各個(gè)子模塊的連接和邏輯綜合,F(xiàn)PGA頂層設(shè)計(jì)結(jié)構(gòu)如圖2中間虛線框中所示。
2.2 以太網(wǎng)TCP/IP通信模塊
以太網(wǎng)TCP/IP通信模塊主要采用WIZnet公司的一款多功能全硬件以太網(wǎng)接口芯片W5500,內(nèi)部集成10/100 M以太網(wǎng)控制器,嵌入TOE技術(shù),支持TCP、UDP、IPv4等協(xié)議,無需考慮協(xié)議內(nèi)部各層關(guān)系,不涉及操作系統(tǒng),只需要正確配置就可以實(shí)現(xiàn)網(wǎng)絡(luò)連接,接口電路簡(jiǎn)單、編程靈活方便。該模塊電路如圖3所示。
FPGA基于SPI(外部串行接口)協(xié)議對(duì)W5500內(nèi)部的寄存器區(qū)和內(nèi)存進(jìn)行讀寫訪問。寄存器區(qū)由通用寄存器區(qū)(用于配置網(wǎng)關(guān)、子網(wǎng)掩碼、源IP和源MAC地址等)和8個(gè)Socket_n(0≤n≤7)寄存器區(qū)(用于配置Socket端口號(hào)、模式、配置命令等)組成。W5500內(nèi)嵌32 KB緩存(接收內(nèi)存和發(fā)送內(nèi)存,各占16 KB),用于緩存以太網(wǎng)傳輸中已接收和待發(fā)送的用戶數(shù)據(jù)。
采用FPGA+W5500的方式實(shí)現(xiàn)基于TCP/IP協(xié)議的硬件通信系統(tǒng)設(shè)計(jì),具有狀態(tài)穩(wěn)定、體積小、成本低、高速可靠等優(yōu)勢(shì)。FPGA通過W5500控制子模塊實(shí)現(xiàn)W5500的狀態(tài)機(jī)控制和SPI協(xié)議通信,實(shí)現(xiàn)對(duì)W5500芯片的控制和數(shù)據(jù)交互。W5500的狀態(tài)機(jī)控制包括對(duì)W5500控制器的狀態(tài)初始化、寄存器配置、TCP連接管理、內(nèi)存數(shù)據(jù)讀寫等功能,其主控制狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移如圖4所示。
FPGA邏輯設(shè)計(jì)中,將W5500配置為TCP服務(wù)器模式,等待上位機(jī)PC(作為客戶端)進(jìn)行主動(dòng)連接。建立連接后,PC下發(fā)通道切換、采集等命令數(shù)據(jù),通過以太網(wǎng)傳輸至W5500。FPGA檢測(cè)到W5500接收中斷后,從W5500接收緩存中讀取數(shù)據(jù),然后交給數(shù)據(jù)處理模塊,進(jìn)行數(shù)據(jù)解析,并將命令信息下發(fā)到相關(guān)控制模塊。
數(shù)據(jù)處理模塊主要完成對(duì)接收(和待發(fā)送)的TCP數(shù)據(jù)進(jìn)行解析(和組幀);W5500控制模塊的核心在于TCP的連接建立、數(shù)據(jù)接收和數(shù)據(jù)發(fā)送控制。使用Socket_0作為與上位機(jī)通信的端口,TCP通信建立、數(shù)據(jù)收發(fā)流程如圖5所示。經(jīng)回環(huán)測(cè)試,TCP傳輸最高速率達(dá)40 Mb/s,滿足眾多嵌入式應(yīng)用需求。
2.3 通道管理與切換模塊
通道管理與切換模塊采用通道選通芯片(ADG1408YRUZ)、電平轉(zhuǎn)換芯片(LSF0108DCUR)、控制切換芯片(ADG819BRM)和繼電器(G3FD-X03SN)組成,以實(shí)現(xiàn)對(duì)外圍不同接口管腳的選通、驅(qū)動(dòng)和控制。通道選通芯片實(shí)現(xiàn)8通道選一的選通功能;控制切換芯片和繼電器控制外圍輸入通道是否接入;FPGA管腳輸出電平為3.3 V,難以直接驅(qū)動(dòng)外圍器件,通過電平轉(zhuǎn)換芯片將輸出轉(zhuǎn)換為5 V,以提高驅(qū)動(dòng)能力。
當(dāng)數(shù)據(jù)解析模塊收到通道切換命令后,F(xiàn)PGA通過通道切換子模塊,實(shí)現(xiàn)對(duì)外圍芯片的控制,完成多路不同通道的管理和切換。
2.4 ADC信號(hào)采集模塊
ADC信號(hào)采集模塊由電壓采集和信號(hào)調(diào)理子模塊組成。電壓采集子模塊選用ADI公司的高精度模數(shù)轉(zhuǎn)換芯片AD7609BSTZ,它是一款18位、8通道、真差分、同步采樣模數(shù)數(shù)據(jù)采集系統(tǒng)(DAS) ,最高吞吐率達(dá)200 kS/s。該系統(tǒng)采用2片AD7609芯片分別對(duì)8路被測(cè)通道的電壓和電流進(jìn)行采集,模擬信號(hào)輸入范圍采用±5 V。在采集前端,連接信號(hào)調(diào)理子模塊,選用電流轉(zhuǎn)電壓芯片(MAX4080SASA+)將被測(cè)電流信號(hào)轉(zhuǎn)換為模擬電壓信號(hào),再經(jīng)過電壓信號(hào)調(diào)理芯片(AD8276ARZ)和適當(dāng)高精度電阻進(jìn)行分壓,使輸入AD芯片的被測(cè)模擬信號(hào)范圍在-5 V~+5 V之間。
FPGA完成對(duì)通道的管理切換后,通過AD采集控制子模塊,開啟對(duì)接入被測(cè)的8路通道AD采集。采樣頻率為10 kHz,16路并行采集,采樣速度達(dá)2.88 Mb/s(16×18 bit×10 kHz/s)。AD采集控制子模塊采用串行工作方式,每完成一次采集,將數(shù)據(jù)交由數(shù)據(jù)處理子模塊進(jìn)行組幀,再通過W5500將數(shù)據(jù)以TCP/IP協(xié)議傳輸至上位機(jī)PC。
3 系統(tǒng)軟硬件綜合測(cè)試
3.1 FPGA邏輯設(shè)計(jì)仿真與測(cè)試
進(jìn)行FPGA邏輯設(shè)計(jì)時(shí),仿真分析是必不可少的環(huán)節(jié),利用ISE14.7自帶的仿真軟件ISim和在線邏輯分析軟件ChipScope,有利于驗(yàn)證設(shè)計(jì)的正確性,提高設(shè)計(jì)效率。由于篇幅有限,以下針對(duì)該系統(tǒng)FPGA設(shè)計(jì)的重難點(diǎn)模塊之一——以太網(wǎng)TCP/IP通信模塊的W5500數(shù)據(jù)發(fā)送功能,進(jìn)行仿真和測(cè)試分析。
以太網(wǎng)TCP/IP通信通過控制W5500實(shí)現(xiàn),對(duì)W5500控制模塊進(jìn)行數(shù)據(jù)發(fā)送測(cè)試仿真如圖6所示。在接收到命名標(biāo)志Cmd_Receive后,將測(cè)試數(shù)據(jù)Test_Data_r[7:0]依次存入B_FIFO中,再以單bit的方式從B_FIFO中讀出,結(jié)合SPI協(xié)議將數(shù)據(jù)發(fā)送至W5500發(fā)送緩存;數(shù)據(jù)全部寫入后,給出寫入完成標(biāo)志W(wǎng)5500WrFlag,以此開啟W5500進(jìn)行TCP數(shù)據(jù)發(fā)送。使用ChipScope對(duì)實(shí)測(cè)信號(hào)在線“抓取”,得到W5500數(shù)據(jù)發(fā)送測(cè)試信號(hào)截圖如圖7所示,實(shí)測(cè)與仿真結(jié)果一致,表明該設(shè)計(jì)的正確性。
3.2 系統(tǒng)測(cè)試與效果
下位機(jī)采用標(biāo)準(zhǔn)2U機(jī)箱設(shè)計(jì),可同時(shí)連接8臺(tái)被測(cè)設(shè)備,每臺(tái)設(shè)備有13路不同的接口,共需控制8組×13路通道的切換。上位機(jī)的命令配置界面如圖8所示,通過勾選通道組合,實(shí)現(xiàn)多通道選擇和切換命令的配置。圖8中展示了同時(shí)開啟對(duì)8臺(tái)被測(cè)設(shè)備的2通道監(jiān)測(cè),并施加控制信號(hào)1、4的命令配置過程。
使用網(wǎng)絡(luò)封包分析軟件WireShark對(duì)系統(tǒng)的TCP/IP傳輸過程進(jìn)行測(cè)試,下位機(jī)為服務(wù)器(IP:192.168.1.168,端口號(hào):10000),上位機(jī)PC為客戶端(IP:192.168.1.1,端口號(hào):8001),TCP/IP通信測(cè)試的流量統(tǒng)計(jì)結(jié)果如圖9所示。圖中給出“三次握手”建立TCP連接,和命令數(shù)據(jù)發(fā)送接收與ACK回復(fù)過程,表明TCP/IP通信正常。
在2號(hào)通道接入被測(cè)器件,上位機(jī)采用圖8中的通道切換命令配置,系統(tǒng)測(cè)試對(duì)應(yīng)的PC和LCD監(jiān)測(cè)顯示結(jié)果如圖10所示,PC在報(bào)表界面可實(shí)時(shí)顯示被測(cè)8路通道的電壓和電流,LCD以10 Hz的頻率刷新顯示監(jiān)測(cè)結(jié)果。經(jīng)長期試驗(yàn)和測(cè)試結(jié)果表明,PC與LCD顯示結(jié)果與實(shí)際一致,測(cè)試效果良好,顯示畫面穩(wěn)定,操作便捷流暢。
4 結(jié)論
本文設(shè)計(jì)了一種基于FPGA和TCP/IP協(xié)議的多路采集與切換系統(tǒng),其采用FPGA+W5500的方式實(shí)現(xiàn)了基于硬件的TCP/IP協(xié)議棧,并詳細(xì)介紹了該系統(tǒng)的TCP/IP通信、通道切換和多路采集部分的設(shè)計(jì)方法。綜合測(cè)試結(jié)果表明,系統(tǒng)可以實(shí)現(xiàn)多路采集與切換控制的功能,穩(wěn)定可靠、使用便捷,具有一定的實(shí)用價(jià)值。
責(zé)任編輯:gt
評(píng)論
查看更多