田 睿,陳春寧,邸 男,孫海超
(中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033)
在空間項目中,CMOS圖像傳感器相對于CCD有許多優(yōu)勢,如功耗小、成本低、供電電壓種類少、成像電路集成度高等。尤其是在一些在軌工作時間長的項目中,CMOS圖像傳感器在抗輻射能力方面的優(yōu)勢更加明顯。在E2V公司定制的有增強抗輻射特性的EV76C560AR圖像傳感器在1280(H)×1024(V)分辨率下最高幀頻可達60fps,并且具有低功耗、動態(tài)范圍大、低光照環(huán)境下靈敏度高、控制時序簡單的特點。
本文利用EV76C560AR為圖像傳感器,以FPGA和DSP為圖像處理核心設(shè)計一種CMOS相機測量系統(tǒng)[1]。
相機測量系統(tǒng)需要完成對合作目標及其背景進行成像,然后對目標相對于相機系統(tǒng)的姿態(tài)進行測量運算,最后將圖像數(shù)據(jù)下傳到飛行器內(nèi)的局域網(wǎng)上,姿態(tài)測量結(jié)果通過1553B總線傳輸?shù)缴弦患壙刂葡到y(tǒng)。
相機測量系統(tǒng)由2塊電路板組成,一塊電路板是CMOS傳感器板,將CMOS圖像傳感器EV76C560AR焊接到此電路板上,然后將電路板和前端鏡頭加以固定;另一塊電路板是圖像處理板,其上主要器件包括Xilinx公司的V4系列抗輻照FPGA(XQR4VSX55),TI公司的6000系列DSP芯片(SMJ320C6701-SP),Aeroflex公司的SRAM芯片(UT8Q512K32E),Micrel公司的網(wǎng)口PHY芯片(KSZ8041NLJ),DDC公司生產(chǎn)的1553B總線控制芯片(BU-61580S3)。
圖1 相機系統(tǒng)原理圖Fig.1 Architecture of camera system
FPGA(Field Programmable Gate Arrays)可以進行高速數(shù)據(jù)處理和邏輯運算。FPGA芯片使用Xilinx公司生產(chǎn)的V4系列的航天級FPGA芯片XQR4VSX55。它具有很好的溫度特性和抗輻射的能力,并且有多達640個IO管腳,8個DCM(時鐘管理器),最多可以設(shè)定的片內(nèi)RAM達5760Kb,可以滿足系統(tǒng)設(shè)計要求。SMJ320C6701是TI公司研發(fā)的有抗輻照性能的DSP芯片,最大工作時鐘頻率140MHz,1Mbit的片上RAM,32位數(shù)據(jù)總線。
圖像處理板上的FPGA產(chǎn)生能使CMOS圖像傳感器能輸出24fps的圖像的驅(qū)動時序,驅(qū)動時序經(jīng)過板間連接器接到CMOS傳感器板上;由CMOS圖像傳感器進行光電轉(zhuǎn)換,將投射到CMOS靶面上的光信息轉(zhuǎn)換成數(shù)字圖像信號;圖像信號再經(jīng)由板間連接器輸入至圖像處理板上的FPGA。FPGA將圖像數(shù)據(jù)流分成2個,一個是供DSP芯片進行計算的圖像數(shù)據(jù)流,F(xiàn)PGA將此數(shù)據(jù)流存儲到SRAM中,并且設(shè)計有限狀態(tài)機設(shè)置SRAM的工作模式,工作模式包括SRAM完成圖像存儲、DSP的讀取圖像數(shù)據(jù)和DSP寫入圖像數(shù)據(jù)。計算結(jié)果由FPGA作轉(zhuǎn)換,由1553B總線發(fā)送出去。另一個圖像數(shù)據(jù)流為完整的24fps圖像數(shù)據(jù)流,相機系統(tǒng)需要將此數(shù)據(jù)流通過網(wǎng)口收發(fā)芯片PHY下傳到飛行器局域網(wǎng)絡(luò)。
根據(jù)任務(wù)需求,相機系統(tǒng)需要將圖像數(shù)據(jù)傳輸?shù)骄钟蚓W(wǎng)絡(luò)供宇航員進行監(jiān)控。飛行器的局域網(wǎng)絡(luò)速度設(shè)定為百兆,而24fps、8bit、分辨率為1024(H)×1024(V)的圖像數(shù)據(jù)傳輸?shù)淖钚捯鬄?92Mb/s。可見由于網(wǎng)絡(luò)傳輸帶寬的限制不能將原始圖像數(shù)據(jù)從相機系統(tǒng)直接下傳。故此,圖像數(shù)據(jù)流需要經(jīng)過圖像處理板中的圖像壓縮部分進行壓縮,將圖像壓縮成H.264的數(shù)字視頻壓縮格式,再進行下傳。
雖然傳統(tǒng)DSP架構(gòu)的順序執(zhí)行的壓縮算法程序編寫比較簡單,但是由于航天級DSP芯片運算速度極為有限,并且順序執(zhí)行的算法也有很大的局限性導致其難以滿足項目中關(guān)于實時性的要求。所以,相機系統(tǒng)使用FPGA實現(xiàn)圖像數(shù)據(jù)流的H.264格式的壓縮。由于篇幅的關(guān)系,使用FPGA圖像壓縮部分不再詳細敘述,其編程原理可參照參考文獻[2]和文獻[3]。
使用FPGA壓縮后圖像數(shù)據(jù)壓縮比達50~300倍,帶寬需求下降到0.64~3.84Mb/s,可以用百兆局域網(wǎng)下傳。在接收端加入H.264解碼VC程序,可以實現(xiàn)圖像連續(xù)播放。
DSP的最大工作時鐘頻率140MHz,考慮到空間系統(tǒng)的頻率降額要求,它的工作頻率設(shè)定到100MHz??梢?,DSP的運算速度是相當有限的。上一級控制系統(tǒng)對此相機系統(tǒng)的計算速度要求并不高,125ms左右輸出一次測量結(jié)果即可,所以DSP只對CMOS成像的數(shù)據(jù)(24fps,1024 H×1024V)的每三幀抽取一幀進行計算。DSP需要完成的工作有:對合作目標的距離和相對姿態(tài)進行六自由度測量;針對圖像背景和目標灰度進行分析計算;解析通訊信息;控制CMOS圖像傳感器的積分時間;最后將計算結(jié)果通過1553B總線發(fā)送到上級控制系統(tǒng)。
UT8Q512K32E是一款最小讀寫周期為25ns的32位SRAM,所以將讀寫頻率定在36MHz,這樣它的最大數(shù)據(jù)帶寬為144Mb/s。SRAM數(shù)據(jù)流有3個,分別是8fps的圖像數(shù)據(jù)輸入,DSP通過DMA方式讀出圖像數(shù)據(jù)和DSP通過DMA方式寫入其預(yù)處理后的二值圖像[4-5]。設(shè)定SRAM控制狀態(tài)機一共有4個運行狀態(tài),分別是空閑狀態(tài)(狀態(tài)標志碼0001B)、圖像寫入狀態(tài)(狀態(tài)標志碼0010B)、DMA讀圖像狀態(tài)(狀態(tài)標志碼0111B)和DMA寫圖像狀態(tài)(狀態(tài)標志碼1000B)。
圖2 SRAM控制狀態(tài)機Fig.2 SRAM control state machine
由于DSP的EMIF總線上只能進行讀操作或者寫操作,所以在計算系統(tǒng)工作帶寬的時候只要考慮一個DMA工作模式即可。如果設(shè)定DSP芯片SMJ320C6701-SP在DMA(直接存儲器訪問)模式下速度為16.7MHz,DSP的數(shù)據(jù)總線為32bit,所以DSP的數(shù)據(jù)吞吐帶寬為66.8Mb/s。CMOS圖像傳感器的輸出像素時鐘為36MHz,如果只取圖像數(shù)據(jù)的高8位參與DSP運算,數(shù)據(jù)吞吐帶寬為36Mb/s。所以,控制SRAM的有限狀態(tài)機的利用率不能低于(36MHz+66.8 MHz)/144MHz=71.4%。
在一個完整的有限狀態(tài)機狀態(tài)轉(zhuǎn)換周期中,最少需要的變換需求時鐘周期數(shù)包括:狀態(tài)結(jié)束延遲等待時鐘周期數(shù)T1;狀態(tài)結(jié)束申請信號的持續(xù)時鐘周期數(shù)T2;狀態(tài)結(jié)束申請信號使狀態(tài)機回到“空閑”狀態(tài)所需的時鐘周期數(shù)T3;狀態(tài)申請信號持續(xù)時鐘周期數(shù)T4;進入狀態(tài)后設(shè)置狀態(tài)內(nèi)參數(shù)所需時鐘周期數(shù)T5;狀態(tài)處理時鐘周期數(shù)T6。
圖3 狀態(tài)機時序圖Fig.3 Timing of state machine
通過編程,本系統(tǒng)中設(shè)定各個最小需求周期數(shù)T1為2,T2為1,T3為1,T4為1,T5為2,綜合上一段對SRAM帶寬的分析應(yīng)有:
公式的意義為,在一個完整的有限狀態(tài)機狀態(tài)轉(zhuǎn)換周期中,操作數(shù)據(jù)讀寫的時間至少占整個轉(zhuǎn)換周期的71.4%才能保證狀態(tài)響應(yīng)的實時性,才能保證數(shù)據(jù)沒有因為狀態(tài)機沒有響應(yīng)狀態(tài)申請而發(fā)生錯誤。得到T6應(yīng)大于17.5,取2的整冪數(shù)有利于FPGA邏輯運算和內(nèi)部FIFO讀寫判定,這里取32。以狀態(tài)機主工作時鐘為計數(shù)基準時,每個狀態(tài)操作循環(huán)中至少有32個周期用來進行SRAM讀寫操作。
在Modelsim6.5上進行狀態(tài)機仿真結(jié)果如圖4所示。
圖4 時序仿真結(jié)果Fig.4 Timing simulation result
相機系統(tǒng)作為整個控制系統(tǒng)的一部分,其數(shù)據(jù)交換通過BU-61580芯片在1553b總線上實現(xiàn)的。相機系統(tǒng)在1553b線上作為一個RT端(遠置終端)存在,控制信息通過同級別總線上的BC端(總線控制器)發(fā)送到相機系統(tǒng);相機系統(tǒng)把對合作目標的姿態(tài)計算結(jié)果傳遞到同級別的BC端[6-7]。
對BU-61580的寄存器和數(shù)據(jù)區(qū)進行讀寫需求時間比較長。如BU-61580的輸入時鐘周期為16MHz,寫入一個寄存器或者緩存數(shù)據(jù)需要用時最少為10個總線周期,時間約為625μs。應(yīng)用中,每次需要讀寫的子地址數(shù)為30個,每個子地址需要操作32次,一共需要操作的時間為:
使用DSP直接控制BU-61580需要修改DSP的外部總線頻率,并且初始化BU-61580和操作BU-61580所需的時間也比較長。使用FPGA控制BU-61580,不但降低了DSP操作外部總線的復雜度,初始化和讀寫數(shù)據(jù)的時間也減少了很多,所以使用FPGA作為BU-61580的控制芯片。DSP在每一幀圖像計算完成后把數(shù)據(jù)信號通過DMA方式傳遞到FPGA,由FPGA完成對BU-61580芯片上數(shù)據(jù)區(qū)的填充。DSP傳遞數(shù)據(jù)到FPGA時間為:
所用時間只需要直接操作子地址的二十分之一左右。
在接收BC傳遞的數(shù)據(jù)時,F(xiàn)PGA利用消息結(jié)束產(chǎn)生的中斷讀取數(shù)據(jù)的模式,即FPGA接收到BU-61580芯片的中斷管腳INT的低電平脈沖信號后,再對消息進行判定和操作。FPGA讀取命令控制字所在的RAM地址中的數(shù)據(jù),得到中斷的命令控制字。如果這些命令控制字都符合通訊協(xié)議中的設(shè)定,F(xiàn)PGA根據(jù)子地址查找表查找此次操作的子地址所對應(yīng)的RAM起始地址,最后根據(jù)數(shù)據(jù)字數(shù)讀取RAM中的數(shù)據(jù)。最后,DSP根據(jù)計算需求定時讀取FPGA中的控制信息[8]。
使用V4系列FPGA和C67x系列DSP為圖像處理核心設(shè)計一種CMOS相機測量系統(tǒng)。在ISE12.4和CCS3.1的開發(fā)環(huán)境下,使用VHDL和C語言進行編程實現(xiàn)和綜合編譯,并且用Modelsim6.5對邏輯描述語言做了充分的仿真。在系統(tǒng)資源和器件選用非常有限的情況下完成了相機測量系統(tǒng)設(shè)計,此系統(tǒng)已經(jīng)在初樣載荷上使用,可靠性高,成像清晰,姿態(tài)數(shù)據(jù)準確。
[1]賀柏根,劉劍,馬天瑋.基于 DSP+FPGA的實時圖像去霧增強系統(tǒng)設(shè)計[J].液晶與顯示,2013,28(6):968-972.He B G,Liu J,Ma T W.Real-time image defogging and enhanced system design based on DSP+FPGA [J].Chinese Journal of Liquid Crystal and Displays,2013,28(6):968-972.(in Chinese)
[2]李飛鵬.基于FPGA的H.264視頻壓縮編碼系統(tǒng)研究與實現(xiàn)[D].南京:南京航空航天大學,2012.Li F P.Research and realization of H.264Video compression coding system based on FPGA [D].Nanjing:Nanjing University of Aeronautics and Astronautics,2012,(in Chinese)
[3]榮超群.基于FPGA的 H.264編碼系統(tǒng)設(shè)計與實現(xiàn)[D].沈陽:東北大學,2013.Rong C Q,Design and implementation of H.264encoding system based on FPGA [D].Shenyang:Northeastern U-niversity,2013,(in Chinese)
[4]王明富,楊世洪,吳欽章.大面陣CCD圖像實時顯示系統(tǒng)的設(shè)計[J].光學精密工程,2010,18(9):2053-2059.Wang M F,Yang S H,Wu Q Z.Design of large-array CCD real-time display system [J].Optics and Precision Engineering,2010,18(9):2053-2059.(in Chinese)
[5]樊博,王延杰,孫宏海,等.FPGA實現(xiàn)高速實時多端口圖像處理系統(tǒng)的研究[J].液晶與顯示,2013,28(4):620-625.Fan B,Wang Y J,Sun H,et al.High speed real-time multiport image algorithm in FPGA real-time system [J].Chinese Journal of Liquid Crystal and Displays,2013,28(4):620-625.(in Chinese)
[6]尹占芳,曹宇,楊福廣,等.基于FPGA的1553B總線終端設(shè)計[J].計算機測量與控制,2013,5:1288-1290.Yin Z F,Cao Y,Yang F G,et al.Design of MIL-STD-1553Bterminal based on FPGA [J].Computer Measurement&Control,2013,5:1288-1290.(in Chinese)
[7]李志剛,蓋宇.基于FPGA的1553B總線編碼解碼器的設(shè)計[J].計測技術(shù),2006:26:45-48.Li Z G,Gai Y.The design of the manchester II coders and decoders for the 1553Bbus based on FPGA [J].Metrology & Measurement Technology,2006,26 :45-48.(in Chinese)
[8]張飛,王煥玉,徐玉朋等.基于FPGA控制實現(xiàn)的1553B總線通訊設(shè)計[J].航天控制,2010,28(6):67-71.Zhang F,Wang H Y,Xu Y P.1553B_Bus communication design based on FPGA control[J].Aerospace Control,2010,28(6):67-71.(in Chinese)