侯鴻杰,王竹剛
(1.中國(guó)科學(xué)院 國(guó)家空間科學(xué)中心,北京 100190;2.中國(guó)科學(xué)院大學(xué) 北京100190)
基于MicroBlaze的可靠網(wǎng)絡(luò)接口設(shè)計(jì)
侯鴻杰1,2,王竹剛1
(1.中國(guó)科學(xué)院 國(guó)家空間科學(xué)中心,北京 100190;2.中國(guó)科學(xué)院大學(xué) 北京100190)
Microblaze是Xilinx公司設(shè)計(jì)一種軟核SOPC,它是FPGA芯片內(nèi)部邏輯組成的一種32位軟核嵌入式處理器。為了實(shí)現(xiàn)數(shù)據(jù)從FPGA到計(jì)算機(jī)的高速傳遞,本文介紹了一種基于uIP及LwIP的網(wǎng)絡(luò)協(xié)議棧,提出了一種可靠UDP(reliable UDP,RLUDP)協(xié)議,并完成了嵌入式TCP/IP協(xié)議棧設(shè)計(jì)與實(shí)現(xiàn),實(shí)現(xiàn)了PC與MicroBlaze的高速數(shù)據(jù)傳輸,并對(duì)其性能進(jìn)行了簡(jiǎn)單的測(cè)試,最終達(dá)到了設(shè)計(jì)要求。
MicroBlaze;SOPC;可靠UDP;嵌入式TCP/IP
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)廣泛應(yīng)用于數(shù)傳,遙測(cè),調(diào)制解調(diào)等領(lǐng)域。隨著我國(guó)測(cè)控通信技術(shù)的極速發(fā)展,對(duì)通信基帶數(shù)據(jù)發(fā)射和接收的速度及實(shí)時(shí)性要求日漸提高。針對(duì)FPGA與計(jì)算機(jī)等信源信宿的高速數(shù)傳需求,需要有一種基于現(xiàn)有通信協(xié)議的解決方案。網(wǎng)絡(luò)方式可以滿足長(zhǎng)距離(100 m及以上級(jí)別)的高速數(shù)傳需求。近年來(lái)SOPC技術(shù)得到了迅速的發(fā)展,基于FPGA的SOPC系統(tǒng)結(jié)合FPGA及微處理器的優(yōu)點(diǎn)在點(diǎn)對(duì)點(diǎn)數(shù)傳方面的得到了廣泛應(yīng)用。文獻(xiàn)[1]描述了一種基于MicroBlaze的嵌入式協(xié)議棧移植,并搭建了簡(jiǎn)單LED外設(shè)進(jìn)行驗(yàn)證。文獻(xiàn)[2]提出了基于FPGA的Micro Blaze+DM9000網(wǎng)卡以太網(wǎng)接口方案,并實(shí)現(xiàn)了TCP,UDP通信。基于以上需求及成功的應(yīng)用案例本文采用了Xilinx的FPGA,并使用其嵌入式軟核處理器MicroBlaze,采用嵌入式TCP/IP協(xié)議棧的方法實(shí)現(xiàn)了高速數(shù)傳。
系統(tǒng)總體硬件框圖如圖1所示,系統(tǒng)分為兩部分,分別PC上位機(jī)和FPGA,F(xiàn)PGA端包括MicroBlaze處理器系統(tǒng)[3-5],調(diào)制解調(diào)軟核,PC端主要為上位機(jī)。數(shù)據(jù)調(diào)制解調(diào)模塊主要完成通信物理層相關(guān)的數(shù)字信號(hào)處理工作,MicroBlaze是本系統(tǒng)的核心,在其上運(yùn)行嵌入式TCP/IP協(xié)議棧,其他模塊包括基于DMA[6]的千兆網(wǎng)卡MAC IP核[7],LED外設(shè)[8]等。PC上位機(jī)是協(xié)議棧的客戶端點(diǎn),完成數(shù)據(jù)收發(fā)請(qǐng)求,寄存器配置,連接建立保持等功能。FPGA采用了Xilinx的7系列芯片,由于調(diào)制解調(diào)數(shù)據(jù)有高速傳輸需求,因此采用的是千兆網(wǎng)卡的MAC IP核。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
本系統(tǒng)的數(shù)傳端點(diǎn)分別為FPGA和PC,對(duì)于FPGA協(xié)議棧選擇了在MicroBlaze中實(shí)現(xiàn),總體的協(xié)議棧參考模型如圖2所示,F(xiàn)PGA網(wǎng)絡(luò)接口層使用的是Xilinx的千兆以太網(wǎng)IP核,其余各層則在MicroBlaze中實(shí)現(xiàn)。PC端采用Windows操作系統(tǒng),使用MFC界面[9],用戶代碼主要完成傳輸層以上的處理。
圖2 系統(tǒng)協(xié)議棧模型
UDP協(xié)議是一種面向無(wú)連接的協(xié)議[10],它不提供可靠性,如果數(shù)據(jù)包發(fā)生丟失UDP也不提供丟失信息。然而由于沒(méi)有確認(rèn)信息,差錯(cuò)信息的額外開(kāi)銷(xiāo),UDP相比于TCP具有了高速的特點(diǎn)。由于點(diǎn)對(duì)點(diǎn)的近距離網(wǎng)絡(luò)通信環(huán)境誤碼率較低,并且由于網(wǎng)卡內(nèi)部緩沖區(qū)有限,可能存在丟包的現(xiàn)象,因此設(shè)計(jì)一種通過(guò)重傳來(lái)保證可靠性的UDP成為了最佳選擇。SOPC作為嵌入式系統(tǒng)內(nèi)存資源有限,在高速通信時(shí)可能存在緩存區(qū)溢出的情況,因此需要對(duì)UDP數(shù)據(jù)包的發(fā)送速率進(jìn)行控制,本文設(shè)計(jì)的可靠UDP協(xié)議主要包括了兩部分:超時(shí)重傳,流量控制。在標(biāo)準(zhǔn)的TCP/IP的協(xié)議?;A(chǔ)上加入超時(shí)重傳,流量控制功能,RLUDP的首部設(shè)計(jì)如圖3所示。
圖3 可靠UDP首部
其各字段為:
GROUP ID(組標(biāo)示號(hào)):一次傳輸單元(組)的唯一標(biāo)示,即同一組的數(shù)據(jù)包GROUP ID字段相同,GROUP ID的長(zhǎng)度為16位。
SEQ(包序列號(hào)):一個(gè)傳輸組中的單個(gè)數(shù)據(jù)包的序列號(hào),長(zhǎng)度為8位,功能為標(biāo)示其在一個(gè)數(shù)據(jù)組的前后順序,一組中第一個(gè)數(shù)據(jù)包的SEQ為0。
FLAG(標(biāo)志):8位,各個(gè)位有不同的功能,DEF位表示一個(gè)組的最后一個(gè)包,ACK位代表確認(rèn)包,F(xiàn)CF位代表流量控制標(biāo)志,其余5位保留。
GROUP LENGTH/ACKERR H16:GROUP LENGTH表示一個(gè)組攜帶的數(shù)據(jù)總長(zhǎng)度(不包括首部),以字節(jié)為單位,該字段長(zhǎng)度為16位。ACKERR H16表示該字段對(duì)應(yīng)位置在數(shù)據(jù)確認(rèn)包首部中表示數(shù)據(jù)丟失掩碼的高16位。
PACKET LENGTH/ACKERR L16:PACKET LENGTH表示本數(shù)據(jù)包所攜帶的數(shù)據(jù)長(zhǎng)度,以字節(jié)為單位,長(zhǎng)度為16位,該字段大小不超過(guò)網(wǎng)絡(luò)的MTU與協(xié)議首部的長(zhǎng)度差。ACKERR L16表示該字段對(duì)應(yīng)位置在數(shù)據(jù)確認(rèn)包中標(biāo)示數(shù)據(jù)丟失掩碼的低16位。
CHANNEL(通道號(hào)):RLUDP通道號(hào),長(zhǎng)度為8位,通道號(hào)與應(yīng)用層傳輸需求對(duì)應(yīng)。
OPTION(選項(xiàng)):8位,保留。
ACKERR中各個(gè)二進(jìn)制位對(duì)應(yīng)一組中數(shù)據(jù)包的SEQ序列號(hào),序列號(hào)為n的數(shù)據(jù)包對(duì)應(yīng)ACKERR的第n位二進(jìn)制位。本協(xié)議一組最大包個(gè)數(shù)為32個(gè)。
RLUDP使用通道(channel)的方式來(lái)滿足應(yīng)用層的不同傳輸要求,即調(diào)制數(shù)據(jù)的發(fā)送功能占用一個(gè)通道,調(diào)制數(shù)據(jù)的接收功能占用一個(gè)通道,寄存器讀寫(xiě)占用一個(gè)通道,通過(guò)該方式可實(shí)現(xiàn)RLUDP層的復(fù)用,各通道之間相互獨(dú)立,其功能與傳輸層的端口功能類(lèi)似,在所有的通道中0號(hào)通道為特殊通道,用于維護(hù)PC與FPGA端的連接信息。針對(duì)點(diǎn)對(duì)點(diǎn)簡(jiǎn)單通信環(huán)境,RLUDP并未使用類(lèi)似于TCP的3次握手過(guò)程。當(dāng)PC端啟動(dòng)時(shí),PC向FPGA發(fā)送連接詢問(wèn)包,其首部中SEQ字段為0xFF,CHANNEL字段為0,其余字段也均為0。該通道用于探測(cè)FPGA端的協(xié)議棧是否處于活動(dòng)狀態(tài),連接詢問(wèn)包始終由PC發(fā)送,在空閑時(shí)段,每隔一定時(shí)間就發(fā)送該詢問(wèn)包,F(xiàn)PGA返回的響應(yīng)包僅僅將對(duì)應(yīng)詢問(wèn)包中的ACK置位。若PC收到響應(yīng)包,則表示連接存在,若約定時(shí)間內(nèi)未收到響應(yīng)包,則表示FPGA端未處于活動(dòng)狀態(tài),PC端上位機(jī)釋放所有通道的緩存數(shù)據(jù),禁止所有數(shù)據(jù)的傳輸功能。此時(shí),由用戶決定是否重連FPGA。
數(shù)據(jù)收發(fā)過(guò)程:發(fā)送端一次發(fā)送一組數(shù)據(jù)包 (n個(gè)包,ACK為0),等待ACK包(flag字段中ACK置1的包)。接收端在接收到一個(gè)包后檢查GROUP ID是否和之前的相同,若相同丟棄該包,若不相同則啟動(dòng)定時(shí)器,如圖4(a)所示,若在規(guī)定時(shí)間段內(nèi)收到完整一組包,則向發(fā)送端發(fā)送ACK包,ACK ERR字段為全零,圖 4(b)中規(guī)定時(shí)間內(nèi)未收到完整一組包返回ACK包并在ACKERR中指明丟失包的序號(hào)。由于SEQ指明了數(shù)據(jù)包在一組的序號(hào),所以即使發(fā)生亂序也能將順序糾正,n值的選取直接影響了發(fā)送的速率,n值越大,應(yīng)答的效率越高,等價(jià)傳輸?shù)乃俾示驮娇?,然而?duì)于FPGA而言卻需要更大的緩沖區(qū)。
如圖 4(c)所示,若在接收完一組包后緩沖區(qū)大小小于設(shè)定值,則將返回的ACK包flag標(biāo)志中FCF置位,PC端對(duì)應(yīng)通道停止發(fā)送數(shù)據(jù)包,處于等待狀態(tài)。直到FPGA緩沖區(qū)大小大于設(shè)定值后發(fā)送該組ACK包,F(xiàn)CF復(fù)位。
在PC端,通道號(hào)與應(yīng)用層數(shù)據(jù)傳輸功能進(jìn)行了綁定,每個(gè)數(shù)據(jù)傳輸功能均由一個(gè)線程來(lái)完成。應(yīng)用層數(shù)據(jù)傳輸需求包括3個(gè)線程,數(shù)據(jù)下行線程,數(shù)據(jù)上行線程,寄存器配置線程。RLUDP協(xié)議實(shí)現(xiàn)包括兩個(gè)線程:RS(Receive and Store)線程,RLU(Reliable UDP)線程。RS線程位于RLUDP的最底層,該線程主要負(fù)責(zé)數(shù)據(jù)包的接收工作,區(qū)分ACK包 (Flag中ACK置位)和DATA包(Flag中ACK復(fù)位)以及連接響應(yīng)包(CHANNEL為0),ACK包和DATA包存放于相應(yīng)的包隊(duì)列中,同時(shí)向RLU線程發(fā)送數(shù)據(jù)包到來(lái)的消息。RLU線程是RLUDP的核心線程,該線程工作于消息驅(qū)動(dòng)模式,功能包括RLUDP協(xié)議主要部分:通道復(fù)用,通道分用,流量控制,數(shù)據(jù)發(fā)送,數(shù)據(jù)接收。
單個(gè)通道通過(guò)狀態(tài)機(jī)的模式來(lái)嚴(yán)格控制數(shù)據(jù)傳輸,其狀態(tài)機(jī)如圖5所示。其中有 4個(gè)狀態(tài) net idle,recv wait,ack wait,flow wait。
圖4 可靠UDP發(fā)送過(guò)程
圖5 可靠UDP程序狀態(tài)機(jī)
其中各個(gè)轉(zhuǎn)換條件為:c1表示一組中所有包接收完畢,c2表示收到一組中一個(gè)包,c3表示包發(fā)送完畢,c4表示接收到ACK包(FCF=0),c5表示接收到ACK包(FCF=1)。每個(gè)通道(0號(hào)除外)的初始狀態(tài)為net idle,當(dāng)應(yīng)用層的某個(gè)線程要發(fā)送一組數(shù)據(jù)時(shí),就將數(shù)據(jù)存入該線程對(duì)應(yīng)通道的RLUDP類(lèi)對(duì)象的數(shù)據(jù)緩沖區(qū)中,并通知RLU線程,發(fā)送該組數(shù)據(jù)。此時(shí)若該通道的RLU狀態(tài)為net idle那么就將該組數(shù)據(jù)的各個(gè)數(shù)據(jù)包加上RLU的協(xié)議首部,發(fā)送一組數(shù)據(jù),接著就將RLU狀態(tài)置為ack wait狀態(tài),等待ACK包的到來(lái)。若收到了ACK包,就檢查是否無(wú)數(shù)據(jù)包丟失,若無(wú)丟失就向應(yīng)用層相應(yīng)的線程發(fā)送消息,通知應(yīng)用層該組數(shù)據(jù)已經(jīng)發(fā)送成功,同時(shí)將RLU狀態(tài)置為net idle狀態(tài)。若有數(shù)據(jù)包丟失就發(fā)送丟失的數(shù)據(jù)包,直到收到ACK包指示無(wú)數(shù)據(jù)丟失為止,應(yīng)用層要接收數(shù)據(jù)時(shí),向FPGA應(yīng)用層發(fā)送通知包,該通道處于net idle狀態(tài),接收到數(shù)據(jù)包后轉(zhuǎn)換為recv wait狀態(tài)接收完一組包后就轉(zhuǎn)換為net idle狀態(tài)。
當(dāng)FPGA內(nèi)存剩余空間大小小于指定閾值時(shí),將RLUDP的ACK確認(rèn)包首部的FCF字段置一,PC端接收到該ACK包就將相應(yīng)的通道RLU狀態(tài)置為flow wait狀態(tài),此時(shí)應(yīng)用層線程阻塞在消息等待處,就不會(huì)繼續(xù)發(fā)送下一組數(shù)據(jù)。當(dāng)FPGA的內(nèi)存空間大于閾值時(shí)就再次發(fā)送ACK數(shù)據(jù)包并清除相應(yīng)的FCF標(biāo)志,此時(shí)PC收到該ACK包后就將向應(yīng)用層線程發(fā)送該組數(shù)據(jù)發(fā)送完成的消息,應(yīng)用層可繼續(xù)發(fā)送下一組數(shù)據(jù),同時(shí)RLU狀態(tài)置為net idle。
本協(xié)議棧的傳輸層及以下各協(xié)議根據(jù)uIP和LwIP協(xié)議改寫(xiě)。uIP和LwIP是瑞典計(jì)算機(jī)科學(xué)院的AdamDunkels等開(kāi)發(fā)嵌入式TCP/IP協(xié)議棧,uIP協(xié)議棧針對(duì)嵌入式系統(tǒng)資源有限的特點(diǎn)保留了網(wǎng)絡(luò)通訊必須的協(xié)議[11]。LwIP的主要目的是在保持 TCP/IP協(xié)議主要功能的情況下減少對(duì) RAM的使用[12-13]。在MicroBlaze處理器的主頻限制下,LwIP其他功能會(huì)占用大量的時(shí)間,從而導(dǎo)致數(shù)傳的時(shí)間片有限,無(wú)法保證較高的傳輸速率。
針對(duì)高速數(shù)傳需求,本協(xié)議在uIP的基礎(chǔ)上,保留了ARP,IP,ICMP,UDP,在UDP之上架設(shè)一層可靠UDP協(xié)議。采用LwIP的協(xié)議棧內(nèi)存管理模型,在內(nèi)存中申請(qǐng)一片緩沖池,使用隊(duì)列方式來(lái)對(duì)內(nèi)存進(jìn)行管理,提供內(nèi)存的申請(qǐng)釋放API。MicroBlzae系統(tǒng)采用Xilinx XPS環(huán)境開(kāi)發(fā)[14],軟件開(kāi)發(fā)環(huán)境為EDK[15],協(xié)議棧各層的設(shè)計(jì)如下:
1)網(wǎng)絡(luò)接口層:使用了FPGA的DMA模式下MAC IP核,在協(xié)議棧初始化階段將自定義的內(nèi)存區(qū)指針交給DMA,在MAC IP核中由DMA對(duì)該內(nèi)存區(qū)進(jìn)行操作,數(shù)據(jù)發(fā)送操作也是向DMA傳遞指針。2)ARP協(xié)議:接收操作對(duì)底層接收的數(shù)據(jù)包進(jìn)行解析,只對(duì)廣播包機(jī)地址為本機(jī)的包進(jìn)行處理,發(fā)送操作在初始化階段發(fā)送ARP請(qǐng)求,并執(zhí)行退避算法,在已存在目標(biāo)IP映射的情況下,填充MAC地址,以太網(wǎng)協(xié)議類(lèi)型字段0x8000。3)IP協(xié)議:接收操作對(duì)底層接收的數(shù)據(jù)包長(zhǎng)度,校驗(yàn)和,及協(xié)議等字段進(jìn)行解析,只處理合法的UDP和ICMP包;發(fā)送操作完成IP首部各字段填充。4)ICMP協(xié)議:對(duì)收到的ECHO請(qǐng)求包進(jìn)行應(yīng)答。5)UDP協(xié)議:接收操作對(duì)端口號(hào)進(jìn)行解析,處理端口匹配的數(shù)據(jù)包,發(fā)送操作對(duì)UDP首部進(jìn)行填充。
系統(tǒng)性能測(cè)試主要為數(shù)據(jù)速率的測(cè)試,運(yùn)行MicroBlaze,主頻配置為最大值100 MHz。性能測(cè)試分為兩個(gè)方向:PC到FPGA,發(fā)送116 MB的文件,F(xiàn)PGA只進(jìn)行接收操作,測(cè)試不同的n值(一組包中包的個(gè)數(shù))對(duì)速率的影響,以及其他一些簡(jiǎn)單的功能測(cè)試。進(jìn)行測(cè)試時(shí),首先在PC端進(jìn)行ping的測(cè)試如圖6所示,PC端可成功ping通FPGA,用WireShark抓包軟件可看到ping相關(guān)的ARP包,ICMP包,接著進(jìn)行功能復(fù)用測(cè)試,在發(fā)送調(diào)制數(shù)據(jù)的同時(shí)對(duì)寄存器進(jìn)行讀寫(xiě)操作,可成功配置寄存器,觀察LED可看到配置的寄存器值。
圖6 WireShark抓取的ICMP包
速率測(cè)試,改變n值測(cè)試文件傳輸時(shí)間,得出傳輸速率,n值對(duì)應(yīng)速率測(cè)試結(jié)果如表1所示。從表中可以看出n值越大速率越高。
表1 速率測(cè)試結(jié)果
經(jīng)過(guò)改寫(xiě)后的TCP/IP協(xié)議棧加上RLUDP協(xié)議可完成丟包環(huán)境下的數(shù)據(jù)傳輸,該通信處理器應(yīng)用于SOPC環(huán)境下的測(cè)控通信數(shù)據(jù)傳輸,通過(guò)接收確認(rèn)方式完成了高速通信數(shù)據(jù)的傳輸功能。上位機(jī)采用多線程方式,通過(guò)多通道的方法完成了FPGA[16-17]下位機(jī)多功能復(fù)用。文中的流量控制方法很好的解決了CPU在內(nèi)存資源有限的條件下,對(duì)數(shù)據(jù)傳輸速率的動(dòng)態(tài)控制問(wèn)題,目前該接口已應(yīng)用于相關(guān)的測(cè)控通信系統(tǒng),運(yùn)行狀態(tài)穩(wěn)定可靠,速率高,達(dá)到了系統(tǒng)設(shè)計(jì)需求。
[1]高一沅,黃春暉.基于MicroBlaze的以太網(wǎng)通信系統(tǒng)平臺(tái)設(shè)計(jì)的研究[J].現(xiàn)代電子技術(shù),2007(17):29-31.
[2]薛昊,佘勇,姚振東,等.基于MicroBlaze和DM9000A的以太網(wǎng)接口設(shè)計(jì)[J].通信技術(shù),2013(2):32-34.
[3]何賓.基于AXI4的可編程SOC系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
[4]Xilinx Inc.MicroBlaze Processor Reference Guide[EB/OL].http: //www.xilinx.com/support/documentation/sw_manuals/xilinx14_ 3/mb_ref_guide.pdf
[5]Xilinx Inc.LogiCORE IP AXI Timer v1.03a[EB/OL](2012). http://www.xilinx.com.
[6]Xilinx Inc.LogiCORE IP AXI Ethernet v3.01a[EB/OL](2012).http://www.xilinx.com/support/documentation/ip_documentation/axi_ethernet/v3_01_a/ds759_axi_ethernet.pdf.
[7]Xilinx Inc.LogiCORE IP AXI DMA v6.02a[EB/OL](2012). http://www.xilinx.com.
[8]Xilinx Inc.LogiCORE IP AXI GPIO v1.01.b[EB/OL](2012). http://www.xilinx.com.
[9]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2013.
[10]W.Richard Stevens TCP/IP詳解卷1:協(xié)議[M].范建華,胥光輝,等譯.北京:機(jī)械工業(yè)出版社,2014.
[11]Dunkels A.uIP-A Free Small TCP/IP Stack[EB/OL].(2002-01-15).http://www.sics.se/adam/uip.
[12]Dunkels A.Design an implementation of the LwIP TCP/IP Stack[EB/OL].http://www.sics.se/adam/lwip.
[13]張燕芳,沈麗.基于Xilinx Spartan-3E和LwIP協(xié)議的以太網(wǎng)通訊[J].核電子學(xué)與探測(cè)技術(shù),2013(5):540-543.
[14]Xilinx Inc.EDK Profiling User Guide[EB/OL](2012).http:// www.xilinx.com.
[15]Xilinx Inc.OS and Libraries Document Collection[EB/OL](2013).http://www.xilinx.com.
[16]李威,翟社平.模擬路標(biāo)識(shí)別及其FPGA實(shí)現(xiàn)[J].電子科技,2016(2):45-47.
[17]黨俊博,李哲,李雅俊.基于FPGA的串口通信電路設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2016(7):106-109.
Design of reliable network interface based on MicroBlaze
HOU Hong-jie1,2,WANG Zhu-gang1
(1.National Space Science Center,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100190,China)
Microblaze is a kind of soft-core SOPC designed by Xilinx.It is a 32-bit soft-core embedded processor that consist of FPGA logic units.In order to achieve high-rate data transmission from FPGA to computer,a reliable UDP(RLUDP)protocol is proposed in this paper based on uIP and LwIP network protocol stacks.This paper introduces the design and implement of embedded TCP/IP protocol stacks,and illustrates the high-rate data transmission between PC and MicroBlaze according to the proposed protocol.Simple test on system performance is described,which shows that the designed system meets the design requirement.
MicroBlaze;SOPC;reliable UDP;Embeded TCP/IP
TN925
A
1674-6236(2016)21-0105-04
2015-11-12稿件編號(hào):201511117
侯鴻杰(1991—),男,四川宜賓人,碩士研究生。研究方向:時(shí)間馴服與時(shí)間同步,嵌入式技術(shù)。