專利名稱::視頻硬件解碼器的片外動態(tài)存儲器的地址映射方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于音視頻編解碼
技術(shù)領(lǐng)域:
,具體涉及一種視頻硬件解碼器的片外動態(tài)存儲器的地址映射方法。
背景技術(shù):
:目前,國際上普遍釆用MPEG系列標(biāo)準(zhǔn)和H26X系列標(biāo)準(zhǔn)作為音;見頻編解碼技術(shù)標(biāo)準(zhǔn)。2006年,我國制定了自主知識產(chǎn)權(quán)的先進(jìn)音視頻編解碼標(biāo)準(zhǔn)(AVS)。針對各種標(biāo)準(zhǔn)的視頻硬件解碼器中,在圖像解碼過程,一般需要保存四幀已解碼的圖像,以實(shí)現(xiàn)后續(xù)碼流的幀間預(yù)測、運(yùn)動補(bǔ)償、輸出顯示等,所以需要較大的存儲器空間。因此,一般使用片外的動態(tài)存儲器(DRAM)。如圖l所示,動態(tài)存儲器一般分為四個存儲陣列(Bank),通過行地址(Row)和列地址(Col)對每個Bank進(jìn)行存取。對存儲器進(jìn)行存儲操作時,如果訪問的存儲單元(Cell)與上次存取操作在同一Bank的不同行地址,我們稱之為"行不命中"或者兩個訪問命令不相關(guān),在同一時刻,存儲器的一個Bank中只能有一行處于打開狀態(tài)可以讀寫。如果想讀寫同一個Bank的另外一行,必須通過預(yù)充電(precharge)來關(guān)閉已經(jīng)打開的行地址,然后再激活新的行地址。激活命令到讀寫命令之間的時間間隔成為前導(dǎo)時間(LeadingTime),經(jīng)過前導(dǎo)時間后才能再次實(shí)現(xiàn)讀寫操作。如果訪問的存儲單元與上次存取操作的單元是在不同Bank中,同樣也必須通過預(yù)充電(precharge)來關(guān)閉已經(jīng)打開的行地址,然后再激活另一個Bank中的行地址。然而,目前視頻編碼技術(shù)中,一般將"幀周像分威多個相同大小的宏塊,以宏塊為單位進(jìn)行編碼解碼,以便于運(yùn)動'預(yù)測和運(yùn)動補(bǔ)償以及突發(fā)(burst)方式對存儲器進(jìn)行存取操作等。一幀圖像上的像素具有二維地址,而存儲器的物理地址主要是線性的,因此,一幀圖像上的象素往往需要按照一定的規(guī)則映射到存儲器的物理地址上。以高清解碼器和SDRAM(SynchronousDynamicRandomAccessMemory)為例,解碼過程中,一幀高清圖像是1920x1080象素大小,各個模塊的幀內(nèi)預(yù)測、幀間預(yù)測、反變換、反量化、運(yùn)動補(bǔ)償、濾波等都是以宏塊(16xl6象素)為單位的,一行2048象素構(gòu)成了128個宏塊個數(shù)。在當(dāng)前的地址映射方法中,解碼器的圖像存入SDRAM過程中,設(shè)計(jì)人員努力把大小為16*16象素的宏塊作為一個映射單元存取放在存儲器的一個Bank中的同一行,以此減少存儲器的預(yù)充電;同時,對于一個圖4象宏塊的同一行,總是盡量映射在一個Bank的同一行中,以此減少存儲器的預(yù)充電。然而,如圖2所示是現(xiàn)有技術(shù)的地址映射方法示意圖,對Bank的一行映射滿以后,連續(xù)的行宏塊映射到同一Bank的不同行,直到一個Bank映射滿以后,再映射其他Bank,因此動態(tài)存儲器的地址(Addr)按照{(diào)Bank,Row,Col}。因此,對于高清圖像,圖像的不同行宏塊一般需要映射存入一個Bank的不同行中,因此,需要多次預(yù)充電、激活和存入過程來實(shí)現(xiàn)。同樣在圖像顯示從SDRAM讀取過程中,圖像的讀取,也需要多次預(yù)充電、激活和存入過程。現(xiàn)有技術(shù)的地址映射方法中,一個Bank的多次預(yù)充電、激活和存取周期是連續(xù)進(jìn)行的,這些周期消耗的時間是以微秒為單位的。也就是說,系統(tǒng)頻率運(yùn)行的越高,相應(yīng)的消耗的周期消耗也越多,而且對同一個Bank來說,這些時間的限制是無法避免的。因此這種映射方法必然導(dǎo)致存儲效率的低下。本發(fā)明試圖,在不減少預(yù)充電的次數(shù)的基礎(chǔ)上,提出一種動態(tài)存儲器的映射方法,以此提高動態(tài)存儲器的讀寫效率。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提高視頻硬件解碼器的片外動態(tài)存儲器的讀寫效率,提供一種視頻硬件解碼器的片外動態(tài)存儲器的地址映射方法。于將圖像數(shù)據(jù)映射到動態(tài)存儲器的相應(yīng)地址,所述動態(tài)存儲器包括N個存儲陣列,所述映射方法包括如下步驟(1)圖像的一行宏塊的一行像素映射到動態(tài)存儲器的其中一個存儲陣列的一行中;將同一行宏塊連續(xù)的下一行^象素映射到下一個存儲陣列的同一行中。(2)按照步驟(1)中的方法對N個存儲陣列交替映射,直到行宏塊的所有像素映射完成,再映射圖像的連續(xù)的下一行宏塊。根據(jù)本發(fā)明的方法,其中,宏塊的行長和列長均為2x個像素,其中x為大于零的整數(shù);所述動態(tài)存儲器可以是同步隨機(jī)動態(tài)存儲器(SDRAM)或雙倍速率動態(tài)隨機(jī)存儲器(DDR),動態(tài)存儲器的存儲陣列的個數(shù)N》2,N=2l,t為大于或等于1的整數(shù)。才艮據(jù)本發(fā)明的方法,其中,所述步驟(l)中,所述連續(xù)在幀的方式下是指按照垂直方向從上到下的掃描順序,所述連續(xù)在場的方式下是指按照垂直方向從上到下的隔行掃描的順序;所述步驟(2)中,所述連續(xù)是指纟妄照垂直方向從上到下的掃描順序。才艮據(jù)本發(fā)明的方法,其中,動態(tài)存儲器的地址按照{(diào)Row,Bank,Col}構(gòu)成。,其中Bank、Col和Row地址位數(shù)由片外動態(tài)存儲器的存儲容量大小決定。動態(tài)存儲器的地址在場的方式下按照以下算法公式映射<formula>formulaseeoriginaldocumentpage6</formula>.其中,X表示圖像的列信息,Y表示圖豫的'行信逸;^ddf-F"ld,X[u:0]}表示動態(tài)存儲器的Col地址,{Bank[(t-1):0}表示動態(tài)存儲器的'Bank地址,{Y[(s-u+l):(t+l)]}表示表示動態(tài)存儲器的Row地址;場地址Addr—Field按照以下算法公式映射<formula>formulaseeoriginaldocumentpage7</formula>七=2時,存儲陣列地址按照以下算法公式映射<formula>formulaseeoriginaldocumentpage7</formula>。本發(fā)明的技術(shù)效果是利用一個存儲陣列進(jìn)行存取操作時可對另一存儲陣列進(jìn)行激活的特性,在不減少預(yù)充電的次數(shù)的基礎(chǔ)上,將連續(xù)的行宏塊映射到不同的存儲陣列的同一行中,對存儲陣列的一行進(jìn)行存取操作時,可以對另一存儲陣列的行進(jìn)行激活操作,可以實(shí)現(xiàn)流水線存取操作,進(jìn)而可以提高動態(tài)存儲器的存取效率。圖1是動態(tài)存儲器的基本結(jié)構(gòu)示意圖2是現(xiàn)有技術(shù)的地址映射方法示意圖3是本實(shí)施例中解碼器和動態(tài)存儲器之間映射的結(jié)構(gòu)示意圖4是本實(shí)施例地址映射方法示意圖。具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,本實(shí)施例以高清視頻解碼器的SDRAM為例,具體詳細(xì)說明其地址映射方法。一幀高清圖像是1920x1080象素大小。為了設(shè)計(jì)的便利,取2048xl080象素對應(yīng)的大小來存儲。以16x16象素定義一個宏塊,以宏塊為映射單元。每個象素相當(dāng)于8比特(bit)數(shù)據(jù),宏塊妁一行就是,2召(27)-比特。數(shù)據(jù)總線寬度選擇為128位,所以跟SDRAM交換這些圖像數(shù)據(jù)時,以宏*塊的一行(128比特)為單位,既降低了各模塊和SDRAM之間數(shù)據(jù)傳送的復(fù)雜度,提高了數(shù)據(jù)傳送的速度,又有效的減少了SDRAM的地址空間,地址線原封不動。一行2048(2048=2")象素構(gòu)成了128個宏塊個數(shù)(實(shí)際上對應(yīng)于1920象素,只用到了120個宏塊個數(shù),后8個宏塊置空)。所以圖像的一行宏塊為128個宏塊的一行,也就是128xi6x8bit。按照4:2:O的圖像格式,一幀圖像亮度(luma)的行數(shù)為1088行,色度(chroma)的行數(shù)為亮度的一半,544行。而每個象素的大小為8比特。因此,一幀完整的高清圖像需要的存儲空間可以由式(1)計(jì)算得出。2048x1088x8x1.5=3.1875MBytes(1)按照解碼要求,最大需要存儲4幀圖像作為參考,所需的存儲空間由式(2)計(jì)算得出。3.1875x4=12.75MBytes(2)再加上用于存儲壓縮圖像碼流(CPB)、壓縮音頻碼流(CAB)、運(yùn)動向量(MV)等較小的數(shù)據(jù),可以把所需存儲空間控制在16M字節(jié)內(nèi)。但是為了實(shí)現(xiàn)128位存儲,如圖3所示,需要并聯(lián)四顆8M字節(jié)的SDRAM(例如MICRON公司的MT48LC2M32B2),實(shí)現(xiàn)128位數(shù)據(jù)總線的、32M字節(jié)的存儲空間。從式(3)可得,所以片內(nèi)地址總線只需要21位地址。221x128+8=32MBytes(3)如圖3所示,解碼器的片內(nèi)動地址總線ADO到AD20,為21位,數(shù)據(jù)總線DO到D127,為128位;片外地址總線AO到A10,為11位,BAO和BAl代表存儲陣列地址,一個SDRAM中有四個存儲陣到,一共四個SDRAM,—個SDRAM的數(shù)據(jù)線為DO到D31,四個并聯(lián)形成128位數(shù)據(jù)總線。高清解碼時,對容量為8M的SDRAM來說,Col地址位數(shù)是8,,Row地址位數(shù)是ll。因此,片內(nèi)地址的低7位(ADO-AD6)描述了圖像的列地址信息,而高14位地址(AD7-AD20)描述了圖4象的4亍地址信息。所以可以設(shè)定X[6:0]=AD[6:0](4)Y[13:0]=AD[20:7](5)其中,X表示一幀圖像的列信息,Y表示一幀圖像的行信息。SDRAM的一行(Row)中有256個單元(cell),即256x128bit,等于兩行宏塊的大小(2x2048x8bit),因此,SDRAM的一^f亍可以存下圖i"象的兩^f亍宏塊。在場(Field)方式下,一幀圖像又可以分為奇偶場,也就是頂場和底場。如式6所示,用于區(qū)分奇偶場的場地址(Addr—Field)選擇行信息Y的最低位Y[O],也即片內(nèi)地址線AD7。片內(nèi)地址線AD7描述了場信息,0表示時頂場,1表示時頂場。Addr一Field=Y[O]=AD[7](6)這樣32M字節(jié)SDRAM的一行就可以存儲頂場和底場各一行宏塊。。片外的SDRAM的地址總線中的Bank地址有兩位,即Bank[1:0],Y地址的第二位和第三位定義為Bank地址,地址映射過程中Bank地址的選擇通過式(7)所示算法實(shí)現(xiàn)。Bank[l:0]=Addr一Field{~Y[2],Y[1]}:Y[2:l](7)式(7)中,當(dāng)Addr—Field為0時,Bank[l:0]選擇等于行信息Y[2:l];當(dāng)Addr—Field為l時,Bank[1:0]選擇等于1〖2],Y〖1}},,其中Y[2]表示行信息Y[2]的非。按照式(7)算法,窮舉出Bank的8種分布,如表1所示。表l高清模式下Bank的映射<table>tableseeoriginaldocumentpage10</column></row><table>在映射過程中,行宏塊定義為一幀圖像的一行宏塊,對于1920x1080象素的圖像,行宏塊包括128個宏塊,也即128xl6xl6像素;行宏塊的一行即為128x16x16像素的一行像素,為128xl6像素。首先,對第一個行宏塊,取出行宏塊的其中前八行,按照式(7)的算法和表l,在場的方式下,如圖4所示,先連續(xù)映射行宏塊中的偶數(shù)行行宏塊的第O行映射到BankO的前半行,行宏塊的第2行映射到Bankl的前半行,行宏.塊的第4行映射到B皿arik2的前半行,行宏塊的第6行映射到Bank3的前半行;再連幾映射行宏塊中的奇數(shù)行行宏塊的第l行映射到BankO的后半行,行宏塊的第3行映射到Bankl的后半行,行宏塊的第5行映射到Bank2的后半行,行宏塊的第7行映射到Bank3的后半行。行宏塊的前八行正好存儲在SDRAM的4個Bank的一個Row中,對應(yīng)的行地址Row相同,對應(yīng)的列地址Col也相同,只是最J氐位行地址Addr-Field不一才羊,這也就區(qū)分了Bank的前半行和后半4于。通過這種Bank映射才幾制,在場的方式下,行宏塊的連續(xù)的四行被存儲到四個Bank的同一地址上。進(jìn)一步,對第一行宏塊的后八行以同樣方法映射到Bank的另一個Row中,再根據(jù)一幀圖像垂直方向從上到下的掃描順序,對第二行宏塊進(jìn)行映射,直到所有行宏塊映射完畢。根據(jù)式(7)在映射后,得到SDRAM的地址按照(Row,Bank,Col}構(gòu)成,如式(8)所示Addr[20:0]={Y[13:3],Bank[1:0],Addr_Field,X[6:0]}(8)式(8)中,(Addr—Field,X[6:O])表示Col地址,即一行中的列地址。每行有256列,與{Addr_Field,X[6:0]}完全比配;{Bank[1:0]}表示Bank地址;(Y[13:3])表示Row地址,即2的11次冪(2048)的地址空間,與SDRAM的行數(shù)完全一致。在讀寫這些凄t據(jù)時,控制Bank以流水線的方式激活,讀寫和關(guān)閉,例如在bank0的前導(dǎo)時間內(nèi),激活Bank2,在Bank2的前導(dǎo)時間內(nèi)激活Bankl,依此類推。這樣,四個bank的激活命令就像流水線的發(fā)出,并且占用的是上一Bank的前導(dǎo)時間,然后讀寫命令又是流水線一樣的發(fā)出,使得對SDRAM存取數(shù)據(jù)的效率有了很大的提高。在不偏離本發(fā)明的精神和范圍的情凡下還可"^拘成許多有很大差別的實(shí)施例。應(yīng)當(dāng)理解,除了如所附的權(quán)利要求所限定的,本發(fā)明不限于在說明書中所述的具體實(shí)施例。權(quán)利要求1.一種視頻硬件解碼器的片外動態(tài)存儲器的地址映射方法,用以將圖像數(shù)據(jù)映射到動態(tài)存儲器的相應(yīng)地址,所述動態(tài)存儲器包括N個存儲陣列,其特征在于,包括如下步驟(1)圖像的一行宏塊的一行像素映射到動態(tài)存儲器的其中一個存儲陣列的一行中;將同一行宏塊連續(xù)的下一行像素映射到下一個存儲陣列的同一行中。(2)按照步驟(1)中的方法對N個存儲陣列交替映射,直到行宏塊的所有像素映射完成,再映射圖像的連續(xù)的下一行宏塊。2.根據(jù)權(quán)利要求1所述的地址映射方法,其特征在于,所述步驟(1)中,所述宏塊的行長和列長均為2'個像素,其中x為大于零的整數(shù)。3.根據(jù)權(quán)利要求1所述的地址映射方法,其特征在于,所述動態(tài)存儲器是同步隨機(jī)動態(tài)存儲器或雙倍速率動態(tài)隨機(jī)存儲器。4.根據(jù)權(quán)利要求1所述的地址映射方法,其特征在于,所述步驟(1)中,所述連續(xù)在幀的方式下是指按照垂直方向從上到下的掃描順序,所述連續(xù)在場的方式下是指按照垂直方向從上到下的隔行掃描的順序;所述步驟(2)中,所述連續(xù)是指按照垂直方向從上到下的掃描順序。5.才艮據(jù)權(quán)利要求1所述的地址映射方法,其特征在于,所述弘2',t為大于或等于1的整數(shù)。6.根據(jù)權(quán)利要求1或5所述的地址映射方法,其特征在于,動態(tài)存儲器的地址按照{(diào)Row,Bank,Col}構(gòu)成。,其中Bank、Col和Row地址位數(shù)由片外動態(tài)存儲器的存儲容量大小決定。7.根據(jù)權(quán)利要求1或6所述的地址映射方法,其特征在于,動態(tài)存儲器的地址在場的方式下按照以下算法公式映射Addr[s:0]={Y[(s-u+l):(t+l)],B卵k[("":,0],Addr"Fi&ld,X[u:0]};其中,X表示圖像的列信息,Y表^閨像的行信息;{AdflV—,F(xiàn)化ld,X[u:0]}表示動態(tài)存儲器的Col地址,{Bank[(t-1):O)表示動態(tài)存儲器的Bank地址,{Y[(s-u+1):(t+1)]}表示表示動態(tài)存儲器的Row地址;場地址Addr—Field按照以下算法公式映射Addr_Field=Y;1=2時,存儲陣列地址按照以下算法公式映射Addr—Bank[1:0]=Addr一Field{~Y[2],Y[1]}:X[2:l]。全文摘要本發(fā)明提供一種視頻硬件解碼器的片外動態(tài)存儲器的地址映射方法,屬于音視頻解碼
技術(shù)領(lǐng)域:
。所述映射方法包括如下步驟(1)圖像的一行宏塊的一行像素映射到動態(tài)存儲器的其中一個存儲陣列的一行中;將同一行宏塊連續(xù)的下一行像素映射到下一個存儲陣列的同一行中;(2)按照步驟(1)中的方法對N個存儲陣列交替映射,直到行宏塊的所有像素映射完成,再映射圖像的連續(xù)的下一行宏塊。這種映射方法可以提高動態(tài)存儲器的存取效率。文檔編號H04N7/26GK101340580SQ20081004173公開日2009年1月7日申請日期2008年8月15日優(yōu)先權(quán)日2008年8月15日發(fā)明者張紅云,蔣衛(wèi)東,雷陳申請人:上海龍晶微電子有限公司