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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于FPGA技術(shù)的紅外視頻采集系統(tǒng)設(shè)計

          一種基于FPGA技術(shù)的紅外視頻采集系統(tǒng)設(shè)計

          作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

          1 系統(tǒng)架構(gòu)

            紅外視頻監(jiān)測系統(tǒng)的部分由5個模塊組成,分別是I2C配置模塊、圖像采集模塊、YUV2RGB模塊、SRAM控制模塊、VGA控制模塊。配置模塊通過I2C總線來對芯片進(jìn)行配置。配置成功后,將產(chǎn)生圖像采集模塊所需的行場同步信號,并將紅外攝像頭輸入的復(fù)合視頻信號轉(zhuǎn)化為標(biāo)準(zhǔn)的NTSC/PAL制式,輸入到圖像采集模塊;圖像采集模塊用來提取YUV(BT656)圖像中的有效數(shù)據(jù);YUV2RGB模塊將YUV圖像數(shù)據(jù)轉(zhuǎn)化為RGB格式以供VGA顯示;VGA控制模塊用來產(chǎn)生D/A芯片(ADV7123)工作的同步信號、圖像數(shù)據(jù),以及控制圖像數(shù)據(jù)從SRAM中讀出。紅外視頻監(jiān)測系統(tǒng)框圖如圖1所示。

          2 系統(tǒng)硬件設(shè)計

          2.1 I2C配置模塊

            是Analog公司的一款應(yīng)用廣泛的視頻解碼芯片。該芯片自動監(jiān)測輸入的復(fù)合視頻信號,通過I2C總線配置接口,可選擇圖像輸出方式(NTSC/PAL等),本文以輸出NTSC制式視頻圖像為例,給出了所需配置的寄存器地址和配置參數(shù)值,NTSC制式視頻圖像寄存器地址和配置參數(shù)值如表1所列。

          圖1 紅外視頻監(jiān)測系統(tǒng)結(jié)構(gòu)框圖

          表1 NTSC制式視頻圖像寄存器地址和配置參數(shù)值(十六進(jìn)制)

          表2 從器件讀寫地址

            ADV7181B芯片作為I2C總線通信的從器件,其ALSB引腳電平的高低所對應(yīng)的器件地址是不同的,從器件讀寫地址如表2所列,本系統(tǒng)將ALSB引腳接地,寫地址設(shè)置為0x40,所有地址代碼用十六進(jìn)制表示。

          2.2 圖像采集模塊

            NTSC默認(rèn)輸出的圖像為奇偶場交替輸出,數(shù)據(jù)信號和行場同步信號時序關(guān)系如圖2所示。奇偶場分別有253有效行,本文獲取其偶數(shù)場圖像用于傳輸和顯示。BT.656定義了一個并行的硬件接口,傳輸?shù)囊曨l圖像格式為YCbCr 4:2:2(Y為亮度信號,Cb、Cr分別為藍(lán)色信號分量和紅色信號分量)。一行圖像數(shù)據(jù)的有效像素為720,一個像素占用兩個字節(jié),格式為CbYCrYCbYCrY。本文采用每兩個像素即每輸出CbYCrY獲取一組CbYCr,這一組數(shù)據(jù)通過移位寄存器得到3路8位的并行數(shù)據(jù)送入YUV2RGB模塊,此時有效像素被壓縮成360個。720×525的圖像數(shù)據(jù)通過本模塊的采集,可傳送的有效像素為360×253。

          圖2 數(shù)據(jù)信號和行場同步信號時序關(guān)系


          圖3 圖像數(shù)據(jù)采集時序

            一行圖像數(shù)據(jù)的起始/結(jié)束(SAV/EAV)和所在數(shù)據(jù)幀的位置是根據(jù)BT656圖像格式(即根據(jù)檢測到的ADV7181B輸出數(shù)據(jù)序列“FF,00,00,xy”)來判斷的。奇數(shù)場的有效行起始時xy為0xC7,結(jié)束時xy為0xDA;偶數(shù)場的有效行起始時xy為0x80,結(jié)束時xy為0x9D。xy各位含義如表3所列。最高位bit7為固定數(shù)據(jù)1,F(xiàn)=0表示偶數(shù)場,F(xiàn)=1表示奇數(shù)場;V=0表示該行為有效視頻數(shù)據(jù),V=1表示該行無有效視頻數(shù)據(jù);H=0表示為SAV信號(行起始),H=1表示為EAV信號(行結(jié)束);低4位為保護(hù)信號。

          表3 xy字節(jié)各位含義

            圖3為SignaltapII觀測到的圖像數(shù)據(jù)采集時序。hactive_even高電平期間為有效圖像數(shù)據(jù)采集階段,yuv_din為從ADV7181B輸出的8位并行圖像數(shù)據(jù),當(dāng)“FF 00 00 80”到來時,開始采集偶數(shù)場圖像的一行有效像素,其中黑線分隔的reg1、reg2、reg3為提取的3路即將送入RGB轉(zhuǎn)化模塊的圖像數(shù)據(jù)。

          2.3 YUV2RGB轉(zhuǎn)化模塊

            VGA顯示器所需的圖像數(shù)據(jù)為RGB格式,所以需要對YCrCb進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化公式如下:
          R=1.164(Y-16)+1.596(Cr-128)(1)
          G=1.164(Y-16)-0.813(Cr-128)
          -0.392(Cb-128)(2)
          B=1.164(Y-16)+2.017(Cb-128)(3)

            浮點運(yùn)算需要大量的資源,進(jìn)而影響系統(tǒng)性能,本系統(tǒng)采用查找表來簡少運(yùn)算量,將上式中5個不同的系數(shù)分量分別編寫查找表。為進(jìn)一步簡化運(yùn)算將(1)式兩邊乘以2,以式(1)為例,查找表如下:
          always @ (in)
          case(in)
          d0:out = 10d0;
          d1:out = 10d3;
          d2:out = 10d6;
          d3:out = 10d10;
          d4:out = 10d13;
          d5:out = 10d16;
          ……
            設(shè)a=2×1.164Y,b=2×1.596Cr式(1)簡化為:2R=a+b-446。若(a+b)>446,則R分量值為(a+b-446)/2;若(a+b)446,則R分量值為0。

            同理可算出G、B分量,即完成了YCrCb到RGB的轉(zhuǎn)化。由于SRAM數(shù)據(jù)線為16位,各取3路8位RGB分量的R信號(5位),G信號(6位),B信號(5位)寫入SRAM。當(dāng)RGB_wrdata為非零圖像數(shù)據(jù)時,將其寫入SRAM即實現(xiàn)了分辨率由720×525向360×250的轉(zhuǎn)化。

          2.4 SRAM讀寫控制模塊

            當(dāng)寫入360×250的視頻流數(shù)據(jù)量所需的存儲空間為100 KB時,由于FPGA內(nèi)部存儲資源有限,本系統(tǒng)通過外部SRAM來存儲圖像數(shù)據(jù)。SRAM所使用的型號為IS61LV25616,存儲空間為256K×16位,滿足圖像存儲需求。SRAM芯片工作不需要刷新,讀寫時序也不復(fù)雜,當(dāng)向SRAM寫入數(shù)據(jù)時先建立地址和數(shù)據(jù),然后使能寫信號wr_n,在wr_n保持一定時間后將其復(fù)位,最后釋放地址總線和數(shù)據(jù)總線;當(dāng)從SRAM中讀出數(shù)據(jù)時,置wr_n為高電平,同時使能SRAM讀出信號,并建立地址。一幀圖像的偶場信號寫入SRAM的波形如圖4所示。

          圖4 一幀圖像的偶場信號寫入SRAM的波形

          2.5 VGA控制模塊

            ADV7123是一個3路10位信號輸入的高速D/A芯片,采樣速度最高可達(dá)330 MHz,可用于多種顯示系統(tǒng)。本文采用標(biāo)準(zhǔn)的VGA顯示模式640×480@60 Hz,VGA水平/垂直時序參數(shù)如表4、表5所列。
          表4 VGA水平時序參數(shù)

          表5 VGA垂直時序參數(shù)

            VGA控制模塊產(chǎn)生ADV7123的工作時序,當(dāng)一幀圖像的偶數(shù)場寫入SRAM時,奇數(shù)場時間段則不再向SRAM中寫數(shù)據(jù),而是從SRAM中讀出圖像數(shù)據(jù),這樣即可實時傳輸圖像。為了實現(xiàn)圖像的完整性,640×480可顯示區(qū)域為360×250,具體代碼如下:

          if(odd_period)//奇數(shù)場
          begin
          if(V_Cont>=Y_START V_ContY_START+250)//Y_START為圖像場消隱區(qū)
          begin
          if(H_Cont>=X_START H_ContX_START+360 )//X_START為圖像行消隱區(qū)
          sram_rd_addr=sram_rd_addr+18b1;//SRAM數(shù)據(jù)讀出地址
          else
          sram_rd_addr=sram_rd_addr;
          end

            在VGA的有效顯示區(qū)域內(nèi),將SRAM讀使能,地址自增,即可將圖像信號從SRAM中讀出。讀出的16位數(shù)據(jù)中,高5位為R信號分量,中間6位為G信號分量,低5位為B信號分量;將這3個分量賦給各自顏色分量的最高位,低位補(bǔ)零即得到VGA工作的RGB信號輸出。圖5為奇數(shù)場SRAM讀出地址時序。VGA控制模塊從SRAM中將圖像波形讀出,rd_period為高電平時讀出一幀圖像的偶數(shù)場,sram_rd_addr范圍為0~360×250。

          圖5 奇數(shù)場SRAM讀出地址時序

          3 硬件設(shè)計及實驗結(jié)果

          3.1 硬件設(shè)計

            FPGA芯片采用Altera公司Cyclone II系列的EP2C35F484C6,它具有較高的性價比,內(nèi)部有33 216個邏輯單元,322個外部引腳、4個PLL、66個M4K RAM塊、8個I/O BANK。工作需要1.2 V電壓和3.3 V的I/O電平。本系統(tǒng)采用的芯片封裝為FBGA,PCB制板采用的是4層電路板。由于板子上使用了A/D、D/A數(shù)?;旌闲盘柕男酒闺娐钒暹_(dá)到好的性能,就需要嚴(yán)格的遵守PCB布板規(guī)則:

          ① 模擬復(fù)合視頻信號輸入到ADV7181B的走線要盡可能短,數(shù)據(jù)線和時鐘線也要盡可能短。
          ② 在電源引腳附近添加去耦電容,濾波電容。
          ③ 對芯片的每個電源(AVDD、DVDD、DVDDIO、PVDD)分開供電。
          ④ 分隔數(shù)字部分和模擬部分,數(shù)字地和模擬地通過單點連接。

          3.2 實驗結(jié)果

            將設(shè)計調(diào)試好的PCB電路板,接上電源、NTSC制式紅外攝像頭和VGA顯示器進(jìn)行聯(lián)調(diào),紅外圖像實時顯示良好,實驗結(jié)果如圖6所示。調(diào)試結(jié)果證明了該圖像采集系統(tǒng)設(shè)計的正確性。

          結(jié)語

            實驗結(jié)果表明,該紅外實時采集系統(tǒng)工作穩(wěn)定。該系統(tǒng)基于FPGA技術(shù),結(jié)構(gòu)簡單,可以靈活地根據(jù)需求配置系統(tǒng),具有開發(fā)周期短、擴(kuò)展性好、成本低的特點,有較高的應(yīng)用價值。

          圖6 實驗結(jié)果

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


          評論


          相關(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); })();