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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DM368 視頻前端信號采集詳解

          DM368 視頻前端信號采集詳解

          作者: 時間:2015-07-29 來源:網(wǎng)絡(luò) 收藏

            2.2 視頻前端對輸入信號的解析

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

            2.2.1 ISIF 對信號的解析

            無論是master 模式還是slave 模式, 的視頻前端接口ISIF 對于信號的處理是一樣的。

            

           

            圖 2. 幀圖像格式

            圖2 的時序通常認為水平同步和垂直同步信號都為高電平有效,需要配置ISIF 的MODESET. HDPOL=MODESET.VDPOL=0。在這種情況下,水平同步信號寬度為HDW (HD pulse width),以像素為單位。垂直同步信號寬度為 VDW (VD pulse width) ,以行數(shù)為單位。 PLLN(Pixels per line)是每行的像素個數(shù),也就是相鄰兩個行同步信號間的像素個數(shù)。LPFR 是Lines per frame 的縮寫,表示每幀數(shù)據(jù)有多少行,也是相鄰兩個場同步信號之間的行數(shù)。在slave 模式下,PLCK/HD/VD 都是外部輸入的,ISIF 寄存器HDW/VDW/PLLN 是不需要配置的。圖2 中的灰色區(qū)域我們叫做有效數(shù)據(jù)區(qū)域,也就是用戶希望獲得的有效數(shù)據(jù)。而斜線陰影區(qū)域就是消隱區(qū)域。消隱區(qū)域在視頻前端處理中也是必不可少的部分,關(guān)于這點我們會在第3 節(jié)詳細介紹。

            如果你使用的是單次(one shot)模式,或者在連續(xù)(continuous)模式下,你需要保存RAW 數(shù)據(jù),那你就需要配置 SPH( Start pixel horizontal 水平方向起始像素),SLV0/1 (Start line vertical - field 0/1 垂直方向奇偶場起始行),LNH( Number of pixels in line 每行像素個數(shù)),LNV (Number of lines vertical 垂直方向行數(shù))。這是為了告訴 你需要把輸入的圖像的哪部分寫到DDR。也就是說你可以選擇只輸出有效數(shù)據(jù)里面的某一部分到DDR。

            SPH 告訴硬件在同步信號有效以后從哪個像素開始寫入DDR。請注意這里的HD 信號有效起始點是指同步信號有效的沿,不是從同步信號脈沖結(jié)束后作為計數(shù)像素的起點。例如,如果HD 信號高電平有效,就是HD 上升沿后開始計數(shù),LNH 個PCLK(也就是像素)后將接收到的數(shù)據(jù)寫入DDR。同樣 SLV0/1 告訴硬件從哪行數(shù)據(jù)開始需要寫入 DDR,LNV 決定了寫多少行數(shù)據(jù)到 DDR。所以調(diào)整ISIF 的SPH,SLV0/1, LNH 和LNV 就可以調(diào)整保存到DDR 上的RAW 數(shù)據(jù)在原圖中的位置,以及 RAW 數(shù)據(jù)段大小(長寬)。如果不需要寫入 RAW 到DDR,那就不需要配置 SPH, SLV0/1 ,LNH 和LNV。

            圖2 的時序如果配置為同步信號低電平有效也是可以的。但是如果配置為低電平有效,相關(guān)的參數(shù)就發(fā)生了變化。例如水平同步信號寬度就變?yōu)?PPLN-HDW,垂直同步信號寬度為 LPFR- VDW。SPH 和 SLV0/1 都變成了 0。所以在配置 ISIF 相關(guān)寄存器前首先需要把同步信號的極性確定下來。 要采集到正確的數(shù)據(jù),DM368 采樣數(shù)據(jù)時機必須和傳感器輸出數(shù)據(jù)的時機匹配。在DM368 上默認是PCLK 的下降沿采樣數(shù)據(jù)。用戶可以通過修改SYSTEM module 寄存器VPSS_CLK_CTRL的PCLK_INV[2] 位來改變 PCLK 采樣沿。

            2.2.2 IPIPE 和Resizer 對信號的解析和處理

            如果ISIF 直接通過IPIPEIF 連接到IPIPE,那所有的圖像數(shù)據(jù),也就是圖2 里的global frame 都會傳輸?shù)絀PIPE。在IPIPE 里面 用戶需要配置SRC_HPS (Horizontal Start Position ),SRC_VPS(Vertical Start Position),SRC_HSZ( Horizontal Processing Size)和SRC_VSZ( Vertical Processing Size),來確認global frame 里面的哪一部分需要IPIPE 來處理。

            在resizer 的模塊里面,也有SRC_HPS,SRC_VPS,SRC_HSZ 和SRC_VSZ 可以配置resizer處理的圖像的區(qū)域。如果IPIPE 的輸出到resizer 已經(jīng)是需要處理的區(qū)域,那SRC_HPS,SRC_VPS 就可以配置為0,而resizer 的SRC_HSZ,SRC_VSZ 等于IPIPE 的SRC_HSZ,SRC_VSZ。如果ISIF 的輸出是通過IPIPEIF 直接到resizer(沒有經(jīng)過IPIPE),resizer 的SRC_HPS,SRC_VPS 就不能配置為0 了,需要用戶根據(jù)需要處理的圖像合理的配置resizer 的SRC_HPS,SRC_VPS 寄存器。

            2.2.3 RAW 數(shù)據(jù)和YUV 數(shù)據(jù)的匹配

            在連續(xù)模式下,用戶同時獲得resizer 輸出的YUV 和ISIF 輸出的RAW,時常有用戶發(fā)現(xiàn)自己保存的RAW 數(shù)據(jù)和Resizer 輸出的YUV 數(shù)據(jù)不匹配,有一定的偏移。這種問題的原因是IPIPE,Resizer 里面的SRC_HPS,SRC_VPS,SRC_HSZ 和SRC_VSZ 和ISIF 里面的寫入DDR 時候配置的偏移和大小不匹配。IPIPE/Resizer 和ISIF 的寄存器本身是沒有直接關(guān)系的,這就需要用戶將它們一一對應(yīng),匹配起來。例如ISIF 輸出的數(shù)據(jù)輸入給IPIPE,為了讓RAW 和YUV 匹配,需要ISIF 的SPH 等于IPIPE 的SRC_HPS,ISIF 的SLV0/1 等于IPIPE 的SRC_VPS,ISIF 的LNH 等于IPIPE 的SRC_ HSZ,ISIF 的LNV 等于IPIPE 的SRC_ VSZ。而Resizer 的SRC_HPS,SRC_VPS 需要配置為0,而resizer 的SRC_HSZ,SRC_VSZ 要等于IPIPE 的SRC_HSZ,SRC_VSZ。

            在單次模式下,也就是數(shù)據(jù)通路ISIF->DDR->IPIPEIF->IPIPE(Resizer),由于IPIPE 的輸入是DDR 上的RAW 數(shù)據(jù),有效數(shù)據(jù)的獲取已經(jīng)在ISIF 輸出到DDR 配置里面實現(xiàn)了,IPIPE 里面的處理數(shù)據(jù)的起始位置就可以是(0,0)了。

            這樣無論是在連續(xù)模式還是在單次模式下,RAW 數(shù)據(jù)和RAW 輸出轉(zhuǎn)換出的YUV 數(shù)據(jù)就可以完全匹配了。


          上一頁 1 2 下一頁

          關(guān)鍵詞: DM368 MT9D131

          評論


          技術(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); })();