一種多路圖像采集系統(tǒng)的軟件設(shè)計(jì)
4 幀存儲(chǔ)控制器與LCD/VGA顯示控制器的設(shè)計(jì)
4.1 數(shù)據(jù)格式的轉(zhuǎn)換
根據(jù)前面第2節(jié)的介紹,從ITU656解碼模塊出來(lái)的數(shù)據(jù)為8位4:2:2的YUV空間圖像數(shù)據(jù),而LCD/VGA顯示器只能接收RGB數(shù)據(jù)。因?yàn)閅-CrCb4:2:2格式不能直接轉(zhuǎn)換為RGB,所以需要先轉(zhuǎn)換為YCrCb4:4:4格式。
我們知道解碼芯片得到的視頻數(shù)據(jù)是順序?yàn)镃b,Y,Cr,Y,Cb,Y,Cr,……的序列,存儲(chǔ)的時(shí)候?qū)⒁粋€(gè)Y與一個(gè)C(Cb或Cr)結(jié)合起來(lái)組成一個(gè)16位的數(shù)據(jù)。而當(dāng)數(shù)據(jù)被讀出來(lái)時(shí)就要將這些視頻數(shù)據(jù)轉(zhuǎn)換為每個(gè)像素占24位(Y、Cb、Cr各占8位)的4:4:4的數(shù)據(jù)流。4:2:2到4:4:4的轉(zhuǎn)換采用最簡(jiǎn)單的插值算法,在采樣的時(shí)候,每隔一個(gè)像素才采一次色度值(Cb和Cr)。在轉(zhuǎn)化時(shí),直接將前一個(gè)有色度信息的像素點(diǎn)的Cr以及Cb的值直接賦給后一個(gè)像素的Cr和Cb,這樣就能得到4:4:4的像素?cái)?shù)據(jù),每個(gè)像素占用24位位寬。
4.2 幀存儲(chǔ)控制器
作為系統(tǒng)的重要組成部分,幀存儲(chǔ)控制器主要用來(lái)進(jìn)行有效數(shù)據(jù)的緩存。視頻數(shù)據(jù)在FPGA1的控制下乒乓寫(xiě)入兩片SRAM。乒乓技術(shù)應(yīng)用的關(guān)鍵在于乒乓切換信號(hào)frame的產(chǎn)生,本系統(tǒng)中根據(jù)視頻解碼芯片的奇偶場(chǎng)信號(hào)RTS0來(lái)產(chǎn)生幀切換frame信號(hào),也就是一個(gè)RTS0周期切換一次。一個(gè)RTS0周期由一個(gè)奇場(chǎng)和一個(gè)偶場(chǎng)組成,是一副完整的畫(huà)面。當(dāng)frame為1是,F(xiàn)PGA通過(guò)計(jì)數(shù)器的計(jì)數(shù)截取最終顯示所需要的有效的像素點(diǎn)信息按照SRAM的控制時(shí)序?qū)懭隨RAM1,同樣當(dāng)frame為0時(shí),將對(duì)應(yīng)的像素信息寫(xiě)入SRAM2,如圖5所示。
圖5 乒乓存儲(chǔ)示意圖
系統(tǒng)加電的同時(shí),4片視頻解碼芯片同時(shí)工作,為了保證數(shù)據(jù)采集的準(zhǔn)確性和顯示的同步性,系統(tǒng)內(nèi)生成一個(gè)八倍于像素時(shí)鐘的寫(xiě)時(shí)鐘信號(hào)write_clk,這樣,在一個(gè)像素時(shí)鐘周期,寫(xiě)時(shí)鐘信號(hào)已經(jīng)過(guò)了八個(gè)周期,而每?jī)蓚€(gè)周期分別完成一路圖像數(shù)據(jù)的寫(xiě)過(guò)程。
由于SRAM是一維存儲(chǔ)空間,一個(gè)地址對(duì)應(yīng)一個(gè)數(shù)據(jù)。所以在寫(xiě)入數(shù)據(jù)時(shí)將SRAM的地址空間劃分為4段,每一段用來(lái)存儲(chǔ)一路圖像數(shù)據(jù)。
用程序?qū)崿F(xiàn)比較簡(jiǎn)單,設(shè)置一個(gè)地址寄存器sram_addr_reg,將它賦給SRAM的地址控制信號(hào)sram_addr。然后在對(duì)每一路圖像寫(xiě)入時(shí),將對(duì)應(yīng)的SRAM的起始地址加上一個(gè)固定的基數(shù)。如:
這樣就保證了SRAM中對(duì)應(yīng)地址的數(shù)據(jù)和屏幕上顯示位置的一一對(duì)應(yīng)關(guān)系,在讀程序中,只需要按照順序讀SRAM即可,如圖6所示。
圖6 SRAM地址驗(yàn)證
評(píng)論