苗 旺,李彬華,2,王錦良,陳柄宇,高詩竹
(1. 昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院,云南 昆明 650500;2. 昆明理工大學(xué)云南省計(jì)算機(jī)應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500)
幸運(yùn)成像是一種高分辨率天文圖像恢復(fù)技術(shù)[1]?;谥醒胩幚砥?Central Processing Unit, CPU)的幸運(yùn)成像技術(shù)由于串行處理的原因,運(yùn)行時(shí)間較長,是一種事后處理技術(shù)。近年來,具有強(qiáng)大并行處理能力的現(xiàn)場可編程門陣列作為硬件加速器引入圖像處理領(lǐng)域,實(shí)現(xiàn)可重構(gòu)計(jì)算[2]。天文幸運(yùn)成像觀測通常使用的EMCCD相機(jī)是一種高速低噪聲的科學(xué)級相機(jī)[3]。
文[4-5]首次將幸運(yùn)成像技術(shù)在現(xiàn)場可編程門陣列上實(shí)現(xiàn),并獲得了實(shí)時(shí)的高分辨率圖像,F(xiàn)astCam中圖像數(shù)據(jù)通過以太網(wǎng)傳輸。文[6]采用Xilinx經(jīng)濟(jì)型中小規(guī)模的Spantan-6系列現(xiàn)場可編程門陣列及開發(fā)板,構(gòu)建了一個(gè)基于SD卡接口接收數(shù)據(jù)的幸運(yùn)成像系統(tǒng)。而后經(jīng)過改進(jìn),成為一個(gè)基于以太網(wǎng)網(wǎng)口數(shù)據(jù)傳輸?shù)膶?shí)時(shí)動(dòng)態(tài)幸運(yùn)成像系統(tǒng)[7-9]。該系統(tǒng)由EMCCD相機(jī)將短曝光的天文圖像經(jīng)USB2.0傳入個(gè)人計(jì)算機(jī)存儲,然后通過特定數(shù)據(jù)轉(zhuǎn)發(fā)程序控制個(gè)人計(jì)算機(jī)讀入FITS格式的天文圖像,通過以太網(wǎng)接口將圖像數(shù)據(jù)不斷發(fā)送給現(xiàn)場可編程門陣列開發(fā)板,進(jìn)行幸運(yùn)成像處理。
上述已有的幸運(yùn)成像系統(tǒng)的實(shí)時(shí)處理,由于存在圖像存儲和轉(zhuǎn)發(fā)的過程,實(shí)時(shí)性有待進(jìn)一步提高。如果EMCCD相機(jī)拍攝的有效圖像數(shù)據(jù)不經(jīng)過存儲和轉(zhuǎn)發(fā)的過程,直接傳入現(xiàn)場可編程門陣列進(jìn)行幸運(yùn)成像,可以大大改善系統(tǒng)的實(shí)時(shí)性。因此,在不影響原有數(shù)據(jù)通道的情況下,通過實(shí)時(shí)偵聽的方法使總線保持?jǐn)?shù)據(jù)的正常傳輸,并把偵聽的數(shù)據(jù)加以分析處理,處理后的數(shù)據(jù)實(shí)時(shí)傳給幸運(yùn)成像系統(tǒng)進(jìn)行后續(xù)處理。EMCCD相機(jī)圖像接口有多種類型,常見的是USB2.0,因此,本文采用USB2.0作為數(shù)據(jù)傳輸接口,同時(shí),基于現(xiàn)場可編程門陣列的幸運(yùn)成像技術(shù)比較成熟,所以現(xiàn)在問題的關(guān)鍵在于如何設(shè)計(jì)一個(gè)基于USB2.0總線數(shù)據(jù)偵聽系統(tǒng),用于偵聽EMCCD相機(jī)和個(gè)人計(jì)算機(jī)之間總線的數(shù)據(jù)。
現(xiàn)有基于USB總線數(shù)據(jù)偵聽的研究主要集中在USB協(xié)議分析及應(yīng)用方面,如USB協(xié)議分析儀,其他方面的研究相對較少。但USB協(xié)議分析儀是偵聽USB總線上的數(shù)據(jù)并發(fā)送至個(gè)人計(jì)算機(jī)后,采用相應(yīng)的軟件進(jìn)行分析。文[10]提出了一種基于現(xiàn)場可編程門陣列的USB數(shù)據(jù)監(jiān)聽技術(shù),該設(shè)計(jì)直接將數(shù)據(jù)傳入個(gè)人計(jì)算機(jī),類似于協(xié)議分析儀,且文中沒有詳細(xì)介紹硬件邏輯設(shè)計(jì)的過程。文[11]論述了一種監(jiān)聽相機(jī)與機(jī)身SD卡之間的數(shù)據(jù)流技術(shù)。文[12]提出了對某一特定方向傳輸?shù)臄?shù)據(jù)進(jìn)行監(jiān)聽的方法,雖然硬件模塊都驗(yàn)證正確,但系統(tǒng)工作不穩(wěn)定。
本文提出基于USB2.0總線數(shù)據(jù)偵聽的實(shí)時(shí)幸運(yùn)成像系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方案,設(shè)計(jì)并制作了一個(gè)USB2.0總線數(shù)據(jù)偵聽電路,用現(xiàn)場可編程門陣列實(shí)現(xiàn)對USB數(shù)據(jù)包的分析,在基于以太網(wǎng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)動(dòng)態(tài)幸運(yùn)成像系統(tǒng)的基礎(chǔ)上,搭建一個(gè)具有實(shí)時(shí)偵聽、傳輸、處理、動(dòng)態(tài)更新和顯示的幸運(yùn)成像系統(tǒng),通過實(shí)驗(yàn)驗(yàn)證了系統(tǒng)的性能。
幸運(yùn)成像系統(tǒng)的硬件實(shí)現(xiàn)平臺是以Xilinx公司Spartan-6系列XC6SLX16芯片為核心的開發(fā)板,成本低,運(yùn)行穩(wěn)定。由于該開發(fā)板不具備偵聽功能,所以需要設(shè)計(jì)制作一個(gè)USB2.0總線數(shù)據(jù)偵聽系統(tǒng),通過40引腳的輸入/輸出(Input/Output, IO)擴(kuò)展口(排針)與現(xiàn)場可編程門陣列開發(fā)板連接,從而實(shí)現(xiàn)EMCCD相機(jī)短曝光圖像的實(shí)時(shí)數(shù)據(jù)偵聽和幸運(yùn)成像。設(shè)計(jì)開發(fā)環(huán)境是ISE Design Suite 14.7和Altium Designer 10.0,采用ChipScope pro 14.7和ModelSim SE 10.5進(jìn)行硬件設(shè)計(jì)的驗(yàn)證與調(diào)試。
系統(tǒng)設(shè)計(jì)的總體要求是在不影響EMCCD相機(jī)與個(gè)人計(jì)算機(jī)圖像采集與控制的前提下,通過偵聽EMCCD相機(jī)的圖像數(shù)據(jù)進(jìn)行實(shí)時(shí)幸運(yùn)成像,所以,整個(gè)系統(tǒng)不僅需要有前端無侵入式USB總線數(shù)據(jù)偵聽和分析電路,而且需要有后端實(shí)時(shí)幸運(yùn)成像電路或系統(tǒng)。按此要求,本文提出的實(shí)時(shí)幸運(yùn)成像系統(tǒng)結(jié)構(gòu)如圖1。
圖1 USB2.0總線數(shù)據(jù)偵聽實(shí)時(shí)幸運(yùn)成像系統(tǒng)的總體框圖Fig.1 The overall block diagram of USB2.0 bus data listening real-time lucky imaging system
系統(tǒng)采用USB2.0總線數(shù)據(jù)偵聽的方式,將EMCCD相機(jī)與個(gè)人計(jì)算機(jī)之間進(jìn)行傳輸?shù)臄?shù)據(jù)通過專用USB2.0總線數(shù)據(jù)偵聽系統(tǒng)對總線實(shí)現(xiàn)無侵入式數(shù)據(jù)偵聽,再加以分析處理,只將有效的天文圖像數(shù)據(jù)發(fā)送給底板(即現(xiàn)場可編程門陣列開發(fā)板)。底板上的幸運(yùn)成像系統(tǒng)進(jìn)行圖像的預(yù)處理、動(dòng)態(tài)選圖、實(shí)時(shí)配準(zhǔn)和疊加處理,然后采用9個(gè)實(shí)時(shí)分割閾值水平切割高分辨率圖像,最后對二值圖像進(jìn)行動(dòng)態(tài)更新和顯示。系統(tǒng)的工作流程簡述如下。
(1)USB接口芯片模塊開始連續(xù)提取EMCCD相機(jī)與個(gè)人計(jì)算機(jī)相連的總線上的差分信號,還原為電平信號,并進(jìn)一步轉(zhuǎn)換成并行數(shù)據(jù)送入U(xiǎn)SB2.0收發(fā)宏單元的低引腳數(shù)接口(UTMI(USB2.0 Transceiver Macrocell Interface) Low Pin Interface, ULPI)模塊。
(2)ULPI接口模塊與USB接口芯片模塊建立協(xié)議層的聯(lián)系,并把數(shù)據(jù)完整輸出給包解析模塊。
(3)包解析模塊將數(shù)據(jù)包分解并緩存,進(jìn)入事務(wù)組合模塊。
(4)事務(wù)組合模塊將幾個(gè)相關(guān)聯(lián)的令牌包、數(shù)據(jù)包、握手包經(jīng)過包解析模塊分解后組合成一個(gè)USB事務(wù),送往傳輸模塊。
(5)傳輸模塊對USB事務(wù)中的數(shù)據(jù)進(jìn)行分析,并根據(jù)天文圖像的特征,只選擇天文圖像數(shù)據(jù),以8位并行總線的方式傳入系統(tǒng)的底板輸入輸出擴(kuò)展口接收模塊。
(6)底板的輸入輸出擴(kuò)展口接收模塊將數(shù)據(jù)傳入幸運(yùn)成像系統(tǒng)。
(7)幸運(yùn)成像系統(tǒng)將接收的圖像數(shù)據(jù)送入圖像預(yù)處理模塊,進(jìn)行高斯濾波和宇宙射線剔除,將預(yù)處理后的數(shù)據(jù)送入幸運(yùn)成像算法處理模塊。
(8)幸運(yùn)成像算法處理模塊包括第3代雙倍數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存取存儲器(Double-Data-Rate Three Synchronous Dynamic Random Access Memory, DDR3)存儲控制模塊、選圖算法模塊、配準(zhǔn)算法模塊和疊加算法模塊。模塊對預(yù)處理完成后的圖像數(shù)據(jù)進(jìn)行存儲、選圖、配準(zhǔn)和疊加處理后,將圖像數(shù)據(jù)分成兩路:一路經(jīng)千兆以太網(wǎng)發(fā)送模塊傳回個(gè)人計(jì)算機(jī),并保存高分辨率圖像;一路送往多閾值二值化模塊。
(9)多閾值二值化模塊增強(qiáng)目標(biāo)區(qū)域的可視性,然后將結(jié)果傳給視頻圖形陣列(Video Graphics Array, VGA)控制模塊,產(chǎn)生控制信號,控制視頻圖形陣列顯示模塊驅(qū)動(dòng)現(xiàn)場可編程門陣列片外接口電路,將高分辨率圖像顯示在視頻圖形陣列顯示器。
以上流程第1~5步是USB2.0總線數(shù)據(jù)偵聽系統(tǒng),用于數(shù)據(jù)偵聽,并將有效的天文圖像數(shù)據(jù)發(fā)送給底板;第6~9步是底板系統(tǒng),其中第6步是兩個(gè)系統(tǒng)間的連接步驟;第7~8步是幸運(yùn)成像系統(tǒng)中數(shù)據(jù)處理過程;第9步用于圖像的視覺增強(qiáng)和顯示。
本系統(tǒng)實(shí)時(shí)偵聽、分析和處理EMCCD相機(jī)與個(gè)人計(jì)算機(jī)相連的總線上的數(shù)據(jù)。在天文圖像數(shù)據(jù)不斷由EMCCD相機(jī)傳輸?shù)絺€(gè)人計(jì)算機(jī)的過程中,視頻圖形陣列顯示器上實(shí)時(shí)動(dòng)態(tài)更新和顯示高分辨率圖像。因?yàn)楝F(xiàn)場可編程門陣列的特性,數(shù)據(jù)處理方式并行進(jìn)行,也就是上述步驟全部同時(shí)工作,所以處理速度非??欤瑵M足實(shí)時(shí)性的要求。
從上述流程可以看出,本系統(tǒng)與基于以太網(wǎng)數(shù)據(jù)傳輸?shù)默F(xiàn)場可編程門陣列幸運(yùn)成像系統(tǒng)最大的不同在于設(shè)計(jì)了一個(gè)USB2.0總線數(shù)據(jù)偵聽系統(tǒng)。另外為了將USB2.0總線數(shù)據(jù)偵聽系統(tǒng)與現(xiàn)場可編程門陣列幸運(yùn)成像系統(tǒng)完美地連接,需要對基于現(xiàn)場可編程門陣列的幸運(yùn)成像系統(tǒng)稍作修改。以下著重介紹USB2.0總線數(shù)據(jù)偵聽系統(tǒng)的設(shè)計(jì)過程,以及基于新的數(shù)據(jù)傳輸接口對原現(xiàn)場可編程門陣列幸運(yùn)成像系統(tǒng)的修改過程。
因?yàn)閁SB2.0總線數(shù)據(jù)偵聽系統(tǒng)需要對偵聽的全部數(shù)據(jù)加以分析,所以需要從數(shù)據(jù)包中選出有效的天文圖像數(shù)據(jù),刪除無效信息,只將有效的天文圖像數(shù)據(jù)傳入底板系統(tǒng)。這個(gè)過程的實(shí)現(xiàn)需要設(shè)計(jì)偵聽電路、數(shù)據(jù)分析與處理電路以及數(shù)據(jù)收發(fā)接口電路等。結(jié)合USB2.0總線的數(shù)據(jù)傳輸特點(diǎn)以及現(xiàn)場可編程門陣列開發(fā)板(底板)的排針接口要求,我們設(shè)計(jì)了如圖2的偵聽系統(tǒng)。圖2中,主設(shè)備是EMCCD相機(jī)的成像控制與圖像采集工作站或個(gè)人計(jì)算機(jī),從設(shè)備是EMCCD相機(jī),主從設(shè)備之間是USB2.0總線及連接頭。從A、B兩個(gè)USB接口總線中間直接引出信號線到USB2.0接口芯片,從而偵聽主從設(shè)備之間傳輸?shù)臄?shù)據(jù)。同一塊小規(guī)模的現(xiàn)場可編程門陣列芯片完成USB接口芯片的控制、偵聽數(shù)據(jù)的解包和分析以及圖像數(shù)據(jù)下傳等任務(wù)。所以,偵聽系統(tǒng)的關(guān)鍵是硬件電路的設(shè)計(jì)和現(xiàn)場可編程門陣列邏輯設(shè)計(jì),這也是本文的重點(diǎn)內(nèi)容。
圖2 USB2.0總線數(shù)據(jù)偵聽系統(tǒng)的總體設(shè)計(jì)Fig.2 The overall design of USB2.0 bus data listening system
1.2.1 硬件設(shè)計(jì)
硬件采用高集成度的芯片,盡量減少元器件的使用數(shù)量,同時(shí)盡量減小硬件尺寸。根據(jù)上述要求設(shè)計(jì)如圖3的硬件總體架構(gòu),系統(tǒng)架構(gòu)主體由USB接口模塊、現(xiàn)場可編程門陣列模塊、電源模塊3部分組成。
圖3 USB2.0總線數(shù)據(jù)偵聽系統(tǒng)硬件總體架構(gòu)Fig.3 The overall hardware architecture of USB2.0 bus data listening system
設(shè)計(jì)在不干擾原有USB主從設(shè)備間數(shù)據(jù)流的情況下,直接從主從設(shè)備的USB總線無侵入式連接USB接口芯片。USB接口芯片與現(xiàn)場可編程門陣列芯片連接線為雙向信號,現(xiàn)場可編程門陣列芯片通過輸入輸出擴(kuò)展口卡槽與底板連接,并且擴(kuò)展口卡槽可拆卸,連接不同底板。
(1)USB接口模塊
USB接口模塊使用USB3300芯片無侵入式獲取主從設(shè)備之間的信號[13]。該芯片通過ULPI接口連接至現(xiàn)場可編程門陣列,ULPI接口信號電平為3.3 V,工作于高速480 Mbps模式,并且芯片使用24 MHz晶體提供時(shí)鐘。USB3300芯片的功能是:①分離和提取USB總線的時(shí)鐘信號和數(shù)據(jù);②檢測同步序列SOP和EOP信號;③數(shù)據(jù)流的NRZI(Non-Return-to-Zero Inverted)解碼;④剔除填充位;⑤串并轉(zhuǎn)換;⑥檢測填充位錯(cuò)誤和EOP錯(cuò)誤。
該模塊配備兩個(gè)不同的USB接口,接口A為方口母座,用于連接主設(shè)備;接口B為扁口母座,用于連接從設(shè)備。將兩個(gè)接口的USB總線中間引線,從差分對上拉出兩根線,提取其中的信號。該差分信號經(jīng)USB接口芯片接收后還原成電平信號,并進(jìn)一步轉(zhuǎn)換成并行數(shù)據(jù)送入現(xiàn)場可編程門陣列。
(2)現(xiàn)場可編程門陣列模塊
本系統(tǒng)主控芯片采用Xilinx FPGA芯片Spartan-6系列,芯片為XC6SLX9-2TQG144C,配置芯片為W25Q80,用于存儲現(xiàn)場可編程門陣列配置數(shù)據(jù)流。芯片使用USB接口輸出的60 MHz時(shí)鐘作為模塊的系統(tǒng)時(shí)鐘。本系統(tǒng)搭配事務(wù)指示燈,每輸出一次有效事務(wù),信號指示燈亮一次。40引腳的輸入輸出擴(kuò)展口是USB2.0總線數(shù)據(jù)偵聽系統(tǒng)和底板系統(tǒng)數(shù)據(jù)傳輸?shù)耐ǖ馈?/p>
現(xiàn)場可編程門陣列芯片是整個(gè)系統(tǒng)的核心,主要負(fù)責(zé)各芯片的初始化參數(shù)配置,并具有協(xié)調(diào)、調(diào)動(dòng)、存儲和讀取等功能,起到處理器的作用。其中內(nèi)部邏輯電路對數(shù)據(jù)包做分析、處理,解包整合后的主從設(shè)備傳輸數(shù)據(jù)通過8位并行總線從輸入輸出擴(kuò)展口傳給底板。
(3)電源模塊
電源由底板通過輸入輸出擴(kuò)展口引腳提供5 V電壓,使用兩路低壓降線性電源芯片AMS1117分別產(chǎn)生3.3 V和1.2 V電壓,供USB3300和現(xiàn)場可編程門陣列等芯片使用。系統(tǒng)搭配電源指示燈,接通電源后紅色指示燈點(diǎn)亮。
1.2.2 現(xiàn)場可編程門陣列邏輯設(shè)計(jì)
由上述偵聽電路獲得的是USB2.0總線上傳輸?shù)囊粋€(gè)個(gè)數(shù)據(jù)包。按USB2.0協(xié)議[14],一個(gè)數(shù)據(jù)包包含很多字段,但本文要求獲得有效的圖像數(shù)據(jù),所以,偵聽電路還需要對所獲得的數(shù)據(jù)包進(jìn)行分析,提取有效數(shù)據(jù)。在USB2.0協(xié)議中,一次正常的事務(wù)傳輸既有令牌信息包、數(shù)據(jù)信息包和握手信息包,還有忙或者出錯(cuò)時(shí)的事務(wù)傳輸,所以我們需要把每一次事務(wù)的數(shù)據(jù)信息包中的數(shù)據(jù)字段和這次事務(wù)中的非數(shù)據(jù)字段(包括一次事務(wù)中數(shù)據(jù)包的除數(shù)據(jù)字段外的字段和其他包的字段)分開。將非數(shù)據(jù)字段組合成一個(gè)信息頭,便于分析是什么事務(wù),然后根據(jù)事務(wù)信息頭篩選所需圖像數(shù)據(jù)。據(jù)此,我們設(shè)計(jì)了現(xiàn)場可編程門陣列邏輯設(shè)計(jì)模塊,包括ULPI接口模塊、包解析模塊、事務(wù)組合模塊、傳輸模塊和時(shí)鐘模塊。下面分別介紹現(xiàn)場可編程門陣列內(nèi)部邏輯設(shè)計(jì)的各個(gè)模塊。
(1)ULPI接口模塊
ULPI接口模塊為ULPI端口的物理層接口[13],與USB接口芯片模塊建立協(xié)議層的聯(lián)系,并把數(shù)據(jù)完整輸出給下一模塊。
模塊首先用硬件描述語言設(shè)計(jì)了一個(gè)數(shù)據(jù)選擇器和三態(tài)輸出緩沖器的聯(lián)通電路,實(shí)現(xiàn)USB接口芯片模塊與現(xiàn)場可編程門陣列數(shù)據(jù)的雙向?qū)?,然后再設(shè)計(jì)協(xié)議層的聯(lián)系。仿真結(jié)果如圖4,其中ulpi_dir為USB接口芯片用于控制總線傳輸方向的信號;ulpi_nxt為USB接口芯片在傳輸數(shù)據(jù)時(shí)的控制信號;ulpi_stp為現(xiàn)場可編程門陣列通知USB接口芯片傳輸停止的控制信號。從圖4可以看出,當(dāng)ulpi_dir和ulpi_nxt同時(shí)為低電平時(shí),模塊在數(shù)據(jù)總線上驅(qū)動(dòng)傳輸命令字節(jié)(Transmit External Data Command, TXD CMD),然后在ulpi_dir持續(xù)為低電平時(shí)等待ulpi_nxt為高電平。當(dāng)USB接口芯片接收到TXD CMD時(shí)驅(qū)動(dòng)ulpi_nxt為高電平,模塊把寄存器數(shù)據(jù)寫入U(xiǎn)SB接口芯片寄存器。USB接口芯片接收到數(shù)據(jù)后,模塊驅(qū)動(dòng)ulpi_stp為高電平。當(dāng)ulpi_dir為高電平且ulpi_nxt為低電平時(shí),模塊接收并分析從USB接口芯片傳來的接收命令字節(jié)(Receive External Data Command, RXD CMD)。當(dāng)ulpi_dir和ulpi_nxt同時(shí)為高電平時(shí),模塊接收USB接口芯片傳入的數(shù)據(jù),然后完整輸出給包解析模塊。
圖4 ULPI接口模塊仿真圖Fig.4 Simulation diagram of ULPI PHY
另外,從圖4還可以看出,現(xiàn)場可編程門陣列能夠識別RXD CMD,得到正確的rx_valid,rx_error和rx_active信號,實(shí)現(xiàn)了USB接口芯片模塊與現(xiàn)場可編程門陣列數(shù)據(jù)的雙向?qū)?,并得到正確的USB總線上的傳輸數(shù)據(jù)uulpi_data。
(2)包解析模塊
根據(jù)USB2.0協(xié)議[14],一次事務(wù)中只有一個(gè)數(shù)據(jù)包,且只有數(shù)據(jù)包中含有數(shù)據(jù)字段。除去數(shù)據(jù)包中的第1個(gè)8位數(shù)據(jù)和最后兩個(gè)8位數(shù)據(jù),剩下的就是數(shù)據(jù)字段。據(jù)此我們設(shè)計(jì)了包解析模塊。
包解析模塊包含分解模塊和存儲模塊。如圖5虛線框,其中分解模塊的功能是將ULPI接口模塊傳來的并行數(shù)據(jù)根據(jù)USB2.0協(xié)議分析并分解成數(shù)據(jù)字段和非數(shù)據(jù)字段[14];存儲模塊的功能是將分解后的數(shù)據(jù)字段和非數(shù)據(jù)字段分別存入隨機(jī)存取存儲器(Random Access Memory, RAM)和先進(jìn)先出存儲器(First Input First Output, FIFO)中,并與事務(wù)組合模塊進(jìn)行交互。
圖5 現(xiàn)場可編程門陣列芯片內(nèi)處理數(shù)據(jù)的主要模塊Fig.5 The main module of processing data in FPGA chip
(3)事務(wù)組合模塊
本次事務(wù)的所有數(shù)據(jù)經(jīng)過包解析模塊存入隨機(jī)存取存儲器和先進(jìn)先出存儲器之后,進(jìn)入事務(wù)組合模塊。該模塊首先讀取先進(jìn)先出存儲器中的數(shù)據(jù)以便于接下來處理;然后將數(shù)據(jù)中的本次事務(wù)幾個(gè)包的標(biāo)識符根據(jù)USB2.0協(xié)議分析組合成一個(gè)相對應(yīng)的事務(wù)標(biāo)識符數(shù)據(jù);接下來將這些數(shù)據(jù)組合成一個(gè)4字節(jié)的事務(wù)信息頭,同時(shí)從隨機(jī)存取存儲器中依次讀出相對應(yīng)的本次事務(wù)數(shù)據(jù)包的數(shù)據(jù)字段;最后將事務(wù)信息頭和從隨機(jī)存取存儲器中讀出的數(shù)據(jù)組合成一個(gè)事務(wù)包,其中事務(wù)信息頭包含事務(wù)對應(yīng)的標(biāo)識符、設(shè)備地址、端點(diǎn)號和數(shù)據(jù)包的數(shù)據(jù)字段的長度(事務(wù)的數(shù)據(jù)長度)。
(4)傳輸模塊
ChipScope多次抓取實(shí)驗(yàn)發(fā)現(xiàn),天文圖像數(shù)據(jù)屬于具有固定端點(diǎn)和長度的輸入事務(wù)。因此可從事務(wù)組合模塊生成的事務(wù)包的信息頭中篩選天文圖像數(shù)據(jù),并生成一個(gè)同步于向底板傳輸天文圖像數(shù)據(jù)的有效指示信號,通知底板數(shù)據(jù)到來,然后將時(shí)鐘模塊生成的時(shí)鐘信號、篩選的天文圖像數(shù)據(jù)及有效指示信號同步輸出給底板系統(tǒng)。
(5)時(shí)鐘模塊
本模塊使用USB3300芯片輸出的60 MHz信號作為輸入時(shí)鐘信號。模塊將整個(gè)偵聽系統(tǒng)的時(shí)鐘和與偵聽系統(tǒng)同步的時(shí)鐘信號輸出給底板,使底板與偵聽系統(tǒng)時(shí)鐘同步。模塊設(shè)計(jì)中調(diào)用現(xiàn)場可編程門陣列芯片內(nèi)的數(shù)字時(shí)鐘管理器(Digital Clock Manager, DCM),調(diào)節(jié)輸出時(shí)鐘信號的相位,并去除輸出給底板時(shí)鐘信號的歪斜,從而避免時(shí)鐘分配延遲,保證輸出給底板的信號時(shí)序最佳。在底板上用示波器采集的偵聽系統(tǒng)輸出給底板的時(shí)鐘和數(shù)據(jù)的波形如圖6,黃色信號線是系統(tǒng)輸出的時(shí)鐘,紅色信號線是輸出的數(shù)據(jù)。由圖6可以看到,時(shí)鐘周期約為16.6 ns,頻率約為60 MHz。
圖6 示波器采樣Fig.6 Oscilloscope sampling
1.2.3 系統(tǒng)驗(yàn)證
為了驗(yàn)證所提出的USB2.0總線數(shù)據(jù)偵聽系統(tǒng)處理速度能否滿足USB2.0數(shù)據(jù)傳輸速度,本文用ModelSim仿真軟件對USB2.0總線數(shù)據(jù)偵聽系統(tǒng)進(jìn)行了仿真,結(jié)果如圖7。其中,時(shí)鐘clk采用USB接口芯片輸出給現(xiàn)場可編程門陣列的工作時(shí)鐘,頻率為60 MHz,周期為16 ns。rx_data和rx_active為輸入數(shù)據(jù)和輸入數(shù)據(jù)有效指示信號,輸入數(shù)據(jù)由隨機(jī)函數(shù)生成。tx_data_out和tx_active_out為USB2.0總線數(shù)據(jù)偵聽系統(tǒng)向底板輸出的數(shù)據(jù)和有效指示信號。第1個(gè)紅色游標(biāo)是現(xiàn)場可編程門陣列完全接收了一次事務(wù)的數(shù)據(jù)節(jié)點(diǎn),第2個(gè)紅色游標(biāo)是USB2.0總線數(shù)據(jù)偵聽系統(tǒng)處理完這次事務(wù)的數(shù)據(jù)送入底板的節(jié)點(diǎn)。兩個(gè)紅色游標(biāo)相距10個(gè)周期(160 ns),也就是說,USB2.0總線數(shù)據(jù)偵聽系統(tǒng)只需要10個(gè)周期就可以分析處理完并向底板發(fā)送數(shù)據(jù),充分體現(xiàn)了設(shè)計(jì)中現(xiàn)場可編程門陣列的并行特性。
以上設(shè)計(jì)的USB2.0總線數(shù)據(jù)偵聽系統(tǒng)需要與基于現(xiàn)場可編程門陣列的幸運(yùn)成像系統(tǒng)進(jìn)行連接,才能構(gòu)建完整的基于USB2.0總線數(shù)據(jù)偵聽的實(shí)時(shí)幸運(yùn)成像系統(tǒng)。整體的連接實(shí)物圖如圖8,其中物理上兩個(gè)現(xiàn)場可編程門陣列子系統(tǒng)電路板的連接如圖8(a),上面的小板是我們設(shè)計(jì)制作的偵聽電路板,下面稍大的板是以Spartan-6系列XC6SLX16芯片為核心的現(xiàn)場可編程門陣列開發(fā)板(即底板),兩塊電路板通過40引腳的輸入輸出擴(kuò)展口卡槽連接。但在實(shí)現(xiàn)物理連接前,需要將原實(shí)時(shí)幸運(yùn)成像算法及對應(yīng)的處理模塊移植到新系統(tǒng)中。由于新舊兩個(gè)系統(tǒng)的差別主要是在圖像數(shù)據(jù)的輸入接口方面,所以移植的主要任務(wù)是修改原系統(tǒng)的數(shù)據(jù)輸入部分。
修改工作主要是將原現(xiàn)場可編程門陣列系統(tǒng)中以太網(wǎng)數(shù)據(jù)接收模塊去除,設(shè)計(jì)一個(gè)基于輸入輸出擴(kuò)展口的數(shù)據(jù)接收模塊。當(dāng)?shù)装褰邮盏経SB2.0總線數(shù)據(jù)偵聽系統(tǒng)傳來的數(shù)據(jù)有效指示信號后,數(shù)據(jù)接收模塊開始讀取8位數(shù)據(jù)。該模塊還需要將接收的數(shù)據(jù)拼接成一個(gè)16位的圖像像素?cái)?shù)據(jù)并送入先進(jìn)先出存儲器緩存,以便后續(xù)圖像預(yù)處理模塊讀取圖像數(shù)據(jù)。此外,為了整個(gè)系統(tǒng)完美地運(yùn)行,底板系統(tǒng)中的時(shí)鐘主體使用由基于USB2.0總線數(shù)據(jù)偵聽系統(tǒng)通過輸入輸出擴(kuò)展口提供的60 MHz時(shí)鐘信號,相應(yīng)地,需要將部分移植過來的模塊改成與該時(shí)鐘相配套的模塊。
圖8(b)是系統(tǒng)運(yùn)行時(shí)拍攝的照片,其中個(gè)人計(jì)算機(jī)連接方口母座,存有EMCCD相機(jī)拍攝的天文圖像的優(yōu)盤連接扁口母座,藍(lán)色的燈亮證明偵聽系統(tǒng)正在向底板傳輸數(shù)據(jù)。
為了驗(yàn)證本文提出的系統(tǒng)的正確性,我們首先用系統(tǒng)偵聽一個(gè)CCD相機(jī)和個(gè)人計(jì)算機(jī)之間的信號,并在底板用ChipScope軟件抓取。因?yàn)闆]有EMCCD相機(jī),只能使用現(xiàn)有的和EMCCD相機(jī)傳輸基本相似的CCD相機(jī),型號為QHY90A。
要將圖像數(shù)據(jù)完整地傳入底板,需要把其他數(shù)據(jù)去除。ChipScope多次抓取實(shí)驗(yàn)發(fā)現(xiàn),控制信號的數(shù)據(jù)交互不屬于輸入事務(wù),另外只有圖像數(shù)據(jù)傳輸屬于固定端點(diǎn)號且數(shù)據(jù)大小為512字節(jié)的批量傳輸;還發(fā)現(xiàn)含有圖像數(shù)據(jù)的事務(wù)傳輸是連續(xù)傳入的,并且在第1個(gè)事務(wù)前面有一個(gè)固定的大小為5字節(jié)的輸入事務(wù)。ChipScope多次抓取實(shí)驗(yàn)的結(jié)果表明,本實(shí)驗(yàn)可以有兩種方法選取圖像數(shù)據(jù):(1)在系統(tǒng)傳輸模塊中增加事務(wù)信息頭中的標(biāo)識符、端點(diǎn)號和數(shù)據(jù)長度作為限制條件;(2)在系統(tǒng)傳輸模塊中判斷是否是固定的大小為5字節(jié)的輸入事務(wù)來確定接下來的數(shù)據(jù)是否是圖像數(shù)據(jù)。經(jīng)過ChipScope軟件抓取實(shí)驗(yàn)測試,兩種方法結(jié)果一致。由于底板資源的限制,ChipScope軟件只能抓取一部分?jǐn)?shù)據(jù),但圖像數(shù)據(jù)的事務(wù)傳輸是連續(xù)傳入的,所以只需驗(yàn)證抓取傳入的第1個(gè)數(shù)據(jù)包是否正確,結(jié)果如圖9。對比傳入電腦的數(shù)據(jù)可知,該數(shù)據(jù)正確。
圖9 本系統(tǒng)對CCD相機(jī)傳入個(gè)人計(jì)算機(jī)的數(shù)據(jù)的偵聽結(jié)果Fig.9 Listening results of the data transmitted from the CCD camera to the PC monitored by the system
其次驗(yàn)證系統(tǒng)能否進(jìn)行萬幀以上的實(shí)時(shí)動(dòng)態(tài)處理,并將實(shí)驗(yàn)結(jié)果與文[9]比較。由于實(shí)驗(yàn)條件有限,我們采用存儲于優(yōu)盤的實(shí)測EMCCD相機(jī)短曝光圖像,在USB2.0總線傳輸時(shí)進(jìn)行偵聽模擬實(shí)驗(yàn)。所用天文目標(biāo)短曝光系列圖像是2016年10月20日云南天文臺麗江觀測站對雙星HDS 70的實(shí)測圖像,共10 000幀,這組圖像的觀測條件和參數(shù)見文[15]。隨機(jī)單幀如圖10(a),最好單幀如圖10(b)。
圖10 兩幀HDS 70實(shí)測圖像。(a)隨機(jī)單幀;(b)最好單幀F(xiàn)ig.10 Two frames of observed images of HDS 70. (a) A random frame; (b) the best frame
從圖10可以很明顯地看出,由于受大氣湍流的影響,無論隨機(jī)單幀還是最好單幀都無法找到雙星的準(zhǔn)確位置,尤其是雙星中暗星的位置根本無法辨別。
我們用優(yōu)盤將10 000幀原始圖像(512 × 512)按EMCCD相機(jī)的采集速度模擬傳輸,當(dāng)前100幀有效天文圖像傳輸完成之后,視頻圖形陣列顯示器開始顯示9個(gè)閾值處理后的二值化圖像。隨著圖像的持續(xù)傳輸,視頻圖形陣列的閾值圖像動(dòng)態(tài)更新,說明系統(tǒng)實(shí)現(xiàn)了實(shí)時(shí)處理和動(dòng)態(tài)更新的功能。
為了進(jìn)行數(shù)值驗(yàn)證,系統(tǒng)中設(shè)計(jì)了成像結(jié)果通過以太網(wǎng)回傳功能,即當(dāng)向現(xiàn)場可編程門陣列系統(tǒng)傳輸?shù)? 000幀和10 000幀時(shí),將實(shí)時(shí)多閾值處理結(jié)果傳回個(gè)人計(jì)算機(jī)。實(shí)時(shí)處理結(jié)果通過調(diào)用MATLAB函數(shù)顯示如圖11,其中(a)為傳輸5 000幀時(shí)的多閾值處理結(jié)果,(b)為傳輸10 000幀時(shí)的多閾值處理結(jié)果。圖中每個(gè)小圖像為通過相應(yīng)閾值進(jìn)行二值化后的結(jié)果,每個(gè)小圖像上方的數(shù)字表示閾值的序列號。
圖11 視頻圖形陣列屏幕上的9個(gè)分段閾值二值化圖像。(a)5 000幀處理結(jié)果;(b)10 000幀處理結(jié)果
從一部分實(shí)驗(yàn)結(jié)果小圖可以清晰地看到雙星(亮的主星和暗的伴星)的存在,這種多閾值的方法使暗星變得突出,容易分辨。5 000幀的實(shí)驗(yàn)結(jié)果圖中,我們可以看到4幅小圖中有雙星的伴星,10 000幀的實(shí)驗(yàn)結(jié)果圖中,可以看到6幅小圖中有雙星的伴星,說明系統(tǒng)可以實(shí)現(xiàn)萬幀及以上原始格式天文圖像的實(shí)時(shí)動(dòng)態(tài)更新與顯示,新系統(tǒng)運(yùn)行結(jié)果與文[9]的結(jié)果完全相同。
另外,本系統(tǒng)只要對傳輸模塊稍做修改,就可以偵聽不同CCD相機(jī)輸入的圖像,從而實(shí)現(xiàn)不同相機(jī)系統(tǒng)的實(shí)時(shí)幸運(yùn)成像。
本文在分析已有的幸運(yùn)成像系統(tǒng)優(yōu)缺點(diǎn)的基礎(chǔ)上,提出了一種進(jìn)一步提高幸運(yùn)成像處理過程實(shí)時(shí)性的方法——通過無侵入式的數(shù)據(jù)偵聽實(shí)現(xiàn)幸運(yùn)成像,并提出了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案。本文介紹了基于USB2.0總線數(shù)據(jù)偵聽的實(shí)時(shí)幸運(yùn)成像系統(tǒng)的總體設(shè)計(jì),重點(diǎn)介紹了偵聽電路硬件設(shè)計(jì)和USB2.0數(shù)據(jù)分析電路的現(xiàn)場可編程門陣列邏輯設(shè)計(jì),搭建了一個(gè)具有實(shí)時(shí)數(shù)據(jù)偵聽、傳輸、處理、動(dòng)態(tài)更新和顯示的幸運(yùn)成像系統(tǒng)。本文也介紹了主要模塊的設(shè)計(jì)和驗(yàn)證的過程,并用實(shí)測的天文圖像對新幸運(yùn)成像系統(tǒng)進(jìn)行了驗(yàn)證。此外,文中提出的總體設(shè)計(jì)方法和實(shí)現(xiàn)技術(shù)具有通用性,可以為其他類似的USB總線數(shù)據(jù)偵聽?wèi)?yīng)用系統(tǒng)的設(shè)計(jì)提供參考。
致謝:感謝中國科學(xué)院云南天文臺張西亮、季凱帆和金振宇為本文提供原始天文圖像。