<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的數(shù)字視頻轉(zhuǎn)換接口的設(shè)計與實現(xiàn)

          基于FPGA的數(shù)字視頻轉(zhuǎn)換接口的設(shè)計與實現(xiàn)

          作者: 時間:2008-03-04 來源: 收藏

            引言

          本文引用地址:http://www.ex-cimer.com/article/79620.htm

            本文從實際應(yīng)用的角度出發(fā),采用作為主控芯片,設(shè)計了一款數(shù)字視頻接口轉(zhuǎn)換設(shè)備,該設(shè)備針對于MT9M111這款數(shù)字圖像傳感器產(chǎn)生的ITU-R BT.656格式數(shù)據(jù)進(jìn)行采集、色彩空間變換、分辨率轉(zhuǎn)換等操作,完成了從ITU-R BT.656格式數(shù)據(jù)到DVI格式數(shù)據(jù)的轉(zhuǎn)換,使得MT9M111數(shù)字圖像傳感器的BT656數(shù)據(jù)格式圖像能夠以1280×960(60Hz)和1280×1024(60Hz)兩種顯示格式在DVI-I接口的顯示器上顯示,并且還具有圖像靜止功能,在系統(tǒng)空閑時的待機(jī)狀態(tài)實現(xiàn)了整機(jī)的低功耗,適用于使用移動設(shè)備的工業(yè)現(xiàn)場。

            整體方案設(shè)計

            現(xiàn)實景物的采集與顯示過程如圖1所示。圖像傳感器MT9M111采集到現(xiàn)實景物后,將生成的ITU-R BT.656數(shù)據(jù)流由ITU數(shù)據(jù)輸出端口發(fā)送給視頻轉(zhuǎn)換接口。視頻轉(zhuǎn)換接口將ITU數(shù)據(jù)輸入端口送來的ITU-R BT.656數(shù)據(jù)流轉(zhuǎn)換成TMDS數(shù)據(jù)流發(fā)送,通過DVI-I端口發(fā)送給顯示終端顯示。本設(shè)計方案中,MT9M111輸出圖像的分辨率為1280×960。

            

            圖1 系統(tǒng)采集與顯示過程

            在現(xiàn)實景物的采集與顯示過程中,視頻轉(zhuǎn)換接口功能的實現(xiàn)通過以下步驟來完成:

            1) 對收到的ITU-R BT.ITU656數(shù)據(jù)流解交織;

            2) 對解交織后的數(shù)據(jù)流進(jìn)行色彩空間轉(zhuǎn)換;

            3) 將轉(zhuǎn)換后的每個像素的RGB值寫入存儲器中;

            4) 從存儲器中讀出像素的RGB值,并將其轉(zhuǎn)換成TMDS碼元序列;

            5) 從存儲器中讀出像素的RGB值,并將其轉(zhuǎn)換成VGA模擬信號值。

            硬件構(gòu)架設(shè)計

            系統(tǒng)的硬件構(gòu)架框圖如圖2所示。圖像傳感器輸出的ITU信號(包括YCbCr數(shù)據(jù)流、行場同步信號和像素時鐘)經(jīng)ITU輸入接口送入主控芯片。主控芯片對ITU信號進(jìn)行解交織和色彩空間轉(zhuǎn)換,再將轉(zhuǎn)換后的每個像素的RGB值寫入SDRAM存儲器。再由FPGA主控芯片按照輸出分辨率的要求從SDRAM存儲器中讀出像素的RGB值,并按照VGA的時序標(biāo)準(zhǔn),將像素的RGB值發(fā)送給TMDS發(fā)送芯片和D/A芯片,由TMDS發(fā)送芯片提供視頻數(shù)據(jù)的數(shù)字通道,由D/A芯片提供視頻數(shù)據(jù)的模擬通道,共同匯集到DVI-I輸出接口,傳送到數(shù)字顯示器或模擬顯示器上顯示。

            

            圖2 硬件構(gòu)架框圖

            輸出圖像的分辨率要求FPGA與TMDS發(fā)送芯片之間傳送數(shù)據(jù)的帶寬在100M(像素/秒)以上,因此要求FPGA的速度足夠快。同時由于FPGA與外圍器件之間的互聯(lián)比較多,因此要求FPGA的引腳數(shù)足夠多。同時由于晶振提供的時鐘頻率為50MHz,滿足不了100M以上的傳輸速度,因此需要FPGA內(nèi)部帶有鎖相環(huán)。另外,為了實現(xiàn)系統(tǒng)脫機(jī)工作,要求FPGA支持配置芯片。最后,考慮到系統(tǒng)占用的面積和以后版本的升級,要求FPGA的內(nèi)部資源盡量豐富。為此,系統(tǒng)最終選用了Altera公司Cyclone系列FPGA。

            考慮到視頻數(shù)據(jù)的存儲和顯示是同時進(jìn)行的,而SDRAM存儲器是單端口器件,數(shù)據(jù)的寫入和讀出不能同時進(jìn)行,故需要兩塊SDRAM同時進(jìn)行乒乓操作來完成數(shù)據(jù)的連續(xù)讀寫。最終選用了MICron公司的型號為MT48LC2M32B2TG-6的SDRAM存儲器;TMDS發(fā)送芯片選用的是Silicon Image公司的SiI164CT64型號。由于輸出圖像的分辨率要求FPGA與TMDS發(fā)送芯片之間傳送數(shù)據(jù)的帶寬在100M以上,這一數(shù)據(jù)流同時又要送入D/A芯片完成數(shù)模轉(zhuǎn)換,因此要求D/A芯片的轉(zhuǎn)換速率在100MHz以上。同時由于R、G、B的數(shù)據(jù)寬度都為8位,因此需要選用專用的圖像D/A芯片,它需要具有R、G、B三路數(shù)據(jù)通道,每路的寬度至少為8位。根據(jù)以上要求,系統(tǒng)最終選定CSEMIC公司的CSV7123型號的圖像D/A芯片。

            FPGA功能設(shè)計

            FPGA作為系統(tǒng)的主控芯片,是軟件設(shè)計的核心。根據(jù)整體方案的設(shè)計思路,F(xiàn)PGA主控芯片的工作過程為:首先接收由圖像傳感器送來的ITU-R BT.656格式的視頻數(shù)據(jù)流,經(jīng)過解交織操作,將像素數(shù)據(jù)流中交織在一起的串行YCbCr值解成獨立的并行YCbCr值。然后對解交織的YCbCr值進(jìn)行色彩空間轉(zhuǎn)換,轉(zhuǎn)換成對應(yīng)的RGB值。接著將此RGB值存入一塊SDRAM存儲器。與此同時,從另一塊SDRAM存儲器中讀出像素的RGB值,并發(fā)送給TMDS發(fā)送芯片和D/A芯片,經(jīng)過數(shù)字通道和模擬通道后,傳送到DVI顯示器或VGA顯示器上顯示。根據(jù)FPGA主控芯片的工作過程,設(shè)計的軟件功能框圖如圖3所示。

            

            圖3 軟件功能框圖

            圖3中FPGA內(nèi)部的工作時鐘有兩個,以圖中的虛線為界,虛線左側(cè)部分使用的時鐘為圖像傳感器的54MHz像素時鐘;虛線右側(cè)使用的時鐘是經(jīng)過鎖相環(huán)將晶振的50MHz時鐘倍頻成108MHz以后的時鐘,其中108MHz的時鐘是由輸出圖像的分辨率所決定的。兩個時鐘域通過異步FIFO相連。整個系統(tǒng)共分成6個模塊:解交織模塊、YCbCr轉(zhuǎn)RGB模塊、異步FIFO模塊、乒乓操作模塊、SDRAM控制器模塊和VGA發(fā)送模塊。此外,系統(tǒng)還可實現(xiàn)圖像靜止、系統(tǒng)待機(jī)、模式選擇等功能。

            圖像顯示效果

            圖4是輸出圖像分辨率為1280×960模式下的顯示效果,圖中顯示器檢測到的視頻圖像分辨率為1280×960

            

            圖4 1280×960模式下的顯示效果



          關(guān)鍵詞: FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();