基于PCIe總線的航空視頻采集記錄系統(tǒng)的設(shè)計
摘要:PCIe總線不僅硬件接口簡單,軟件和PCI總線完全兼容,而且傳輸速度數(shù)十倍于PCI總線。針對載機任務系統(tǒng)實時視頻采集記錄的需求,設(shè)計了一種基于PCIe總線的航空視頻采集記錄系統(tǒng),利用現(xiàn)場可編程邏輯器件(FPGA)實現(xiàn)了視頻數(shù)據(jù)流的編解碼和PCIe橋接口的設(shè)計,簡化了硬件接口設(shè)計,提高了系統(tǒng)的工作效率。系統(tǒng)在某型數(shù)字化對抗訓練系統(tǒng)中的實際應用表明該設(shè)計實用可行。
關(guān)鍵詞:PCIe總線;視頻采集;硬件設(shè)計語言;INDS
0 引言
航空電子系統(tǒng)之間以傳遞狀態(tài)數(shù)據(jù)和控制數(shù)據(jù)為主,因為數(shù)據(jù)量不十分巨大,對傳輸速率要求并不高。例如,最流行的航空總線ARINC 429和1553B總線,速率分別是100kbps和1Mbps。而隨著飛行訓練強度和精度的提高,飛行試驗和訓練過程的多通道視頻畫面需要實時記錄下來以便進行事后分析評估和系統(tǒng)設(shè)計改進。與傳輸狀態(tài)控制信息相比,這些視頻數(shù)據(jù)是巨量的,對航電系統(tǒng)的海量存儲和數(shù)據(jù)高速傳輸都提出了更高的要求。本文提出一種航空視頻采集記錄系統(tǒng)的設(shè)計方案,采用速率高達2.5Gbps的PCIe總線構(gòu)建系統(tǒng),PCIe總線既有高速的數(shù)據(jù)傳輸能力,又有良好的外設(shè)接口,有利于大容量信號的實時傳輸。有效解決了機載多通道視頻數(shù)據(jù)的實時采集與記錄,為航空訓練任務系統(tǒng)的事后評估和性能分析改進提供了便捷的手段。
1 系統(tǒng)的方案設(shè)計
在航空視頻采集記錄系統(tǒng)中,攝像頭把載機任務系統(tǒng)的實時畫面視頻數(shù)據(jù)按預定格式組幀,通過LVDS信號總線傳輸給視頻采集模塊;經(jīng)過視頻采集模塊對LVDS信號電平進行變換處理后,將單端視頻數(shù)字信號送給可編程邏輯器件(FPGA)進行視頻解碼處理。解碼后的數(shù)字視頻,一方面通過SAA7121視頻編碼器直接送給監(jiān)視器,讓飛行員實時掌握訓練情況與效果:另一方面通過高速PCIe總線傳送給嵌入式CPU模塊進行視頻數(shù)據(jù)壓縮存儲,供事后分析。航空視頻采集記錄系統(tǒng)總體結(jié)構(gòu)如圖1所示。
2 系統(tǒng)的硬件設(shè)計
系統(tǒng)的硬件設(shè)計主要集中在各個功能模塊的電路設(shè)計上,是軟件設(shè)計和系統(tǒng)調(diào)試的平臺基礎(chǔ)。硬件設(shè)計應該保證系統(tǒng)運行的高可靠性,在滿足要求的前提下,盡量減少可編程邏輯、系統(tǒng)軟件的設(shè)計與調(diào)試的難度。
2.1 視頻數(shù)據(jù)采集
攝像頭攝錄的視頻數(shù)據(jù)以LVDS差分電平信號進行傳輸,需要進行電平信號轉(zhuǎn)換才能進行后續(xù)視頻信號的記錄處理。攝像頭傳輸?shù)囊曨l數(shù)據(jù)包括4對LVDS差分信號,CLK+/CLK-是采集數(shù)據(jù)的時鐘,其余3對差分信號包含著像素灰度。差分信號經(jīng)過DS90LV032轉(zhuǎn)換,變成4個單端的數(shù)字信號,供后面的電路處理。視頻采集電路如圖2所示。
因為視頻數(shù)據(jù)頻率較高,經(jīng)過轉(zhuǎn)換后的單端信號應該端接10 Ω的電阻以抑制反射,提高信號穩(wěn)定性。
2.2 視頻解碼和處理
對前端采集的視頻數(shù)據(jù),必須進行處理才能實時顯示和壓縮存儲。由于視頻數(shù)據(jù)量大,為達到最流暢的快速處理,應該由硬件邏輯直接進行數(shù)據(jù)處理。視頻數(shù)據(jù)的解碼和處理主要由FPGA完成,也是可編程邏輯設(shè)計的主要任務。
當前端DS90LV032將經(jīng)過信號轉(zhuǎn)換以后的視頻數(shù)據(jù)傳輸給FPGA,由FPGA完成視頻信號的解碼還原、格式轉(zhuǎn)換后同步傳輸給CPU模塊進行實時記錄和實時回放視頻模塊。FPGA視頻數(shù)據(jù)處理的硬件接口設(shè)計如圖3所示。
2.3 視頻數(shù)據(jù)回放
視頻回放是方便飛行員能夠?qū)崟r監(jiān)控訓練和試驗的情況。系統(tǒng)采用Philips公司的SAA7121視頻編碼器,將FPGA處理后的視頻數(shù)據(jù)轉(zhuǎn)換為PAL制的綜合視頻,送給飛行員面前的監(jiān)視器進行顯示。如圖4所示。
SAA7121需要進行初始化配置后才能工作,初始化通過設(shè)置編碼器的寄存器,配置其工作模式。初始化要通過I2C總線完成,系統(tǒng)的I2C總線接口由FPGA實現(xiàn)。同步時鐘CLK VO和8-bit并行視頻數(shù)據(jù)都是由FPGA解碼處理后傳輸過來的。編碼器的工作頻率為27MHz,F(xiàn)PGA解碼后的視頻數(shù)據(jù)經(jīng)過SAA7121編碼器的綜合視頻信號CVBS送給監(jiān)視器。同時也設(shè)計了一個備用的YC分量視頻接口。
2.4 視頻傳輸
采集的視頻數(shù)據(jù)經(jīng)過FPGA解碼處理后需要通過PCIe總線傳輸給嵌入式CPU以便于實時壓縮存儲。實現(xiàn)高速的PCIe總線是海量數(shù)據(jù)傳輸?shù)年P(guān)鍵。數(shù)據(jù)傳輸總線技術(shù)是不斷更新發(fā)展的過程。在數(shù)據(jù)通訊的起初階段,串行通訊因為信號簡單、實現(xiàn)方便而應用廣泛,占有統(tǒng)治地位,例如RS422串行通訊,盡管速率不高,目前仍然很有生命力。為解決串行通訊的瓶頸問題,開始采用并行傳輸總線,并行通訊的速率取決于時鐘頻率和數(shù)據(jù)寬度。目前最流行33MHz/32bit的PCI總線,峰值傳輸速率可達132Mbps。當繼續(xù)提高時鐘頻率時,并行通訊總線的數(shù)據(jù)寬度卻成為繼續(xù)提高速率的障礙。由于極高頻下的線路串擾和反饋,難以保證多路并行總線信號數(shù)據(jù)同步的一致性,數(shù)據(jù)通訊的傳輸技術(shù)從并行回歸到串行,并行雙向的PCI總線發(fā)展為串行單向的PCIe總線。速率高達2.5Gbps的PCIe總線有三對差分信號,即同步時鐘CLK+/CLK-、接收信號R+/R-和發(fā)送信號T+/T-。PCIe總線設(shè)計電路如圖5所示。
在PCIe這種高速信號傳輸總線中,數(shù)據(jù)不是直接通過信號導線的電壓信號,而是通過高頻耦合方式傳輸?shù)?。圖5中的C1、C2就是發(fā)送方的耦合電容,應盡量靠近橋片。每一對差分信號都應該有耦合電容,圖5中時鐘和接收信號對的耦合電容,隱含在PCIe的主控方。
3 系統(tǒng)的邏輯設(shè)計
在硬件設(shè)計的基礎(chǔ)上,邏輯設(shè)計成為整個系統(tǒng)性能實現(xiàn)的關(guān)鍵。邏輯設(shè)計完成整個系統(tǒng)的時序控制、視頻數(shù)據(jù)流的采集與解碼、視頻回放的編碼和PCIe橋接口的設(shè)計。
3.1 視頻解碼
在邏輯設(shè)計中,視頻解碼的功能是將DS90LV032所轉(zhuǎn)換的單端信號解碼后寫入FIFO緩沖,由后續(xù)邏輯讀取處理。其邏輯接口的VHDL形式描述如下:
攝像頭作為視頻源,在每一個CLK的上升沿輸出一個3-bit數(shù)據(jù)。與之相反,解碼邏輯在CLK的下降沿鎖存一個3-bit數(shù)據(jù),進行流水線鎖存,重新還原視頻的灰度數(shù)據(jù)。對一個16-bit的數(shù)據(jù),共需發(fā)6次。
3.2 視頻編碼
為支持SAA7121編碼器,視頻回放邏輯包括為初始化而提供的I2C接口和PAL制的視頻編碼。SAA7121的寄存器是8-bit的,則其I2C接口可以描述如下:
上層邏輯調(diào)用此模塊,每調(diào)用一次,配置一個寄存器。所有128個寄存器的配置數(shù)據(jù)是預先定制的,存放在常量數(shù)組中。
經(jīng)過初始化后的SAA7121可以正常工作了。此時邏輯應該不斷輸送視頻數(shù)據(jù)。其邏輯接口可以描述如下:
3.3 PCIe橋接口設(shè)計
數(shù)據(jù)高速傳輸主要體現(xiàn)在PCIe總線的實際吞吐量,此為解碼后的數(shù)據(jù)傳輸?shù)钠款i。邏輯設(shè)計要特別考慮到軟件的方便和高效。接口邏輯設(shè)計集中在中斷邏輯和數(shù)據(jù)傳輸?shù)腷urst方式上。
需要傳輸?shù)囊曨l數(shù)據(jù),首先送入一個FIFO,寫入端為32k×16bit,讀出端為16k×32bit,寫入時既適合了視頻數(shù)據(jù)的寬度,讀出傳輸時又發(fā)揮了PCI32-bit總線的優(yōu)勢,加快了轉(zhuǎn)換。中斷邏輯設(shè)計如下:
(1)當寫入數(shù)據(jù)達到FIFO容量的1/4時,即寫夠4k×32bit時產(chǎn)生中斷。這個條件可根據(jù)FIFO的可編程空判斷,亦即PRG1 Empty=‘0’時產(chǎn)生中斷。
(2)當主機響應中斷,開始讀FIFO數(shù)據(jù)時撤銷中斷。
(3) 當本次burst讀結(jié)束后,才允許根據(jù)條件重新判斷中斷條件。
PCIe橋接口的邏輯設(shè)計最重要的部分是為它的局部總線(Local bus)提供無縫的粘合邏輯,支持PCIe的單次訪問和burst訪問。其接口狀態(tài)機如下:
橋片的局部總線設(shè)計了50MHz的時鐘,對32-bit數(shù)據(jù)寬度,理論上可以達到200Mb/s的吞吐率。經(jīng)過應用軟件的實測,可以達到143Mb/s的速率,考慮到軟件的許多開銷,這個速率已經(jīng)比較理想了。
5 系統(tǒng)的軟件設(shè)計
系統(tǒng)的軟件設(shè)計平臺采用WindowsXP Embedded,軟件分為針對本硬件系統(tǒng)的驅(qū)動程序和視頻壓縮與處理的應用程序。應用程序把視頻存為普通播放器能播放的視頻格式,每幀視頻為256行×256列共64K像素。在驅(qū)動軟件中,當打開設(shè)備時,申請一組緩沖,共128個緩沖。這個緩沖對應用程序是透明的,每個緩沖可以存放一個完整的視頻幀,如圖6所示。驅(qū)動程序中有兩個主要線程,中斷線程和數(shù)據(jù)讀出線程。
在邏輯設(shè)計時,每當FIFO中寫入4kx32bi時產(chǎn)生中斷,則驅(qū)動程序的中斷線程在響應中斷時,每次至少讀16kB。在中斷響應讀取FIFO數(shù)據(jù)時,不要用類似于for(;;)的軟件循環(huán)實現(xiàn),這種策略在硬件時序上屬于單次訪問,效率低下。只有DMA才能觸發(fā)邏輯設(shè)計中的burst周期,最大限度利用硬件性能。在啟動DMA時,一定要使能它的burst位操作長度固定為16kB。這樣,每次中斷響應就變成了維護DMA當前寫入緩沖的指針,填入當前寫入緩沖地址,然后啟動DMA。
在應用程序中,使用一個定時線程,通過驅(qū)動程序讀取視頻數(shù)據(jù),然后經(jīng)過壓縮,存放成JPEG2000格式的視頻文件。定時讀取視頻數(shù)據(jù)的算法需要進行優(yōu)化,因為如果數(shù)據(jù)讀出線程太慢,中斷線程寫入時可能覆蓋未讀走的緩沖,會造成存儲視頻出現(xiàn)丟失數(shù)據(jù)幀的現(xiàn)象,影響記錄視頻的連續(xù)性。
5 結(jié)束語
本文采用FPGA與嵌入式CPU大容量數(shù)據(jù)存儲相結(jié)合的方案,在系統(tǒng)各個處理環(huán)節(jié)均充分考慮到對視頻數(shù)據(jù)采集記錄實時性和可靠性的要求,設(shè)計了機載多通道實時視頻數(shù)據(jù)采集記錄系統(tǒng)。系統(tǒng)硬件設(shè)計簡單,并且可同時采集多路視頻數(shù)據(jù)。在某型數(shù)字化對抗訓練評估系統(tǒng)中的應用表明,本設(shè)計方案滿足了預期的指標要求,解決了載機任務系統(tǒng)多路視頻數(shù)據(jù)采集與實時記錄的關(guān)鍵問題,在實時視頻信息采集和數(shù)據(jù)記錄應用中具有較好的通用性和擴展性。