RAM讀寫(xiě)時(shí)序限制解決方案
在逆塊掃描順序中,一些后續的系數可能需要在一開(kāi)始時(shí)就準備好,而一些在前面次序的系數則可能在后續的時(shí)間使用,所以只有一個(gè)塊的所有數據都存儲完成后,才能進(jìn)行后續的反變換,故至少要對一個(gè)塊的變換系數進(jìn)行存儲。為了提高處理速度,后續的反變換模塊中將采用并行流水線(xiàn)輸入,因此存儲模塊此時(shí)不能采用有時(shí)序限制的RAM,本文采用了寄存器組實(shí)現。同時(shí)為了消除塊數據的準備延時(shí),還采用了乒乓結構,即在設計中用了兩個(gè)寄存器組,這樣就可在處理當前一個(gè)塊系數的同時(shí),用另一個(gè)寄存器組來(lái)存儲下一個(gè)塊反量化后的數據。
在反變換中也需要用到轉置存儲。為了節省資源,本設計采用了寄存器復用技術(shù),即反變換中用到的轉置矩陣與逆掃描后用于存儲變換系數的矩陣復用,具體復用方法如圖3所示。

以上為一個(gè)寄存器組,包含64個(gè)13 bit的寄存器。最后一列為反變換模塊輸入,即當一個(gè)塊變換系數根據逆掃描順序存儲完后,連續8個(gè)時(shí)鐘周期讀取寄存器組最后一列,在每個(gè)時(shí)鐘周期向反變換模塊并行輸入8個(gè)13 bit的數據。第一列為轉置數據輸入端??紤]到反變換流水線(xiàn)及復用的問(wèn)題,在連續2個(gè)時(shí)鐘周期讀取寄存器組最后一列輸入到反變換模塊后,轉置數據開(kāi)始從第一列輸入,這樣可以滿(mǎn)足反變換內部的流水線(xiàn)問(wèn)題,也可以達到寄存器復用的目的。第一行為轉置數據的輸出,最后一行在轉置數據輸出時(shí)賦值為零,這樣可以使轉置輸出和寄存器賦零同時(shí)進(jìn)行,從而可以減少不必要的時(shí)鐘周期和資源。
2 仿真結果及分析
根據上述思想,采用Verilog HDL語(yǔ)言對算法進(jìn)行了RTL級電路描述,并采用Altera公司的軟件Quartus II 8.0 對此算法進(jìn)行了實(shí)現和仿真驗證,并將仿真結果與rm52j軟件的輸出結果進(jìn)行了比較。Quartus II仿真結果如圖4所示,波形圖給出了一個(gè)塊的反量化和反變換輸出結果。rm52j的輸出結果如圖5所示,比較可見(jiàn)輸出結果相同。


本設計采用的是自頂向下和自下而上的混合設計方法,逆掃描、反量化和反變換過(guò)程是AVS系統中的一個(gè)模塊,局部的測試很難判斷出該模塊是否可以應用到整個(gè)解碼系統中去,所以此模塊亦在自己搭建的基于SoPC的AVS驗證平臺上進(jìn)行了驗證。加入此模塊前,軟件處理一幀碼流時(shí)間與用此硬件模塊代替軟件模塊后的解碼時(shí)間如圖6所示,通過(guò)計算可知解碼速度提高約15%。

評論