a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的ARM圖像縮放器的實現

基于FPGA的ARM圖像縮放器的實現

作者: 時間:2013-04-26 來源:網絡 收藏

3 內部模塊工作原理

3.1輸入時序控制模塊與輸出時序控制模塊

輸入時序控制模塊是根據輸入視頻信號的同步信號和時序要求,確保有效的數據能夠順利寫入FIFO進行緩存。例如當模塊接收到場同步信號時,FIFO進入即將寫入的狀態,當模塊接收到使能信號時, FIFO開始寫入數據,這樣能確保寫入FIFO的數據是從完整1幀的起始開始寫入。

輸出時序控制模塊的功能是產生輸出所必需的同步信號、場同步信號和行同步信號,以保證輸出圖像的數據與時序一致,從而使圖像可以正確地顯示在顯示器上。

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

3.2 圖像縮放器模塊

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

圖3 圖像縮放器模塊框圖

3.2.1分級雙線性插值 [3]

在雙線性插值算法中,插值點的值根據其相鄰的4個已知點計算得出,如圖4所示。

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

已知a、b、c、d為輸入圖像內的相鄰的4個點,其灰度值表示為f(x)。待插像素f點映射到原圖像后的坐標值小數部分為[m,n]。計算f點灰度值的過程如式(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)

分級雙線性插值使用的4個源圖像像素點都是待插值點的直接鄰點。插值的計算過程如下:

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

其中,m與1-m分別是a點與b點的權值。因為是做5:8的轉換,這里取C=N=8, 將原來為5個像素點的長度區間劃分為8個區間,每個區間都有m×N與(1-m)N這一對權值組成的整數對。每個區間內部的待插值點都與該區間左邊界取同樣的值。8個區間的權值對應于(8,0)、(7,1)、(6,2)、(5,3)(4,4)、(3,5)、(2,6)和(1,7)。在確定好了點位置后,以查找表的方式寫入權值與位置之間的關系,最后可根據內插點與臨近點的相對位置查找對應系數,并通過計算得出各像素點的灰階值。

3.2.2具體插值過程

3.2.2.1水平插值

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

3.2.2.2 垂直插值

垂直插值器完成垂直方向5:8的轉換,即5行數據變為8行數據的轉換,插值過程是按垂直方向對原來的5行數據采用分8級雙線性插值,變換為新的8行數據。

完成水平插值的數據流水線型通過FIFO1與FIFO2模塊,期間將FIFO1與FIFO2的值送入垂直插值器進行插值,完成垂直插值后的數據送入FIFO3與FIFO4模塊,輸出順序排列在先的送入FIFO3,而另外一行數據進入FIFO4。FIFO3與FIFO4之間的數據也是流水線型進入到DDR2 SDRAM模塊中,整個過程通過使用狀態機對垂直插值進行控制,使經過垂直插值后的數據能以正確的順序完成插值,并且送入DDR2 SDRAM模塊。把對原5行數據經過水平和垂直插值變為8行數據的時間作為一個周期,直到完成整1幀VGA格式圖像到1幀XGA圖像的放大。

3.3 DDR2 SDRAM控制器模塊

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

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

fpga相關文章:fpga是什么


鎖相環相關文章:鎖相環原理


關鍵詞: FPGA ARM 圖像

評論


相關推薦

技術專區

關閉