摘 要: 給出一種使用FPGA和ARM實(shí)現(xiàn)4路視頻采集存儲(chǔ)功能的嵌入式系統(tǒng)設(shè)計(jì)方法,,介紹了FPGA控制視頻AD芯片TVP5154對(duì)模擬視頻進(jìn)行數(shù)字轉(zhuǎn)換,、多路ITU656格式的視頻數(shù)據(jù)的抽取方
法、視頻數(shù)據(jù)的乒乓存儲(chǔ)以及合成后的視頻數(shù)據(jù)的重組發(fā)送,。
關(guān)鍵詞: 嵌入式系統(tǒng),; TVP5154; 視頻合成,; 乒乓存儲(chǔ)
為了滿足家庭和公共安全的需要,,監(jiān)控系統(tǒng)越來越多地出現(xiàn)在日常生活中。采用多個(gè)攝像頭進(jìn)行監(jiān)控可以有效地監(jiān)視各個(gè)方位,,多路視頻合成一路既方便觀察又可以有效地減少數(shù)據(jù)存儲(chǔ)量,。而采用視頻壓縮芯片可以進(jìn)一步降低視頻數(shù)據(jù)的存儲(chǔ)量,壓縮后的視頻存儲(chǔ)后可以便于使用PC進(jìn)行查詢,。
1 系統(tǒng)組成及工作原理
視頻AD芯片TVP5154將PAL制式模擬視頻轉(zhuǎn)換成ITU656格式[1]的數(shù)字視頻,, FPGA對(duì)ITU656格式的碼流進(jìn)行采集抽取并將4路視頻合成1路,,合成后的視頻分成兩路:一路由視頻DA芯片SAA7121進(jìn)行D/A轉(zhuǎn)換,發(fā)送到LCD顯示器上進(jìn)行視頻實(shí)時(shí)顯示,;另一路進(jìn)入ARM9模塊,,由音視頻編解碼芯片VW2010進(jìn)行視頻壓縮,將ITU656碼流壓縮成MPEG-4格式,,建立文件系統(tǒng)進(jìn)行視頻存儲(chǔ),。圖1為系統(tǒng)的硬件結(jié)構(gòu)圖。
考慮系統(tǒng)功耗,、體積,、成本和資源等因素,采用Xilinx公司Spartan 3E系列中的XC3S1200E芯片,。TVP5154芯片[2]支持4通道 NTSC/PAL/SECAM制式的模擬視頻轉(zhuǎn)換成4通道的8位ITU-RBT.656格式的數(shù)字視頻,。本文介紹FPGA抽取4路ITU656格式視頻數(shù)據(jù),利用乒乓緩存將其有效數(shù)據(jù)合成1路[3],,并重新組成ITU656碼流進(jìn)行發(fā)送,。
2 功能實(shí)現(xiàn)
2.1 ITU656碼流的抽取
ITU656標(biāo)準(zhǔn)的數(shù)字視頻1 s有25幀(50場(chǎng))圖像,每幀圖像分為偶場(chǎng)和奇場(chǎng),。每幀圖像有625行,,864列。行數(shù)據(jù)分為有效行(576行)和消隱行(49行)兩種,。有效行分為偶場(chǎng)有效行(288行)和奇場(chǎng)有效行(288行),。圖2是一幀圖像數(shù)據(jù),圖中表明了偶場(chǎng)有效行,、奇場(chǎng)有效行和消隱行,。
系統(tǒng)中使用4路攝像頭,合成1路時(shí)每路視頻只保留原來視頻數(shù)據(jù)的1/4,。依據(jù)ITU656標(biāo)準(zhǔn)的特點(diǎn),,每幀數(shù)據(jù)舍棄一場(chǎng)。
TVP5154的輸出[4]有兩種輸出方式,,一種是將基準(zhǔn)信號(hào)(EAV和SAV)作為嵌入式控制字嵌入到視頻碼流中,,并有1路時(shí)鐘信號(hào)CLK輸出,頻率為27 MHz,;另一種由芯片的獨(dú)立引腳輸出,,有3路同步信號(hào)FID/GLCO、HSYNC,、VSYNC/PALI,,分別配置為場(chǎng)、水平,、豎直同步信號(hào),,并有1路時(shí)鐘信號(hào)CLK輸出,,頻率為27 MHz。
系統(tǒng)中采用的是從數(shù)據(jù)端口接收內(nèi)含嵌入式基準(zhǔn)信號(hào)(即EAV和SAV)的ITU656標(biāo)準(zhǔn)視頻數(shù)據(jù),。EAV與SAV的詳細(xì)定義如表1所示,。
通過檢測(cè)基準(zhǔn)信號(hào),可以區(qū)別當(dāng)前行屬于奇場(chǎng)(Odd)還是偶場(chǎng)(Even),,是消隱行(Blank)還是有效行(Active),。依據(jù)ITU656標(biāo)準(zhǔn),消隱行數(shù)據(jù)除了基準(zhǔn)信號(hào),,其余均用0X8010進(jìn)行填充即可,。
圖3是有效行數(shù)據(jù)構(gòu)成。每行有1 728 B,,其中720個(gè)像素點(diǎn)占用了1 440 B,為有效數(shù)據(jù)(Valid data),。另有280 B為行消隱數(shù)據(jù)(blanking,用0X8010進(jìn)行填充),,剩下8 B是基準(zhǔn)信號(hào),分為有效數(shù)據(jù)結(jié)束的基準(zhǔn)信號(hào)(EAV)4 B和有效數(shù)據(jù)開始的基準(zhǔn)信號(hào)(SAV)4 B。所要抽取的就是ITU656碼流的有效行的有效數(shù)據(jù),。
ITU656標(biāo)準(zhǔn)中像素采用YUV422格式表示,。每個(gè)像素點(diǎn)都采集亮度信息,但是色差信息則隔一個(gè)像素點(diǎn)采集一種,。這樣兩個(gè)相鄰像素點(diǎn)共有兩個(gè)亮度信息,、兩個(gè)色差信息,按照每個(gè)信息8 bit計(jì)算,,則兩個(gè)像素點(diǎn)共4 B,,平均每個(gè)像素點(diǎn)2 B。ITU656格式中有效行中有效數(shù)據(jù)排列順序如圖4所示,。
因?yàn)橄噜彽膬蓚€(gè)像素點(diǎn)共用一組色差信息,,所以每個(gè)場(chǎng)有效行的有效數(shù)據(jù)區(qū)域采用每隔兩個(gè)像素點(diǎn)抽取2個(gè)像素點(diǎn)的策略。通過每幀只留一場(chǎng)和每個(gè)有效行只取一半像素,,每路視頻實(shí)際得到的是其1/4的數(shù)據(jù),,將4路視頻按一定規(guī)則存儲(chǔ)到SRAM中就得到了一幀完整YUV422格式的圖像。
2.2 4路視頻合成
ITU656標(biāo)準(zhǔn)的一幀圖像分為625×864,,其中有效像素為576×720,,每個(gè)像素點(diǎn)為2 B,每行有720個(gè)像素點(diǎn),,即1 440 B,。不經(jīng)過壓縮的每幅圖像為810 KB。
系統(tǒng)中選取兩塊的容量為2 M×8 B的SRAM芯片CY7C1069AV33,,它有21根地址線,,其中行地址線10根,,列地址線11根。一列可以存儲(chǔ)2 048 B,。
以ITU656標(biāo)準(zhǔn)中一幀圖像的頂場(chǎng)(即F同步信號(hào)為0)為偶場(chǎng),。4路視頻中1、2兩路只采集偶場(chǎng)數(shù)據(jù),,3,、4兩路只采集奇場(chǎng)數(shù)據(jù),F(xiàn)PGA通過檢測(cè)ITU656碼流的基準(zhǔn)信號(hào)來判斷當(dāng)前處于哪一場(chǎng),。ITU656標(biāo)準(zhǔn)所用的時(shí)鐘為27 MHz,,1 s有25幀(50場(chǎng))圖像,每場(chǎng)所用時(shí)間為20 ms,每個(gè)場(chǎng)有效行的有效數(shù)據(jù)區(qū)域采用每隔兩個(gè)像素點(diǎn)抽取2個(gè)像素點(diǎn),,1個(gè)像素點(diǎn)用2 B數(shù)據(jù)表示,,這樣采樣間隔為4/27 MHz=148 ns。每路每隔148 ns進(jìn)行一次抽取,,得到的4 B存儲(chǔ)到SRAM中,, SRAM芯片讀寫周期為12 ns,寫入所用時(shí)間為12 ns×4=48 ns,,時(shí)間上條件滿足,。1、2路數(shù)據(jù)要分開抽取寫入,,前一個(gè)148 ns抽取第1路視頻數(shù)據(jù)并寫入到SRAM,,后一個(gè)148 ns第2路視頻數(shù)據(jù)被抽取并寫入SRAM中,這樣做是為了合理利用SRAM的地址和數(shù)據(jù)總線,,防止寫入沖突,。奇場(chǎng)有效行基準(zhǔn)信號(hào)被檢測(cè)到之后,進(jìn)行3,、4路數(shù)據(jù)的抽取存儲(chǔ),,依次循環(huán)。采用如圖5所示的規(guī)則,。
在1,、2路偶場(chǎng)有效數(shù)據(jù)抽取完和3、4路奇場(chǎng)有效數(shù)據(jù)抽取完成后都存在一段時(shí)間的空白期,??梢栽谶@段時(shí)間對(duì)SRAM中存入的數(shù)據(jù)進(jìn)行處理。系統(tǒng)在這段時(shí)間為視頻數(shù)據(jù)添加時(shí)間水印,,從ROM中取出子模取代要寫入位置的視頻數(shù)據(jù),。
依據(jù)TVP5154芯片手冊(cè),輸出的4路ITU656碼流使用的是同一個(gè)時(shí)鐘,4路數(shù)據(jù)同步輸出,。1,、2路偶場(chǎng)和3、4路奇場(chǎng)視頻數(shù)據(jù)完全寫入第1塊SRAM之后,,F(xiàn)PGA切換到第2塊SRAM繼續(xù)抽取視頻數(shù)據(jù)并寫入,,第1塊SRAM中的數(shù)據(jù)則準(zhǔn)備重組發(fā)送。
2.3 有效數(shù)據(jù)的重組發(fā)送
TVP5154發(fā)送的ITU656格式碼流的時(shí)鐘頻率是27 MHz,,合成后的有效數(shù)據(jù)需要按照ITU656格式發(fā)送出去,,每40 ms完成一幀圖像的發(fā)送[5]。在第1塊SRAM數(shù)據(jù)寫入完畢,、第2塊SRAM開始寫入數(shù)據(jù)之前的這段時(shí)間,第1塊SRAM中的數(shù)據(jù)需要被讀取并發(fā)送出去,。
合成后視頻數(shù)據(jù)的發(fā)送可以采用兩種方式,與TVP5154類似,,一種以帶基準(zhǔn)信號(hào)的嵌入式控制字形式,,另一種以帶場(chǎng)、水平,、豎直同步信號(hào)的方式發(fā)出,。系統(tǒng)中的視頻DA芯片SAA7121、音視頻編解碼芯片VW2010都接收合成后的ITU656格式碼流,,其中VW2010只支持帶基準(zhǔn)信號(hào)的ITU656碼流。所以系統(tǒng)中采用帶基準(zhǔn)信號(hào)的ITU656碼流發(fā)送合成后的視頻數(shù)據(jù),。
系統(tǒng)中發(fā)送模塊以27 MHz的頻率讀取SRAM中的數(shù)據(jù),。讀取時(shí)要隔行讀取,先讀出偶場(chǎng)有效數(shù)據(jù),,再讀奇場(chǎng)有效數(shù)據(jù),。依據(jù)ITU656標(biāo)準(zhǔn),讀取SRAM之前先發(fā)22行偶場(chǎng)消隱行,, 再?gòu)腟RAM中讀取288行偶場(chǎng)有效數(shù)據(jù)加上基準(zhǔn)信號(hào)和消隱數(shù)據(jù)發(fā)送出去,,然后再發(fā)2行偶場(chǎng)消隱行;接著發(fā)出23行奇場(chǎng)消隱行,,再?gòu)腟RAM中讀出288行奇場(chǎng)有效數(shù)據(jù)加上基準(zhǔn)信號(hào)和消隱數(shù)據(jù)發(fā)送出去,,然后再發(fā)2行奇場(chǎng)消隱行。至此完成一幀圖像的發(fā)送,。重復(fù)此過程讀取第二塊SRAM中的數(shù)據(jù)并發(fā)送出去,,依次循環(huán)。
偶場(chǎng)消隱行,、奇場(chǎng)消隱行,、偶場(chǎng)有效行基準(zhǔn)信號(hào)和消隱數(shù)據(jù)以及奇場(chǎng)有效行基準(zhǔn)信號(hào)和消隱數(shù)據(jù)提前存儲(chǔ)在ROM中。
本文介紹了一個(gè)使用FPGA和ARM設(shè)計(jì)的4路視頻采集存儲(chǔ)系統(tǒng)。該系統(tǒng)可以接收4路模擬攝像頭的數(shù)據(jù),,合成1路后在LCD顯示器上顯示,,并可以存儲(chǔ)合成后的視頻,可應(yīng)用于家庭和公共環(huán)境的監(jiān)控,。系統(tǒng)的體積小,,功耗低,可便攜地使用,。系統(tǒng)外圍諸多外設(shè)可用于系統(tǒng)測(cè)試和功能拓展,。
參考文獻(xiàn)
[1] ITU. Recommendation BT.656-5[EB/OL].(2007-12)[2014-02].http://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.656-5-200712-I!!PDF-E.pdf.
[2] 吳厚航.深入淺出玩轉(zhuǎn)FPGA(第1版)[M].北京:北京航空航天大學(xué)出版社,2010.
[3] 蔡青青,龔立群,黃益新.基于FPGA的視頻監(jiān)控系統(tǒng)[J].微型機(jī)與應(yīng)用, 2012,31(4):37-39.
[4] 韓峰,,袁安民,,趙穎輝.基于FPGA+ARM的多路視頻采集系統(tǒng)設(shè)計(jì)[J].火力與指揮控制,2010,,35(6):86-93.
[5] 孫紅亮,,唐艷發(fā),梁春鋒,,等. 基于FPGA+ARM的高速計(jì)算機(jī)屏幕信息記錄系統(tǒng)[J].電子技術(shù)應(yīng)用,,2011,37(6):35-40.