王 博,王雪迪,時(shí)廣軼,嚴(yán) 偉
(北京大學(xué) 軟件與微電子學(xué)院,北京 102627)
21 世紀(jì)以來,工業(yè)物聯(lián)網(wǎng)技術(shù)的發(fā)展日新月異。從工業(yè)現(xiàn)場(chǎng)總線到以太網(wǎng),從傳統(tǒng)的以太網(wǎng)到工業(yè)以太網(wǎng),從工業(yè)以太網(wǎng)到時(shí)間敏感網(wǎng)絡(luò)(Time Sensitive Network,TSN),從時(shí)間敏感網(wǎng)絡(luò)再到無線-TSN 技術(shù),每一次技術(shù)革命都蘊(yùn)含著通信技術(shù)的飛躍。當(dāng)前工業(yè)互聯(lián)網(wǎng)技術(shù)的核心是TSN。TSN 通過加入時(shí)間同步機(jī)制、流量整形機(jī)制以及排隊(duì)轉(zhuǎn)發(fā)機(jī)制,使不同業(yè)務(wù)的流量同時(shí)在一個(gè)網(wǎng)絡(luò)中流轉(zhuǎn),同時(shí)能保證實(shí)時(shí)流量的確定性傳輸[1-2]。然而傳統(tǒng)的TSN 技術(shù)主要集中在有線傳輸領(lǐng)域,有線組網(wǎng)有建設(shè)周期長(zhǎng)、成本高、缺少靈活性等缺點(diǎn)。所以TSN 與無線技術(shù)的融合成為學(xué)術(shù)界和工業(yè)界研究的熱點(diǎn)。5G技術(shù)和WiFi 技術(shù)成為業(yè)內(nèi)公認(rèn)的最適合與TSN 融合的兩種候選技術(shù),但是目前并沒有實(shí)際落地的產(chǎn)品和方案[3-5]。
物聯(lián)網(wǎng)技術(shù)飛速發(fā)展,其核心技術(shù)為無線通信。本世紀(jì)初,無線通信技術(shù)開始蓬勃發(fā)展,逐漸走進(jìn)工業(yè)控制領(lǐng)域,為萬物互聯(lián)提供了新的手段。無線技術(shù)可以為端到端的通信設(shè)備提供靈活、低成本的組網(wǎng)環(huán)境。然而,無線通信方案也有其不足:由于信道的復(fù)雜,無線通信缺乏時(shí)間確定性的機(jī)制。目前在工業(yè)界和學(xué)術(shù)界,應(yīng)用于工業(yè)控制領(lǐng)域的無線組網(wǎng)方案還比較少見[6-7]。如何實(shí)現(xiàn)時(shí)間確定和低時(shí)延的無線-TSN 混合網(wǎng)絡(luò),進(jìn)行數(shù)據(jù)的可靠傳輸,這成為工業(yè)界的研究熱點(diǎn)。
李眾和王鵬澄等人設(shè)計(jì)了一種基于ZigBee、WiFi、以太網(wǎng)的網(wǎng)關(guān),該網(wǎng)關(guān)采用STM32 和CC2530 雙處理器架構(gòu)。其中,硬件部分的STM32 作為主處理器進(jìn)行不同網(wǎng)絡(luò)中數(shù)據(jù)的轉(zhuǎn)發(fā),軟件部分移植了LwIP 精簡(jiǎn)TCP/IP 協(xié)議。該研究用軟硬件協(xié)同的方式實(shí)現(xiàn)了物聯(lián)網(wǎng)網(wǎng)關(guān)的系統(tǒng)[8]。
óSCAR SEIJO 等人提出了一種適用于工業(yè)控制應(yīng)用的有線-無線混合體系架構(gòu)。在該架構(gòu)中,使用時(shí)間敏感網(wǎng)絡(luò)(TSN)來控制有線網(wǎng)絡(luò),并且設(shè)計(jì)了針對(duì)于802.11 的媒體訪問控制(MAC)協(xié)議來控制無線網(wǎng)絡(luò)。為了實(shí)現(xiàn)有線和無線網(wǎng)絡(luò)的融合,還提出了一種具有實(shí)時(shí)特性的確定性接入點(diǎn)(AP)的網(wǎng)橋[9]。
印尼大學(xué)工程學(xué)院電氣工程系的Delphi Hanggoro、Lukman Rosyidi、Riri Fitri Sari 設(shè)計(jì)了一種物聯(lián)網(wǎng)多協(xié)議網(wǎng)關(guān)系統(tǒng)。該網(wǎng)關(guān)是用Python 和Lazarus 語言開發(fā)的一個(gè)嵌入式系統(tǒng),并且支持前端用戶顯示界面。該網(wǎng)關(guān)傳輸三種網(wǎng)絡(luò)協(xié)議,其中WiFi 協(xié)議數(shù)據(jù)傳輸?shù)淖畲笱舆t為362 ms[10]。
傳統(tǒng)的網(wǎng)橋系統(tǒng)采用軟件實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換,延遲比較高,無法滿足低時(shí)延、高實(shí)時(shí)性的應(yīng)用場(chǎng)景。本文設(shè)計(jì)了一種支持WiFi 協(xié)議和TSN 協(xié)議在數(shù)據(jù)鏈路層進(jìn)行協(xié)議轉(zhuǎn)換的網(wǎng)橋架構(gòu)。它是一個(gè)基于數(shù)字電路的硬件網(wǎng)關(guān),采用Verilog 語言進(jìn)行電路描述,具有端到端延時(shí)低的優(yōu)點(diǎn)。該電路架構(gòu)支持WiFi 數(shù)據(jù)與TSN 數(shù)據(jù)進(jìn)行協(xié)議格式轉(zhuǎn)換,端到端的最低延遲可達(dá)到微秒級(jí)別。
TSN 是確保網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)間確定性的一個(gè)協(xié)議標(biāo)準(zhǔn)集合,它是隸屬于IEEE 802.1 下的協(xié)議標(biāo)準(zhǔn)。根據(jù)協(xié)議標(biāo)準(zhǔn),TSN 工作在OSI 模型的第二層即數(shù)據(jù)鏈路層。同時(shí),TSN 的大部分機(jī)制都是通過硬件來實(shí)現(xiàn)的,所以處理數(shù)據(jù)流只消耗極少的時(shí)間。WiFi 協(xié)議主要遵循IEEE 802.11 協(xié)議標(biāo)準(zhǔn)。802.11 標(biāo)準(zhǔn)中規(guī)定的協(xié)議幀也包含Address 字段,只要將802.11 與TSN 協(xié)議的Address 進(jìn)行統(tǒng)一編址,就有希望實(shí)現(xiàn)WiFi 網(wǎng)絡(luò)到TSN 網(wǎng)絡(luò)的協(xié)議轉(zhuǎn)換。
基于以上技術(shù)背景,本文設(shè)計(jì)了基于硬件電路的WiFi和TSN 的網(wǎng)絡(luò)協(xié)議轉(zhuǎn)化模型,如圖1 所示,它主要工作于數(shù)據(jù)鏈路層。在數(shù)據(jù)鏈路層,本文設(shè)計(jì)的WiFi-TSN 低時(shí)延轉(zhuǎn)換電路可以完成WiFi 與TSN 的協(xié)議數(shù)據(jù)的拆幀與組幀,包括:TSN 幀頭的拆解與填充、VLAN Tag 的解析與填充、MAC 地址的統(tǒng)一編址與映射、payload 的填充、CRC 校驗(yàn)與重新計(jì)算等。
圖1 WiFi-TSN 協(xié)議轉(zhuǎn)換模型
WiFi 和TSN 的協(xié)議幀轉(zhuǎn)換過程示意如圖2 所示。當(dāng)WiFi 網(wǎng)絡(luò)和TSN 網(wǎng)絡(luò)進(jìn)行橋接,并且有兩種網(wǎng)絡(luò)有統(tǒng)一編制的MAC 地址時(shí),可以進(jìn)行協(xié)議幀的轉(zhuǎn)換。
圖2 WiFi 協(xié)議幀和TSN 協(xié)議幀轉(zhuǎn)換示意圖
協(xié)議轉(zhuǎn)換時(shí)每個(gè)字段的組幀方法如下所述:
(1)對(duì)于地址字段,將WiFi 數(shù)據(jù)幀的Address1、Address2與TSN 數(shù)據(jù)幀的Destination Address、Source Address 直接替換;
(2)WiFi 的幀主體Frame Body 和TSN 的payload 可以直接替換來組幀。但需要注意該字段的字節(jié)長(zhǎng)度,TSN協(xié)議幀的payload 長(zhǎng)度為46~1 500 B,而WiFi 協(xié)議幀的字段長(zhǎng)度為0~2 312 B,所以一種網(wǎng)絡(luò)協(xié)議數(shù)據(jù)長(zhǎng)度太長(zhǎng)或者太短會(huì)造成兩種網(wǎng)絡(luò)不兼容的問題。因此兩種網(wǎng)絡(luò)進(jìn)行橋接時(shí),應(yīng)充分考慮兩種網(wǎng)絡(luò)的實(shí)際情況,設(shè)定TSN 協(xié)議的payload 字段和WiFi 協(xié)議的Frame Body 的長(zhǎng)度為46~1 500 B;
(3)當(dāng)WiFi 協(xié)議數(shù)據(jù)轉(zhuǎn)換為TSN 數(shù)據(jù)時(shí),應(yīng)對(duì)WiFi協(xié)議幀的frame body 進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果填充到TSN協(xié)議幀的length/type 字段中;
(4)WiFi 和TSN 的FCS 字段長(zhǎng)度都為4 B,在協(xié)議轉(zhuǎn)換時(shí),F(xiàn)CS 的位置應(yīng)填充CRC caculator 計(jì)算的結(jié)果;
(5)WiFi 協(xié)議的Preamble 和Header 字段,一種是144 bit的長(zhǎng)幀頭,另一種是72 bit 的短幀頭,組幀時(shí)根據(jù)CPU配置的寄存器進(jìn)行選擇;
(6)TSN 協(xié)議的Preamble 和SFD 分別為7 B 和1 B 的固定值,硬件電路應(yīng)固化這兩個(gè)固定值;
(7)剩余的字段由CPU 進(jìn)行統(tǒng)一配置,組幀時(shí)硬件電路根據(jù)寄存器的配置值進(jìn)行協(xié)議幀的封裝。
本文設(shè)計(jì)的WiFi-TSN 低時(shí)延轉(zhuǎn)換架構(gòu)如圖3 所示。其中,實(shí)線框內(nèi)包含了該系統(tǒng)的所有電路模塊。虛線框內(nèi)部分表示與本系統(tǒng)進(jìn)行數(shù)據(jù)交互的電路部分。黑色箭頭表示數(shù)據(jù)流向。該電路架構(gòu)支持CPU 通過APB 接口對(duì)配置寄存器的內(nèi)容進(jìn)行實(shí)時(shí)更新。Registers 存儲(chǔ)的內(nèi)容指示了WiFi 協(xié)議與TSN 協(xié)議的各個(gè)字段的默認(rèn)值,也可以寄存中斷類型的信息。除此之外,該電路架構(gòu)處理兩個(gè)流向的數(shù)據(jù),上行方向指的是WiFi MAC 到TSN switch,下行方向指的是從TSN switch 到WiFi MAC。對(duì)于上行方向的數(shù)據(jù),該電路對(duì)GMII 收到的協(xié)議幀進(jìn)行識(shí)別和解析、進(jìn)行CRC 校驗(yàn)、緩存入WiFi FIFO、根據(jù)Registers 內(nèi)的配置信息進(jìn)行組幀以完成WiFi 到TSN 的協(xié)議轉(zhuǎn)換、轉(zhuǎn)發(fā)到TSN switch。對(duì)于下行方向的數(shù)據(jù),該電路進(jìn)行上行數(shù)據(jù)處理過程的逆向處理。電路架構(gòu)中每個(gè)模塊的功能分別如下所述:
圖3 WiFi-TSN 協(xié)議轉(zhuǎn)換電路架構(gòu)
(1)APB ports:CPU 通過APB ports 對(duì)電路進(jìn)行寄存器的配置以及讀??;
(2)Registers:寄存WiFi 和TSN 的協(xié)議幀的字段信息、寄存中斷類型信息;
(3)WiFi header checker:通過狀態(tài)機(jī)對(duì)接收到的WiFi協(xié)議數(shù)據(jù)進(jìn)行識(shí)別、校驗(yàn)和緩存;
(4)TSN header checker:通過狀態(tài)機(jī)對(duì)接收到的TSN協(xié)議數(shù)據(jù)進(jìn)行識(shí)別、校驗(yàn)和緩存;
(5)WiFi CRC checker:對(duì)接收到的WiFi 協(xié)議數(shù)據(jù)進(jìn)行CRC32 校驗(yàn),當(dāng)校驗(yàn)出錯(cuò)時(shí),將WiFi 錯(cuò)誤指示信號(hào)置位;
(6)TSN CRC checker:對(duì)接收到的TSN 協(xié)議數(shù)據(jù)進(jìn)行CRC32 校驗(yàn),當(dāng)校驗(yàn)出錯(cuò)時(shí),將TSN 錯(cuò)誤指示信號(hào)置位;
(7)WiFi->TSN translator:將接收到的WiFi 協(xié)議數(shù)據(jù)轉(zhuǎn)換為TSN 協(xié)議數(shù)據(jù);
(8)TSN->W(wǎng)iFi translator:將接收到的TSN 協(xié)議數(shù)據(jù)轉(zhuǎn)換為WiFi 協(xié)議數(shù)據(jù);
(9)WiFi CRC caculator:對(duì)接收到的WiFi 協(xié)議數(shù)據(jù)進(jìn)行CRC32 校驗(yàn),寄存校驗(yàn)結(jié)果;
(10)TSN CRC caculator:對(duì)接收到的TSN 協(xié)議數(shù)據(jù)進(jìn)行CRC32 校驗(yàn),寄存校驗(yàn)結(jié)果;
(11)WiFi FIFO:緩存WiFi 的協(xié)議數(shù)據(jù);
(12)TSN FIFO:緩存TSN 的協(xié)議數(shù)據(jù)。
下面介紹電路架構(gòu)的兩個(gè)關(guān)鍵模塊的工作原理,WiFi header checker 模塊和TSN header checker 模塊。
WiFi header checker 模塊是一個(gè)狀態(tài)機(jī)模塊,該狀態(tài)機(jī)是一個(gè)mealy 型狀態(tài)機(jī)。狀態(tài)機(jī)通過判斷GMII 接收到的8 bit 數(shù)據(jù)和當(dāng)前的狀態(tài),進(jìn)行狀態(tài)的跳轉(zhuǎn)和輸出信號(hào)的改變。狀態(tài)圖如圖4 所示。每個(gè)狀態(tài)釋義及工作細(xì)節(jié)如下:
(1)IDLE:狀態(tài)機(jī)上電之后進(jìn)入IDLE 初始狀態(tài),等待GMII 接收數(shù)據(jù),如果接收到的數(shù)據(jù)為連續(xù)的16 個(gè)8′hff,則判定為長(zhǎng)前導(dǎo)碼,進(jìn)入SFD 狀態(tài);若接收到的數(shù)據(jù)為連續(xù)的7 個(gè)8′h00,則判定為短前導(dǎo)碼,進(jìn)入SFD 狀態(tài);若接收到的數(shù)據(jù)既非長(zhǎng)前導(dǎo)碼也非短前導(dǎo)碼,則繼續(xù)持續(xù)在IDLE 狀態(tài)。
(2)SFD:該狀態(tài)為起始定界符狀態(tài),如果收到的數(shù)據(jù)為16′05CF,則判定接收到了起始界定符,進(jìn)入header狀態(tài),否則回到IDLE 狀態(tài)。
(3)header:該狀態(tài)為MAC header 狀態(tài),每接收1 B 數(shù)據(jù),計(jì)數(shù)器自加1,接收到6 B,則認(rèn)為MAC header 已接收完成,進(jìn)入MDPU 狀態(tài)。
(4)MDPU:該狀態(tài)為MAC 數(shù)據(jù)接收狀態(tài),在接收數(shù)據(jù)的過程中,電路一邊緩存入FIFO 中,一邊進(jìn)行CRC 校驗(yàn)。同時(shí),通過計(jì)數(shù)器對(duì)幀長(zhǎng)度進(jìn)行統(tǒng)計(jì),并通過計(jì)數(shù)器的值來判定并寄存MAC 地址字段,以便下游模塊在協(xié)議轉(zhuǎn)換時(shí)進(jìn)行地址字段的封裝。接收數(shù)據(jù)完成之后,狀態(tài)機(jī)回到IDLE 狀態(tài)等待下一幀的接收。
TSN header checker 模塊也是一個(gè)狀態(tài)機(jī)模塊,工作流程類似于WiFi header checker,但是具體的流程細(xì)節(jié)有所不同。狀態(tài)圖如圖5 所示:每個(gè)狀態(tài)釋義及工作細(xì)節(jié)如下:
圖5 TSN 數(shù)據(jù)接收狀態(tài)機(jī)
(1)上電之后,狀態(tài)機(jī)進(jìn)入idle(空閑)狀態(tài),等待GMII接口的數(shù)據(jù)。當(dāng)GMII 接口收到數(shù)據(jù)之后,狀態(tài)機(jī)進(jìn)入rx_pre(接收前導(dǎo)碼)狀態(tài)。
(2)在rx_pre 狀態(tài)中,狀態(tài)機(jī)邊接收邊檢測(cè)數(shù)據(jù)的值。如果7 B 數(shù)據(jù)中每個(gè)字節(jié)的數(shù)據(jù)值都為01010101,表示接收到的TSN 數(shù)據(jù)的前導(dǎo)碼值正確,進(jìn)入rx_sfd(接收起始符)狀態(tài),否則回到idle 狀態(tài)。
(3)在rx_sfd 狀態(tài)中,狀態(tài)機(jī)邊接收邊檢測(cè)數(shù)據(jù)的值,如果接收到的1 B 數(shù)據(jù)為8′b11010101,表示接收到的TSN 數(shù)據(jù)的起始符值正確,進(jìn)入rx_addr(接收MAC 地址)狀態(tài),否則回到idle 狀態(tài)。
(4)在rx_addr 狀態(tài)中,狀態(tài)機(jī)依次接收6 B 的MAC目的地址和6 B 的MAC 源地址,接收完成后,進(jìn)入rx_vlan(接收VLAN Tag)狀態(tài)。
(5)在rx_vlan 狀態(tài)中,接收并鎖存完畢之后,進(jìn)入rx_leng(接收數(shù)據(jù)長(zhǎng)度)狀態(tài)。
(6)在rx_leng 狀態(tài)中,狀態(tài)機(jī)接收并鎖存數(shù)據(jù)的字節(jié)數(shù)。接收完畢后,進(jìn)入rx_data(接收數(shù)據(jù))狀態(tài)。
(7)在rx_data 狀態(tài)中,狀態(tài)機(jī)接收數(shù)據(jù),并將數(shù)據(jù)緩存入TSN FIFO 中。當(dāng)接收數(shù)據(jù)的數(shù)量達(dá)到rx_leng 狀態(tài)中鎖存的字節(jié)數(shù)后,表示接收數(shù)據(jù)完成,接下來回到idle狀態(tài)。
圖6 展示了WiFi 協(xié)議幀轉(zhuǎn)換為TSN 協(xié)議幀的過程。
當(dāng)電路接收到WiFi 協(xié)議幀時(shí),狀態(tài)機(jī)依次檢查WiFi協(xié)議幀的Preamble、Header 等每個(gè)字段,鎖存WiFi 協(xié)議幀的Address1、Address2 字段,并用WiFi FIFO 緩存Frame Body 字段,接收緩存完畢后,rx_done_wifi 信號(hào)被置位,指示W(wǎng)iFi 數(shù)據(jù)緩存完成。WiFi-TSN translator 模塊在識(shí)別到rx_done_wifi 信號(hào)被拉高的下一個(gè)時(shí)鐘周期,開始從GMII 口發(fā)送TSN 協(xié)議幀的各個(gè)字段,其中Destination Address 和Source Address 字段用之前鎖存的Address1、Address2 字段進(jìn)行填充,VLAN tag 字段使用CPU 配置的值進(jìn)行填充,payload 字段用WiFi FIFO 中取出的數(shù)據(jù)進(jìn)行填充,F(xiàn)CS 用TSN CRC caculator 計(jì)算的值進(jìn)行填充。
圖7 展示了TSN 協(xié)議幀轉(zhuǎn)換為TSN 協(xié)議幀的過程,電路的工作流程為圖6 的逆過程,這里不再贅述。
圖6 WiFi 協(xié)議幀轉(zhuǎn)換為TSN 協(xié)議幀
圖7 TSN 協(xié)議幀轉(zhuǎn)換為WiFi 協(xié)議幀
從圖6、圖7 的仿真波形可以看到,接收TSN 數(shù)據(jù)完成和接收WiFi 數(shù)據(jù)完成的下一個(gè)時(shí)鐘周期,rx_done_tsn 和rx_done_wifi 被置位,再下一個(gè)時(shí)鐘周期,協(xié)議轉(zhuǎn)換后的數(shù)據(jù)幀開始發(fā)送。由此可見,從接收完成數(shù)據(jù)到開始發(fā)送新的協(xié)議類型數(shù)據(jù),僅消耗了2 個(gè)時(shí)鐘周期,本文設(shè)計(jì)的硬件電路進(jìn)行協(xié)議轉(zhuǎn)換的延遲非常小。
交換機(jī)類型的設(shè)備的時(shí)延性能有四種評(píng)判指標(biāo),分別為首位進(jìn)到末位出(FILO)、末位進(jìn)到首位出(LIFO)、首位進(jìn)到首位出(FIFO)和末位進(jìn)到末位出(LILO)。這些指標(biāo)的時(shí)延都是在交換機(jī)的入口和出口進(jìn)行測(cè)量的。
其中,LIFO 可以通過硬件電路的設(shè)計(jì)直接得出。無論是WiFi 協(xié)議幀轉(zhuǎn)換為TSN 協(xié)議幀還是TSN 協(xié)議幀轉(zhuǎn)換為WiFi 協(xié)議幀,LIFO 都為2 個(gè)時(shí)鐘周期,即16 ns。剩余三個(gè)指標(biāo)都與協(xié)議幀的長(zhǎng)度有關(guān)。本文選取LILO 指標(biāo)對(duì)電路的時(shí)延進(jìn)行評(píng)判。
本文通過Vivado 軟件進(jìn)行了大量的仿真測(cè)試,選取了100 B、300 B、600 B、900 B、1 200 B、1 500 B 長(zhǎng)度的協(xié)議幀,根據(jù)仿真圖測(cè)量了端到端時(shí)延,并繪制數(shù)據(jù)圖,如圖8 所示。從圖8 中可以看出,WiFi 協(xié)議幀轉(zhuǎn)換為TSN 協(xié)議幀的LILO 時(shí)延和TSN 協(xié)議幀轉(zhuǎn)換為WiFi 協(xié)議幀的LILO 時(shí)延都和協(xié)議幀長(zhǎng)度呈正相關(guān)。區(qū)別在于:當(dāng)原始協(xié)議幀的字節(jié)數(shù)相同時(shí),TSN 協(xié)議幀轉(zhuǎn)換為WiFi協(xié)議幀的LILO 時(shí)延更大,這是因?yàn)門SN 協(xié)議幀幀頭和幀尾的字節(jié)數(shù)小于WiFi 協(xié)議幀的幀頭和幀尾的字節(jié)數(shù),所以TSN 協(xié)議幀轉(zhuǎn)換為WiFi 協(xié)議幀后,字節(jié)數(shù)變大了,電路的LILO 時(shí)延也就更大了。
圖8 電路的端到端時(shí)延
本文提出了一種在數(shù)據(jù)鏈路層對(duì)兩種協(xié)議幀進(jìn)行協(xié)議轉(zhuǎn)換的方案,設(shè)計(jì)出了一種WiFi-TSN 低時(shí)延轉(zhuǎn)換架構(gòu),并且用Verilog HDL 語言對(duì)硬件電路進(jìn)行設(shè)計(jì)。最后本文通過大量的測(cè)試用例,驗(yàn)證了兩種協(xié)議幀轉(zhuǎn)換的功能正確性,并且測(cè)量分析了電路的端到端時(shí)延,最低時(shí)延可達(dá)微秒級(jí)別。結(jié)果表明,本文設(shè)計(jì)的WiFi-TSN低時(shí)延轉(zhuǎn)換電路能夠正確進(jìn)行協(xié)議轉(zhuǎn)換,并且具有極低的端到端時(shí)延。