田 睿,陳春寧,邸 男,孫海超
(中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033)
在空間項目中,CMOS圖像傳感器相對于CCD有許多優勢,如功耗小、成本低、供電電壓種類少、成像電路集成度高等。尤其是在一些在軌工作時間長的項目中,CMOS圖像傳感器在抗輻射能力方面的優勢更加明顯。在E2V公司定制的有增強抗輻射特性的EV76C560AR圖像傳感器在1280(H)×1024(V)分辨率下最高幀頻可達60fps,并且具有低功耗、動態范圍大、低光照環境下靈敏度高、控制時序簡單的特點。
本文利用EV76C560AR為圖像傳感器,以FPGA和DSP為圖像處理核心設計一種CMOS相機測量系統[1]。
相機測量系統需要完成對合作目標及其背景進行成像,然后對目標相對于相機系統的姿態進行測量運算,最后將圖像數據下傳到飛行器內的局域網上,姿態測量結果通過1553B總線傳輸到上一級控制系統。
相機測量系統由2塊電路板組成,一塊電路板是CMOS傳感器板,將CMOS圖像傳感器EV76C560AR焊接到此電路板上,然后將電路板和前端鏡頭加以固定;另一塊電路板是圖像處理板,其上主要器件包括Xilinx公司的V4系列抗輻照FPGA(XQR4VSX55),TI公司的6000系列DSP芯片(SMJ320C6701-SP),Aeroflex公司的SRAM芯片(UT8Q512K32E),Micrel公司的網口PHY芯片(KSZ8041NLJ),DDC公司生產的1553B總線控制芯片(BU-61580S3)。

圖1 相機系統原理圖Fig.1 Architecture of camera system
FPGA(Field Programmable Gate Arrays)可以進行高速數據處理和邏輯運算。FPGA芯片使用Xilinx公司生產的V4系列的航天級FPGA芯片XQR4VSX55。它具有很好的溫度特性和抗輻射的能力,并且有多達640個IO管腳,8個DCM(時鐘管理器),最多可以設定的片內RAM達5760Kb,可以滿足系統設計要求。SMJ320C6701是TI公司研發的有抗輻照性能的DSP芯片,最大工作時鐘頻率140MHz,1Mbit的片上RAM,32位數據總線。
圖像處理板上的FPGA產生能使CMOS圖像傳感器能輸出24fps的圖像的驅動時序,驅動時序經過板間連接器接到CMOS傳感器板上;由CMOS圖像傳感器進行光電轉換,將投射到CMOS靶面上的光信息轉換成數字圖像信號;圖像信號再經由板間連接器輸入至圖像處理板上的FPGA。FPGA將圖像數據流分成2個,一個是供DSP芯片進行計算的圖像數據流,FPGA將此數據流存儲到SRAM中,并且設計有限狀態機設置SRAM的工作模式,工作模式包括SRAM完成圖像存儲、DSP的讀取圖像數據和DSP寫入圖像數據。計算結果由FPGA作轉換,由1553B總線發送出去。另一個圖像數據流為完整的24fps圖像數據流,相機系統需要將此數據流通過網口收發芯片PHY下傳到飛行器局域網絡。
根據任務需求,相機系統需要將圖像數據傳輸到局域網絡供宇航員進行監控。飛行器的局域網絡速度設定為百兆,而24fps、8bit、分辨率為1024(H)×1024(V)的圖像數據傳輸的最小帶寬要求為192Mb/s。可見由于網絡傳輸帶寬的限制不能將原始圖像數據從相機系統直接下傳。故此,圖像數據流需要經過圖像處理板中的圖像壓縮部分進行壓縮,將圖像壓縮成H.264的數字視頻壓縮格式,再進行下傳。
雖然傳統DSP架構的順序執行的壓縮算法程序編寫比較簡單,但是由于航天級DSP芯片運算速度極為有限,并且順序執行的算法也有很大的局限性導致其難以滿足項目中關于實時性的要求。所以,相機系統使用FPGA實現圖像數據流的H.264格式的壓縮。由于篇幅的關系,使用FPGA圖像壓縮部分不再詳細敘述,其編程原理可參照參考文獻[2]和文獻[3]。
使用FPGA壓縮后圖像數據壓縮比達50~300倍,帶寬需求下降到0.64~3.84Mb/s,可以用百兆局域網下傳。在接收端加入H.264解碼VC程序,可以實現圖像連續播放。
DSP的最大工作時鐘頻率140MHz,考慮到空間系統的頻率降額要求,它的工作頻率設定到100MHz。可見,DSP的運算速度是相當有限的。上一級控制系統對此相機系統的計算速度要求并不高,125ms左右輸出一次測量結果即可,所以DSP只對CMOS成像的數據(24fps,1024 H×1024V)的每三幀抽取一幀進行計算。DSP需要完成的工作有:對合作目標的距離和相對姿態進行六自由度測量;針對圖像背景和目標灰度進行分析計算;解析通訊信息;控制CMOS圖像傳感器的積分時間;最后將計算結果通過1553B總線發送到上級控制系統。
UT8Q512K32E是一款最小讀寫周期為25ns的32位SRAM,所以將讀寫頻率定在36MHz,這樣它的最大數據帶寬為144Mb/s。SRAM數據流有3個,分別是8fps的圖像數據輸入,DSP通過DMA方式讀出圖像數據和DSP通過DMA方式寫入其預處理后的二值圖像[4-5]。設定SRAM控制狀態機一共有4個運行狀態,分別是空閑狀態(狀態標志碼0001B)、圖像寫入狀態(狀態標志碼0010B)、DMA讀圖像狀態(狀態標志碼0111B)和DMA寫圖像狀態(狀態標志碼1000B)。

圖2 SRAM控制狀態機Fig.2 SRAM control state machine
由于DSP的EMIF總線上只能進行讀操作或者寫操作,所以在計算系統工作帶寬的時候只要考慮一個DMA工作模式即可。如果設定DSP芯片SMJ320C6701-SP在DMA(直接存儲器訪問)模式下速度為16.7MHz,DSP的數據總線為32bit,所以DSP的數據吞吐帶寬為66.8Mb/s。CMOS圖像傳感器的輸出像素時鐘為36MHz,如果只取圖像數據的高8位參與DSP運算,數據吞吐帶寬為36Mb/s。所以,控制SRAM的有限狀態機的利用率不能低于(36MHz+66.8 MHz)/144MHz=71.4%。
在一個完整的有限狀態機狀態轉換周期中,最少需要的變換需求時鐘周期數包括:狀態結束延遲等待時鐘周期數T1;狀態結束申請信號的持續時鐘周期數T2;狀態結束申請信號使狀態機回到“空閑”狀態所需的時鐘周期數T3;狀態申請信號持續時鐘周期數T4;進入狀態后設置狀態內參數所需時鐘周期數T5;狀態處理時鐘周期數T6。

圖3 狀態機時序圖Fig.3 Timing of state machine
通過編程,本系統中設定各個最小需求周期數T1為2,T2為1,T3為1,T4為1,T5為2,綜合上一段對SRAM帶寬的分析應有:

公式的意義為,在一個完整的有限狀態機狀態轉換周期中,操作數據讀寫的時間至少占整個轉換周期的71.4%才能保證狀態響應的實時性,才能保證數據沒有因為狀態機沒有響應狀態申請而發生錯誤。得到T6應大于17.5,取2的整冪數有利于FPGA邏輯運算和內部FIFO讀寫判定,這里取32。以狀態機主工作時鐘為計數基準時,每個狀態操作循環中至少有32個周期用來進行SRAM讀寫操作。
在Modelsim6.5上進行狀態機仿真結果如圖4所示。

圖4 時序仿真結果Fig.4 Timing simulation result
相機系統作為整個控制系統的一部分,其數據交換通過BU-61580芯片在1553b總線上實現的。相機系統在1553b線上作為一個RT端(遠置終端)存在,控制信息通過同級別總線上的BC端(總線控制器)發送到相機系統;相機系統把對合作目標的姿態計算結果傳遞到同級別的BC端[6-7]。
對BU-61580的寄存器和數據區進行讀寫需求時間比較長。如BU-61580的輸入時鐘周期為16MHz,寫入一個寄存器或者緩存數據需要用時最少為10個總線周期,時間約為625μs。應用中,每次需要讀寫的子地址數為30個,每個子地址需要操作32次,一共需要操作的時間為:

使用DSP直接控制BU-61580需要修改DSP的外部總線頻率,并且初始化BU-61580和操作BU-61580所需的時間也比較長。使用FPGA控制BU-61580,不但降低了DSP操作外部總線的復雜度,初始化和讀寫數據的時間也減少了很多,所以使用FPGA作為BU-61580的控制芯片。DSP在每一幀圖像計算完成后把數據信號通過DMA方式傳遞到FPGA,由FPGA完成對BU-61580芯片上數據區的填充。DSP傳遞數據到FPGA時間為:

所用時間只需要直接操作子地址的二十分之一左右。
在接收BC傳遞的數據時,FPGA利用消息結束產生的中斷讀取數據的模式,即FPGA接收到BU-61580芯片的中斷管腳INT的低電平脈沖信號后,再對消息進行判定和操作。FPGA讀取命令控制字所在的RAM地址中的數據,得到中斷的命令控制字。如果這些命令控制字都符合通訊協議中的設定,FPGA根據子地址查找表查找此次操作的子地址所對應的RAM起始地址,最后根據數據字數讀取RAM中的數據。最后,DSP根據計算需求定時讀取FPGA中的控制信息[8]。
使用V4系列FPGA和C67x系列DSP為圖像處理核心設計一種CMOS相機測量系統。在ISE12.4和CCS3.1的開發環境下,使用VHDL和C語言進行編程實現和綜合編譯,并且用Modelsim6.5對邏輯描述語言做了充分的仿真。在系統資源和器件選用非常有限的情況下完成了相機測量系統設計,此系統已經在初樣載荷上使用,可靠性高,成像清晰,姿態數據準確。
[1]賀柏根,劉劍,馬天瑋.基于 DSP+FPGA的實時圖像去霧增強系統設計[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視頻壓縮編碼系統研究與實現[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編碼系統設計與實現[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圖像實時顯示系統的設計[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實現高速實時多端口圖像處理系統的研究[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總線終端設計[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總線編碼解碼器的設計[J].計測技術,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控制實現的1553B總線通訊設計[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)