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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的ARM圖像縮放器的實(shí)現(xiàn)

          基于FPGA的ARM圖像縮放器的實(shí)現(xiàn)

          作者: 時(shí)間:2013-04-26 來(lái)源:網(wǎng)絡(luò) 收藏

          3 內(nèi)部模塊工作原理

          3.1輸入時(shí)序控制模塊與輸出時(shí)序控制模塊

          輸入時(shí)序控制模塊是根據(jù)輸入視頻信號(hào)的同步信號(hào)和時(shí)序要求,確保有效的數(shù)據(jù)能夠順利寫入FIFO進(jìn)行緩存。例如當(dāng)模塊接收到場(chǎng)同步信號(hào)時(shí),F(xiàn)IFO進(jìn)入即將寫入的狀態(tài),當(dāng)模塊接收到使能信號(hào)時(shí), FIFO開始寫入數(shù)據(jù),這樣能確保寫入FIFO的數(shù)據(jù)是從完整1幀的起始開始寫入。

          輸出時(shí)序控制模塊的功能是產(chǎn)生輸出所必需的同步信號(hào)、場(chǎng)同步信號(hào)和行同步信號(hào),以保證輸出圖像的數(shù)據(jù)與時(shí)序一致,從而使圖像可以正確地顯示在顯示器上。

          輸入輸出時(shí)序控制模塊,按照計(jì)數(shù)器的方法進(jìn)行設(shè)計(jì)[2]。例如VGA信號(hào)的1幀圖像的總像素要求為800×525,其中有效像素為640×480。對(duì)于行掃描來(lái)說(shuō)可設(shè)置1~96像素時(shí)鐘計(jì)數(shù)為行同步信號(hào),97~144像素時(shí)鐘計(jì)數(shù)為行消隱后肩,145~784像素時(shí)鐘計(jì)數(shù)為圖像有效像素顯示,685~800像素時(shí)鐘計(jì)數(shù)為行消隱前肩。完成一行后,計(jì)數(shù)器置0,等待新的行同步信號(hào)到來(lái)再重新計(jì)數(shù)。在圖像有效像素時(shí)鐘內(nèi),讓寫入FIFO使能信號(hào)處于有效狀態(tài),而其余時(shí)間使能信號(hào)處于無(wú)效狀態(tài),這樣可保證有效圖像數(shù)據(jù)能準(zhǔn)確寫入FIFO進(jìn)行緩存,并等待下一步的處理。

          3.2 圖像縮放器模塊

          如圖3所示,圖像縮放器模塊主要完成對(duì)輸入圖像數(shù)據(jù)源進(jìn)行分辨率的縮放。根據(jù)設(shè)計(jì),輸入的圖像數(shù)據(jù)為VGA 640×480格式,輸出的圖像數(shù)據(jù)為XGA 1024×768格式。由于輸入圖像數(shù)據(jù)與輸出圖像數(shù)據(jù)在完整1幀中的每一行像素點(diǎn)和每一列的數(shù)量上之比都為5:8,因此可考慮對(duì)輸入的VGA信號(hào)作5:8的放大。先對(duì)數(shù)據(jù)在水平方向上進(jìn)行插值放大,然后再進(jìn)行垂直方向上的放大,設(shè)計(jì)中水平方向和垂直方向的插值放大均使用分級(jí)雙線性插值算法。

          圖3 圖像縮放器模塊框圖

          3.2.1分級(jí)雙線性插值 [3]

          在雙線性插值算法中,插值點(diǎn)的值根據(jù)其相鄰的4個(gè)已知點(diǎn)計(jì)算得出,如圖4所示。

          圖4 雙線性插值算法原理圖

          已知a、b、c、d為輸入圖像內(nèi)的相鄰的4個(gè)點(diǎn),其灰度值表示為f(x)。待插像素f點(diǎn)映射到原圖像后的坐標(biāo)值小數(shù)部分為[m,n]。計(jì)算f點(diǎn)灰度值的過(guò)程如式(1)~式(3)所示:

          f[g]=f[a]+m(f(b)-f(a)) (1)

          f[h]=f[c]+m(f(d)-f(c)) (2)

          f[f]=f[g]+m(f(h)-f(g))

          =(1-m)(1-n)f(a)+m(1-n)f(b)+(1-m)nf(c)+mnf(d) (3)

          分級(jí)雙線性插值使用的4個(gè)源圖像像素點(diǎn)都是待插值點(diǎn)的直接鄰點(diǎn)。插值的計(jì)算過(guò)程如下:

          g(x)=(f(a)(m×N)+f(b)×(1-m)N)/N

          其中,m與1-m分別是a點(diǎn)與b點(diǎn)的權(quán)值。因?yàn)槭亲?:8的轉(zhuǎn)換,這里取C=N=8, 將原來(lái)為5個(gè)像素點(diǎn)的長(zhǎng)度區(qū)間劃分為8個(gè)區(qū)間,每個(gè)區(qū)間都有m×N與(1-m)N這一對(duì)權(quán)值組成的整數(shù)對(duì)。每個(gè)區(qū)間內(nèi)部的待插值點(diǎn)都與該區(qū)間左邊界取同樣的值。8個(gè)區(qū)間的權(quán)值對(duì)應(yīng)于(8,0)、(7,1)、(6,2)、(5,3)(4,4)、(3,5)、(2,6)和(1,7)。在確定好了點(diǎn)位置后,以查找表的方式寫入權(quán)值與位置之間的關(guān)系,最后可根據(jù)內(nèi)插點(diǎn)與臨近點(diǎn)的相對(duì)位置查找對(duì)應(yīng)系數(shù),并通過(guò)計(jì)算得出各像素點(diǎn)的灰階值。

          3.2.2具體插值過(guò)程

          3.2.2.1水平插值

          將雙線性插值分解為水平和垂直方向進(jìn)行,由于是把原圖像作5:8的放大,所以根據(jù)分級(jí)雙線性插值,把原水平方向的5個(gè)像素點(diǎn)采用分8級(jí)雙線性插值送入水平插值器。水平插值器由計(jì)數(shù)器與使能信號(hào)同時(shí)控制,每間隔5個(gè)時(shí)鐘,水平插值器使能端置于計(jì)算插值狀態(tài),把進(jìn)入的5個(gè)值進(jìn)行一次插值變成新的8個(gè)像素點(diǎn),之后再間隔5個(gè)時(shí)鐘,將新的值進(jìn)入插值器進(jìn)行插值,直到把1行640個(gè)像素點(diǎn)插值為1行1 024個(gè)像素點(diǎn)。

          3.2.2.2 垂直插值

          垂直插值器完成垂直方向5:8的轉(zhuǎn)換,即5行數(shù)據(jù)變?yōu)?行數(shù)據(jù)的轉(zhuǎn)換,插值過(guò)程是按垂直方向?qū)υ瓉?lái)的5行數(shù)據(jù)采用分8級(jí)雙線性插值,變換為新的8行數(shù)據(jù)。

          完成水平插值的數(shù)據(jù)流水線型通過(guò)FIFO1與FIFO2模塊,期間將FIFO1與FIFO2的值送入垂直插值器進(jìn)行插值,完成垂直插值后的數(shù)據(jù)送入FIFO3與FIFO4模塊,輸出順序排列在先的送入FIFO3,而另外一行數(shù)據(jù)進(jìn)入FIFO4。FIFO3與FIFO4之間的數(shù)據(jù)也是流水線型進(jìn)入到DDR2 SDRAM模塊中,整個(gè)過(guò)程通過(guò)使用狀態(tài)機(jī)對(duì)垂直插值進(jìn)行控制,使經(jīng)過(guò)垂直插值后的數(shù)據(jù)能以正確的順序完成插值,并且送入DDR2 SDRAM模塊。把對(duì)原5行數(shù)據(jù)經(jīng)過(guò)水平和垂直插值變?yōu)?行數(shù)據(jù)的時(shí)間作為一個(gè)周期,直到完成整1幀VGA格式圖像到1幀XGA圖像的放大。

          3.3 DDR2 SDRAM控制器模塊

          控制器模塊的具體作用為:當(dāng)SCALER完成圖像數(shù)據(jù)處理后,把圖像數(shù)據(jù)送進(jìn)DDR2中儲(chǔ)存,在確保DDR2中存儲(chǔ)有2幀完整圖像時(shí),DDR2的讀出端才開始讀取,從第一幀圖像地址讀取圖像數(shù)據(jù),然后據(jù)根據(jù)時(shí)序控制從DDR2輸出。當(dāng)讀完第一幀后,繼續(xù)讀取第二幀,此時(shí)第三幀繼續(xù)寫入原第一幀地址,之后的讀取寫入都按此過(guò)程進(jìn)行。

          由于DDR2 SDRAM不能同時(shí)寫入和讀出,所以需要DDR2 SDRAM控制器加以控制??筛鶕?jù)連接到DDR2 SDRAM模塊寫入端和讀出端的FIFO內(nèi)部已存數(shù)據(jù)數(shù)量進(jìn)行讀寫控制。寫入端前的FIFO即為圖3的FIFO3。連接到DDR2讀出端的FIFO為圖3的FIFO2,它與輸出時(shí)序控制模塊共同完成最終所需XGA圖像的輸出。DDR2 SDRAM每次操作指令時(shí),以1行數(shù)據(jù)為單位,即接受1次讀命令,則讀出1行數(shù)據(jù);同樣,接受1次寫入命令,則寫入1行數(shù)據(jù),此1行數(shù)據(jù)同時(shí)為XGA格式的1行(1 024個(gè)像素點(diǎn)數(shù)據(jù))。

          fpga相關(guān)文章:fpga是什么


          鎖相環(huán)相關(guān)文章:鎖相環(huán)原理


          關(guān)鍵詞: FPGA ARM 圖像

          評(píng)論


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