陳 宇, 謝 亮, 金湘亮
(1.湘潭大學(xué) 物理與光電工程學(xué)院,湖南 湘潭 411105;2.微光電與系統(tǒng)集成湖南省工程實(shí)驗(yàn)室,湖南 湘潭 411105)
X射線探測(cè)技術(shù)廣泛應(yīng)用于醫(yī)療、工業(yè)、無(wú)損檢測(cè)[1]、天文和考古[2]等領(lǐng)域。隨著X射線探測(cè)系統(tǒng)精度的增高,數(shù)據(jù)量逐漸變大。由于探測(cè)系統(tǒng)有效探測(cè)的時(shí)間很短[3],數(shù)據(jù)量大,對(duì)數(shù)據(jù)采集系統(tǒng)的速度和實(shí)時(shí)性提出了很高的要求。
文獻(xiàn)[4~8]中提到的數(shù)據(jù)采集系統(tǒng)都存在一定的局限性,并不能直接適用于X射線探測(cè)系統(tǒng)。異步傳輸標(biāo)準(zhǔn)接口(EIA—RS—232C,RS—232)、第二代通用串行總線(universal serial bus,USB 2.0)和千兆以太網(wǎng)接口在數(shù)據(jù)傳輸速率上相對(duì)較低。嵌入式微處理器—ARM(advanced RISC machine)控制高速多通道數(shù)據(jù)采集的能力較差,也不適用于具有X射線輻射的環(huán)境。數(shù)字信號(hào)處理器(digital signal processor,DSP)雖然在數(shù)字信號(hào)處理上具有很大優(yōu)勢(shì),但是在邏輯控制方面則相對(duì)較差。采用外設(shè)組件互聯(lián)(peri-pheral component interconnection,PCI)標(biāo)準(zhǔn)技術(shù)的數(shù)據(jù)采集卡具有很高的速率,但存在成本高、系統(tǒng)占用率高、不能熱插拔、不能遠(yuǎn)距離傳輸?shù)热秉c(diǎn)?,F(xiàn)場(chǎng)可編程門(mén)陣列(field programmable gate array,FPGA)內(nèi)部功能完全由硬件電路實(shí)現(xiàn),可靠性高,具有良好的并行處理能力。USB3.0接口通用性較好,支持熱插拔,最大傳輸速率可達(dá)5 Gbps。
針對(duì)X射線探測(cè)系統(tǒng)高速數(shù)據(jù)采集和實(shí)時(shí)傳輸?shù)囊?,結(jié)合X射線探測(cè)器讀出芯片多通道、高速率、數(shù)據(jù)量大的特點(diǎn),選用FPGA、DDR2和USB 3.0接口搭建X射線探測(cè)器數(shù)據(jù)采集與實(shí)時(shí)傳輸系統(tǒng)。
探測(cè)器電流信號(hào)經(jīng)X射線探測(cè)器讀出芯片積分[9],降噪和量化后轉(zhuǎn)換成數(shù)字信號(hào)[10],并輸出至數(shù)據(jù)采集與傳輸系統(tǒng)。數(shù)據(jù)采集與傳輸系統(tǒng)以FPGA為控制核心,向X射探測(cè)器讀出芯片寫(xiě)入24路配置數(shù)據(jù)的同時(shí),也接收X射線探測(cè)器讀出芯片的24路輸出數(shù)據(jù)并送入DDR2存儲(chǔ)器進(jìn)行高速緩存,經(jīng)過(guò)DDR2存儲(chǔ)器緩存的數(shù)據(jù)最終由USB 3.0接口實(shí)時(shí)傳輸至PC端。
系統(tǒng)硬件框圖如圖1所示,主要由FPGA、DDR2和USB3.0接口芯片構(gòu)成。FPGA、DDR2和USB3.0器件分別選用賽靈思(Xilinx)公司的XC5VLX110T芯片、美光(Micron)公司的MT4HTF3264HY—53E芯片和賽普拉斯(Cypress)公司的CYUSB3014芯片。自主設(shè)計(jì)的X射線探測(cè)器讀出芯片則作為數(shù)據(jù)源,輸出數(shù)字信號(hào)至采集系統(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射線探測(cè)器讀出芯片和USB接口芯片供電電壓3.3 V,因此整個(gè)系統(tǒng)需要3.3,2.5,1.8,0.9 V等4組輸出電壓。TI公司的TPS650243芯片可以提供三路開(kāi)關(guān)電源(DC-DC)輸出和兩路線性穩(wěn)壓(low dropout regulator,LDO)輸出。故采用5 V作為全局輸入電壓,配合TPS650243芯片即可滿足系統(tǒng)電壓需求。
FPGA往X射線探測(cè)器讀出芯片寫(xiě)入24通道配置數(shù)據(jù),用于芯片修調(diào)和工作方式的配置。X射線探測(cè)器讀出芯片的24通道輸出也被FPGA采集。DDR2器件使用Xilinx公司的IP核進(jìn)行控制,采用200MHz差分時(shí)鐘,32位數(shù)據(jù)總線的方式與FPGA進(jìn)行通信。CYUSB3014芯片內(nèi)部沒(méi)有存儲(chǔ)器,因此外掛一片愛(à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個(gè)部分:1)數(shù)據(jù)采集模塊;2)DDR2存儲(chǔ)器模塊;3)USB接口模塊;4)系統(tǒng)時(shí)鐘模塊。軟件結(jié)構(gòu)框圖如圖3所示,系統(tǒng)存在3個(gè)不同的時(shí)鐘域,利用了2個(gè)先入先出(frist-in,frist-out,F(xiàn)IFO)隊(duì)列實(shí)現(xiàn)跨時(shí)鐘域通信。
圖3 系統(tǒng)軟件結(jié)構(gòu)框圖
數(shù)據(jù)采集模塊是整個(gè)系統(tǒng)的核心,主要完成3個(gè)任務(wù):1)往X射線探測(cè)器讀出芯片串行寫(xiě)入24路配置數(shù)據(jù),速率100 Mbps;2)串行接收來(lái)自X射線探測(cè)器讀出芯片的24路數(shù)據(jù),速率為100 Mbps;3)將每個(gè)通道接收到的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,以12 bit依次并行輸出,每次輸出同一個(gè)像素單元的數(shù)據(jù),每個(gè)通道輸出512個(gè)像素單元的數(shù)據(jù)。
如圖4所示,X射線探測(cè)器讀出芯片產(chǎn)生的EN信號(hào),可作為X射線探測(cè)器讀出芯片與FPGA通信的握手信號(hào)。在EN為高電平期間,F(xiàn)PGA通過(guò)CONFIG_IN端口往X射線探測(cè)器讀出芯片內(nèi)串行寫(xiě)入配置數(shù)據(jù)。與此同時(shí),X射線探測(cè)器芯片DATA_OUT端口的輸出也被FPGA串行接收。FPGA接收的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換后以12bit輸出,每次輸出2個(gè)像素單元的數(shù)據(jù)。利用FIFO將單個(gè)像素單元的數(shù)據(jù)補(bǔ)全至16 bit,并與DDR2的時(shí)鐘域進(jìn)行匹配,像素單元的數(shù)據(jù)最終被寫(xiě)入到DDR2存儲(chǔ)器中暫存。
圖4 X射線探測(cè)器讀出芯片讀寫(xiě)時(shí)序
MIG(memory interface generator)IP核是Xilinx的存儲(chǔ)器接口生成器[11],使用MIG核即可對(duì)DDR2存儲(chǔ)器進(jìn)行控制。DDR2存儲(chǔ)器模塊與數(shù)據(jù)采集模塊、USB接口模塊處在不同的時(shí)鐘域,因此,使用兩個(gè)異步FIFO模塊即圖3中的Write FIFO和Read FIFO來(lái)實(shí)現(xiàn)數(shù)據(jù)位寬的匹配和跨時(shí)鐘域通信。
DDR2接口控制機(jī)制如圖5所示,S0為初始態(tài),S1為寫(xiě)狀態(tài),S2為讀狀態(tài),S3表示數(shù)據(jù)傳輸結(jié)束狀態(tài)。當(dāng)Write FIFO滿,且寫(xiě)標(biāo)志信號(hào)(W)為高時(shí),從S0進(jìn)入S1狀態(tài),F(xiàn)PGA往DDR2中寫(xiě)入數(shù)據(jù)。若Read FIFO為空,且讀標(biāo)志信號(hào)(R)為高時(shí),從S0進(jìn)入S2,讀取DDR2中的數(shù)據(jù),并寫(xiě)入Read FIFO中。DDR2讀寫(xiě)操作完成后進(jìn)入S3狀態(tài),同時(shí)停止數(shù)據(jù)傳輸,延時(shí)一個(gè)周期后回到初始態(tài)S0。
圖5 DDR2接口控制狀態(tài)
3.3.1 Verilog程序設(shè)計(jì)
CYUSB3014芯片最常見(jiàn)的應(yīng)用是作為從設(shè)備接口與外界微處理或FPGA通信[12]。CYUSB3014芯片的從設(shè)備接口接收來(lái)自FPGA的時(shí)鐘信號(hào)、讀寫(xiě)信號(hào)、使能信號(hào)以及數(shù)據(jù)信號(hào),并輸出相應(yīng)的空滿標(biāo)志信號(hào)來(lái)協(xié)調(diào)FPGA的行為。狀態(tài)機(jī)設(shè)計(jì)如圖6所示。
圖6 Verilog狀態(tài)轉(zhuǎn)換
狀態(tài)機(jī)一共分為4個(gè)狀態(tài):空閑狀態(tài)(IDLE);等待狀態(tài)(Wait);寫(xiě)狀態(tài)(Write);延時(shí)狀態(tài)(Delay)。在空閑狀態(tài)下檢測(cè)到flaga_d為高時(shí),進(jìn)入等待狀態(tài),在等待狀態(tài)監(jiān)測(cè)到flagb_d為高時(shí),進(jìn)入寫(xiě)狀態(tài),此時(shí)DDR2中的讀出數(shù)據(jù)被傳輸至USB接口芯片中。在寫(xiě)狀態(tài)檢測(cè)到flagb_d為低時(shí),表明USB內(nèi)部緩沖區(qū)寫(xiě)滿,寫(xiě)操作結(jié)束,并進(jìn)入延時(shí)狀態(tài),等待一個(gè)時(shí)鐘周期后回到空閑狀態(tài)。
3.3.2 PC端應(yīng)用程序設(shè)計(jì)
PC端應(yīng)用程序采用C sharp語(yǔ)言在微軟的VS2010(微軟的編程軟件)環(huán)境中進(jìn)行設(shè)計(jì),流程圖如圖7所示,當(dāng)點(diǎn)擊傳輸開(kāi)始的按鈕后,就會(huì)啟動(dòng)數(shù)據(jù)接收和存儲(chǔ)的線程,數(shù)據(jù)最終以文件的形式存儲(chǔ)在PC磁盤(pán)中。
圖7 應(yīng)用軟件流程
利用FPGA內(nèi)部的鎖相環(huán)(phase-locked loop,PLL)提供整個(gè)X射線探測(cè)器數(shù)據(jù)采集與實(shí)時(shí)傳輸系統(tǒng)所需要的時(shí)鐘,系統(tǒng)時(shí)鐘頻率為100MHz。CYUSB3014芯片的標(biāo)志信號(hào)輸出延時(shí)為8 ns,X射線讀出芯片的輸出延時(shí)為3 ns??紤]到X射線探測(cè)器讀出芯片、CYUSB3014芯片的輸出延時(shí)和各個(gè)芯片互聯(lián)線之間的延時(shí),為了避免數(shù)據(jù)傳輸時(shí)因時(shí)序違例而出現(xiàn)錯(cuò)誤,因此,對(duì)X射線探測(cè)器讀出芯片和CYUSB3014芯片的時(shí)鐘進(jìn)行相位調(diào)整。與系統(tǒng)時(shí)鐘相比,X射線探測(cè)器讀出芯片時(shí)鐘相位調(diào)整180°,CYUSB3014芯片時(shí)鐘相位調(diào)整90°。
在系統(tǒng)時(shí)鐘頻率為100 MHz的情況下,X射線讀出芯片單通道數(shù)據(jù)輸出速率為100 Mbps,USB接口速率約為2.5 Gbps,如圖8所示。
圖8 USB接口速率
利用Xilinx 的嵌入式邏輯分析儀(ChipScope)抓取數(shù)據(jù)采集過(guò)程的結(jié)果如圖9所示。圖9是截取其中一條通路的結(jié)果,douta信號(hào)是FPGA往X射線探測(cè)器讀出芯片中寫(xiě)入的配置數(shù)據(jù)信號(hào),data_out信號(hào)是FPGA采樣X(jué)射線探測(cè)器讀出芯片輸出的數(shù)據(jù)。通過(guò)對(duì)USB接口上傳的數(shù)據(jù)進(jìn)行比對(duì)和分析,未發(fā)現(xiàn)有誤碼現(xiàn)象,X射線探測(cè)器讀出芯片的工作方式配置正確,也證明了配置數(shù)據(jù)寫(xiě)入正確。
圖9 數(shù)據(jù)采樣結(jié)果
本文介紹了以FPGA和USB 3.0協(xié)議為核心的高速采集與實(shí)時(shí)傳輸系統(tǒng)的設(shè)計(jì),具有高可靠性、高速率、實(shí)時(shí)性等特點(diǎn)。在實(shí)際測(cè)試過(guò)程中,能夠滿足X射線探測(cè)器讀出芯片高速多路采集和實(shí)時(shí)傳輸?shù)男枨?,目前已成功?yīng)用于某探測(cè)系統(tǒng)中。