H.264視頻解碼芯片中與濾波相關(guān)的存儲(chǔ)器的設(shè)計(jì)
4 SRAM 的規(guī)劃與設(shè)計(jì)
在H.264 解碼過程中,數(shù)據(jù)由熵解碼經(jīng)過運(yùn)動(dòng)補(bǔ)償后再通過環(huán)路濾波最終送到存儲(chǔ)器中,之后顯示解碼芯片從存儲(chǔ)器中不斷的提取數(shù)據(jù)送到顯示器上,最終完成數(shù)據(jù)的解碼,如圖3 所示。在濾波的過程中,宏塊中的數(shù)據(jù)頻繁地被調(diào)用。而SRAM 的讀寫速度快的特點(diǎn)能很好地適用這一要求。因?yàn)樵贖.264 中最小的單元為block,運(yùn)動(dòng)矢量等都是以block 為單位來進(jìn)行傳遞。因此以block 為單位來進(jìn)行數(shù)據(jù)的存取會(huì)帶來很大的方便。本設(shè)計(jì)中各個(gè)SRAM 每一個(gè)地址存放一個(gè)block 單元的數(shù)據(jù)(16 個(gè)像素點(diǎn)),即采用128bit 的SRAM。
圖3 DRAM 與其它模塊之間的數(shù)據(jù)交互
在H.264 中運(yùn)動(dòng)補(bǔ)償結(jié)束后的數(shù)據(jù)交由環(huán)路濾波運(yùn)算后寫入DRAM, 我們把寫入DRAM 的這一過程稱為Store 過程,由Store 模塊負(fù)責(zé)。由圖3 可以看出MC 與Deblock 是一個(gè)串聯(lián)的關(guān)系。為了提高解碼的速度,我們將運(yùn)動(dòng)補(bǔ)償與環(huán)路濾波并行執(zhí)行,即當(dāng)前解碼的結(jié)束并不以環(huán)路濾波的結(jié)束為標(biāo)志,而當(dāng)前宏塊的運(yùn)動(dòng)補(bǔ)償一結(jié)束我們就可以開始下一個(gè)宏塊的解碼。經(jīng)過大量的實(shí)驗(yàn)發(fā)現(xiàn):MC 的時(shí)間遠(yuǎn)比block的時(shí)間大很多,當(dāng)后一個(gè)模塊要進(jìn)行濾波時(shí)濾波模塊早已準(zhǔn)備完畢。最后對存儲(chǔ)模塊我們也同樣的用并行的思想來加快解碼的速度。結(jié)果當(dāng)作MBx 的MC 時(shí),做MB(x-1)的濾波,同時(shí)MB(x-2)存儲(chǔ)。此時(shí)需要注意MB(x-1)的濾波和MB(x-2)的存儲(chǔ)并不是同時(shí)開始。因?yàn)樽鯩B(x-1)的濾波時(shí)也會(huì)影響到MB(x-2)中的數(shù)據(jù)。
因此我們要等MB(x-1)的第一條垂直邊濾波結(jié)束后才開始MB(x-2)的存儲(chǔ)。具體的時(shí)間關(guān)系如圖4 所示。
圖4 各個(gè)模塊之間的時(shí)序關(guān)系圖
?。?)濾波前數(shù)據(jù)的存儲(chǔ)及濾波結(jié)束后數(shù)據(jù)的存儲(chǔ)
由于設(shè)計(jì)中采用此種流程,我們需要3 片SRAM來存儲(chǔ)MC 的運(yùn)算結(jié)果。這3 片SRAM 交替地進(jìn)行MC、Deblock 和Store。我們稱這3 片SRAM 為SRAM_M(jìn)B,濾波結(jié)束后的數(shù)據(jù)也存儲(chǔ)在此SRAM 中,在經(jīng)Store 模塊將此數(shù)據(jù)存儲(chǔ)到DRAM 中去。因?yàn)闉V波結(jié)束時(shí),恰好原來SRAM_M(jìn)B 中的數(shù)據(jù)也已經(jīng)成為無效數(shù)據(jù)。這里需要注意,由于有幀場自適應(yīng)的情況存在,濾波結(jié)束后的數(shù)據(jù)如果幀場情況不一樣,我們還需要根據(jù)數(shù)據(jù)不同的情況進(jìn)行適當(dāng)?shù)膸瑘鲛D(zhuǎn)化,之后再將數(shù)據(jù)存入DRAM。
?。?)垂直濾波后的數(shù)據(jù)的存儲(chǔ)
我們都知道濾波過程是一個(gè)先垂直后水平的過程,因此我們需要有一片SRAM 來存儲(chǔ)水平濾波的結(jié)果。這片SRAM 就叫SRAM_BUFFER。因?yàn)樗綖V波時(shí)正在從SRAM_M(jìn)B 中讀取數(shù)據(jù),同一時(shí)間不能同時(shí)向SRAM 中讀取、寫入數(shù)據(jù)。因此我們用SRAM_BUFFER 來暫存垂直濾波結(jié)束后的數(shù)據(jù)。水平濾波時(shí)則從SRAM_BUFFER 中讀取數(shù)據(jù), 濾波后存儲(chǔ)到SRAM_M(jìn)B 中。
5 總結(jié)
本文對H.264 解碼芯片中的濾波、存儲(chǔ)模塊作了深入的分析。并根據(jù)各個(gè)時(shí)間數(shù)據(jù)的特點(diǎn)作相應(yīng)的存儲(chǔ)器的設(shè)計(jì), 這種設(shè)計(jì)方法經(jīng)過驗(yàn)證能很好地處理H.264 中濾波及存儲(chǔ)時(shí)的數(shù)據(jù)的調(diào)度。整個(gè)濾波過程約52 個(gè)周期就可以完成。在MBAFF 情況時(shí)各種數(shù)據(jù)的轉(zhuǎn)化時(shí)鐘周期控制在70 個(gè)以內(nèi)。這種設(shè)計(jì)符合要求,并在FPGA 上驗(yàn)證后能夠正常的運(yùn)行,運(yùn)行時(shí)鐘達(dá)到60MHz,能實(shí)時(shí)地完成對高清圖像的解碼。
評論