丁濤杰,何勁馳,鄭利華,朱柏楊,王進(jìn)祥
(1.中科芯集成電路有限公司,江蘇無(wú)錫 214072;2.哈爾濱工業(yè)大學(xué)航天學(xué)院,哈爾濱 150001)
高能物理學(xué)是人類探索物質(zhì)世界的一門重要學(xué)科,其研究?jī)?nèi)容是構(gòu)成宇宙和物質(zhì)的粒子及其相互作用方式[1]。為了創(chuàng)造高能物理學(xué)實(shí)驗(yàn)環(huán)境并提供觀測(cè)方式,世界上已建有多座粒子實(shí)驗(yàn)裝置。歐洲核子研究組織CERN 的強(qiáng)子對(duì)撞機(jī)LHC 全長(zhǎng)可達(dá)27 km[2],有著多種探測(cè)器,其離子束能量極高,波長(zhǎng)極短,甚至可以“觀測(cè)”到原子內(nèi)部。蘭州重離子加速器將放射性束技術(shù)與高品質(zhì)重離子束技術(shù)相結(jié)合,具有能量范圍高、束流種類多、束流質(zhì)量高等優(yōu)點(diǎn)[3-5]。
粒子實(shí)驗(yàn)中會(huì)在短時(shí)間產(chǎn)生大量的數(shù)據(jù),這要求實(shí)驗(yàn)設(shè)備能夠以極快的速度完成數(shù)據(jù)傳輸。隨著高能物理學(xué)的發(fā)展,粒子實(shí)驗(yàn)的能量越來(lái)越高,實(shí)驗(yàn)產(chǎn)生的數(shù)據(jù)量也不斷增加。目前,歐洲的強(qiáng)子對(duì)撞機(jī)LHC將CMS 探測(cè)器的傳輸系統(tǒng)由VME 架構(gòu)升級(jí)為MicroTCA 架構(gòu)[6],ATLAS 探測(cè)器搭建了ATCA 架構(gòu)的數(shù)據(jù)傳輸系統(tǒng)[7]。但是國(guó)內(nèi)的實(shí)驗(yàn)設(shè)備發(fā)展較為緩慢,北京正負(fù)電子對(duì)撞機(jī)譜儀仍采用VME 架構(gòu)[8],蘭州重離子加速器采用了PXI 架構(gòu)[9],這些架構(gòu)都使用并行總線完成板卡間的數(shù)據(jù)傳輸。但是,并行總線在時(shí)鐘頻率提高時(shí)會(huì)造成相鄰數(shù)據(jù)線間的時(shí)鐘偏斜,隨著速度的提高,提升速度的難度越來(lái)越大。這就導(dǎo)致數(shù)據(jù)傳輸系統(tǒng)越來(lái)越跟不上高能物理學(xué)的發(fā)展,無(wú)法滿足粒子實(shí)驗(yàn)的需求。
本文基于MicroTCA 系統(tǒng)設(shè)計(jì)了一種AMC 板卡,使用的FPGA 是XC7K70TFBG676[10]。該板卡用于粒子實(shí)驗(yàn),負(fù)責(zé)接收像素采集前端板通過(guò)光纖傳來(lái)的數(shù)據(jù),并通過(guò)背板的PCIe 總線將其轉(zhuǎn)發(fā)給用于數(shù)據(jù)匯總和處理的AMC 板卡,既能夠提供足夠的傳輸速度,又有著巨大的發(fā)展?jié)摿Α?/p>
該數(shù)據(jù)傳輸系統(tǒng)主要使用了AMC 板上的FPGA和時(shí)鐘芯片,其結(jié)構(gòu)如圖1 所示。該系統(tǒng)可以分為4 個(gè)部分:數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊、跨時(shí)鐘域模塊以及時(shí)鐘模塊。數(shù)據(jù)接收模塊負(fù)責(zé)從光口接收前端板傳輸來(lái)的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊負(fù)責(zé)通過(guò)PCIe 總線將數(shù)據(jù)傳輸給數(shù)據(jù)匯總AMC;由于數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊需要的時(shí)鐘信號(hào)不同,二者之間需要跨時(shí)鐘域模塊完成數(shù)據(jù)的跨時(shí)鐘域傳輸;時(shí)鐘模塊則用來(lái)對(duì)時(shí)鐘芯片進(jìn)行初始化,用時(shí)鐘芯片給PCIe 和光纖模塊提供高質(zhì)量的時(shí)鐘信號(hào)。
圖1 數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)
數(shù)據(jù)接收模塊結(jié)構(gòu)如圖2 所示,該模塊的功能是從光纖接收前端板傳來(lái)的數(shù)據(jù),主要可分為2 部分:吉比特收發(fā)器(Gigabit Transceiver with Low Power,GTP)和鏈路訓(xùn)練模塊。GTP 是Xilinx 針對(duì)高速串行數(shù)據(jù)傳輸提供的一款I(lǐng)P,支持的最高速度可達(dá)6.6×109bit/s。GTP 分為物理媒介附加子層(Physical Media Attachment Layer,PMA)和物理編碼子層(Physical Coding Sublayer,PCS)兩部分。PMA 是模擬電路,對(duì)傳來(lái)的數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換和串并轉(zhuǎn)換。PCS 對(duì)數(shù)據(jù)進(jìn)行編碼,使數(shù)據(jù)在傳輸過(guò)程中能夠保持直流平衡,支持8 bit/10 bit、64 bit/66 bit、64 bit/67 bit 等多種編碼方式。本文選擇8 bit/10 bit 編碼,即將8 位數(shù)據(jù)編碼成10 位數(shù)據(jù)。本文的GTP 用戶接口的數(shù)據(jù)寬度為32 bit,內(nèi)部解碼前的寬度為40 bit,時(shí)鐘信號(hào)為125 MHz,該模塊使能了RX Buffer,總體速度可以達(dá)到5×109bit/s。由于數(shù)據(jù)進(jìn)行過(guò)模數(shù)轉(zhuǎn)換和串并轉(zhuǎn)換,GTP 收到的32 位并行數(shù)據(jù)并不一定是一個(gè)完整字,可能是雜波或者前后兩個(gè)字的組合。因此,需要鏈路訓(xùn)練模塊對(duì)接收到的數(shù)據(jù)進(jìn)行判斷。鏈路訓(xùn)練模塊會(huì)根據(jù)連續(xù)接收到的兩個(gè)字組合出4 種可能的輸出組合,再判斷4 種輸出組合中是否連續(xù)出現(xiàn)控制碼。如果沒(méi)有連續(xù)出現(xiàn)控制碼,則證明接收到的是雜波;如果連續(xù)出現(xiàn),則證明接收到的是數(shù)據(jù),通知GTP 數(shù)據(jù)有效并將該輸出組合輸送給下一模塊。
圖2 數(shù)據(jù)接收模塊結(jié)構(gòu)
由于數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊需要使用不同的時(shí)鐘信號(hào),二者之間的數(shù)據(jù)傳輸需要跨時(shí)鐘域??鐣r(shí)鐘域模塊結(jié)構(gòu)如圖3 所示,主要分為2 部分,分別是異步FIFO 和AXI-S 協(xié)議轉(zhuǎn)換模塊。異步FIFO 使用的是Xilinx 的FIFO Generator IP,F(xiàn)IFO 寬度為32 bit,深度為255,寫時(shí)鐘為數(shù)據(jù)接收模塊的RX 時(shí)鐘,讀時(shí)鐘是數(shù)據(jù)發(fā)送模塊的AXI-S 時(shí)鐘。AXI-S 協(xié)議轉(zhuǎn)換模塊是一個(gè)AXI-S Master,該模塊將從異步FIFO 讀出的數(shù)據(jù)按照AXI-S 協(xié)議發(fā)送給數(shù)據(jù)發(fā)送模塊。
圖3 跨時(shí)鐘域模塊結(jié)構(gòu)
數(shù)據(jù)發(fā)送模塊結(jié)構(gòu)如圖4 所示,該模塊使用了Xilinx 的XDMA IP,內(nèi)部包含了PCIe 模塊和DMA 模塊2 部分。PCIe 模塊包含PCIe 的物理層、數(shù)據(jù)鏈路層和事務(wù)層,支持×1、×2、×4、×8 的PCIe 鏈路,每一路的最高速度可達(dá)5×109bit/s。DMA 模塊可分為總線接口、TLP 模塊、協(xié)議轉(zhuǎn)換橋以及DMA 控制寄存器??偩€接口用來(lái)連接用戶邏輯,支持AXI、AXI-S 協(xié)議,每種協(xié)議都有各自的收發(fā)引擎。TLP 模塊和協(xié)議轉(zhuǎn)換橋用來(lái)完成接口協(xié)議與PCIe 模塊事務(wù)層之間的數(shù)據(jù)轉(zhuǎn)換。DMA 控制寄存器用來(lái)控制DMA 模塊的功能,設(shè)置數(shù)據(jù)寬度、通道條數(shù)等參數(shù)。本文中,PCIe 模塊的時(shí)鐘為100 MHz,設(shè)置為Endpoint 模式,鏈路選擇為×4,總帶寬可達(dá)2×1010bit/s。DMA 模塊時(shí)鐘為125 MHz,選擇AXI-S 協(xié)議作為接口協(xié)議,地址寬度為64 bit,數(shù)據(jù)寬度為128 bit,讀寫通道各一條。
圖4 數(shù)據(jù)發(fā)送模塊結(jié)構(gòu)
數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊需要由時(shí)鐘芯片CDCE62005 提供高質(zhì)量的時(shí)鐘信號(hào),因此需要對(duì)時(shí)鐘芯片進(jìn)行初始化,使其能夠提供正確的時(shí)鐘。該時(shí)鐘芯片有2 個(gè)差分輸入時(shí)鐘源和1 個(gè)單端輸入時(shí)鐘源,最多可以產(chǎn)生5 個(gè)差分時(shí)鐘輸出,可以通過(guò)SPI 對(duì)時(shí)鐘芯片進(jìn)行配置。時(shí)鐘模塊結(jié)構(gòu)如圖5 所示,共分為2部分:第一部分是時(shí)鐘源模塊,第二部分是SPI Master。時(shí)鐘源模塊從外部晶振得到200 MHz 時(shí)鐘信號(hào),將其分頻為25 MHz 后作為時(shí)鐘源輸入到時(shí)鐘芯片。SPI Master 用來(lái)同時(shí)鐘芯片進(jìn)行通信,配置時(shí)鐘芯片的控制寄存器。一方面,時(shí)鐘模塊為時(shí)鐘芯片選擇使用哪一個(gè)時(shí)鐘源;另一方面,該模塊使能了時(shí)鐘芯片的3 個(gè)差分時(shí)鐘輸出,分別輸出125 MHz、100 MHz、125 MHz 的時(shí)鐘信號(hào),供數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊使用。
圖5 時(shí)鐘模塊結(jié)構(gòu)
由于CDCE 時(shí)鐘芯片在FPGA 外,無(wú)法進(jìn)行仿真,因此直接在AMC 板上進(jìn)行測(cè)試。時(shí)鐘模塊的作用是配置時(shí)鐘芯片,與系統(tǒng)其他部分無(wú)關(guān)。為了便于測(cè)試,時(shí)鐘模塊從系統(tǒng)工程中分離出來(lái),單獨(dú)作為一個(gè)測(cè)試工程。將該工程生成的bitstream 燒寫到AMC 板的FPGA 中,使其配置時(shí)鐘芯片。時(shí)鐘芯片配置完后會(huì)產(chǎn)生3 個(gè)差分時(shí)鐘信號(hào),頻率分別為125 MHz、100 MHz 和125 MHz。通過(guò)示波器可以觀察到這3 個(gè)時(shí)鐘信號(hào)與預(yù)期一致,時(shí)鐘模塊的功能正確。
Testbench 結(jié)構(gòu)如圖6 所示,總共包含3 部分:GTP 測(cè)試模塊、PCIe 測(cè)試模塊以及DUT。GTP 測(cè)試模塊包含數(shù)據(jù)產(chǎn)生模塊和一個(gè)GTP,用來(lái)產(chǎn)生數(shù)據(jù)接收模塊的輸入信號(hào)。PCIe 測(cè)試模塊包含鏈路訓(xùn)練與數(shù)據(jù)讀取狀態(tài)機(jī)和PCIE Rootcomplex 模塊,用來(lái)建立PCIe鏈路并讀取數(shù)據(jù)發(fā)送模塊輸出的數(shù)據(jù)。各模塊的時(shí)鐘信號(hào)直接由Testbench 產(chǎn)生。在該測(cè)試中,GTP 測(cè)試模塊產(chǎn)生原始數(shù)據(jù),該數(shù)據(jù)在光纖鏈路穩(wěn)定后發(fā)送給數(shù)據(jù)接收模塊,之后存儲(chǔ)到跨時(shí)鐘域模塊的異步FIFO中。PCIe 測(cè)試模塊先要進(jìn)行PCIe 鏈路的訓(xùn)練,在PCIe鏈路建立之后會(huì)從數(shù)據(jù)發(fā)送模塊中讀取數(shù)據(jù)。若PCIe測(cè)試模塊讀取到的數(shù)據(jù)與GTP 測(cè)試模塊產(chǎn)生的數(shù)據(jù)一致,則證明DUT 功能正確。
圖6 Testbench 結(jié)構(gòu)
GTP 測(cè)試模塊循環(huán)發(fā)送數(shù)據(jù)流0x3e3d3c...04bc...020100,其波形圖如圖7 所示。GTP 測(cè)試模塊的用戶接口為32 bit,與數(shù)據(jù)接收模塊一致。每個(gè)時(shí)鐘周期數(shù)據(jù)產(chǎn)生模塊產(chǎn)生32 bit 的原始數(shù)據(jù)。原始數(shù)據(jù)經(jīng)過(guò)8 bit/10 bit 編碼和并串轉(zhuǎn)換發(fā)送給數(shù)據(jù)傳輸系統(tǒng),作為數(shù)據(jù)傳輸系統(tǒng)的輸入。
圖7 GTP 測(cè)試模塊波形圖
PCIe 測(cè)試模塊接收到的數(shù)據(jù)如表1 所示。從表中可知,本次傳輸共收到896 bit 數(shù)據(jù),中間的512 bit 是一個(gè)完整的數(shù)據(jù)流,前256 bit 和后128 bit 分別是一個(gè)完整數(shù)據(jù)流的一部分。接收到的數(shù)據(jù)與GTP 測(cè)試模塊發(fā)送的數(shù)據(jù)一致,DUT 功能正確。
表1 PCIe 測(cè)試模塊接收數(shù)據(jù)結(jié)果展示
本文基于MicroTCA 架構(gòu)設(shè)計(jì)了一種用于粒子實(shí)驗(yàn)的AMC 板卡,其功能是接收像素采集前端板通過(guò)光纖傳輸來(lái)的數(shù)據(jù)并通過(guò)PCIe 總線發(fā)送給用于數(shù)據(jù)匯總與處理的AMC 板卡。本文設(shè)計(jì)的AMC 板卡實(shí)現(xiàn)了為時(shí)鐘芯片提供合適的時(shí)鐘源和時(shí)鐘芯片的正確配置,光纖數(shù)據(jù)的模數(shù)轉(zhuǎn)換、串并轉(zhuǎn)換以及8 bit/10 bit編解碼,數(shù)據(jù)緩存以及跨時(shí)鐘域傳輸,AXI-S 協(xié)議轉(zhuǎn)換和PCIe 數(shù)據(jù)傳輸。通過(guò)對(duì)時(shí)鐘模塊進(jìn)行設(shè)計(jì)測(cè)試,證明其能夠正確配置時(shí)鐘芯片,通過(guò)對(duì)數(shù)據(jù)通路進(jìn)行仿真,證明了從GTP 到異步FIFO 再到XDMA 的數(shù)據(jù)傳輸正確。該系統(tǒng)使用了串行方式進(jìn)行數(shù)據(jù)傳輸,速度可達(dá)5×109bit/s,且可以進(jìn)一步提升,能夠滿足粒子實(shí)驗(yàn)的需求,達(dá)到了預(yù)期目標(biāo)。