專(zhuān)利名稱(chēng):硬件解碼器中參考幀數(shù)據(jù)的讀取方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種視頻編解碼的數(shù)據(jù)讀取方法,具體涉及一種硬件解 碼器中參考幀數(shù)據(jù)的讀取方法。本發(fā)明還涉及一種上述方法使用的裝置。
技術(shù)背景H.264是由國(guó)際電信聯(lián)盟(ITU)和國(guó)際標(biāo)準(zhǔn)化組織(ISO)于2003 年聯(lián)合發(fā)布的新一代視頻壓縮編碼標(biāo)準(zhǔn),其憑借優(yōu)異的性能得到了廣泛的 重視和應(yīng)用。為了提高性能,H. 264對(duì)幀間預(yù)測(cè)的亮度部分采用最小為4x4 的分塊和1/4像素精度,對(duì)色度部分采用最小為2x2的分塊和1/8像素精 度,非整數(shù)樣點(diǎn)通過(guò)對(duì)整數(shù)樣點(diǎn)進(jìn)行內(nèi)插而得到。在對(duì)4x4亮度塊內(nèi)插過(guò) 程中,最多可能需要9x9的整像素點(diǎn)陣列;在對(duì)2x2色度塊內(nèi)插過(guò)程中, 最多可能需要3x3的整像素點(diǎn)陣列;這些陣列中的整像素點(diǎn)都是參考幀數(shù) 據(jù)。"參考幀數(shù)據(jù)的讀取",就是從存儲(chǔ)器中將需要的參考幀數(shù)據(jù)取回。 由于存儲(chǔ)器的帶寬有限,所以讀取的參考幀數(shù)據(jù)盡量不要浪費(fèi);而且,數(shù) 據(jù)在存儲(chǔ)器中的地址可能連續(xù),應(yīng)該盡量連續(xù)取數(shù),提高存儲(chǔ)器的效率。關(guān)于參考幀數(shù)據(jù)的讀取,長(zhǎng)期以來(lái),未引起足夠的重視,但隨著高 清實(shí)時(shí)解碼的流行,情況正迅速發(fā)生著變化,因?yàn)閷?duì)參考幀數(shù)據(jù)的讀取已 成為解碼器滿足高清實(shí)時(shí)要求的瓶頸之一。在硬件解碼器的設(shè)計(jì)中,現(xiàn)行的主要有三種方法實(shí)現(xiàn)對(duì)參考幀數(shù)據(jù)
的讀取。第一種是"直接讀取"的方法,即以4x4塊為單位,需要哪些數(shù) 據(jù),直接去存儲(chǔ)器中取,請(qǐng)參照?qǐng)D1所示;圖1中的陰影部分表示重復(fù)讀 取的數(shù)據(jù)。這種方法的優(yōu)點(diǎn)是面積小,實(shí)現(xiàn)簡(jiǎn)單,遺憾的是由于存在 重復(fù)讀取數(shù)據(jù)的問(wèn)題,存儲(chǔ)器帶寬占用太高,導(dǎo)致性能不高,很難滿足高 清實(shí)時(shí)解碼的要求。第二種方法是"采用高速緩存(cache)來(lái)暫存數(shù)據(jù)",該方法基本 沒(méi)有重復(fù)取數(shù);但是,高速緩存所占用的面積很大,功耗高,這導(dǎo)致解碼 器的生產(chǎn)成本上升。第三種方法是"根據(jù)參數(shù)'宏塊類(lèi)型,(mb—type),來(lái)取數(shù)",該方法 依照"宏塊類(lèi)型"的值來(lái)判斷,可以在一個(gè)宏塊的范圍內(nèi)連續(xù)且不重復(fù)取 數(shù),比第一種方法靈活很多,請(qǐng)參照?qǐng)D2所示。它可以滿足高清實(shí)時(shí)的解 碼要求;但是,在產(chǎn)生地址和取回?cái)?shù)據(jù)的過(guò)程中,至少需要判斷兩次"宏 塊類(lèi)型"(產(chǎn)生地址一次,取回?cái)?shù)據(jù)一次);而且,"宏塊類(lèi)型"種類(lèi)繁多, 判斷過(guò)程比較煩雜,控制較難;硬件實(shí)現(xiàn)比較困難。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種硬件解碼器中參考幀數(shù)據(jù)的 讀取方法,它可以使參考幀數(shù)據(jù)讀取模塊的面積有較大幅度的減少,功耗 有顯著下降,且適合H.264硬件高清實(shí)時(shí)解碼器。為此,本發(fā)明還要提供 一種與該方法相匹配的硬件解碼器中參考幀數(shù)據(jù)的讀取裝置。為了解決以上技術(shù)問(wèn)題,本發(fā)明提供了一種硬件解碼器中參考幀數(shù)據(jù) 的讀取方法,包括如下步驟(1)計(jì)算一個(gè)宏塊的各個(gè)最小分塊單元的特征參數(shù),包括起始邏輯 地址、長(zhǎng)度、寬度、及X軸方向的偏移;(2 )將各個(gè)最小分塊單元的邏輯地址串按所述的起始邏輯地址進(jìn)行 從小到大的排序,得到最小分塊單元的邏輯地址串列;(3) 將所述的邏輯地址串列進(jìn)行合并,然后發(fā)送訪存指令;(4) 從存儲(chǔ)器中讀取參考幀數(shù)據(jù)列,并選出各個(gè)最小分塊單元對(duì)應(yīng) 的參考幀數(shù)據(jù),依序?qū)懭氲絻?nèi)插模塊中。本發(fā)明還提供了一種上述方法所使用的參考幀數(shù)據(jù)的讀取裝置,包括 依次連接的輸入?yún)?shù)模塊、發(fā)送指令模塊、存儲(chǔ)器模塊、取回?cái)?shù)據(jù)模塊 及內(nèi)插模塊;其中發(fā)送指令模塊又包括依次連接的計(jì)算邏輯地址模塊、 比較器模塊、并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器模塊、合并地址模塊、產(chǎn)生指令模塊、和指令FIFO模塊,以及計(jì)算起始序號(hào)和結(jié)束序號(hào)模塊,其輸入端連接所述并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器模塊的輸出端;取回?cái)?shù)據(jù)模塊又包括依次連接的位選擇模塊、RAM模塊、 輸出FIFO模塊;RAM模塊的輸入端又分別連接計(jì)算起始序號(hào)和結(jié)束序號(hào) 模塊和參數(shù)移位寄存器模塊。采用本方法后,參考幀數(shù)據(jù)讀取模塊的面積有較大幅度的減少,功 耗有顯著下降,且本發(fā)明適用于H. 264硬件高清實(shí)時(shí)解碼器。
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。 圖1是一種現(xiàn)有參考幀數(shù)據(jù)的讀取方法; 圖2是另一種現(xiàn)有參考幀數(shù)據(jù)的讀取方法;
圖3是本發(fā)明的參考幀數(shù)據(jù)讀取方法的示意圖;圖4是本發(fā)明的系統(tǒng)結(jié)構(gòu)圖;圖5是本發(fā)明的時(shí)序圖。
具體實(shí)施方式
本方法的主要指導(dǎo)思想是利用數(shù)據(jù)的連續(xù)性,盡量連續(xù)取數(shù),不重復(fù)取數(shù),而且要避免判斷宏塊類(lèi)型(mb—type)。由于數(shù)據(jù)是否連續(xù)的標(biāo)志 就是其地址是否連續(xù),所以,采用"合并地址"的方法來(lái)實(shí)現(xiàn)上述目標(biāo), 即將一個(gè)宏塊劃分為多個(gè)最小分塊單元,取得每個(gè)最小分塊單元的地址, 先對(duì)地址進(jìn)行從小到大的排序,然后將排序后的連續(xù)的地址合并起來(lái);由 于數(shù)據(jù)相同時(shí),其地址也相同,所以不會(huì)重復(fù)取數(shù);由于數(shù)據(jù)連續(xù)時(shí),其 地址也連續(xù),所以可以連續(xù)取數(shù)。地址合并后,得到首地址和連續(xù)取數(shù)的 長(zhǎng)度,將其作為"指令"發(fā)送,對(duì)讀取回的數(shù)據(jù)按最小分塊單元的對(duì)應(yīng)順 序排列后送入內(nèi)插模塊中。如圖3所示,本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法主要分為 兩個(gè)階段, 一是發(fā)送指令階段,將參考幀數(shù)據(jù)在存儲(chǔ)器中的首地址和存儲(chǔ) 范圍一起發(fā)送至存儲(chǔ)器,圖中的實(shí)線箭頭所示;另一個(gè)是取回?cái)?shù)據(jù)階段, 將參考幀數(shù)據(jù)取回,并排列成內(nèi)插需要的格式,圖中的虛線箭頭所示。本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法分為四個(gè)步驟 (1)計(jì)算一個(gè)宏塊的各個(gè)最小分塊單元的特征參數(shù),包括起始邏輯 地址、長(zhǎng)度、寬度、及X軸方向的偏移;(2 )將各個(gè)最小分塊單元的邏輯地址串按所述的起始邏輯地址進(jìn)行 從小到大的排序,得到最小分塊單元的邏輯地址串列;(3) 將所述的邏輯地址串列進(jìn)行合并,然后發(fā)送訪存指令;(4) 從存儲(chǔ)器中讀取參考幀數(shù)據(jù)列,并選出各個(gè)最小分塊單元對(duì)應(yīng) 的參考幀數(shù)據(jù),依序?qū)懭氲絻?nèi)插模塊中。如圖4所示是本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取裝置的系統(tǒng) 結(jié)構(gòu)圖,包括輸入?yún)?shù)模塊、發(fā)送指令模塊、存儲(chǔ)器模塊、取回?cái)?shù)據(jù)模 塊及內(nèi)插模塊。其中發(fā)送指令模塊又包括:依次連接的計(jì)算邏輯地址模塊、 比較器模塊、并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器模塊、合并地 址模塊、產(chǎn)生指令模塊、和指令FIFO模塊;以及計(jì)算起始序號(hào)和結(jié)束序 號(hào)模塊,其輸入端連接所述并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器 模塊的輸出端。發(fā)送指令模塊用于實(shí)現(xiàn)圖3中實(shí)線箭頭所示的發(fā)送指令階 段的功能。另外取回?cái)?shù)據(jù)模塊又包括依次連接的位選擇模塊、RAM模塊、輸出FIFO模塊,用于實(shí)現(xiàn)圖3中虛線所示的取回?cái)?shù)據(jù)階段的功能。由于參數(shù)移位寄存器模塊和計(jì)算每個(gè)塊的起始序號(hào)和結(jié)束序號(hào)模塊所得到的值在取回?cái)?shù)據(jù)階段也有用到,所以,要另外寄存這些參數(shù),需將RAM 模塊的輸入端分別連接計(jì)算起始序號(hào)和結(jié)束序號(hào)模塊、參數(shù)移位寄存器模 塊。本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法中,步驟(1)主要由 計(jì)算邏輯地址模塊所完成。以H. 264標(biāo)準(zhǔn)中亮度數(shù)據(jù)為例,首先將一個(gè)宏塊切分成16個(gè)4x4亮 度最小分塊單元,計(jì)算各個(gè)最小分塊單元的特征參數(shù),包括起始邏輯地址、 長(zhǎng)度及寬度等。且前向參考幀和后向參考幀是分開(kāi)計(jì)算的。一個(gè)亮度最小分塊單元最多需要9x9的參考幀數(shù)據(jù)塊,一個(gè)宏塊最多 需要多少個(gè)邏輯地址,取決于存儲(chǔ)器中數(shù)據(jù)的排列形式。邏輯地址、塊的 長(zhǎng)度、塊的寬度、及X方向的偏移,可以唯一的表示一個(gè)塊。邏輯地址由參考幀號(hào)、x坐標(biāo)、y坐標(biāo)三部分組成,大小為25位。塊的長(zhǎng)度是指參考 陣列的長(zhǎng)度(4行還是9行),塊的寬度是指參考陣列的寬度(4列還是 9歹U) , x方向的偏移指的是起始的x方向的坐標(biāo)。塊的寬度、x方向的偏移可以重新組織成一個(gè)新的參數(shù),即偏移參數(shù), 該參數(shù)用于指明哪些數(shù)據(jù)才是真正有用的。該參數(shù)用5位來(lái)表示,其中, 前兩位是標(biāo)識(shí)位,后三位是x方向的偏移。塊號(hào)(4位)、偏移參數(shù)(用于標(biāo)識(shí)哪些數(shù)據(jù)真正有用,5位)和塊 的長(zhǎng)度(l位)均為最小分塊單元一級(jí)的參數(shù)。本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法中,步驟(2)主要是 由比較器模塊、地址移位寄存器模塊、和參數(shù)移位寄存器模塊完成的。將地址進(jìn)行排序包括兩個(gè)過(guò)程比較和移位;比較器是比較邏輯地址(當(dāng)前的地址和已存儲(chǔ)的地址)的大小,是為地址排序作準(zhǔn)備。從整個(gè)排 序過(guò)程上看,先判斷當(dāng)前的地址和已存儲(chǔ)的地址誰(shuí)更大,如果已存儲(chǔ)的大, 則前移一位,如果當(dāng)前的大,保持不動(dòng)。每個(gè)周期只輸入一個(gè)新地址,需 要與已存儲(chǔ)的所有的數(shù)據(jù)比較,為了減少面積,可以復(fù)用一個(gè)比較器。每進(jìn)行一次排序,需要5次比較和1次移位,在H. 264中,需要192個(gè)周期。 地址移位寄存器的作用是實(shí)現(xiàn)地址排序的過(guò)程,是由多個(gè)25位的寄 存器串成鏈路實(shí)現(xiàn)的。比較器己經(jīng)判斷出當(dāng)前的地址和已存儲(chǔ)的地址誰(shuí)更 大,如果已存儲(chǔ)的大,則前移一位,如果當(dāng)前的大,保持不動(dòng)。地址排序后,邏輯地址的排列順序發(fā)生了更改,參數(shù)移位寄存器是為
了使參數(shù)保持與邏輯地址的排列同步變化??梢哉J(rèn)為,地址和參數(shù)是一同 進(jìn)行排序的。參數(shù)移位寄存器的控制和地址移位寄存器的控制是完全一樣的,參數(shù)移位寄存器是由多個(gè)io位的寄存器串成鏈路實(shí)現(xiàn)的。本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法中,步驟(3)主要是由合并地址模塊、計(jì)算起始序號(hào)和結(jié)束序號(hào)模塊、產(chǎn)生指令模塊、及指令FIFO模塊完成的。具體又分為4個(gè)過(guò)程a、 計(jì)算各個(gè)參考幀數(shù)據(jù)塊的起始序號(hào)和結(jié)束序號(hào)。 從外部存儲(chǔ)器中回來(lái)的數(shù)據(jù)是按照地址排序后的順序來(lái)的,而不是按照塊號(hào)的順序,而且,由于地址合并, 一個(gè)數(shù)據(jù)可能被多個(gè)塊利用。每個(gè) 塊的起始序號(hào)和結(jié)束序號(hào)用于標(biāo)識(shí)從外部存儲(chǔ)器中回來(lái)的數(shù)據(jù)屬于哪個(gè) 塊,在合并發(fā)生的同時(shí),就要計(jì)算出各個(gè)塊的起始序號(hào)和結(jié)束序號(hào)。每個(gè) 塊的起始序號(hào)和結(jié)束序號(hào)需要另存,因?yàn)檫@些參數(shù)會(huì)在第二階段用到。設(shè)第一個(gè)地址對(duì)應(yīng)的起始序號(hào)為零,如果發(fā)生合并,起始序號(hào)為當(dāng)前 地址減去前一個(gè)地址,如果不發(fā)生合并,當(dāng)前的起始序號(hào)則為前一個(gè)結(jié)束 序號(hào)加一。結(jié)束序號(hào)是起始序號(hào)加上塊的長(zhǎng)度。b、 若所述邏輯地址串列中的各個(gè)邏輯地址串之間有交疊,則將有交 疊的邏輯地址串進(jìn)行合并,得到多個(gè)無(wú)重復(fù)的連續(xù)邏輯地址串,形成連續(xù) 邏輯地址串列,計(jì)算所述的各個(gè)連續(xù)邏輯地址串的起始地址和串長(zhǎng)度。合并地址的直接目的是減少指令的數(shù)目。經(jīng)過(guò)地址排序之后,可以方 便的進(jìn)行地址合并,合并后,形成多個(gè)無(wú)重復(fù)的連續(xù)邏輯地址串,可以用 一個(gè)地址表示一個(gè)連續(xù)邏輯地址串;該地址由兩部分組成, 一個(gè)是基址,表示連續(xù)邏輯地址串的起始地址,另一個(gè)是偏移,表示串的長(zhǎng)度。
合并時(shí),按照排序后的順序,從小到大,依次進(jìn)行,只有當(dāng)基址加上 偏移大于等于當(dāng)前已存儲(chǔ)的地址(地址移位寄存器中)時(shí),才可以合并; 合并后,基址不變,偏移等于當(dāng)前己存儲(chǔ)的地址加上塊的長(zhǎng)度減去基址; 下次合并運(yùn)算時(shí),需要用新的偏移參加運(yùn)算。如果合并發(fā)生,地址的數(shù)目 將減少,產(chǎn)生的指令數(shù)目也減少。如果不發(fā)生合并,則設(shè)定當(dāng)前已存儲(chǔ)的 地址為基址,設(shè)定塊的長(zhǎng)度為偏移。C、將所述各個(gè)連續(xù)邏輯地址串的起始地址和串長(zhǎng)度變換為訪存指 令,將訪存指令依次存儲(chǔ)至指令FIFO模塊;合并后把當(dāng)前的基址和偏移輸出到產(chǎn)生指令模塊中,產(chǎn)生適應(yīng)存儲(chǔ)器 格式的訪存指令,并將這些訪存指令依次存儲(chǔ)在指令FIFO模塊中。d、由指令FIFO模塊將所述的訪存指令依次發(fā)送至存儲(chǔ)器模塊。 指令FIFO擬存儲(chǔ)兩個(gè)宏塊的指令,寬度是指令的長(zhǎng)度,F(xiàn)IF0需要向外部存儲(chǔ)器發(fā)出一個(gè)可讀信號(hào),此信號(hào)表示外部存儲(chǔ)器可以從指令FIFO中讀取指令,可讀信號(hào)不僅受控于FIFO內(nèi)數(shù)據(jù)的深度,而且必須滿足RAM模塊中的各個(gè)RAM是空的。本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方法中,步驟(4)主要是由位選擇器模塊、RAM模塊、及輸出FIFO模塊完成的。具體又分為3個(gè)過(guò)程a、存儲(chǔ)器模塊依照所述訪存指令,讀出參考幀數(shù)據(jù)列。 從外部存儲(chǔ)器中讀取回來(lái)的數(shù)據(jù)有一定的寬度,這些數(shù)據(jù)有些是有用 的,有些是沒(méi)有用的,有些對(duì)某些塊有用,有些對(duì)另外一些塊有用,這就 需要依照參數(shù)移位寄存器中的"偏移參數(shù)"來(lái)進(jìn)行位選擇,選擇有用的數(shù) 據(jù)放入RAM模塊中。由于取回的數(shù)據(jù)每次可能小于9字節(jié),所以,對(duì)一個(gè)塊的一行而言,需要由兩次讀入的數(shù)據(jù)拼接而成,位數(shù)的指定均由位選擇器來(lái)確定,拼接時(shí), 一邊的數(shù)據(jù)是來(lái)自RAM模塊(己存儲(chǔ)), 一邊的數(shù)據(jù)來(lái)自外部存儲(chǔ)器。b、 根據(jù)所述的各個(gè)最小分塊單元的起始序號(hào)和結(jié)束序號(hào),從參考幀 數(shù)據(jù)列中取出各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù)。如圖4所示,RAM模塊中,包含有n個(gè)RAM子模塊。以H. 264標(biāo)準(zhǔn)為 例, 一個(gè)宏塊有16個(gè)4x4亮度塊,對(duì)應(yīng)為16個(gè)RAM子模塊,每個(gè)RAM 的大小為9x9字節(jié)。由于從外部存儲(chǔ)器讀入的數(shù)據(jù)不是以塊號(hào)的順序,而 輸出卻需要以塊號(hào)為順序,所以,需要RAM模塊來(lái)存儲(chǔ)不能立即輸出的數(shù) 據(jù)。9x9字節(jié)為一個(gè)4x4參考幀最小分塊單元需要的最大的存儲(chǔ)容量,其 數(shù)據(jù)需要分為兩批到達(dá),前一批到達(dá)的數(shù)據(jù)是暫時(shí)存儲(chǔ)在RAM模塊中的, 故前一批到達(dá)的數(shù)據(jù)無(wú)需拼接,而后一批到達(dá)的數(shù)據(jù)則需要進(jìn)行拼接,且 有時(shí)參考幀數(shù)據(jù)在位寬上部分有效,需通過(guò)位選擇模塊,選出有效的部分, 并進(jìn)行拼接。依照每個(gè)塊的起始序號(hào)和結(jié)束序號(hào)來(lái)標(biāo)識(shí)從外部存儲(chǔ)器中回來(lái)的數(shù) 據(jù)屬于哪個(gè)塊,即采用一個(gè)計(jì)數(shù)器對(duì)從外部存儲(chǔ)器回來(lái)的數(shù)據(jù)計(jì)數(shù),只 要當(dāng)前的計(jì)數(shù)值位于某個(gè)塊的起始序號(hào)和結(jié)束序號(hào)的區(qū)間之內(nèi),則將數(shù)據(jù) 存入該塊相應(yīng)的RAM子模塊中。c、 將所述的各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù)發(fā)送至輸出FIFO 模塊,依次寫(xiě)入到內(nèi)插模塊中。輸出FIFO模塊的功能就是將數(shù)據(jù)以塊號(hào)的順序進(jìn)行存放,等待內(nèi)插 模塊讀取。在實(shí)際中,比較常見(jiàn)的情況是塊0和塊2是同一批次到達(dá)的,塊1和塊3是同一批次到達(dá)的,假設(shè)塊0和塊2先到,需要等到塊1到達(dá) 后,塊2才可以輸入到FIF0。而16個(gè)RAM之間是并行的,是沒(méi)有必要等 到塊1到達(dá)后,塊2才輸入到FIF0的。將"輸出FIFO"分為兩個(gè), 一個(gè)用于存儲(chǔ)奇數(shù)塊的數(shù)據(jù), 一個(gè)用于 存儲(chǔ)偶數(shù)塊的數(shù)據(jù)。整個(gè)系統(tǒng)的輸出需要再增加一個(gè)二選一開(kāi)關(guān)來(lái)進(jìn)行選 擇。在H.264標(biāo)準(zhǔn)下,采用本發(fā)明的硬件解碼器中參考幀數(shù)據(jù)的讀取方 法,相應(yīng)的系統(tǒng)時(shí)序示意圖請(qǐng)參照?qǐng)D5所示,地址移位寄存器需要192 個(gè)周期,合并地址需要32個(gè)周期,產(chǎn)生指令需要32個(gè)周期;讀入數(shù)據(jù)需 要288個(gè)周期。"第一階段"和"第二階段"之間是流水線的形式,處理 一個(gè)宏塊最多需要576個(gè)周期。圖中的周期數(shù)指的是單向預(yù)測(cè)時(shí)的情況, 如果是雙向預(yù)測(cè),周期數(shù)需要加倍。本方法采用HDL (硬件描述語(yǔ)言)實(shí) 現(xiàn)后,綜合頻率可達(dá)200M,滿足高清實(shí)時(shí)解碼的要求。
權(quán)利要求
1、一種硬件解碼器中參考幀數(shù)據(jù)的讀取方法;其特征在于,包括如下步驟(1)計(jì)算一個(gè)宏塊的各個(gè)最小分塊單元的特征參數(shù),包括起始邏輯地址、長(zhǎng)度、寬度、及x軸方向的偏移;(2)將各個(gè)最小分塊單元的邏輯地址串按所述的起始邏輯地址進(jìn)行從小到大的排序,得到最小分塊單元的邏輯地址串列;(3)將所述的邏輯地址串列進(jìn)行合并,然后發(fā)送訪存指令;(4)從存儲(chǔ)器中讀取參考幀數(shù)據(jù)列,并選出各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù),依序?qū)懭氲絻?nèi)插模塊中。
2、 如權(quán)利要求1所述的硬件解碼器中參考幀數(shù)據(jù)的讀取方法,其特 征在于,步驟(3)所述的將所述的邏輯地址串列進(jìn)行合并,然后發(fā)送訪 存指令,包括(1) 計(jì)算各個(gè)最小分塊單元的起始序號(hào)和結(jié)束序號(hào);(2) 若所述邏輯地址串列中的各個(gè)邏輯地址串之間有交疊,則將有 交疊的邏輯地址串進(jìn)行合并,得到多個(gè)無(wú)重復(fù)的連續(xù)邏輯地址串,形成連 續(xù)邏輯地址串列,計(jì)算所述的各個(gè)連續(xù)邏輯地址串的起始地址和串長(zhǎng)度;(3 )將所述的各個(gè)連續(xù)邏輯地址串的起始地址和串長(zhǎng)度變換為訪存 指令,將訪存指令依次存儲(chǔ)至指令FIFO模塊;(4)由指令FIFO模塊將所述的訪存指令依次發(fā)送至存儲(chǔ)器模塊。
3、 如權(quán)利要求1所述的硬件解碼器中參考幀數(shù)據(jù)的讀取方法,其特 征在于,步驟(4)所述的從存儲(chǔ)器中讀取參考幀數(shù)據(jù)列,并選出各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù),依序?qū)懭氲絻?nèi)插模塊中包括如下步驟(1) 存儲(chǔ)器模塊依照所述訪存指令,讀出參考幀數(shù)據(jù)列;(2) 根據(jù)所述的各個(gè)最小分塊單元的起始序號(hào)和結(jié)束序號(hào),從參考 幀數(shù)據(jù)列中取出各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù)(3) 將所述的各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù)發(fā)送至輸出FIFO 模塊,依次寫(xiě)入到內(nèi)插模塊中。
4、 如權(quán)利要求3所述的硬件解碼器中參考幀數(shù)據(jù)的讀取方法,其特 征在于,所述的參考幀數(shù)據(jù)在位寬上部分有效,通過(guò)位選擇模塊,選出有 效的部分,并進(jìn)行拼接。
5、 一種硬件解碼器中參考幀數(shù)據(jù)的讀取裝置;其特征在于,包括依 次連接的輸入?yún)?shù)模塊、發(fā)送指令模塊、存儲(chǔ)器模塊、取回?cái)?shù)據(jù)模塊及 內(nèi)插模塊;所述的發(fā)送指令模塊又包括依次連接的計(jì)算邏輯地址模塊、比較 器模塊、并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器模塊、合并地址模 塊、產(chǎn)生指令模塊、和指令FIFO模塊;以及計(jì)算起始序號(hào)和結(jié)束序號(hào)模塊,其輸入端連接所述并聯(lián)的地址移位寄存器模塊和參數(shù)移位寄存器模塊的輸出端;所述的取回?cái)?shù)據(jù)模塊又包括依次連接的位選擇模塊、RAM模塊、輸 出FIF0模塊;所述的RAM模塊的輸入端又分別連接所述的計(jì)算起始序號(hào)和結(jié)束序 號(hào)模塊和參數(shù)移位寄存器模塊。
6、 如權(quán)利要求5所述的硬件解碼器中參考幀數(shù)據(jù)的讀取裝置;其特征在于,所述的RAM模塊包括多個(gè)RAM子模塊。
7、如權(quán)利要求5所述的硬件解碼器中參考幀數(shù)據(jù)的讀取裝置;其特 征在于,所述的輸出FIFO模塊包括 一個(gè)為存儲(chǔ)奇數(shù)塊數(shù)據(jù)的輸出模塊, 一個(gè)為存儲(chǔ)偶數(shù)塊數(shù)據(jù)的輸出模塊,及一個(gè)二選一的開(kāi)關(guān)。
全文摘要
本發(fā)明公開(kāi)了一種硬件解碼器中參考幀數(shù)據(jù)的讀取方法計(jì)算一個(gè)宏塊的各個(gè)最小分塊單元的特征參數(shù),將各個(gè)最小分塊單元的起始邏輯地址進(jìn)行從小到大的排序;將排序后的有序起始邏輯地址列進(jìn)行合并,然后發(fā)送訪存指令;從存儲(chǔ)器中讀取參考幀數(shù)據(jù)列,并選出各個(gè)最小分塊單元對(duì)應(yīng)的參考幀數(shù)據(jù),依序?qū)懭氲絻?nèi)插模塊中。本發(fā)明還公開(kāi)了一種硬件解碼器中參考幀數(shù)據(jù)的讀取裝置,包括依次連接的輸入?yún)?shù)模塊、發(fā)送指令模塊、存儲(chǔ)器模塊、取回?cái)?shù)據(jù)模塊及內(nèi)插模塊,其中發(fā)送指令模塊和取回?cái)?shù)據(jù)模塊又包括若干個(gè)功能模塊。采用本發(fā)明可使參考幀數(shù)據(jù)讀取模塊的面積有較大幅度的減少,功耗有顯著下降,且本發(fā)明適用于H.264硬件高清實(shí)時(shí)解碼器。
文檔編號(hào)H04N7/26GK101399978SQ20071009411
公開(kāi)日2009年4月1日 申請(qǐng)日期2007年9月28日 優(yōu)先權(quán)日2007年9月28日
發(fā)明者巡 仲, 歐陽(yáng)合, 侃 肖, 黃小振 申請(qǐng)人:上海杰得微電子有限公司