專利名稱:一種基于雙緩存的Zig-Zag掃描裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻編解碼技術(shù),特別涉及一種基于雙緩存的Zig-Zag掃描 裝置及其實(shí)現(xiàn)方法。
背景技術(shù):
視頻編碼是是數(shù)字視頻存儲和傳輸過程中的重要環(huán)節(jié),該環(huán)節(jié)涉及諸多關(guān) 鍵技術(shù),如離散余弦變換(DCT)、量化、掃描、熵編碼等。DCT變換產(chǎn)生的是 一 8x8的二維數(shù)組,為進(jìn)行傳輸,還須將其轉(zhuǎn)換為一維排列方式。二維到一維 的轉(zhuǎn)換方式或稱掃描方式有兩種之型掃描(Zig-Zag)和交替掃描,其中之型 掃描是最常用的一種。由于經(jīng)量化后,大多數(shù)非零DCT系數(shù)集中于8x8二維矩 陣的左上角,即低頻分量區(qū),之型掃描后,這些非零DCT系數(shù)就集中于一維排 列數(shù)組的前部,后面跟著長串的量化為零的DCT系數(shù),即數(shù)據(jù)被存儲為(游程, 幅度)格式,這些就為后續(xù)的編碼創(chuàng)造了條件。當(dāng)前H.264/AVC的CAVLC編碼器和CABAC (算術(shù)編碼)編碼器已取得了 較好的使用效果,但是其碼表的設(shè)置方式與AVS有較大差異,不能直接用于AVS 編碼器。而且,CABAC編碼復(fù)雜度較高,不易于硬件實(shí)現(xiàn)。在AVS的參考代 碼有相關(guān)之型掃描的算法,在中國專利(申請?zhí)?00510126222.9,
公開日2007 年6月13日)中,提出了 一種適用于AVS的熵編碼方法,但是沒有給出Zig-Zag 掃描硬件實(shí)現(xiàn)的描述。發(fā)明內(nèi)容本發(fā)明所解決的技術(shù)問題是提供一種Zig-Zag掃描裝置及方法,所述裝置數(shù) 據(jù)輸出基于雙緩存結(jié)構(gòu),使得掃描和編碼可以同時(shí)進(jìn)行,達(dá)到單路掃描以及編 碼可以限制在72個(gè)時(shí)鐘周期內(nèi),且整個(gè)宏塊掃描編碼則可以限制在400個(gè)時(shí)鐘 周期內(nèi)的效果。為了解決上述技術(shù)問題,本發(fā)明采用了如下技術(shù)手段 一種基于雙緩存的Zig-Zag掃描裝置,其包括變換量化輸入緩存、掃描控制器、第一解復(fù)用器、第 二解復(fù)用器、第一輸出緩存、第二輸出緩存、第一多工器和第二多工器;量化 變換數(shù)據(jù)經(jīng)變換量化輸入緩存后送給掃描控制器,并通過一使能信號使能變換 量化輸入緩存和掃描控制器,掃描控制器通過地址總線將掃描地址傳給變換量 化輸入緩存,將所述量化變換數(shù)據(jù)的游程和幅度值輸出給第一解復(fù)用器和第二 解復(fù)用器,并通過輸出 一解復(fù)用切換控制信號對第一解復(fù)用器和第二解復(fù)用器 進(jìn)行切換控制,第一解復(fù)用器、第二解復(fù)用器將解復(fù)用的數(shù)據(jù)輸入第一輸出緩 存或第二輸出緩存,第 一輸出緩存或第二輸出緩存輸出的游程值通過第 一多工器復(fù)用后通過游程輸出總線輸出,第 一輸出緩存或第二輸出緩存輸出的幅度值 通過第二多工器復(fù)用后通過幅度輸出總線輸出,掃描控制器的最終掃描地址通 過地址累計(jì)寄存器的存儲器最終地址輸出總線輸出。所述的掃描控制器包含用于實(shí)現(xiàn)掃描控制器控制功能的Zig-Zag掃描狀態(tài) 機(jī),以及游程寄存器、幅度寄存器和地址累計(jì)寄存器,Zig-Zag掃描狀態(tài)機(jī)將掃 描得到的游程和幅度值分別輸出給游程寄存器和幅度寄存器,將累計(jì)地址輸出 給地址累計(jì)寄存器;所述的掃描控制器具有自激活功能。進(jìn)一步的,所述的第一輸出緩存和第二輸出緩存通過雙口隨機(jī)存儲器實(shí)現(xiàn)。 所述的第一輸出緩存和第二輸出緩存通過兩根地址總線分別與Zig-Zag掃描狀 態(tài)機(jī)和后續(xù)的編碼狀態(tài)機(jī)連接,完成寫入和讀出操作。所述的第一輸出緩存和第二輸出緩存均包含一個(gè)游程存儲器和一個(gè)幅度存 儲器,所述游程存儲器和幅度存儲器共用一根地址總線。所述的第一解復(fù)用器和第二解復(fù)用器為一路輸入、兩路輸出;所述的第一 多工器和第二多工器為兩路輸入、 一路輸出。所述的游程輸出總線、幅度輸出總線及存儲器最終地址輸出總線的位寬分 別為6比特、9比特和6比特。本發(fā)明提供的另一個(gè)解決方案是基于雙緩存的Zig-Zag掃描裝置實(shí)現(xiàn)的掃 描方法,所述方法實(shí)現(xiàn)8x8子塊的Zig-Zag掃描,所述方法實(shí)現(xiàn)過程如下步驟l、變換量化后的8x8數(shù)據(jù)子塊以不定時(shí)鐘間隔輸出,當(dāng)時(shí)鐘上升沿到 來時(shí),變換量化輸入數(shù)據(jù)被分為8個(gè)周期讀入變換量化輸入緩存,每一個(gè)周期 讀入一行8個(gè)數(shù)據(jù),時(shí)鐘上升沿到來同時(shí),觸發(fā)掃描控制器通過地址總線送出分配地址,8x8個(gè)數(shù)據(jù)根據(jù)地址被分配到變換量化輸入緩存的64個(gè)9位寬寄存 器中;在數(shù)據(jù)輸讀入的同時(shí),使能信號變?yōu)楦唠娖绞鼓埽⒈3?個(gè)周期;步驟2、當(dāng)一個(gè)子塊數(shù)據(jù)讀入完畢后,使能信號變成低電平,此時(shí)Zig-Zag 掃描狀態(tài)機(jī)處在空閑狀態(tài),并且被使能信號的下降沿觸發(fā),進(jìn)入64個(gè)掃描狀態(tài) StepO Step63,每一個(gè)掃描狀態(tài)輸出不同的掃描地址;步驟3、在步驟2的同時(shí),掃描控制器進(jìn)行數(shù)據(jù)幅度值判斷,當(dāng)幅度值level 不等于0時(shí),地址累計(jì)寄存器RamAddr自動(dòng)加1,同時(shí)把當(dāng)前非零值賦值給幅 度寄存器levelj,作為下一個(gè)單元寫入的有效值;步驟4、當(dāng)完成第64個(gè)掃描步驟Step63時(shí),掃描結(jié)束,Zig-Zag掃描狀態(tài) 機(jī)等待使能信號的上升沿,以便跳轉(zhuǎn)到空閑狀態(tài),在使能信號上升沿到來前, 游程數(shù)據(jù)輸出總線值、幅度數(shù)據(jù)輸出總線值以及存儲器最終地址輸出總線值保 持不變;當(dāng)使能信號上升沿到來后,Zig-Zag掃描狀態(tài)機(jī)處在空閑狀態(tài),掃描即 將進(jìn)入下一個(gè)周期,使能信號上升沿后的8個(gè)時(shí)鐘周期,使能信號下降沿到來, 掃描重新開始;步驟5、掃描得到的零數(shù)據(jù)個(gè)數(shù)作為游程輸出給第一解復(fù)用器,非零數(shù)據(jù)的 幅度輸出給第二解復(fù)用器;步驟6、經(jīng)解復(fù)用的數(shù)據(jù)被解復(fù)用切換控制線控制輪流送入第一輸出緩存或 第二輸出緩存,當(dāng)一個(gè)輸出緩存在接收掃描數(shù)據(jù)時(shí),另一個(gè)緩存在輸出數(shù)據(jù), 實(shí)現(xiàn)并行操作;步驟7、第 一輸出緩存或第二輸出緩存輸出的游程值通過第 一多工器復(fù)用后 通過游程輸出總線輸出,第 一輸出緩存或第二輸出緩存輸出的幅度值通過第二 多工器復(fù)用后通過幅度輸出總線輸出,掃描控制器的最終掃描地址通過地址累 計(jì)寄存器的存儲器最終地址輸出總線輸出。進(jìn)一步地,步驟6所述的解復(fù)用切換控制線是這樣進(jìn)行切換控制的當(dāng)掃 描控制器輸出狀態(tài)1時(shí),第一輸出緩存和第二輸出緩存的游程存儲器輸出,進(jìn) 而第一多工器輸出;當(dāng)掃描控制器輸出狀態(tài)0時(shí),第一輸出緩存和第二輸出緩 存的幅度存儲器輸出,進(jìn)而第二多工器輸出。采用本發(fā)明所述的一種基于雙緩存的Zig-Zag掃描裝置及其實(shí)現(xiàn)方法,與現(xiàn) 有技術(shù)相比,由于雙緩存結(jié)構(gòu),使得掃描和編碼可以同時(shí)進(jìn)行,提高了編碼效率;在自激活模式下工作的掃描控制器,對于不同輸出間隔的子塊的數(shù)據(jù)適應(yīng) 性強(qiáng),保證了數(shù)據(jù)的穩(wěn)定性。
本發(fā)明的基于雙緩存的Zig-Zag掃描裝置及其實(shí)現(xiàn)方法由以下的實(shí)施例及 附圖詳細(xì)給出。圖1為本發(fā)明的掃描裝置結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例的掃描順序示意圖;圖3為本發(fā)明實(shí)施例的掃描控制進(jìn)程示意圖。
具體實(shí)施方式
以下將對本發(fā)明的基于雙緩存的Zig-Zag掃描裝置及方法作進(jìn)一步的詳細(xì) 描述。本實(shí)施例設(shè)計(jì)了一個(gè)基于雙緩存的Zig-Zag掃描裝置,用于將離散余弦變換 產(chǎn)生的8x8子塊的二維數(shù)組轉(zhuǎn)換為一維排列方式,所述掃描裝置如圖1所示, 包括變換量化輸入緩存10、掃描控制器20、第一解復(fù)用器31、第二解復(fù)用器 32、第一輸出緩存41、第二輸出緩存42、第一多工器51和第二多工器52;通 過TQ數(shù)據(jù)總線傳送的量化變換數(shù)據(jù)經(jīng)變換量化輸入緩存10后送給掃描控制器 20,并通過使能信號使能變換量化輸入緩存10和掃描控制器20,掃描控制器 20通過地址總線將掃描地址傳給變換量化輸入緩存10,將游程和幅度值輸出給 第一解復(fù)用器31和第二解復(fù)用器32,并通過解復(fù)用切換控制線對第一解復(fù)用器 31和第二解復(fù)用器32進(jìn)行切換控制,第一解復(fù)用器31和第二解復(fù)用器32將解 復(fù)用的數(shù)據(jù)輸入第一輸出緩存41或第二輸出緩存42,第一輸出緩存41或第二 輸出緩存輸出42的游程值通過第一多工器51復(fù)用后通過游程輸出總線輸出, 第一輸出緩存41或第二輸出緩存42輸出的幅度值通過第二多工器52復(fù)用后通 過幅度輸出總線輸出,掃描控制器20的最終掃描地址通過存^f諸器最終地址輸出 總線輸出。所述的掃描控制器包含用于實(shí)現(xiàn)掃描控制器20控制功能的Zig-Zag掃描狀 態(tài)機(jī)21,以及游程寄存器22、幅度寄存器23和地址累計(jì)寄存器24, Zig-Zag掃描狀態(tài)機(jī)21將掃描得到的游程和幅度值分別輸出給游程寄存器22和幅度寄存 器23,將累計(jì)地址輸出給地址累計(jì)寄存器24;所述的掃描控制器20具有自激 活功能。進(jìn)一步的,所述的第一輸出緩存41和第二輸出緩存42通過雙口隨機(jī)存儲 器實(shí)現(xiàn)。所述的第一輸出緩存41和第二輸出緩存42通過兩根地址總線(存儲 器最終地址輸出總線、數(shù)據(jù)讀取地址總線)分別與Zig-Zag掃描狀態(tài)機(jī)21和后 續(xù)的編碼狀態(tài)機(jī)(未圖示)連接,完成寫入和讀出操作。所述的第一輸出緩存 41和第二輸出緩存42均包含一個(gè)游程存儲器和一個(gè)幅度存儲器,所述游程存儲 器和幅度存儲器共用 一根地址總線。所述的第一解復(fù)用器31和第二解復(fù)用器32為一路輸入、兩路輸出;所述 的第一多工器51和第二多工器52為兩路輸入、 一路輸出。所述的游程輸出總 線、幅度輸出總線及最終地址輸出總線的位寬分別為6比特、9比特和6比特。釆用本發(fā)明的掃描裝置實(shí)現(xiàn)Zig-Zag掃描的方法如下步驟l、變換量化后的8x8數(shù)據(jù)子塊以不定時(shí)鐘間隔輸出,當(dāng)時(shí)鐘上升沿到來時(shí),變換量化輸入數(shù)據(jù)被分為8個(gè)周期讀入變換量化輸入緩存,每一個(gè)周期 讀入一行8個(gè)數(shù)據(jù),時(shí)鐘上升沿到來同時(shí),觸發(fā)掃描控制器20通過地址總線送 出分配地址,8x8個(gè)數(shù)據(jù)根據(jù)地址被分配到變換量化輸入緩存10的64個(gè)9位寬 寄存器中,如圖2所示,也是掃描順序示意圖,即根據(jù)圖中方塊內(nèi)的數(shù)字按照 從0到63的順序進(jìn)行掃描,分別對應(yīng)掃描狀態(tài)StepO Step63;在數(shù)據(jù)讀入的同 時(shí),使能信號變?yōu)楦唠娖绞鼓?,并保?個(gè)周期;步驟2、當(dāng)一個(gè)子塊數(shù)據(jù)讀入完畢后,使能信號變成低電平,此時(shí)Zig-Zag 掃描狀態(tài)機(jī)21處在空閑狀態(tài),并且被使能信號的下降沿觸發(fā),進(jìn)入掃描狀態(tài) StepO Step63,如圖3所示,每一個(gè)掃描狀態(tài)輸出不同的掃描地址;步驟3、在步驟2的同時(shí),掃描控制器20進(jìn)行數(shù)據(jù)幅度值判斷,當(dāng)幅度值 level不等于0時(shí),地址累計(jì)寄存器24自動(dòng)加1,同時(shí)把當(dāng)前非零值賦值給幅度 寄存器23,作為下一個(gè)單元寫入的有效值;步驟4、當(dāng)完成掃描Step63時(shí),掃描結(jié)束,Zig-Zag掃描狀態(tài)機(jī)21等待使 能信號的上升沿,以便跳轉(zhuǎn)到空閑狀態(tài),如圖3所示,在使能信號上升沿到來 前,游程數(shù)據(jù)輸出總線值、幅度數(shù)據(jù)輸出總線值以及隨機(jī)存儲最終地址輸出總線值保持不變;當(dāng)使能信號上升沿到來后,Zig-Zag掃描狀態(tài)機(jī)21處在空閑狀 態(tài),掃描即將進(jìn)入下一個(gè)周期,使能信號上升沿后的8個(gè)時(shí)鐘周期,使能信號 下降沿到來,掃描重新開始;步驟5、掃描得到的零數(shù)據(jù)個(gè)數(shù)作為游程輸出給第一解復(fù)用器31,非零數(shù) 據(jù)的幅度輸出給第二解復(fù)用器32;步驟6、經(jīng)解復(fù)用的數(shù)據(jù)被解復(fù)用切換控制線控制輪流送入第一輸出緩存 41或第二輸出緩存42,當(dāng)一個(gè)輸出緩存在接收掃描數(shù)據(jù)時(shí),另一個(gè)緩存在輸出 數(shù)據(jù),實(shí)現(xiàn)并行操作;步驟7 、第 一輸出緩存41或第二輸出緩存42輸出的游程值通過第 一多工器 51復(fù)用后經(jīng)游程輸出總線輸出,第一輸出緩存41或第二輸出緩存42輸出的幅 度值通過第二多工器52復(fù)用后經(jīng)幅度輸出總線輸出,掃描控制器20的累計(jì)地 址通過存儲器最終地址輸出總線輸出。以上步驟6所述的解復(fù)用切換控制線是這樣進(jìn)行切換控制.的當(dāng)掃描控制器 20輸出狀態(tài)1時(shí),第一輸出緩存41和第二輸出緩存42的游程存儲器輸出,進(jìn) 而第一多工器51輸出;當(dāng)掃描控制器20輸出狀態(tài)0時(shí),第一輸出緩存41和第 二輸出緩存42的幅度存儲器輸出,進(jìn)而第二多工器52輸出。本發(fā)明所提供的基于雙緩存的Zig-Zag掃描裝置及方法,使掃描和編碼并 行,降低了時(shí)間開銷,使得單路的編碼能夠在72個(gè)周期內(nèi)完成,小于亮度子塊 輸出的間隔80個(gè)周期,且整個(gè)宏塊掃描編碼則可以限制在400個(gè)時(shí)鐘周期內(nèi)的 效果;在自激活模式下工作的掃描狀態(tài)機(jī),對于不同輸出間隔的子塊數(shù)據(jù)適應(yīng) 性強(qiáng),保證了數(shù)據(jù)輸出的穩(wěn)定性。在FPGA原型芯片上,經(jīng)過綜合后的工作頻 率可以在100Mhz以上,能夠滿足實(shí)時(shí)編碼要求。
權(quán)利要求
1、一種基于雙緩存的Zig-Zag掃描裝置,用于將離散余弦變換產(chǎn)生的8×8子塊的二維數(shù)組轉(zhuǎn)換為一維排列方式,其特征在于所述掃描裝置包括變換量化輸入緩存、掃描控制器、第一解復(fù)用器、第二解復(fù)用器、第一輸出緩存、第二輸出緩存、第一多工器和第二多工器;量化變換數(shù)據(jù)經(jīng)變換量化輸入緩存后送給掃描控制器,并通過一使能信號使能變換量化輸入緩存和掃描控制器,掃描控制器通過地址總線將掃描地址傳給變換量化輸入緩存,將所述量化變換數(shù)據(jù)的游程和幅度值輸出給第一解復(fù)用器和第二解復(fù)用器,并通過輸出一解復(fù)用切換控制信號對第一解復(fù)用器和第二解復(fù)用器進(jìn)行切換控制,第一解復(fù)用器、第二解復(fù)用器將解復(fù)用的數(shù)據(jù)輸入第一輸出緩存或第二輸出緩存,第一輸出緩存或第二輸出緩存輸出的游程值通過第一多工器復(fù)用后通過游程輸出總線輸出,第一輸出緩存或第二輸出緩存輸出的幅度值通過第二多工器復(fù)用后通過幅度輸出總線輸出,掃描控制器的最終掃描地址通過存儲器最終地址輸出總線輸出。
2、 如權(quán)利要求1所述的基于雙緩存的Zig-Zag掃描裝置,其特征在于所述 的掃描控制器包含用于實(shí)現(xiàn)掃描控制器控制功能的Zig-Zag掃描狀態(tài)機(jī),以及游 程寄存器、幅度寄存器和地址累計(jì)寄存器,Zig-Zag掃描狀態(tài)機(jī)將掃描得到的游 程和幅度值分別輸出給游程寄存器和幅度寄存器,將累計(jì)地址輸出給地址累計(jì) 寄存器。
3、 如權(quán)利要求2所述的基于雙緩存的Zig-Zag掃描裝置,其特征在于所述 的掃描控制器具有自激活功能。
4、 如權(quán)利要求1所述的基于雙緩存的Zig-Zag掃描裝置,其特征在于所述 的第 一輸出緩存和第二輸出緩存通過雙口隨4幾存儲器實(shí)現(xiàn)。
5、 如權(quán)利要求4所述的基于雙緩存的Zig-Zag掃描裝置,其特征在于所述 的第一輸出緩存和第二輸出緩存通過兩根地址總線分別與Zig-Zag掃描狀態(tài)機(jī) 和后續(xù)的編碼狀態(tài)機(jī)連接,完成寫入和讀出操作。
6、 如權(quán)利要求4所述的基于雙緩存的Zig-Zag掃描裝置,其特征在于所述 的第一輸出緩存和第二輸出緩存均包含一個(gè)游程存儲器和一個(gè)幅度存儲器,所否包含視頻I幀數(shù)據(jù),以及指明本RTP包是否包含加密信息。以下表1的內(nèi)容是所述擴(kuò)展頭的一種具體語法結(jié)構(gòu),圖7為本發(fā)明所述擴(kuò)展頭的一種示意圖。語法位數(shù)標(biāo)識符rtp extension (){ defined一by一profile length if( defined by_profile == 0x5A5 8 && — length == 1 ){ header extension 0 else{ unknown extentionO }16 16bslbf uimsbfheader extension(){ id leu indicator video PID }8 8 3 13uimsbf uimsbf uimsbf uimsbf表1參見表l,標(biāo)識符bslbf是比特串,且左位在先。標(biāo)識符uimsbf為無符 號整數(shù),且高位在先。參見表1和圖7,各字段釋義如下defined by profile字段值固定為0x5A、 0x58 ( "ZX"),標(biāo)識含義為本發(fā) 明的規(guī)范擴(kuò)展。length字l殳值為1,表示擴(kuò)展頭(header extension )的長度為1個(gè)32位 雙字。id字段值為3,表明當(dāng)前TS over RTP包內(nèi)含有TS的指示信息。len字段為2,表明隨后的TS指示(indicator)為2個(gè)字節(jié)。indicator字段標(biāo)明當(dāng)前的TS over RTP包是否有I幀數(shù)據(jù)或者ECM數(shù)據(jù),根據(jù)上述步驟402判斷記錄的情況,利用不同的取值指示所判斷出的不同情況,例如第二輸出緩存,當(dāng)一個(gè)輸出緩存在接收掃描數(shù)據(jù)時(shí),另一個(gè)緩存在輸出數(shù)據(jù),實(shí)現(xiàn)并行操作;步驟7、第一輸出緩存或第二輸出緩存輸出的游程值通過第一多工器復(fù)用后 通過游程輸出總線輸出,第 一輸出緩存或第二輸出緩存輸出的幅度值通過第二 多工器復(fù)用后通過幅度輸出總線輸出,掃描控制器的最終掃描地址通過地址累 計(jì)寄存器的存儲器最終地址輸出總線輸出。
7、如權(quán)利要求9所述的Zig-Zag掃描方法,其特征在于,步驟6所述的解 復(fù)用切換控制線是這樣進(jìn)行切換控制的當(dāng)掃描控制器輸出狀態(tài)1時(shí),第一輸 出緩存和第二輸出緩存的游程存儲器輸出,進(jìn)而第一多工器輸出;當(dāng)掃描控制 器輸出狀態(tài)0時(shí),第一輸出緩存和第二輸出緩存的幅度存儲器輸出,進(jìn)而第二 多工器輸出。
全文摘要
本發(fā)明提供了一種Zig-Zag掃描裝置及其實(shí)現(xiàn)方法,用于將離散余弦變換產(chǎn)生的8×8子塊的二維數(shù)組轉(zhuǎn)換為一維排列方式數(shù)據(jù)輸出,所述掃描裝置包括變換量化輸入緩存、掃描控制器、游程解復(fù)用器、幅度解復(fù)用器、第一輸出緩存、第二輸出緩存、第一多工器和第二多工器;基于以上裝置的方法通過雙緩存結(jié)構(gòu),使得掃描和編碼可以同時(shí)進(jìn)行,大大降低掃描和編碼時(shí)間,很好的滿足了實(shí)時(shí)編碼的要求。
文檔編號H04N7/26GK101222634SQ20081003311
公開日2008年7月16日 申請日期2008年1月25日 優(yōu)先權(quán)日2008年1月25日
發(fā)明者滕國偉, 賀 王, 王國中 申請人:上海廣電(集團(tuán))有限公司中央研究院