楊馮帆,常勁帆,王 錚
(1.中國科學院高能物理研究所 核探測與核電子學國家重點實驗室,北京 100049;2.中國科學院大學 物理科學學院,北京 100049)
高海拔宇宙線觀測站(Large High Altitude Air Shower Observatory,LHAASO)是在我國四川稻城平均海拔4 410 m地區(qū)建設(shè)的以宇宙線觀測研究為核心目標的重大科技基礎(chǔ)設(shè)施[1],是“十二五”國家重大科技基礎(chǔ)設(shè)施項目之一。該項目的科學目標是探索高能宇宙線起源并開展相關(guān)的高能輻射、天體演化甚至暗物質(zhì)分布等基礎(chǔ)科學研究[2]。KM2A探測器陣列是LHAASO的主體陣列之一,包括5 242個電磁粒子探測器(Electromagnetic particle Detectors,ED)和1 171個繆子探測器(Muon Detectors,MD)。ED按15 m間隔,MD按30 m間隔,平均分布在1.3 km2的野外區(qū)域。
在大面積的天體物理實驗中,前端電子學需要測量宇宙線次級粒子擊中不同探測器間相對時間差優(yōu)于1 ns,并將數(shù)字化后的數(shù)據(jù)可靠地送往數(shù)據(jù)獲取中心。為此,本文提出一種可實現(xiàn)高精度時間同步的數(shù)據(jù)傳輸方法,將數(shù)據(jù)傳輸和時鐘傳輸鏈路復用,以滿足KM2A讀出電子學系統(tǒng)對于數(shù)據(jù)傳輸可靠性和時間同步精度的高要求。
KM2A讀出電子學采用無全局硬件觸發(fā)的前端數(shù)字化方案,PMT產(chǎn)生的信號通過短電纜送入電子學[3],如圖1所示。ED單通道平均事例率2 kHz,事例數(shù)據(jù)寬度176 bit,每個探測器所需傳輸帶寬為352 kb/s[4];MD單通道事例數(shù)據(jù)寬度216 bit,平均事例率10 kHz,除此之外,每秒還需上傳一個8 KB的波形包,所以每個MD探測器所需的平均傳輸帶寬為2.2 Mb/s[5]。

圖1 KM2A電子學布局方案
目前實現(xiàn)大范圍時鐘分配系統(tǒng)的方法大體分為基于無線電波[6]、基于專用鏈路和基于以太網(wǎng),如表1所示?;跓o線電波能達到納秒量級的授時精度[7],基于專用鏈路可以實現(xiàn)亞納秒量級的授時精度[8],但是兩者的實現(xiàn)成本過高,不適合大規(guī)模使用。LHAASO實驗采用由CERN開發(fā)的WR(White Rabbit)高精度時鐘同步協(xié)議(WRPTP)。WRPTP協(xié)議能夠通過光纖網(wǎng)絡(luò)實現(xiàn)支持范圍達數(shù)百平方千米、最大節(jié)點數(shù)量過萬的高精度時鐘分配系統(tǒng),授時精度達到亞納秒量級[9]。

表1 時鐘分配系統(tǒng)的主要實現(xiàn)方法
WR技術(shù)是基于同步以太網(wǎng)來實現(xiàn)分布式高精度時間同步,因此每個前端讀出的電子學板數(shù)據(jù)可以通過WR網(wǎng)絡(luò)進行傳輸。顯然,數(shù)據(jù)傳輸和時鐘傳輸鏈路復用降低了系統(tǒng)復雜度、系統(tǒng)建設(shè)及維護成本,提高了可靠性,從成本角度來講是較經(jīng)濟實用的設(shè)計方案。
由于WR時鐘同步技術(shù)只是通過標準以太網(wǎng)來傳輸時鐘同步協(xié)議,在數(shù)據(jù)傳輸方面,根據(jù)OSI的7層協(xié)議體系結(jié)構(gòu),WR實現(xiàn)了千兆以太網(wǎng)物理層和鏈路層,通過WR時鐘同步網(wǎng)絡(luò)進行數(shù)據(jù)傳輸,還需要高層協(xié)議配合工作。本文采用基于TCP/IP的以太網(wǎng)傳輸方案,通過TCP協(xié)議[10]采取多重機制確保數(shù)據(jù)傳輸?shù)目煽啃?同時其通用性也易于后端的數(shù)據(jù)獲取,滿足LHAASO工程的需求。利用FPGA實現(xiàn)TCP/IP協(xié)議棧的第一種方法是在FPGA內(nèi)集成軟核,如在WCDA子系統(tǒng)中使用此方法[11];第二種方法是用硬件描述語言HDL編寫,但是算法復雜且常見IP核均為收費,如日本高能加速器研究機構(gòu)KEK設(shè)計的以太網(wǎng)協(xié)議棧SiTCP[12]。考慮到KM2A有近7 000個節(jié)點,因此數(shù)據(jù)傳輸部分不能占據(jù)FPGA內(nèi)部過多的邏輯資源,可將WR時鐘同步邏輯和探測器數(shù)據(jù)的處理、打包和傳輸邏輯集成在一片F(xiàn)PGA內(nèi),若更換層次較高的FPGA會增加電子學的成本,給項目帶來額外支出。若利用硬件描述語言進行開發(fā),則具有資源利用少、可移植性強、便于擴展和維護的優(yōu)點,因此本文使用硬件描述語言開發(fā)協(xié)議棧。
IEEE-1588協(xié)議又稱PTP協(xié)議,旨在實現(xiàn)微秒到亞納秒的同步準確度。2008年,IEEE推出了修訂版本,即PTPv2。PTPv2采用定時鏈路與數(shù)據(jù)鏈路復用的方式,提高鏈路利用率。同時,其也是一種主從結(jié)構(gòu)的時鐘同步系統(tǒng),即同步過程中需要先選定一個主站,然后從站的本地時鐘根據(jù)收到的主站同步報文計算時間延遲,同步過程[13]如圖2所示。

圖2 PTPv2同步報文交換過程
PTPv2同步報文交換過程具體如下:
1)t1時刻,主站發(fā)送Sync報文到從站,從站記錄收到該報文的t2時刻。
2)主站將時間戳t1嵌入Follow_up報文中,并發(fā)送至從站。
3)從站發(fā)送Delay_Req報文至主站,并記錄發(fā)送時刻t3。
4)主站記錄收到Delay_Req報文的時刻t4,并將其嵌入Delay_Resp報文,發(fā)送至從站。
從站根據(jù)這4個時間戳計算出鏈路傳輸延時和主從時鐘的偏差,對本地時鐘進行補償。鏈路往返延遲為:
dround_trip=(t4-t1)-(t3-t2)
(1)
假設(shè)鏈路完全對稱,即主到從t-ms和從到主t-sm時間相等,則單向的傳輸延時為:
(2)
主從時鐘的偏差為:
(3)
然而PTPv2仍然存在一些限制,影響其授時精度:
1)主從時間差受限于時間戳的精度,以千兆以太網(wǎng)為例,其時鐘頻率為125 MHz,時間戳精度只能達到8 ns。
2)主從站的時鐘為單獨運行,各自振蕩器存在一定偏差,因此需要增加發(fā)送同步報文的頻率,以便及時進行補償,但是這會給通信帶來負荷。
3)PTPv2將鏈路等效為對稱鏈路,而實際鏈路中存在諸多不對稱性,影響同步效果。
CERN的工程師們提出了完全兼容PTPv2協(xié)議的WRPTP協(xié)議,通過增加物理層對同步以太網(wǎng)的支持、時鐘相位測量和WR同步鏈路模型解決以上問題。
對于標準以太網(wǎng),各節(jié)點均對等且獨立運行,而對于同步以太網(wǎng),各節(jié)點構(gòu)成一個樹形的時鐘網(wǎng)絡(luò)拓撲結(jié)構(gòu),如圖3所示[14]。樹形網(wǎng)絡(luò)的根節(jié)點作為整個網(wǎng)絡(luò)的頻率源,子節(jié)點通過數(shù)據(jù)時鐘恢復(Clock and Data Recovery,CDR)技術(shù),從根節(jié)點發(fā)送過來的數(shù)據(jù)流中恢復出同頻時鐘,使得整個網(wǎng)絡(luò)所有設(shè)備的頻率均與根節(jié)點保持同步。

圖3 標準以太網(wǎng)和同步以太網(wǎng)拓撲結(jié)構(gòu)
圖4為WR數(shù)字雙混頻鑒相器工作原理[14],clkA和clkB分別代表本地時鐘和數(shù)據(jù)流中的恢復時鐘,它們之間的頻率相同但相位有差異。

圖4 數(shù)字雙混頻鑒相器工作原理
為測量相位差,引入外部鎖相環(huán)產(chǎn)生的輔助時鐘信號fPLL,該時鐘信號與被測信號clkA和clkB有較小的差異:
(4)
通過測量D觸發(fā)器輸出信號的相位差就可計算出被測信號的相位差:
(5)
其中,pDMTD是D觸發(fā)器輸出信號的相位差,即被測相位差的時間分辨提高至N+1倍。
WR技術(shù)采用單光纖復用方法進行傳輸,WR同步鏈路模型[14]包括主設(shè)備(Master)、光纖鏈路(Link)和從設(shè)備(Slave),如圖5所示。鏈路總延時包括主從設(shè)備的發(fā)送延時ΔTXM、ΔTXS和接收延時ΔRXM、ΔRXS,光纖鏈路的傳輸延時為δMS、δSM。

圖5 WR同步鏈路模型
光纖對不同波長光的折射率不同,導致δMS和δSM有差異,WR定義光纖不對稱系數(shù)α描述δMS和δSM的關(guān)系:
(6)
根據(jù)相對標定法確定ΔTXM、ΔTXS、ΔRXM、ΔRXS和α值,在實際應(yīng)用時無需再次標定。由WR標定手冊[15]的公式推導可知,WR技術(shù)能實現(xiàn)標定后的設(shè)備優(yōu)于1 ns的同步準確度[16]。
WR時鐘同步網(wǎng)絡(luò)由時鐘頻率源、WR交換網(wǎng)和授時節(jié)點三部分組成,采用樹形拓撲結(jié)構(gòu)[14](如圖6所示),其中,時鐘頻率源為根節(jié)點,授時節(jié)點為葉節(jié)點。

圖6 WR時鐘同步網(wǎng)絡(luò)的拓撲結(jié)構(gòu)
WR交換網(wǎng)由若干WR交換機(WR Switch,WRS)組成,每臺WRS共有18個端口,分為兩類:端口1為上行端口,端口2~18為下行端口。WRS可以根據(jù)具體應(yīng)用的需求,通過上行端口與上級WR交換機級聯(lián),實現(xiàn)與上級WRS同步,通過下行端口對下級設(shè)備進行授時。時鐘頻率源由GPS授時設(shè)備、原子鐘和具有使能根時鐘功能的WRS組成,借助GPS和原子鐘、WRS與UTC進行時間同步,即整個時鐘網(wǎng)絡(luò)的節(jié)點可以獲得絕對時間。對于無需絕對時間或是同步精度不高的應(yīng)用,可以省略這兩部分。
授時節(jié)點是時鐘分配系統(tǒng)的授時終端,能夠從WR時鐘網(wǎng)絡(luò)內(nèi)部獲得高精度的同步時鐘。在大型物理實驗中,前端電子學還要完成對探測器信號的讀取、配置等功能。WR雖然提供板卡來完成高精度時鐘的同步功能,但是會增加電子學的成本。因此,LHAASO KM2A采取將WR邏輯和用戶邏輯集成在同一片F(xiàn)PGA的方法,降低了大規(guī)模使用WR設(shè)備時的開銷。在數(shù)據(jù)傳輸方面,WR技術(shù)僅支持千兆以太網(wǎng)物理層和鏈路層,其他高層協(xié)議需用戶自行開發(fā)。因此,本文在WR的基礎(chǔ)上開發(fā)了一套利用硬件描述編寫的TCP/IP協(xié)議棧,實現(xiàn)數(shù)據(jù)網(wǎng)絡(luò)與時鐘網(wǎng)絡(luò)的復用。
在網(wǎng)絡(luò)所使用的各種協(xié)議中經(jīng)常提及的TCP/IP不一定單指這兩個協(xié)議,而表示整個因特網(wǎng)使用的TCP/IP協(xié)議族[17]。在通常情況下,TCP/IP被認為是一個4層協(xié)議系統(tǒng),包括鏈路層、網(wǎng)絡(luò)層、運輸層和應(yīng)用層[10],如圖7所示。TCP/IP是一個開放性的通信協(xié)議規(guī)范,即使計算機之間有不同的物理特性或運行著不同的操作系統(tǒng),也可以通過此協(xié)議來完成數(shù)據(jù)交換。

圖7 TCP/IP協(xié)議族的層次結(jié)構(gòu)
標準TCP/IP協(xié)議棧內(nèi)容復雜,因為任何一個終端要與其他節(jié)點在各種各樣的網(wǎng)絡(luò)形式中通信,都需要不同的控制協(xié)議。但是對于LHAASO實驗,每個電子學板具有獨立的IP地址,通過WR交換機進行連接,形成一個封閉的本地網(wǎng)絡(luò),其網(wǎng)絡(luò)形式比較簡單。數(shù)據(jù)傳輸?shù)哪康闹饕菍⒚總€電子學板的數(shù)據(jù)高效可靠地傳輸給后端DAQ系統(tǒng),數(shù)據(jù)網(wǎng)絡(luò)不需要過多的控制協(xié)議,因此可簡化協(xié)議棧。本文設(shè)計精簡了標準協(xié)議棧,只保留和PC通過Socket通信所必備的協(xié)議。
圖8為基于WRPC(WR PTP Core)的TCP/IP協(xié)議??驁D,包括協(xié)議棧主體部分、WRPC和接口邏輯。協(xié)議棧主體是整個傳輸系統(tǒng)中最重要的組成部分,其控制電子學插件和DAQ系統(tǒng)的通信。接口邏輯完成協(xié)議棧和WRPC之間的數(shù)據(jù)轉(zhuǎn)換寬度。

圖8 基于WRPC的TCP/IP協(xié)議棧框圖
Parser模塊需要根據(jù)RFC 894[18]的規(guī)定解析收到的以太網(wǎng)幀,并按照協(xié)議類型字段,將解析出的各字段遞交到其他協(xié)議模塊中。在數(shù)據(jù)格式解析過程中,需要檢查幀的合法性,計算IP、TCP和UDP協(xié)議的校驗和。此外,Parser需記錄每條鏈路兩個端點的相關(guān)信息(如表2所示),并將這些信息送往其他協(xié)議模塊進行后續(xù)處理。

表2 Parser模塊需解析的鏈路參數(shù)
TCP[19]模塊是協(xié)議棧中最重要的模塊,圖9為TCP模塊的邏輯框圖,由TCP_FSM、TCP_TXBUF、TCP_RXBUF和Packet Generator 4個子模塊構(gòu)成。

圖9 TCP模塊邏輯框圖
TCP_FSM是TCP模塊的核心內(nèi)容,是一個狀態(tài)機,完成TCP的狀態(tài)轉(zhuǎn)換邏輯。圖10為TCP/IP協(xié)議棧的狀態(tài)轉(zhuǎn)換圖,工作在服務(wù)器模式,連接的建立與釋放、擁塞控制、數(shù)據(jù)校驗等功能均在此模塊控制下完成。在經(jīng)過Parser模塊解析后,將協(xié)議類型為TCP的數(shù)據(jù)發(fā)送到該模塊,其中只有MAC地址、IP地址、TCP端口號及校驗和正確的報文,TCP_FSM模塊才進行下一步的解析工作,例如檢查標志位(RX_TCP_FLAGS)、確認本報文的含義等。在每次發(fā)送一個包后,計時器開啟,當ACK收取超時時,TCP_FSM啟動自動重傳操作;同樣,在收到3個相同的ACK時,重傳邏輯也會開始工作。

圖10 TCP FSM狀態(tài)轉(zhuǎn)換
TCP_TXBUF的本質(zhì)為一塊RAM,用來緩存本地應(yīng)用層發(fā)送的數(shù)據(jù),配置為16 KB、32 KB、64 KB。在CONNECTED_FLAG信號置1時,應(yīng)用層向緩存內(nèi)寫數(shù)據(jù)。當緩存滿時,外部電路在128個時鐘內(nèi)停止寫操作。當緩存內(nèi)的數(shù)據(jù)長度超過最大報文長度(Maximum Segment Size,MSS)或是200 μs內(nèi)沒有再向緩存內(nèi)寫數(shù)據(jù)時,TCP_TXBUF會向TCP_FSM提出發(fā)送請求。發(fā)送數(shù)據(jù)的長度取決于接收窗口的大小、MSS和緩存內(nèi)數(shù)據(jù)量的最小值。
Packet Generator在收到TCP_FSM的使能信號后,先將Parser[18]模塊發(fā)送的鏈路信息鎖存,之后按照RFC 894的要求組裝以太網(wǎng)幀,添加TCP、IP、Ethernet的各級首部,計算協(xié)議首部中校驗和字段的內(nèi)容,并根據(jù)仲裁結(jié)果發(fā)送數(shù)據(jù)。
TCP_RXBUF模塊用于存儲經(jīng)過校驗后由其他設(shè)備發(fā)向本節(jié)點的數(shù)據(jù),可配置為8 KB、16 KB、32 KB。當緩存非空時,外部電路可以讀取緩存內(nèi)的數(shù)據(jù)。
對于TCP模塊,只有在計算TCP首部的校驗和字段時,需要對有效載荷部分進行操作,在組裝協(xié)議首部時并不會使用其余各層協(xié)議的數(shù)據(jù)。因此,為避免大量數(shù)據(jù)在組包時移動對協(xié)議棧實時性帶來影響[20],采取有效載荷和協(xié)議首部分別組裝的方法,即Packet Generator僅用來組裝各級協(xié)議的首部,有效載荷緩存在TCP_TXBUF內(nèi),在確定發(fā)送數(shù)據(jù)量后,TCP_TXBUF會先計算此部分數(shù)據(jù)的校驗和,之后將有效載荷的長度和校驗和發(fā)送給Packet Generator,用于TCP首部的組裝。
UDP[21]模塊完成UDP協(xié)議的功能,圖11為UDP模塊的系統(tǒng)框圖。Parser模塊將解析后帶有UDP標記的報文輸入該模塊,進行報文校驗。當應(yīng)用層有數(shù)據(jù)發(fā)送時,將數(shù)據(jù)封裝成UDP用戶數(shù)據(jù)報文。

圖11 UDP模塊系統(tǒng)框圖
本文設(shè)計由于面向高能物理實驗,為方便配置指令的傳輸,需簡化電子學上電時的寄存器配置方式。配置指令采用UDP協(xié)議發(fā)送[12],使探測器數(shù)據(jù)和配置指令相分離。具體的組包格式如圖12所示,PC將配置指令按照要求的格式打包發(fā)送至協(xié)議棧,在Parser模塊解析完畢且驗證格式正確后,Configuration_Parser對指令含義進行分析,確定PC端所要求執(zhí)行的操作。操作執(zhí)行完畢后生成ACK數(shù)據(jù),將其封裝為UDP格式的報文返回至PC,PC收到報文后即可確認此條指令已發(fā)送成功。由于UDP是不可靠的運輸層協(xié)議,節(jié)點發(fā)送的確認報文通過UDP傳輸,也有丟失的可能性,因此PC端應(yīng)增加計時器,當接收回饋超時后啟動指令重傳操作。UDP模塊為可選模塊,在FPGA資源緊張的情況下,可刪除UDP模塊,僅保留TCP模塊并將其作為數(shù)據(jù)傳輸通道。

圖12 配置指令的組包格式
為避免模塊間的沖突,當TCP和UDP同時請求發(fā)送數(shù)據(jù)時,由仲裁模塊確定優(yōu)先工作的模塊。
時鐘同步功能由固件中的WRPC實現(xiàn)[13],此外WRPC也兼容1000Base-Lx數(shù)據(jù)傳輸標準,用戶定義模塊可以通過WR Fabric[22]接口發(fā)送和接收以太網(wǎng)幀。WRPC還實現(xiàn)了部分網(wǎng)絡(luò)層協(xié)議,如ARP、ICMP、IGMP[23]。每個時鐘周期,WRPC以16 bit傳輸數(shù)據(jù),而協(xié)議棧模塊以8 bit傳輸數(shù)據(jù),因此需要在協(xié)議棧模塊與WRPC之間增加一級FIFO進行寬度轉(zhuǎn)換[22],即為圖8中的Interface部分。WRPC收到數(shù)據(jù)后計算FCS,然后通過FPGA的GTP接口發(fā)送至WR網(wǎng)絡(luò)。
為測試TCP/IP帶寬,在實驗室內(nèi)搭建如圖13所示的測試平臺。

圖13 實驗室測試平臺
ED讀出電子學通過四臺級聯(lián)的WRS連接PC。TCP/IP測試程序運行在ED讀出電子學插件上,插件和PC分別作為TCP的服務(wù)器和客戶端。電子學板上只有一片Xilinx Spartan6-100T FPGA,測試邏輯的主時鐘為125 MHz。設(shè)置TCP/IP協(xié)議棧的發(fā)送緩存為16 KB,接收緩存是2 KB。測試數(shù)據(jù)為32 bit循環(huán)累加數(shù),上位機通過調(diào)整累加間隔,改變測試板上傳的數(shù)據(jù)量。上位機程序運行在CentOS 7系統(tǒng)中,需發(fā)送累加間隔指令,讀取Socket并檢查收到的數(shù)據(jù)。此外,上位機還需每秒鐘統(tǒng)計協(xié)議棧的發(fā)送帶寬,當有錯誤發(fā)生時,log文件會輸出錯誤信息。在該測試中的最大報文長度為1 460 Byte的TCP報文。
圖14為TCP/IP協(xié)議棧性能測試結(jié)果,目前測試得到的平均速率約為477.9 Mb/s。對于ED探測器,平均數(shù)據(jù)率為352 kb/s,MD探測器讀出電子學平均數(shù)據(jù)量約為2.2 Mb/s,TCP/IP協(xié)議棧傳輸速率滿足項目需求。

圖14 ED測試插件向PC發(fā)送的數(shù)據(jù)量隨時間的變化情況
圖15表示當數(shù)據(jù)以最大速率傳輸時,ED電子學插件與WRS1的秒脈沖(Pulse Per Second,PPS)信號偏差的分布。由于PPS信號由WR設(shè)備的本地時鐘驅(qū)動計數(shù)器產(chǎn)生,因此可用WR設(shè)備PPS信號前沿代表其本地時鐘的前沿,即PPS信號的偏差可以用來表示W(wǎng)R設(shè)備間的同步精度[14]。由圖15可知,測試期間PPS偏差的均方根(Root Mean Square,RMS)值為19.48 ps,滿足陣列同步精度RMS小于500 ps的要求,說明數(shù)據(jù)傳輸對于WR的時鐘同步?jīng)]有影響。

圖15 ED讀出電子學插件與WRS1的PPS偏差
表3為基于WRPC的TCP/IP協(xié)議棧固件消耗的部分資源,綜合軟件為Xilinx ISE14.4,具有大量的資源集成用戶自定義邏輯。

表3 基于WRPC的TCP/IP協(xié)議棧固件資源利用情況
本文以LHAASO KM2A實驗為背景,借助WR技術(shù)和TCP/IP協(xié)議棧,實現(xiàn)高精度時間同步的數(shù)據(jù)傳輸方法。TCP/IP協(xié)議棧在簡化原有協(xié)議棧的控制協(xié)議且僅保留PC通信協(xié)議的基礎(chǔ)上,無需增加額外硬件,即可實現(xiàn)高效可靠的數(shù)據(jù)傳輸和高精度時鐘同步,降低了系統(tǒng)復雜度、系統(tǒng)建設(shè)和維護成本,并提高了可靠性。測試結(jié)果表明,平均數(shù)據(jù)傳輸速率可達477.9 Mb/s,并未影響WR同步精度,滿足LHAASO KM2A讀出電子學系統(tǒng)對數(shù)據(jù)傳輸速率和時鐘同步的要求。該方案完全由硬件描述語言開發(fā),可方便地擴展到其他多節(jié)點且具有時鐘同步需求的電子學應(yīng)用中,但目前協(xié)議棧的數(shù)據(jù)傳輸能力僅達千兆以太網(wǎng)上限的一半,因此提升協(xié)議棧帶寬將是下一步工作的重點。