楊靖文,陳善球,熊耀恒,饒長輝
(1.中國科學(xué)院國家天文臺云南天文臺,云南 昆明 650011;2.中國科學(xué)院光電技術(shù)研究所自適應(yīng)光學(xué)研究室,四川 成都 610209;3.中國科學(xué)院自適應(yīng)光學(xué)重點實驗室,四川 成都 610209;4.中國科學(xué)院研究生院,北京 100049)
在月球激光測距[1]的相關(guān)跟蹤自適應(yīng)光學(xué)系統(tǒng)中,為能有效消除大氣湍流帶來的擾動,要求自適應(yīng)系統(tǒng)的響應(yīng)時間必須小于大氣湍流的特征時間尺度,即在2~5 ms內(nèi)完成波前探測和補償[2]對于各個環(huán)節(jié)的延時都要盡量降到最低。其中,實時圖象采集部分,需要使用高速高靈敏的CMOS相機,同時,對圖象采集卡也提出了很高的要求。
現(xiàn)在的圖像采集卡大多數(shù)是借助PCI總線的線性突發(fā)傳輸?shù)奶攸c,采用面向計算機存儲器的圖像采集方式,即模擬圖像通過A/D轉(zhuǎn)換器后,先存于PCI總線產(chǎn)品自身的緩沖器中(一般只需幾K的容量)[3],當緩沖器滿后直接把圖像數(shù)據(jù)傳輸給計算機的物理存儲器。因此電路設(shè)計較為簡化、成本低。工作頻率為33 MHz,總線帶寬為32位的計算機,最大傳輸率為132 MB/s。但是在實時性要求較高,圖像傳輸數(shù)據(jù)量巨大的大氣傾斜量校正中仍然有較大延遲。
PCI-Express總線的提出將數(shù)據(jù)傳輸?shù)乃俾侍嵘揭粋€新的臺階。作為第3代高性能IO總線,在傳輸速率方面,PCI-Express總線利用串行的連接特點能輕松將數(shù)據(jù)傳輸速度提到一個很高的頻率,達到遠超出PCI總線的傳輸速率,引腳數(shù)大大減少;并且點到點的互連,每個設(shè)備都由獨立的鏈路連接,獨享帶寬[4]。這些變革在提高了數(shù)據(jù)傳輸速率的同時,大大減少了電路設(shè)計的成本。采用這種總線的高速圖象采集卡,能夠緩解數(shù)據(jù)吞吐速率不匹配的矛盾,還能夠簡化電路的設(shè)計。根據(jù)PCIExpress 1.0規(guī)范,PCI-Express采用8位元,2.5 GB/s的工作頻率,每個通道支持雙向數(shù)據(jù)傳輸,每向數(shù)據(jù)傳輸帶寬250 MB/s,現(xiàn)采用PCI-Express X4規(guī)格,單向數(shù)據(jù)傳輸帶寬為1GB/s。
本文提出一種采用定制PCI-Express的高速圖像采集卡,并且在實時操作系統(tǒng)RTAI(Real-Time Application Interface)設(shè)計了實時驅(qū)動程序,在通用CPU上,實現(xiàn)硬實時圖像采集。
RTAI實時操作系統(tǒng)[5]是對 Linux 內(nèi)核的硬實時擴展,它可以提供工業(yè)級的RTOS(Real-Time Operating System)功能,而且其所有的功能都可無縫地通過GNU/Linux環(huán)境訪問。采用Linux+RTAI雙內(nèi)核操作系統(tǒng),在其中設(shè)計PCI-E圖像采集卡的實時驅(qū)動程序,得以最大限度地降低圖像傳輸?shù)难訒r。
整個相關(guān)跟蹤系統(tǒng),結(jié)構(gòu)如圖1,PCI-E高速圖像采集卡和D/A輸出卡通過PCI-E總線、PCI總線和工控機(Industrial PC,IPC)連接構(gòu)成了波前處理機的硬件平臺。其中圖像采集卡負責從外部CMOS相機高速實時地采集圖像數(shù)據(jù),通過PCI-E總線,由RTAI實時驅(qū)動程序中的中斷響應(yīng)Block DMA Mode處理之后,傳遞到處理機的共享內(nèi)存,D/A輸出卡負責將實時任務(wù)得到的控制電壓輸出給外部數(shù)模轉(zhuǎn)換器件(DAC)和高壓放大器。工控機采用雙核CPU并行計算,運行實時任務(wù)。
圖1 相關(guān)跟蹤系統(tǒng)結(jié)構(gòu)Fig.1 Block diagram of the correlation tracking system
在此之上建立相應(yīng)的軟件層,主要分為兩個軟件層,如圖2,RTAI內(nèi)核層和Linux用戶層,它們之間通過RT-FIFO進行高速數(shù)據(jù)傳輸。其中,內(nèi)核層中,RTAI實時操作系統(tǒng)在Linux內(nèi)核與硬件中斷之間增加一組實時硬件抽象層RTHAL(Real Time Hardware Abst raction Layer),接管了所有的硬件資源。并且RTAI的任務(wù)調(diào)度系統(tǒng)會為實時任務(wù)分配較高的優(yōu)先級,而Linux操作系統(tǒng)的優(yōu)先級最低,它所占有的時間片轉(zhuǎn)輪,隨時可以被實時任務(wù)搶占。Linux用戶層,主要是監(jiān)控和管理的功能,由圖形用戶接口GUI(Graphical User Interface)和顯示線程組成。
圖2 相關(guān)跟蹤系統(tǒng)軟件結(jié)構(gòu)Fig.2 Software architecture of the correlation tracking system
本設(shè)計中采用的PCI-Express高速圖像采集卡的板卡是交由成都華興愛達科技產(chǎn)品經(jīng)營部,按照本文設(shè)計硬件電路定制出來,并且設(shè)計了測試管腳和調(diào)試管腳,由本文按照大氣波前傾斜量實時補償?shù)奶攸c,特別設(shè)計開發(fā)VHDL軟件程序,最大限度地提高系統(tǒng)帶寬,降低延時。
本設(shè)計中選取ALTERA公司的型號為EP2C35的FPGA芯片作為數(shù)字信號處理的核心芯片[6]。直接連接外圍的各種接口器件,硬件結(jié)構(gòu)如圖3?;诟咚俚囊?,選擇CAMERALINK接口和SDRAM存儲芯片,做到無像素點遺漏、不間斷的數(shù)據(jù)存儲。選擇PCI-ExpressX4的總線結(jié)構(gòu),理論速度能達到1 GB/s。
圖3 高速PCI-E圖像采集卡硬件電路結(jié)構(gòu)Fig.3 Illustration of the circuit structure of the high-speed PCI-Express image acquisition card
Camera Link接口解碼芯片將CMOS相機發(fā)出的差分信號轉(zhuǎn)換后,經(jīng)FPGA,送往雙口SDRAM存儲。SDRAM存滿一幀圖像后,將數(shù)據(jù)傳遞給主機。為了保證CMOS數(shù)據(jù)的高速實時采集,采用中斷驅(qū)動的Block DMA Mode,PCI-E同時控制總線兩側(cè)的數(shù)據(jù)傳遞,而數(shù)據(jù)傳輸?shù)膱?zhí)行則由PCI-E的設(shè)備驅(qū)動程序通過設(shè)置內(nèi)部寄存器來控制。
PCI-E高速圖像采集卡核心模塊FPGA選擇的是ALTERA公司cycloneⅡ系列中的EP2C35芯片。由于FPGA內(nèi)部結(jié)構(gòu)的特點,采集圖像信號處理十分有利。適合實時圖像信號處理中通常都需要大量數(shù)據(jù)傳輸。
采用CAMERA LINK接口,選用的是K4S643232H芯片,Camera Link是采用了一種新型的數(shù)字差分傳輸方法,圖像信號傳輸采用的是數(shù)字差分信號,簡化了模數(shù)轉(zhuǎn)化、視頻信號編碼解碼等工作流程,有較高的傳輸速度和圖像像素精度,圖像傳輸前后端連接簡單、靈活。
隨機存儲器方面,使用FPGA芯片中的SRAM(靜態(tài)隨機存儲器),由于本系統(tǒng)是同步系統(tǒng),在數(shù)據(jù)傳輸完一幀后,發(fā)中斷給計算機,計算機開始接收數(shù)據(jù)傳輸,因為計算機先傳輸,而且速度大于相機端數(shù)據(jù)傳輸速度,所以,傳輸速度足夠,并且處理的圖像大小為64×64,存儲器大小足夠。
PCI-E高速圖像采集卡的主要結(jié)構(gòu)是FPGA,它的主要功能是實現(xiàn)PCI端的協(xié)議,實現(xiàn)主機PCI-E接口到存儲器PCI接口的轉(zhuǎn)換,邏輯結(jié)構(gòu)如圖4。FPGA主要分為4大模塊,其中包括負責數(shù)據(jù)采集功能的Videoint模塊、負責PCI配置功能的Pcislave模塊、負責實現(xiàn)DMA傳輸功能的Busmaster模塊、負責存儲圖像功能的IPM_RAM模塊。
圖4 高速PCI-E圖像采集卡邏輯結(jié)構(gòu)Fig.4 Logic structure of the high-speed PCI-Express image acquisition card
FPGA中,存儲器端的接口為并行接口,需要經(jīng)過PCI—PCI-E橋接芯片將存儲器端(Local端)轉(zhuǎn)換成為串行信號接口,此處選擇的是P17C9X130橋接芯片(PCI EXPRESS TO PCI-XBRIDGE),它支持雙向橋接,而本系統(tǒng)中實現(xiàn)的是“前進模式”,芯片橋可以完成X4PCI-E上行端口至64位PCI下行端口的配置,用于接收FPGA中SRAM并行接口的數(shù)據(jù),因此,PCI—PCI-E橋接芯片支持FPGA工作在64位,66 MHz的PCI協(xié)議。也就是FPGA中的存儲模塊IPM_RAM從數(shù)據(jù)采集模塊Videoint模塊中,按照PCI協(xié)議,遵守PCI 3.0規(guī)范將64位地址數(shù)據(jù)多路復(fù)用的并行信號,轉(zhuǎn)換為PCI-E的串行信號,才能夠由PCI-Express接口將圖像數(shù)據(jù)傳輸給計算機,這樣就實現(xiàn)了主機通過PCI-E接口控制存儲器端接口,實現(xiàn)高速傳輸。
其中,PCI下行端口的頻率約為66 MHz,因此,PCI下行端口的理論速度為528 MB/s。雖然PCI-E上行端口的理論速度為1 GB/s,但受到橋接轉(zhuǎn)換成PCI端口的限制,PCI-E圖像采集卡理論傳輸速度為528 MB/s。
Linux內(nèi)核將所有外部設(shè)備看成是一類特殊文件,稱之為“設(shè)備文件”,這種“設(shè)備文件”也就是設(shè)備驅(qū)動程序,它是Linux內(nèi)核與外部設(shè)備之間的接口,使得內(nèi)核可以向應(yīng)用程序提供一個統(tǒng)一的接口,不用考慮底層的技術(shù)。也就是設(shè)備驅(qū)動程序向應(yīng)用程序屏蔽了硬件在實現(xiàn)上的細節(jié),使得應(yīng)用程序可以像操作普通文件一樣來操作外部設(shè)備。
PCI設(shè)備的實時驅(qū)動需要實現(xiàn)設(shè)備初始化、實時中斷處理和設(shè)備卸載3部分,程序流程如圖5。實時計算線程作為實時內(nèi)核態(tài)程序可以直接調(diào)用PCI實時驅(qū)動,同時,它和主應(yīng)用程序通過實時FIFO進行通信,從而間接地實現(xiàn)了實時驅(qū)動程序和主應(yīng)用程序的通信,這樣也間接地實現(xiàn)了Linux用戶態(tài)的主應(yīng)用程序?qū)CI-E外設(shè)的控制。
圖5 高速PCI-E圖像采集卡實時驅(qū)動程序結(jié)構(gòu)圖Fig.5 Structure diagram of the RTAI real-time driver of the high-speed PCI-Express image acquisition card
在運行實時驅(qū)動程序時,采用模塊加載方式,掛接程序模塊,模塊加載成功后,module_init()函數(shù)會初始化PCI-E,并調(diào)用pcie_register_driver()注冊PCI-E驅(qū)動程序,
注冊時需要提前給出兩個結(jié)構(gòu)體,第1個描述了被支持的PCI-E設(shè)備的ID號及其掩碼。
另1個介紹了驅(qū)動程序的名稱name,檢測設(shè)備的函數(shù)probe(),以及用于識別設(shè)備的id_table結(jié)構(gòu)。
在probe()探測函數(shù)中,首先調(diào)用函數(shù)pci_enable_device(pdev),激活PCI-E圖像采集卡,完成驅(qū)動程序的注冊,再調(diào)用RTAI的API函數(shù)rt_request_global_irq(pdev->irq,pcie_interrupt),申請實時中斷,同時注冊中斷服務(wù)例程(Interrupt Service Routine,ISR),保證了PCI-E圖像采集卡中的Local中斷和DMA中斷信號能被系統(tǒng)快速響應(yīng),因為實時中斷的優(yōu)先級最高,被接收后,計算機將立刻響應(yīng)。圖像采集卡一幀圖像存儲完畢后,發(fā)出DMA中斷,由中斷處理程序_interrupt()進行響應(yīng),進入DMA數(shù)據(jù)傳輸,并存儲在計算機共享內(nèi)存中。當一幀數(shù)據(jù)傳輸完畢,計算機發(fā)出local linux中斷,喚醒實時計算程序中的函數(shù)startcal(),進行傾斜量的計算。
由于探測對象是低對比度擴展源目標,月球激光測距中大氣傾斜量實時補償?shù)睦碚撍惴ú捎媒^對差分算法,由此造成的大計算量,又結(jié)合高實時性的要求。選擇使用雙核CPU的工控機,在實時計算程序中,同步過程主要為CPU 0發(fā)送rt_receive()函數(shù),由CPU 1的函數(shù)rt_send()接收信號后,雙線程并行運算。
實驗中采用主頻為2.66 GHz,雙核cpu的工控機。選用相機為Intervac公司的背照明式近紅外相機,該相機在采集圖像大小為64×64時,幀頻最大可達到3000 Hz。
在對比實驗中,相機選取1000 Hz幀頻,首先選用PCI圖像采集卡的Local端總線為32 bit,工作頻率為33 MHz/s,根據(jù)計算的需要,只傳輸64×64大小圖像,在實時I/O驅(qū)動程序中,加入rt_get_cpu_time_ns()函數(shù),通過使用cpu時鐘,來測量各操作完成所需要的時間。得到圖像數(shù)據(jù)DMA傳輸所需時間為260 μs。相對比,換使用PCI-E 4通道高速圖像采集卡,它的工作頻率為2.5 GHz/s,其他實驗條件不變,得到圖像數(shù)據(jù)DMA傳輸所需時間為26 μs。說明采用該PCI-E高速圖像采集卡,相關(guān)跟蹤系統(tǒng)數(shù)據(jù)傳輸所產(chǎn)生的延時,縮短了一個數(shù)量級,較好地節(jié)省了時間,提高系統(tǒng)效率。
圖6a 10 ms長曝光開環(huán)圖像Fig.6a Image of 10 ms open-loop exposure affected by atmospheric tilt
圖6b 10 ms長曝光閉環(huán)圖像Fig.6b Image of 10 ms closed-loop exposure with effects of atmospheric tilt corrected
同時,實驗中通過加載干擾信號的方式,對模擬目標光源進行擴展、干擾,由本文中設(shè)計的PCI-E高速圖像采集卡,實時采集到圖像數(shù)據(jù),傳輸給計算機,并進行實時計算,得到傾斜量誤差,輸出校正電壓給高壓放大信號,最終的完成實時閉環(huán)。實驗結(jié)果,圖6a中,相機采集幀頻為1000 Hz,加載了4 Hz正弦干擾信號,采集10 ms的長曝光像,由于動態(tài)干擾,導(dǎo)致圖像模糊不清。閉環(huán)后的實時校正圖像圖6b中,圖像明顯清晰很多,分辨率得到大幅提高。
經(jīng)測量,基于該PCI-E高速圖像采集卡的相關(guān)跟蹤系統(tǒng)各項系統(tǒng)延時如下:圖像數(shù)據(jù)的最大傳輸時間28 μs,實時計算最大延遲時間320 μs,PCI D/A輸出卡只需傳輸相對偏移量校正電壓,所以延時基本忽略不計,共計348 μs。因此,整套系統(tǒng)的響應(yīng)時間大幅度小于大氣湍流波前誤差變化的時間尺度(2~5 ms)。
根據(jù)上述實驗結(jié)論,PCI-E高速圖像采集卡實現(xiàn)了通過Camera link接口對相機的圖像采集,并實時地傳輸?shù)接嬎銠C中。進一步縮短了大氣湍流傾斜量探測的相關(guān)跟蹤系統(tǒng)的延遲。同時,多次反復(fù)實驗中,該PCI-E高速圖像采集卡,高速、實時、準確地采集圖像數(shù)據(jù),傳輸圖像數(shù)據(jù),RTAI實時操作系統(tǒng)下的實時驅(qū)動程序為其提供了與計算機之間良好的通信,以及數(shù)據(jù)傳輸通道,它的硬實時特性是大幅度減少圖像數(shù)據(jù)采集延時的關(guān)鍵。
本系統(tǒng)中傳輸?shù)膱D像大小為64×64,每個像素值是10位,由上述實驗測得DMA傳輸時間為26 μs,可得PCI-E圖像采集卡實際傳輸速度為188 MB/s。而 PCI-E 4通道的理論傳輸速度為528 MB/s。經(jīng)分析,造成速度減小的原因有兩點:其一,DMA傳輸過程信息時,需PCI-E圖像采集卡發(fā)出一系列相互識別的握手信號,從設(shè)備(主機內(nèi)存端)需要準備好并響應(yīng),完成硬件握手,再進入到數(shù)據(jù)傳輸階段,這樣造成了傳輸?shù)难舆t;其二,傳輸過程先進行地址部分的數(shù)據(jù)傳輸,再進行圖像數(shù)據(jù)部分的傳輸,也導(dǎo)致實際數(shù)據(jù)傳輸速度不能達到理想速度。
將來,為使月球激光測距精確性得到進一步提高,采集和傳輸更大幅面圖像時,可以選用通道數(shù)量更多的PCI-Express接口,例如:PCI-E×8接口,PCI-E×16接口。并選用PCI-Express 2.0規(guī)范或者隨著PCI-Express 3.0規(guī)范的出現(xiàn)而不斷升級擴展。其中PCI-Express 2.0規(guī)范在1.0版本基礎(chǔ)上更進了一步,將接口速率提升到了5 GHz,傳輸性能也翻了一番。新一代芯片組產(chǎn)品均可支持PCI Express 2.0總線技術(shù),X1模式的擴展口帶寬總和可達到1 GB/s,X16圖形接口更可以達到16 GB/s的驚人帶寬值??梢赃M一步縮短圖像數(shù)據(jù)采集和傳輸?shù)南到y(tǒng)延時。
[1]熊耀恒.月球激光測距的新技術(shù)方法研究[D].昆明:中國科學(xué)院云南天文臺,2001.
[2]郭銳,熊耀恒.自適應(yīng)光學(xué)技術(shù)應(yīng)用于激光測月中大氣波前傾斜量的探測與計算[J].天文學(xué)報,2004,45(4):413-421.Guo Rui,Xiong Yaoheng.The Detection and Computation of Atmospheric Tip-Tilt in Lunar Laser Ranging when Adaptive Optics Technology is used[J].Acta Astronomica Sinica,2004,45(4):413 - 421.
[3]李貴山,戚德虎.PCI局部總線開發(fā)者指南[M].西安:西安電子科大出版社,1997.
[5]阮鴻芳,鐘家騏.Linux與硬實時擴展系統(tǒng)——RTAI的分析與研究[J].嵌入式操作系統(tǒng)應(yīng)用,2007(23):44-45.
[6]鄭千洪,王黎,高曉蓉.基于FPGA的圖像采集卡的設(shè)計[J].電氣自動化,2007,29(6):65-66.Zheng Qianhong,Wang Li,Gao Xiaorong.The Design of Image Sampling Card Based on FPGA[J].Electrical Automation,2007,29(6):65 -66.