喬鐵英+李云龍
摘要:針對當前一些大型測量設備要求多傳感器集成在一起,為兼顧設備存儲能力的實時性及可靠性,本文設計了一種多路圖像實時采集存儲系統(tǒng),給出了系統(tǒng)組成、功能指標、系統(tǒng)軟硬件設計,詳細介紹了該系統(tǒng)采用的關鍵技術及功能優(yōu)勢,采用FPGA編寫接口時序和網(wǎng)口及串口控制方式等技術,減少了系統(tǒng)設計的復雜度,保證了系統(tǒng)的可行性和可靠性。
關鍵詞:圖像采集;存儲;FPGA
中圖分類號:TN911 文獻標識碼:A 文章編號:1007-9416(2017)01-0155-03
1 概述
在一些大型測量設備中,多傳感器集成在一起,對設備實時存儲能力提出了新要求,既要保證實時性又要保證可靠性和圖像質量,本文設計了一種多路實時存儲系統(tǒng),該存儲系統(tǒng)由四套圖像實時采集存儲系統(tǒng)組成,系統(tǒng)采用嵌入式存儲構架,利用嵌入式實時操作系統(tǒng)作為軟件平臺,磁盤為存儲介質,完成視頻圖像的存儲過程。系統(tǒng)工作過程中,系統(tǒng)接收到主控計算機控制命令后開始圖像存儲記錄,通過串口控制模塊實時接收時間、編碼器等信息,并將時間、編碼器信息與當前幀的圖像一同記錄到存儲硬盤中。
2 系統(tǒng)組成及功能
2.1 總體組成
存儲系統(tǒng)組成如圖1.1所示,系統(tǒng)主要由四個獨立的實時圖像存儲系統(tǒng)組成(其中包括1個SDI輸入圖像存儲系統(tǒng),3個CameraLink輸入圖像存儲系統(tǒng))、一個數(shù)據(jù)交換機、一套上位機軟件組成,四根串口線以及5根千兆網(wǎng)線組成。上位機軟件具有控制、實時顯示、回放,以及導出存儲視頻文件的功能;數(shù)據(jù)交換機與千兆網(wǎng)線配合使用將上位機與四套實時圖像存儲系統(tǒng)進行集群式連接;存儲系統(tǒng)用于保存視頻文件;串口線可用于存儲系統(tǒng)實時接收疊加信息進行存儲操作。圖像數(shù)據(jù)在采集系統(tǒng)的控制下完成圖像數(shù)據(jù)采集,同時存儲控制器接收綜合控制器發(fā)來的數(shù)據(jù)信息,將該信息按每幀與圖像對應幀組成圖像與數(shù)據(jù)的整合幀,并將整合后的數(shù)據(jù)在存儲系統(tǒng)的控制下寫入SSD固態(tài)硬盤中,完成逐幀的數(shù)據(jù)記錄。
2.2 系統(tǒng)功能
(1)實時無損大容量存儲數(shù)字圖像;
(2)接收主控計算機系統(tǒng)的控制命令,回送存儲狀態(tài)信息;
(3)記錄數(shù)字圖像及相關信息,在存儲圖像中疊加與圖像對應時刻的時間碼、編碼器等信息;
(4)能通過計算機控制存儲系統(tǒng)開始記錄、停止和下載視頻圖像數(shù)據(jù);
(5)下載的圖像可復原回放,顯示時疊加與圖像對應的時間碼、方位角、高低角信息,可連續(xù)回放、單幀回放;
(6)圖像格式轉換,把圖像數(shù)據(jù)及文件數(shù)據(jù)轉換成含有時間信息、方位角及高低角信息的標準BMP圖像;
(7)具有自檢功能和故障診斷能力,故障診斷到線路板。
3 系統(tǒng)設計
3.1 設備硬件設計
圖像高速存儲系統(tǒng)以Xilinx公司最新的K7系列FPGA作為系統(tǒng)的核心處理器,實現(xiàn)數(shù)據(jù)的采集和解碼,并在FPGA中實現(xiàn)完整的SATA3協(xié)議,通過SATA3協(xié)議,將數(shù)據(jù)以RAID0或RAID1的形式存儲于后端所連接的SATA3固態(tài)硬盤中,該架構的存儲速率可以完全滿足Camlink Full工作模式,或HD-SDI工作模式。如果需要,可以進行更多塊SSD的堆疊,在提高容量的同時,線性提高讀寫帶寬。
系統(tǒng)組成框圖如圖2.1所示。
3.2 軟件設計
系統(tǒng)采用FPGA編程的方式進行控制,F(xiàn)PGA軟件主要負責系統(tǒng)的相機解碼、串口收發(fā)、圖像存儲、圖像實時顯示和事后回顯導出等。軟件流程如圖2.2所示。
4 關鍵技術
4.1 支持多路同時采集、存儲
該存儲系統(tǒng)是一套圖像實時采集存儲系統(tǒng),支持四路相機同時采集數(shù)據(jù),并對采集數(shù)據(jù)進行回放、導出、刪除等操作;支持通過千兆網(wǎng)實時顯示圖像、導出采集數(shù)據(jù);支持串口通信方式、千兆網(wǎng)通信方式;支持串口、千兆網(wǎng)口控制存儲設備;支持系統(tǒng)自檢及誤碼計算功能。系統(tǒng)采用嵌入式存儲構架,利用嵌入式實時操作系統(tǒng)作為軟件平臺,磁盤為存儲介質,完成視頻圖像的存儲過程。
4.2 靈活的網(wǎng)口及串口控制方式
系統(tǒng)工作過程中,系統(tǒng)接收到主控計算機控制命令后開始圖像存儲記錄,通過串口控制模塊實時接收時間、編碼器等信息,并將時間、編碼器信息與當前幀的圖像一同記錄到存儲硬盤中。記錄完成后,利用主控計算機通過網(wǎng)絡連接可以將存儲系統(tǒng)的圖像進行下載、圖像回放。下載圖像數(shù)據(jù)經(jīng)格式轉換后生成規(guī)定格式圖像用于判讀。同時存儲系統(tǒng)設計成具有上電復位自檢功能,一方面檢查系統(tǒng)工作是否正常,另一方面檢查信道是否正常。一旦檢測到系統(tǒng)工作狀態(tài)不正常時,輸出故障標志,故障診斷到線路板級。
4.3 圖像與當幀時間碼及相關信息的嚴格對齊
圖像與當幀時刻的時間嚴格對齊、對程序的時序和中斷處理等提出了較高的要求。圖像數(shù)據(jù)是在FPGA控制下進行采集,F(xiàn)PGA實時檢測圖像數(shù)據(jù)的幀同步信息,而系統(tǒng)通過異步串口傳來的通訊數(shù)據(jù)也連接到FPGA上,F(xiàn)PGA負責解析異步通訊數(shù)據(jù)的起始時間位置,并記錄其檢測的圖像數(shù)據(jù)幀同步的特征時刻。通過軟件分析,如果串口通訊數(shù)據(jù)落在兩幀場同步之間,則認為此時接收到的當幀信息與當幀圖像為同幀畫幅,并將數(shù)據(jù)與信息一同送入SDRAM的指定區(qū)域中,在接收到嵌入式處理器寫入命令時將該同幀畫幅送到SSD硬盤的DMA中。如果兩者時間超過規(guī)定域值,可以追溯問題產生的原因。
4.4 同幀畫幅的自恢復
在系統(tǒng)正常工作時,如果存在干擾(如場同步干擾、同步信息干擾),而系統(tǒng)僅完成圖像與信息的排序一一對應,會造成信息與圖像的錯誤,而且無法恢復,系統(tǒng)中采用多個自由計數(shù)器完成圖像同步與信息的起始時間的準確記錄。系統(tǒng)中設置了場同步時刻計數(shù)器、嵌入式處理器相應時刻計數(shù)器、同步信息起始位時刻等,每個計數(shù)器均為32位,計數(shù)器分辨率為1 s,可以保證一次記錄時間不會溢出。
在寫入圖像數(shù)據(jù)的同時,將對應該幀的每個計數(shù)器的值一同追加到信息中,當下載的數(shù)據(jù)或圖像存在問題時,可以通過這些計數(shù)器恢復同幀畫幅,也可以判定圖像受到干擾還是通訊受到干擾。
4.5 抗干擾與容錯設計
待存儲的數(shù)據(jù)可以看成是有一定物理順序的數(shù)據(jù)流,由于數(shù)據(jù)傳輸過程中可能出現(xiàn)干擾等因素的影響而使得某幀圖像數(shù)據(jù)量改變,從而會導致后續(xù)的數(shù)據(jù)流物理順序的改變,會給圖像恢復造成很大影響。為了避免這種情況的發(fā)生,針對待采集的圖像幀格式,使得采集到的每一幀圖像都有固定的行列數(shù),而不受干擾的影響。具體實現(xiàn)的方法是通過狀態(tài)機在橫縱兩個方向上對二維圖像進行嚴格的采集控制。
4.6 斷電保護
為防止圖像存儲過程中意外斷電導致已存儲任務丟失,每次存儲啟動后,系統(tǒng)預先為存儲任務分配安全區(qū)域(大小可預先設定),并記錄該區(qū)域起始結束扇區(qū)等參數(shù)。當存儲進行過程中意外斷電后,重新上電系統(tǒng)可通過已記錄的安全存儲區(qū)域參數(shù)保證已存儲數(shù)據(jù)不丟失。
5 可行性分析
在硬件設計方面,核心技術采用FPGA編寫SSD接口時序,直接讀寫SSD,效率、可靠性都要比操作系統(tǒng)對SSD操作要高得多。而且相機采集的接口時序和串口等通訊功能,都由FPGA直接完成減少了系統(tǒng)的復雜度,降低了過多使用芯片帶來的不可靠性。
軟件方面,本存儲系統(tǒng)上位機軟件采用MFC、OpenCV實現(xiàn), MFC是一個微軟公司提供的類庫,以C++類的形式封裝了Windows API,并且包含一個應用程序框架,以減少應用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內建控件和組件的封裝類。OpenCV是一個基于(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上。它輕量級而且高效——由一系列C函數(shù)和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。該庫也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。這些語言的API接口函數(shù)可以通過在線文檔獲得。
6 結語
本存儲系統(tǒng)采用嵌入式存儲構架,利用FPGA做為核心處理器,磁盤為存儲介質,完成視頻圖像的采集、存儲過程。系統(tǒng)工作過程中,系統(tǒng)可接收到主控計算機控制命令后開始圖像存儲記錄,通過串口控制模塊實時接收時間、編碼器等信息,并將時間、編碼器信息與當前幀的圖像一同記錄到存儲硬盤中。系統(tǒng)支持多路相機同時采集數(shù)據(jù),并對采集數(shù)據(jù)進行回放、導出、刪除等操作;支持通過千兆網(wǎng)實時顯示圖像、導出采集數(shù)據(jù);支持串口通信方式、千兆網(wǎng)通信方式;支持串口、千兆網(wǎng)口控制存儲設備;支持系統(tǒng)自檢及誤碼計算功能。設備的軟硬件設計合理,所需的關鍵技術均已突破并應用到系統(tǒng)中。通過論證本系統(tǒng)的設計開發(fā)方案無論是在理論上還是在實現(xiàn)上都是可行的。經(jīng)過驗證,項目在可靠性、維修性、保障性、測試性、安全性以及環(huán)境適應性方面均滿足要求。
參考文獻
[1]馬利剛,馬鐵華.基于 FPGA 的實時圖像采集系統(tǒng)設計[J].計量與測試技術,2009,36(4):51-56.
[2]韓茜,羅豐,吳順君.高速大容量固態(tài)存儲系統(tǒng)的設計[J].雷達科學與技術,2005,3(2):37-39.
[3]李曉娟,劉學斌,胡炳,等.基于FPGA的CCD相機高速數(shù)據(jù)記錄系統(tǒng)[J].科學技術與工程,2007,(19):65-68.
[4]吳繼華,王誠. Altera FPGA/CPLD 設計(基礎篇)[M].北京:人民郵電出版社,2005.