《電子技術應用》
您所在的位置:首頁 > 微波|射頻 > 設計應用 > H.264視頻解碼芯片中與濾波相關的存儲器的設計
H.264視頻解碼芯片中與濾波相關的存儲器的設計
摘要: 本文對H.264解碼芯片中的濾波部分所需的數據、數據的存取及芯片中所用到的存儲器做了深入的分析,同時涉及到DRAM及SRAM的設計,并支持宏塊級幀場自適應。為了實現H.264解碼芯片中的數據的快速存取,本文提出了對數據存儲的一種優化方法,通過此方法可完全達到濾波過程中對大量數據的處理。
Abstract:
Key words :

  H.264 作為新一代的視頻編碼標準有著優異的性能,廣泛應用于視頻會議、視頻點播、數字電視廣播、數字視頻存儲以及消費電子等多個領域。與H.263或MPEG-4 相比,同等圖像質量下,碼率能降低一半左右,但是算法復雜度高。

  H.264 標準在低碼率的情況下能產生高質量的畫面,主要就是采用了自適應的環路濾波。H.264 采用了基于樹狀結構的塊的運動補償,基于塊的運動補償能很好地降低碼率, 但這同時也引起了方塊效應。

  由此H.264 采用了一種自適應的濾波算法,能夠很好地降低方塊效應, 但同時也帶來了極大的運算復雜度。在H.264 中,濾波后的數據將作為下一幀的參考幀,因此又稱為環路濾波。研究表明:在H.264 解碼過程中其中運動補償(MC)約占30%,環路濾波(DF)約占20%的解碼時間,因此很好的設計MC 與DF 對解碼器的性能至關重要。

  1 濾波過程用到的數據

  H.264 中, 在MBAFF 情況下的解碼中宏塊都是以宏塊對的形式出現。因此在存儲數據的時候也考慮到以一個宏塊對的數據為單位進行存儲。在一個宏塊對中, 濾波時整個過程中需要操作的數據如圖1 所示。其中每一個小方塊表示一個4×4 像素的block,在濾mb_up 宏塊時需要用到up 所指的數據,本次設計支持MBAFF,在濾波過程中需要進行幀與場的轉化,因此要用到上面二行的block。在濾波最左邊的block時需要用到圖中left 所指示的一列數據。

  

  圖1 濾波中的數據

  2 DRAM 的規劃與設計

  DRAM 是一種成本低、容量大、應用廣泛的存儲介質, 對大規模數據的操作十分迅速。然而由于DRAM 中有一個Row 的概念。在操作不同的Row 的情況下DRAM 要先關閉當前的Row, 同時再激活所需的Row,這樣就造成了很多的overhead。試想讀取同一Row 的10 個數據與分別處于10 個Row 的10個數據,后者的時間耗費將會是前者的5~6 倍。因此DRAM 不適合對隨機的分散的數據存取。

  由于Row 的存在, 對DRAM 中的數據結構的設計就顯得尤為重要。要盡量減少不同Row 之間的訪問,這樣才能提高數據的存取效率。本次設計中采用位寬為64 位的DRAM, 恰好可以存放8 個點的像素值。一幅圖像亮度Y、色度UV 分別存放在一個連續的空間中。

  H.264 解碼后的最后圖像存入DRAM 中,顯示模塊不斷的從DRAM 中取出數據送到顯示器, 運動補償單元也要從DRAM 中取出參考幀的數據。因此DRAM 的帶寬尤為緊張。合理地分配DRAM 的帶寬是設計中要考慮的一個重要方面。由于很多模塊都要求對DRAM 進行操作, 為了有效地對DRAM 進行管理,設置了DRAMCONtrol 模塊來對DRAM 進行控制。

  3 DRAMControl 模塊的設計

  DRAMControl 模塊控制著DRAM 與外面其它模塊的交互,是DRAM 與外部其它模塊的接口。主要的功能包括DRAM 的自動刷新、DRAM 的命令的產生等。因為DRAM 工作時的狀態多,本次設計中采用狀態機的方式來實現。其中狀態圖如圖2 所示。

  

  圖2 DRAMControl 中的狀態轉移圖

  設計中采用了均勻刷新的方式, 每隔一定的時間, 經過“IDLE → PRECHALL → AUTORF →IDLE”的過程就完成一次刷新。狀態轉換的主體是讀寫操作過程,判決狀態(Decision)占用一個時鐘周期判斷當前操作所要執行的Row 是否處于激活狀態,如果沒有激活則要先關閉當前處于激活狀態的Row,再激活所需的Row(通過PRECH 和ACT 狀態完成);如果已經激活,則直接進行讀寫操作。對于寫操作,針對H.264 中濾波結束后要更新上邊宏塊,左邊宏塊以及自身宏塊的數據來設計了WRITEUP 或WRITELEFT 和WRITE 這三個狀態寫入DRAM,而且這些狀態之間實現了時間上的無縫連接,構成了一個完整連貫的BurST 寫操作; 如果上邊宏塊的數據或左邊宏塊的數據塊處于與待濾波宏塊的數據塊不同的Row 中,則在WRITEUP 或WRITELEF 狀態實現不在本Tile 中數據塊的寫操作,這種情況的寫效率顯然比在同一個Row 中的時候下降了, 但這是不可避免的, 當宏塊處于本Row 的最左邊或最上邊的時候,其上邊宏塊數據或左邊宏塊數據塊必然是屬于其它Row 的。本次設計中,DRAM 一個地址存本block 和下一個block 的同一行, 因此這樣就最多的避免了跨Row 的操作。對于其它情況的寫操作,使用WRITE 狀態完成。

  H.264 作為新一代的視頻編碼標準有著優異的性能,廣泛應用于視頻會議、視頻點播、數字電視廣播、數字視頻存儲以及消費電子等多個領域。與H.263或MPEG-4 相比,同等圖像質量下,碼率能降低一半左右,但是算法復雜度高。

  H.264 標準在低碼率的情況下能產生高質量的畫面,主要就是采用了自適應的環路濾波。H.264 采用了基于樹狀結構的塊的運動補償,基于塊的運動補償能很好地降低碼率, 但這同時也引起了方塊效應。

  由此H.264 采用了一種自適應的濾波算法,能夠很好地降低方塊效應, 但同時也帶來了極大的運算復雜度。在H.264 中,濾波后的數據將作為下一幀的參考幀,因此又稱為環路濾波。研究表明:在H.264 解碼過程中其中運動補償(MC)約占30%,環路濾波(DF)約占20%的解碼時間,因此很好的設計MC 與DF 對解碼器的性能至關重要。

  1 濾波過程用到的數據

  H.264 中, 在MBAFF 情況下的解碼中宏塊都是以宏塊對的形式出現。因此在存儲數據的時候也考慮到以一個宏塊對的數據為單位進行存儲。在一個宏塊對中, 濾波時整個過程中需要操作的數據如圖1 所示。其中每一個小方塊表示一個4×4 像素的block,在濾mb_up 宏塊時需要用到up 所指的數據,本次設計支持MBAFF,在濾波過程中需要進行幀與場的轉化,因此要用到上面二行的block。在濾波最左邊的block時需要用到圖中left 所指示的一列數據。

  

  圖1 濾波中的數據

  2 DRAM 的規劃與設計

  DRAM 是一種成本低、容量大、應用廣泛的存儲介質, 對大規模數據的操作十分迅速。然而由于DRAM 中有一個Row 的概念。在操作不同的Row 的情況下DRAM 要先關閉當前的Row, 同時再激活所需的Row,這樣就造成了很多的overhead。試想讀取同一Row 的10 個數據與分別處于10 個Row 的10個數據,后者的時間耗費將會是前者的5~6 倍。因此DRAM 不適合對隨機的分散的數據存取。

  由于Row 的存在, 對DRAM 中的數據結構的設計就顯得尤為重要。要盡量減少不同Row 之間的訪問,這樣才能提高數據的存取效率。本次設計中采用位寬為64 位的DRAM, 恰好可以存放8 個點的像素值。一幅圖像亮度Y、色度UV 分別存放在一個連續的空間中。

  H.264 解碼后的最后圖像存入DRAM 中,顯示模塊不斷的從DRAM 中取出數據送到顯示器, 運動補償單元也要從DRAM 中取出參考幀的數據。因此DRAM 的帶寬尤為緊張。合理地分配DRAM 的帶寬是設計中要考慮的一個重要方面。由于很多模塊都要求對DRAM 進行操作, 為了有效地對DRAM 進行管理,設置了DRAMCONtrol 模塊來對DRAM 進行控制。

  3 DRAMControl 模塊的設計

  DRAMControl 模塊控制著DRAM 與外面其它模塊的交互,是DRAM 與外部其它模塊的接口。主要的功能包括DRAM 的自動刷新、DRAM 的命令的產生等。因為DRAM 工作時的狀態多,本次設計中采用狀態機的方式來實現。其中狀態圖如圖2 所示。

  

  圖2 DRAMControl 中的狀態轉移圖

  設計中采用了均勻刷新的方式, 每隔一定的時間, 經過“IDLE → PRECHALL → AUTORF →IDLE”的過程就完成一次刷新。狀態轉換的主體是讀寫操作過程,判決狀態(Decision)占用一個時鐘周期判斷當前操作所要執行的Row 是否處于激活狀態,如果沒有激活則要先關閉當前處于激活狀態的Row,再激活所需的Row(通過PRECH 和ACT 狀態完成);如果已經激活,則直接進行讀寫操作。對于寫操作,針對H.264 中濾波結束后要更新上邊宏塊,左邊宏塊以及自身宏塊的數據來設計了WRITEUP 或WRITELEFT 和WRITE 這三個狀態寫入DRAM,而且這些狀態之間實現了時間上的無縫連接,構成了一個完整連貫的BurST 寫操作; 如果上邊宏塊的數據或左邊宏塊的數據塊處于與待濾波宏塊的數據塊不同的Row 中,則在WRITEUP 或WRITELEF 狀態實現不在本Tile 中數據塊的寫操作,這種情況的寫效率顯然比在同一個Row 中的時候下降了, 但這是不可避免的, 當宏塊處于本Row 的最左邊或最上邊的時候,其上邊宏塊數據或左邊宏塊數據塊必然是屬于其它Row 的。本次設計中,DRAM 一個地址存本block 和下一個block 的同一行, 因此這樣就最多的避免了跨Row 的操作。對于其它情況的寫操作,使用WRITE 狀態完成。

  4 SRAM 的規劃與設計

  在H.264 解碼過程中,數據由熵解碼經過運動補償后再通過環路濾波最終送到存儲器中,之后顯示解碼芯片從存儲器中不斷的提取數據送到顯示器上,最終完成數據的解碼,如圖3 所示。在濾波的過程中,宏塊中的數據頻繁地被調用。而SRAM 的讀寫速度快的特點能很好地適用這一要求。因為在H.264 中最小的單元為block,運動矢量等都是以block 為單位來進行傳遞。因此以block 為單位來進行數據的存取會帶來很大的方便。本設計中各個SRAM 每一個地址存放一個block 單元的數據(16 個像素點),即采用128bit 的SRAM。

  

  圖3 DRAM 與其它模塊之間的數據交互

  在H.264 中運動補償結束后的數據交由環路濾波運算后寫入DRAM, 我們把寫入DRAM 的這一過程稱為Store 過程,由Store 模塊負責。由圖3 可以看出MC 與Deblock 是一個串聯的關系。為了提高解碼的速度,我們將運動補償與環路濾波并行執行,即當前解碼的結束并不以環路濾波的結束為標志,而當前宏塊的運動補償一結束我們就可以開始下一個宏塊的解碼。經過大量的實驗發現:MC 的時間遠比block的時間大很多,當后一個模塊要進行濾波時濾波模塊早已準備完畢。最后對存儲模塊我們也同樣的用并行的思想來加快解碼的速度。結果當作MBx 的MC 時,做MB(x-1)的濾波,同時MB(x-2)存儲。此時需要注意MB(x-1)的濾波和MB(x-2)的存儲并不是同時開始。因為做MB(x-1)的濾波時也會影響到MB(x-2)中的數據。

  因此我們要等MB(x-1)的第一條垂直邊濾波結束后才開始MB(x-2)的存儲。具體的時間關系如圖4 所示。

  

  圖4 各個模塊之間的時序關系圖

  (1)濾波前數據的存儲及濾波結束后數據的存儲

  由于設計中采用此種流程,我們需要3 片SRAM來存儲MC 的運算結果。這3 片SRAM 交替地進行MC、Deblock 和Store。我們稱這3 片SRAM 為SRAM_MB,濾波結束后的數據也存儲在此SRAM 中,在經Store 模塊將此數據存儲到DRAM 中去。因為濾波結束時,恰好原來SRAM_MB 中的數據也已經成為無效數據。這里需要注意,由于有幀場自適應的情況存在,濾波結束后的數據如果幀場情況不一樣,我們還需要根據數據不同的情況進行適當的幀場轉化,之后再將數據存入DRAM。

  (2)垂直濾波后的數據的存儲

  我們都知道濾波過程是一個先垂直后水平的過程,因此我們需要有一片SRAM 來存儲水平濾波的結果。這片SRAM 就叫SRAM_BUFFER。因為水平濾波時正在從SRAM_MB 中讀取數據,同一時間不能同時向SRAM 中讀取、寫入數據。因此我們用SRAM_BUFFER 來暫存垂直濾波結束后的數據。水平濾波時則從SRAM_BUFFER 中讀取數據, 濾波后存儲到SRAM_MB 中。

  5 總結

  本文對H.264 解碼芯片中的濾波、存儲模塊作了深入的分析。并根據各個時間數據的特點作相應的存儲器的設計, 這種設計方法經過驗證能很好地處理H.264 中濾波及存儲時的數據的調度。整個濾波過程約52 個周期就可以完成。在MBAFF 情況時各種數據的轉化時鐘周期控制在70 個以內。這種設計符合要求,并在FPGA 上驗證后能夠正常的運行,運行時鐘達到60MHz,能實時地完成對高清圖像的解碼。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
激情五月***国产精品| 亚洲一区一卡| 国产精品日本欧美一区二区三区| 免费不卡视频| 久久人人爽人人爽爽久久| 欧美一区二区三区在线| 亚洲午夜羞羞片| 中文av一区特黄| 一本色道久久综合狠狠躁篇的优点 | 国产日韩欧美三区| 国产欧美日韩综合精品二区| 国产精品久久波多野结衣| 欧美三级日韩三级国产三级| 欧美视频在线观看免费| 欧美无砖砖区免费| 国产精品久久中文| 国产精品久久一级| 国产伦理精品不卡| 国产亚洲精品福利| 韩国v欧美v日本v亚洲v| 狠色狠色综合久久| …久久精品99久久香蕉国产 | 久久视频这里只有精品| 久久精品国产亚洲高清剧情介绍| 欧美一区二区日韩| 久久国产一区二区| 久久色在线观看| 欧美国产日韩精品| 欧美日韩高清在线播放| 欧美午夜精品一区二区三区| 国产精品久久久久久久7电影| 国产精品无码专区在线观看| 国产精品一区二区三区成人| 国产日韩欧美不卡| 精品96久久久久久中文字幕无| 在线观看成人av| 亚洲美女av网站| 亚洲一区二区三区欧美| 午夜精品久久久久久久久久久久久| 性欧美暴力猛交69hd| 亚洲国产精品免费| 一个色综合导航| 性色av一区二区三区红粉影视| 久久久国际精品| 欧美大片免费观看| 国产精品高清网站| 国产一区成人| 亚洲黄色一区| 亚洲无限av看| 亚洲国产精品成人精品| 一区二区三区蜜桃网| 欧美一区二区三区四区视频| 免费成人av在线看| 国产精品扒开腿做爽爽爽软件| 国产亚洲精品一区二555| 在线精品一区| 亚洲视频 欧洲视频| 久久精品亚洲| 一本色道久久99精品综合| 午夜久久影院| 免费亚洲网站| 国产精品久久久久久久久久免费看| 国产字幕视频一区二区| 亚洲精选中文字幕| 欧美一区二区三区电影在线观看| 亚洲美女黄色片| 欧美在线亚洲在线| 欧美精品18+| 国产精品一区视频网站| 亚洲国产91| 亚洲欧美日韩国产一区二区三区 | 午夜精品久久一牛影视| 麻豆精品精华液| 国产精品国产三级国产专播精品人| 国产日本欧美一区二区三区| 91久久极品少妇xxxxⅹ软件| 亚洲欧美在线看| 在线视频欧美日韩| 久久久欧美精品| 欧美午夜宅男影院在线观看| 一色屋精品视频在线看| 亚洲一区二区网站| 99av国产精品欲麻豆| 欧美在线观看网站| 欧美日韩久久精品| 极品尤物久久久av免费看| 在线性视频日韩欧美| 亚洲人成网站色ww在线| 久久精品九九| 国产精品久久久久9999吃药| 亚洲日本成人| 亚洲国产一区二区三区青草影视| 香蕉免费一区二区三区在线观看| 欧美精品在线观看| 一区二区在线观看av| 亚洲欧美日韩成人高清在线一区| 这里只有精品电影| 欧美丰满少妇xxxbbb| 国产色产综合产在线视频| 一卡二卡3卡四卡高清精品视频| 最新日韩精品| 久热精品视频在线观看一区| 国产一区91| 欧美一级黄色录像| 小处雏高清一区二区三区| 欧美日韩一区在线观看| 亚洲国产小视频在线观看| 欧美专区在线观看一区| 久久www成人_看片免费不卡| 国产精品扒开腿做爽爽爽视频 | 久久久久久网址| 国产精品中文字幕在线观看| 一本到高清视频免费精品| 亚洲美女黄色| 欧美精品色综合| 亚洲精品久久久蜜桃| 99成人在线| 欧美人与禽猛交乱配视频| 亚洲国内自拍| 亚洲精品午夜| 欧美精品一区视频| 亚洲人成网站777色婷婷| 亚洲乱码国产乱码精品精 | 欧美二区不卡| 亚洲国产一区在线| 亚洲精品一区二区三区av| 欧美电影电视剧在线观看| 亚洲国产精品999| 日韩视频第一页| 欧美日韩ab片| 亚洲午夜久久久久久久久电影院 | 午夜一级久久| 国产一区二区三区四区| 欧美一区二区三区在线| 久久婷婷国产综合精品青草| 一色屋精品亚洲香蕉网站| 亚洲国产mv| 欧美激情按摩| 99精品欧美一区| 亚洲在线观看视频| 国产精品自在在线| 久久精品人人做人人综合| 麻豆精品精品国产自在97香蕉| 亚洲福利小视频| 一区二区激情| 国产精品视频免费观看www| 欧美一区二区视频免费观看| 久久男女视频| 亚洲人成7777| 亚洲——在线| 国外成人在线视频网站| 亚洲精品久久久蜜桃| 欧美视频日韩| 先锋影音国产精品| 欧美福利精品| 一区二区三区日韩欧美精品| 欧美在线观看www| 激情久久中文字幕| 日韩亚洲欧美一区二区三区| 欧美四级在线观看| 欧美一级在线播放| 欧美福利视频| 亚洲免费视频一区二区| 久久噜噜噜精品国产亚洲综合| 在线日本高清免费不卡| 亚洲无线一线二线三线区别av| 国产农村妇女毛片精品久久麻豆 | 欧美日本精品一区二区三区| 亚洲永久视频| 免费日韩av| 亚洲天堂偷拍| 看片网站欧美日韩| 夜夜嗨av一区二区三区四区| 欧美在线免费看| 亚洲日本在线观看| 久久国产精品网站| 亚洲乱码视频| 久久婷婷色综合| 一区二区日韩伦理片| 久久夜色精品国产亚洲aⅴ| 日韩系列在线| 久久女同精品一区二区| 一本色道久久综合亚洲精品高清| 久久久www成人免费精品| 日韩视频在线一区二区| 久久精品国产清高在天天线| 亚洲免费观看在线视频| 久热爱精品视频线路一| 亚洲视频一区在线观看| 欧美国产精品v| 欧美在线免费播放| 国产精品家庭影院| 亚洲精品色图| 国产亚洲女人久久久久毛片| 一区二区三区回区在观看免费视频| 国产一级揄自揄精品视频| 亚洲中字在线| 91久久久一线二线三线品牌| 久久九九免费| 亚洲一区免费观看|