陳 宇, 謝 亮, 金湘亮
(1.湘潭大學(xué) 物理與光電工程學(xué)院,湖南 湘潭 411105;2.微光電與系統(tǒng)集成湖南省工程實驗室,湖南 湘潭 411105)
X射線探測技術(shù)廣泛應(yīng)用于醫(yī)療、工業(yè)、無損檢測[1]、天文和考古[2]等領(lǐng)域。隨著X射線探測系統(tǒng)精度的增高,數(shù)據(jù)量逐漸變大。由于探測系統(tǒng)有效探測的時間很短[3],數(shù)據(jù)量大,對數(shù)據(jù)采集系統(tǒng)的速度和實時性提出了很高的要求。
文獻(xiàn)[4~8]中提到的數(shù)據(jù)采集系統(tǒng)都存在一定的局限性,并不能直接適用于X射線探測系統(tǒng)。異步傳輸標(biāo)準(zhǔn)接口(EIA—RS—232C,RS—232)、第二代通用串行總線(universal serial bus,USB 2.0)和千兆以太網(wǎng)接口在數(shù)據(jù)傳輸速率上相對較低。嵌入式微處理器—ARM(advanced RISC machine)控制高速多通道數(shù)據(jù)采集的能力較差,也不適用于具有X射線輻射的環(huán)境。數(shù)字信號處理器(digital signal processor,DSP)雖然在數(shù)字信號處理上具有很大優(yōu)勢,但是在邏輯控制方面則相對較差。采用外設(shè)組件互聯(lián)(peri-pheral component interconnection,PCI)標(biāo)準(zhǔn)技術(shù)的數(shù)據(jù)采集卡具有很高的速率,但存在成本高、系統(tǒng)占用率高、不能熱插拔、不能遠(yuǎn)距離傳輸?shù)热秉c。現(xiàn)場可編程門陣列(field programmable gate array,FPGA)內(nèi)部功能完全由硬件電路實現(xiàn),可靠性高,具有良好的并行處理能力。USB3.0接口通用性較好,支持熱插拔,最大傳輸速率可達(dá)5 Gbps。
針對X射線探測系統(tǒng)高速數(shù)據(jù)采集和實時傳輸?shù)囊螅Y(jié)合X射線探測器讀出芯片多通道、高速率、數(shù)據(jù)量大的特點,選用FPGA、DDR2和USB 3.0接口搭建X射線探測器數(shù)據(jù)采集與實時傳輸系統(tǒng)。
探測器電流信號經(jīng)X射線探測器讀出芯片積分[9],降噪和量化后轉(zhuǎn)換成數(shù)字信號[10],并輸出至數(shù)據(jù)采集與傳輸系統(tǒng)。數(shù)據(jù)采集與傳輸系統(tǒng)以FPGA為控制核心,向X射探測器讀出芯片寫入24路配置數(shù)據(jù)的同時,也接收X射線探測器讀出芯片的24路輸出數(shù)據(jù)并送入DDR2存儲器進(jìn)行高速緩存,經(jīng)過DDR2存儲器緩存的數(shù)據(jù)最終由USB 3.0接口實時傳輸至PC端。
系統(tǒng)硬件框圖如圖1所示,主要由FPGA、DDR2和USB3.0接口芯片構(gòu)成。FPGA、DDR2和USB3.0器件分別選用賽靈思(Xilinx)公司的XC5VLX110T芯片、美光(Micron)公司的MT4HTF3264HY—53E芯片和賽普拉斯(Cypress)公司的CYUSB3014芯片。自主設(shè)計的X射線探測器讀出芯片則作為數(shù)據(jù)源,輸出數(shù)字信號至采集系統(tǒng)。

圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
FPGA IO供電電壓3.3 V,內(nèi)核電壓1.2 V,鎖相環(huán)(phase locked loop,PLL)需要2.5 V模擬電壓供電,DDR2芯片接口采用短截線串聯(lián)端接邏輯(stub series terminated logic,SSTL—18)標(biāo)準(zhǔn),供電電壓為1.8 V,參考電壓0.9V,X射線探測器讀出芯片和USB接口芯片供電電壓3.3 V,因此整個系統(tǒng)需要3.3,2.5,1.8,0.9 V等4組輸出電壓。TI公司的TPS650243芯片可以提供三路開關(guān)電源(DC-DC)輸出和兩路線性穩(wěn)壓(low dropout regulator,LDO)輸出。故采用5 V作為全局輸入電壓,配合TPS650243芯片即可滿足系統(tǒng)電壓需求。
FPGA往X射線探測器讀出芯片寫入24通道配置數(shù)據(jù),用于芯片修調(diào)和工作方式的配置。X射線探測器讀出芯片的24通道輸出也被FPGA采集。DDR2器件使用Xilinx公司的IP核進(jìn)行控制,采用200MHz差分時鐘,32位數(shù)據(jù)總線的方式與FPGA進(jìn)行通信。CYUSB3014芯片內(nèi)部沒有存儲器,因此外掛一片愛特梅爾(Atmel)公司的AT24C1024芯片用于引導(dǎo)USB固件。采用32位數(shù)據(jù)總線與FPGA通信,頻率100MHz,以便最大化CYUSB3014芯片的性能。FPGA,DDR2和USB 3.0接口之間的通信連接圖如圖2所示。

圖2 DDR2,USB與FPGA通信連接
從功能上可以將系統(tǒng)劃分為4個部分:1)數(shù)據(jù)采集模塊;2)DDR2存儲器模塊;3)USB接口模塊;4)系統(tǒng)時鐘模塊。軟件結(jié)構(gòu)框圖如圖3所示,系統(tǒng)存在3個不同的時鐘域,利用了2個先入先出(frist-in,frist-out,F(xiàn)IFO)隊列實現(xiàn)跨時鐘域通信。

圖3 系統(tǒng)軟件結(jié)構(gòu)框圖
數(shù)據(jù)采集模塊是整個系統(tǒng)的核心,主要完成3個任務(wù):1)往X射線探測器讀出芯片串行寫入24路配置數(shù)據(jù),速率100 Mbps;2)串行接收來自X射線探測器讀出芯片的24路數(shù)據(jù),速率為100 Mbps;3)將每個通道接收到的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,以12 bit依次并行輸出,每次輸出同一個像素單元的數(shù)據(jù),每個通道輸出512個像素單元的數(shù)據(jù)。
如圖4所示,X射線探測器讀出芯片產(chǎn)生的EN信號,可作為X射線探測器讀出芯片與FPGA通信的握手信號。在EN為高電平期間,F(xiàn)PGA通過CONFIG_IN端口往X射線探測器讀出芯片內(nèi)串行寫入配置數(shù)據(jù)。與此同時,X射線探測器芯片DATA_OUT端口的輸出也被FPGA串行接收。FPGA接收的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換后以12bit輸出,每次輸出2個像素單元的數(shù)據(jù)。利用FIFO將單個像素單元的數(shù)據(jù)補(bǔ)全至16 bit,并與DDR2的時鐘域進(jìn)行匹配,像素單元的數(shù)據(jù)最終被寫入到DDR2存儲器中暫存。

圖4 X射線探測器讀出芯片讀寫時序
MIG(memory interface generator)IP核是Xilinx的存儲器接口生成器[11],使用MIG核即可對DDR2存儲器進(jìn)行控制。DDR2存儲器模塊與數(shù)據(jù)采集模塊、USB接口模塊處在不同的時鐘域,因此,使用兩個異步FIFO模塊即圖3中的Write FIFO和Read FIFO來實現(xiàn)數(shù)據(jù)位寬的匹配和跨時鐘域通信。
DDR2接口控制機(jī)制如圖5所示,S0為初始態(tài),S1為寫狀態(tài),S2為讀狀態(tài),S3表示數(shù)據(jù)傳輸結(jié)束狀態(tài)。當(dāng)Write FIFO滿,且寫標(biāo)志信號(W)為高時,從S0進(jìn)入S1狀態(tài),F(xiàn)PGA往DDR2中寫入數(shù)據(jù)。若Read FIFO為空,且讀標(biāo)志信號(R)為高時,從S0進(jìn)入S2,讀取DDR2中的數(shù)據(jù),并寫入Read FIFO中。DDR2讀寫操作完成后進(jìn)入S3狀態(tài),同時停止數(shù)據(jù)傳輸,延時一個周期后回到初始態(tài)S0。

圖5 DDR2接口控制狀態(tài)
3.3.1 Verilog程序設(shè)計
CYUSB3014芯片最常見的應(yīng)用是作為從設(shè)備接口與外界微處理或FPGA通信[12]。CYUSB3014芯片的從設(shè)備接口接收來自FPGA的時鐘信號、讀寫信號、使能信號以及數(shù)據(jù)信號,并輸出相應(yīng)的空滿標(biāo)志信號來協(xié)調(diào)FPGA的行為。狀態(tài)機(jī)設(shè)計如圖6所示。

圖6 Verilog狀態(tài)轉(zhuǎn)換
狀態(tài)機(jī)一共分為4個狀態(tài):空閑狀態(tài)(IDLE);等待狀態(tài)(Wait);寫狀態(tài)(Write);延時狀態(tài)(Delay)。在空閑狀態(tài)下檢測到flaga_d為高時,進(jìn)入等待狀態(tài),在等待狀態(tài)監(jiān)測到flagb_d為高時,進(jìn)入寫狀態(tài),此時DDR2中的讀出數(shù)據(jù)被傳輸至USB接口芯片中。在寫狀態(tài)檢測到flagb_d為低時,表明USB內(nèi)部緩沖區(qū)寫滿,寫操作結(jié)束,并進(jìn)入延時狀態(tài),等待一個時鐘周期后回到空閑狀態(tài)。
3.3.2 PC端應(yīng)用程序設(shè)計
PC端應(yīng)用程序采用C sharp語言在微軟的VS2010(微軟的編程軟件)環(huán)境中進(jìn)行設(shè)計,流程圖如圖7所示,當(dāng)點擊傳輸開始的按鈕后,就會啟動數(shù)據(jù)接收和存儲的線程,數(shù)據(jù)最終以文件的形式存儲在PC磁盤中。

圖7 應(yīng)用軟件流程
利用FPGA內(nèi)部的鎖相環(huán)(phase-locked loop,PLL)提供整個X射線探測器數(shù)據(jù)采集與實時傳輸系統(tǒng)所需要的時鐘,系統(tǒng)時鐘頻率為100MHz。CYUSB3014芯片的標(biāo)志信號輸出延時為8 ns,X射線讀出芯片的輸出延時為3 ns。考慮到X射線探測器讀出芯片、CYUSB3014芯片的輸出延時和各個芯片互聯(lián)線之間的延時,為了避免數(shù)據(jù)傳輸時因時序違例而出現(xiàn)錯誤,因此,對X射線探測器讀出芯片和CYUSB3014芯片的時鐘進(jìn)行相位調(diào)整。與系統(tǒng)時鐘相比,X射線探測器讀出芯片時鐘相位調(diào)整180°,CYUSB3014芯片時鐘相位調(diào)整90°。
在系統(tǒng)時鐘頻率為100 MHz的情況下,X射線讀出芯片單通道數(shù)據(jù)輸出速率為100 Mbps,USB接口速率約為2.5 Gbps,如圖8所示。

圖8 USB接口速率
利用Xilinx 的嵌入式邏輯分析儀(ChipScope)抓取數(shù)據(jù)采集過程的結(jié)果如圖9所示。圖9是截取其中一條通路的結(jié)果,douta信號是FPGA往X射線探測器讀出芯片中寫入的配置數(shù)據(jù)信號,data_out信號是FPGA采樣X射線探測器讀出芯片輸出的數(shù)據(jù)。通過對USB接口上傳的數(shù)據(jù)進(jìn)行比對和分析,未發(fā)現(xiàn)有誤碼現(xiàn)象,X射線探測器讀出芯片的工作方式配置正確,也證明了配置數(shù)據(jù)寫入正確。

圖9 數(shù)據(jù)采樣結(jié)果
本文介紹了以FPGA和USB 3.0協(xié)議為核心的高速采集與實時傳輸系統(tǒng)的設(shè)計,具有高可靠性、高速率、實時性等特點。在實際測試過程中,能夠滿足X射線探測器讀出芯片高速多路采集和實時傳輸?shù)男枨螅壳耙殉晒?yīng)用于某探測系統(tǒng)中。