專(zhuān)利名稱(chēng):一種針對(duì)圖像處理的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器存取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)器應(yīng)用領(lǐng)域,特別是一種針對(duì)圖像處理的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Synchronous Dynamic Random Access Memory,SDRAM)存取方法。
背景技術(shù):
在數(shù)字圖像處理過(guò)程中,每幀圖像通常分為若干個(gè)宏塊(Macro Block,MB),每個(gè)宏塊由一個(gè)16×16字節(jié)的亮度分量Y和兩個(gè)8×8字節(jié)的色度分量U、V組成,每個(gè)亮度分量Y又可以分為四個(gè)8×8字節(jié)的塊(block)。由于圖像處理過(guò)程中主要涉及到宏塊中的亮度分量,因此圖像處理中所說(shuō)的宏塊通常指宏塊中的亮度分量。圖1所示的是圖像幀中的一個(gè)宏塊A,宏塊A在圖像幀中的位置是從i行到i+15行、從j列到j(luò)+15列,宏塊A的大小為16行16列,含有16×16=256字節(jié)。
SDRAM是數(shù)字圖像處理過(guò)程中常用的存儲(chǔ)器。如圖2所示的是一個(gè)512Mbit8位數(shù)據(jù)寬度的SDRAM芯片,該芯片包括4個(gè)體(bank)bank0、bank1、bank2、bank3。該SDRAM的地址管腳包括1個(gè)片選信號(hào)CS0管腳,2個(gè)體信號(hào)bank0bank1管腳,13個(gè)行(row)列(column)地址復(fù)用管腳。當(dāng)需要讀取一個(gè)8位數(shù)據(jù)時(shí),SDRAM控制器向該SDRAM芯片發(fā)出的地址數(shù)據(jù)包括CS0,bank0bank1,row,column。地址數(shù)據(jù)中CS0為一位,表示選中該芯片;bank0bank1為兩位,表示選中該芯片上的某一個(gè)體,例如00表示選中bank0、01表示選中bank01、10表示選中bank2、11表示選中bank3;row為13位,表示行地址;column為11位,表示列地址。通常對(duì)于SDRAM中一個(gè)字節(jié)的26位地址A25A24...A1A0,對(duì)應(yīng)的地址映射為CS0、column、bank0bank1、row。通常將bank中的一行稱(chēng)為一頁(yè)(page),由于本例中列地址為11位,因此本例中頁(yè)的大小為2Kbyte,同樣由于本例中行地址為13位,因此每列的大小為8Kbyte。
參考圖3,在現(xiàn)有技術(shù)中通常將一個(gè)宏塊數(shù)據(jù)存儲(chǔ)在SDRAM芯片同一個(gè)體的同一個(gè)列中,圖3中左邊是宏塊A從i行至i+15行在CPU虛擬內(nèi)存中分成16行,它們都存儲(chǔ)在圖3右邊所示的SDRAM中bank0的一列。
參考圖4,現(xiàn)有技術(shù)對(duì)于圖像幀中每一個(gè)宏塊存儲(chǔ)的流程如下步驟401,圖像處理程序需要存儲(chǔ)一個(gè)宏塊數(shù)據(jù)時(shí),處理器向SDRAM控制器發(fā)出存儲(chǔ)一個(gè)宏塊數(shù)據(jù)的指令、一個(gè)宏塊的數(shù)據(jù)以及該宏塊數(shù)據(jù)在處理器中的虛擬地址。
步驟402,SDRAM控制器接收到上述指令后,將該宏塊數(shù)據(jù)映射到SDRAM芯片同一個(gè)體的一個(gè)列中,即產(chǎn)生包括CS0、bank0bank1、row、column的地址信息,其中宏塊內(nèi)各個(gè)數(shù)據(jù)的CS0、bank0bank1、column相同,而row不同。
具體映射過(guò)程例如SDRAM控制器將處理器輸出的虛擬地址中的高位地址映射到SDRAM的列地址,低位地址映射到SDRAM頁(yè)面內(nèi)的行地址。由于一個(gè)宏塊在處理器中的虛擬地址僅在低位地址發(fā)生變化,因此所述的行地址是變化的、而列地址保持不變,這樣該宏塊數(shù)據(jù)就被映射到了SDRAM中的同一個(gè)列。
步驟403,SDRAM控制器依次存儲(chǔ)上述宏塊數(shù)據(jù)中的16行數(shù)據(jù),其中宏塊的每行數(shù)據(jù)存儲(chǔ)過(guò)程如下a、SDRAM控制器發(fā)送激活(active)命令和CS0、bank0bank1、row,根據(jù)地址信息中的CS0、bank0bank1和row選中一個(gè)bank并激活與row地址相應(yīng)的行;b、SDRAM控制器發(fā)送write命令和column,在指定的bank和行中根據(jù)地址信息中的column選中相應(yīng)的列,并寫(xiě)入一個(gè)字節(jié)數(shù)據(jù);c、SDRAM控制器發(fā)送預(yù)充電(precharge)命令讓上述行失活,即關(guān)閉當(dāng)前行。這是由于下一個(gè)數(shù)據(jù)存儲(chǔ)在不同的行,SDRAM需要將當(dāng)前的行失活才能激活不同的行。
重復(fù)執(zhí)行a、b、c,依次寫(xiě)入上述宏塊一行的16個(gè)數(shù)據(jù),從而完成上述宏塊一行數(shù)據(jù)的存儲(chǔ)。
步驟404,結(jié)束當(dāng)前宏塊的存儲(chǔ)過(guò)程。
在現(xiàn)有技術(shù)中,讀取圖像幀中每一個(gè)宏塊的流程如圖5所示,包括以下步驟步驟501,圖像處理程序需要讀取一個(gè)宏塊數(shù)據(jù)時(shí),處理器向SDRAM控制器發(fā)出讀取該宏塊數(shù)據(jù)的指令和該宏塊數(shù)據(jù)在處理器中的虛擬地址。
步驟502,SDRAM控制器接收到上述請(qǐng)求后,將該宏塊數(shù)據(jù)映射到SDRAM芯片中的一列,例如將處理器輸出的虛擬地址中的高位地址映射到SDRAM的列地址、低位地址映射到SDRAM頁(yè)面內(nèi)的行地址,產(chǎn)生該宏塊數(shù)據(jù)在SDRAM中的地址信息。
步驟503,SDRAM控制器依次讀取上述宏塊數(shù)據(jù)中的各行數(shù)據(jù),并將各行數(shù)據(jù)返回給程序。從SDRAM讀取宏塊中一行數(shù)據(jù)的過(guò)程如下A、SDRAM控制器發(fā)送active命令和CS0、bank0bank1、row,根據(jù)地址信息中的CS0、bank0bank1和row選中相應(yīng)的bank并激活與row地址相應(yīng)的行;B、SDRAM控制器發(fā)送read命令和column,在指定的bank和行中根據(jù)地址信息中的column選中相應(yīng)的列,并讀取一個(gè)字節(jié)數(shù)據(jù);C、SDRAM控制器發(fā)送precharge命令讓上述行失活。這同樣是由于下一個(gè)數(shù)據(jù)存儲(chǔ)在不同的行,SDRAM需要將當(dāng)前的行失活才能激活不同的行。
D、重復(fù)執(zhí)行A、B、C,讀取上述宏塊一行的16個(gè)數(shù)據(jù)后,將這一行數(shù)據(jù)返回給程序。
步驟503,結(jié)束當(dāng)前宏塊的讀取。
圖6和圖7給出了在上述存儲(chǔ)和讀取一個(gè)宏塊數(shù)據(jù)過(guò)程中的時(shí)序圖,最上面一行是CPU時(shí)鐘周期,中間一行是SDRAM控制器發(fā)送的命令,第三行是寫(xiě)入SDRAM芯片或從SDRAM芯片中讀取的數(shù)據(jù),這里所有信號(hào)都是在每個(gè)時(shí)鐘周期的上升沿觸發(fā)。在上述存取一個(gè)宏塊數(shù)據(jù)的過(guò)程中,在發(fā)送第一個(gè)active命令后過(guò)3個(gè)時(shí)鐘周期,相應(yīng)的bank和行被激活,然后發(fā)送write或read命令;再過(guò)3個(gè)時(shí)鐘周期之后,選中相應(yīng)的列并在該地址中存取1個(gè)字節(jié)數(shù)據(jù),再發(fā)送precharge命令;再過(guò)3個(gè)時(shí)鐘周期后,剛選中的行被失活,然后發(fā)送active命令,開(kāi)始下一個(gè)字節(jié)數(shù)據(jù)的存?。恢貜?fù)上述過(guò)程直到完成一個(gè)宏塊所有數(shù)據(jù)的存取。通過(guò)上述分析可以看出,第一個(gè)字節(jié)數(shù)據(jù)的存取需要6個(gè)時(shí)鐘周期,其它255個(gè)字節(jié)數(shù)據(jù)的存儲(chǔ)各需要9個(gè)時(shí)鐘周期,那么存取一個(gè)宏塊數(shù)據(jù)即256字節(jié)總共需要用的時(shí)間為6+255×9=2301個(gè)時(shí)鐘周期。
從上述現(xiàn)有技術(shù)中可以看出,由于SDRAM控制器將同一個(gè)宏塊數(shù)據(jù)映射到SDRAM芯片中不同的行,導(dǎo)致對(duì)一個(gè)宏塊數(shù)據(jù)的寫(xiě)入或讀取時(shí)都需要增加SDRAM的precharge和active命令,將導(dǎo)致每讀取一字節(jié)數(shù)據(jù)至少90ns的訪問(wèn)延遲,大大降低了SDRAM存取圖像數(shù)據(jù)的速度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提出了一種針對(duì)圖像處理的SDRAM存取方法,用以提高SDRAM存取圖像數(shù)據(jù)的速度。
根據(jù)上述目的,本發(fā)明提供了一種針對(duì)圖像處理的SDRAM存取方法,在圖像處理過(guò)程中以圖像的數(shù)據(jù)塊為數(shù)據(jù)存取單位,該方法包括以下步驟A.SDRAM控制器接收到存取一個(gè)數(shù)據(jù)塊的請(qǐng)求后,根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息,所述地址信息包括SDRAM的片選信號(hào)、體信號(hào)、行地址信息和列地址信息,其中所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的片選信號(hào)、體信號(hào)和行地址信息相同;B.根據(jù)所述片選信號(hào)、體信號(hào)和行地址信息激活SDRAM中對(duì)應(yīng)的行;
C.SDRAM控制器發(fā)送存取命令和所述列地址信息;在步驟B所述的行中,選中所述列地址信息指示的列,并在所述列中存取所述數(shù)據(jù)塊中與所述列地址信息對(duì)應(yīng)的數(shù)據(jù)。
所述數(shù)據(jù)塊為宏塊或塊。
步驟A中所述根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息的步驟包括將所述虛擬地址中的高位地址映射為SDRAM的行地址,以及將虛擬地址中的低位地址映射為SDRAM的列地址。
較佳地,步驟A中所述根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息的步驟包括將所述虛擬地址中的高位地址與一位低位地址進(jìn)行運(yùn)算后映射為SDRAM的行地址,以及將虛擬地址中的低位地址映射為SDRAM的列地址。
步驟B包括SDRAM控制器發(fā)送激活active命令和片選信號(hào)、體信號(hào)和行地址信息;根據(jù)所述片選信號(hào)選中該片選信號(hào)指示的SDRAM芯片;在所述SDRAM芯片中根據(jù)體信號(hào)選中該體信號(hào)指示的體;在所述體中根據(jù)所述行地址信息激活該行地址信息指示的行。
步驟C中所述列地址信息為所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息;所述SDRAM控制器發(fā)送存取命令和所述列地址信息的步驟為SDRAM控制器依次發(fā)送存取命令和所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息。
較佳地,在步驟C中,SDRAM控制器依次連續(xù)地發(fā)送存取命令和所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息。
步驟C之前進(jìn)一步包括確定步驟A中所述列地址信息中第一個(gè)數(shù)據(jù)的列地址信息為起始列地址信息的步驟;步驟C中所述SDRAM控制器發(fā)送存取命令和所述列地址信息的步驟為SDRAM控制器發(fā)送存取命令和所述起始列地址信息;步驟C中所述選中所述列地址信息指示的列的步驟包括根據(jù)所述起始列地址信息和預(yù)先設(shè)定的突發(fā)burst模式確定burst模式的列地址信息,選中busrt模式的列地址信息指示的列。
在步驟C之后進(jìn)一步包括關(guān)閉步驟B中所述的行的步驟。
進(jìn)一步,SDRAM控制器通過(guò)發(fā)送預(yù)充電precharge命令關(guān)閉步驟B中所述的行。
從上述方案中可以看出,由于本發(fā)明將數(shù)據(jù)塊的數(shù)據(jù)映射到SDRAM的同一個(gè)行中,與現(xiàn)有技術(shù)相比,本發(fā)明在存取一個(gè)數(shù)據(jù)塊的數(shù)據(jù)時(shí)不需要多余的precharge、active命令,只需要一個(gè)write或read命令,減少了在存取數(shù)據(jù)時(shí)的訪問(wèn)延遲,從而提高了SDRAM存取圖像數(shù)據(jù)的速度,提高了圖像處理的效率。
圖1為宏塊在圖像幀中的示意圖;圖2為SDRAM芯片示意圖;圖3為現(xiàn)有技術(shù)中一個(gè)宏塊數(shù)據(jù)在SDRAM中的地址映射關(guān)系示意圖;圖4為現(xiàn)有技術(shù)中存儲(chǔ)一個(gè)宏塊數(shù)據(jù)的流程圖;圖5為現(xiàn)有技術(shù)中讀取一個(gè)宏塊數(shù)據(jù)的流程圖;圖6為根據(jù)現(xiàn)有技術(shù)存儲(chǔ)一個(gè)宏塊數(shù)據(jù)的時(shí)序圖;圖7為根據(jù)現(xiàn)有技術(shù)讀取一個(gè)宏塊數(shù)據(jù)的時(shí)序圖;圖8為本發(fā)明中一個(gè)宏塊數(shù)據(jù)在SDRAM中的地址映射關(guān)系示意圖;圖9為根據(jù)本發(fā)明存儲(chǔ)一個(gè)宏塊數(shù)據(jù)的流程圖;圖10為根據(jù)本發(fā)明讀取一個(gè)宏塊數(shù)據(jù)的流程圖;圖11為根據(jù)本發(fā)明存儲(chǔ)一個(gè)宏塊數(shù)據(jù)的時(shí)序圖;圖12為根據(jù)本發(fā)明讀取一個(gè)宏塊數(shù)據(jù)的時(shí)序圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下舉實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
參考圖8,本發(fā)明將一個(gè)宏塊數(shù)據(jù)全部映射在SDRAM芯片同一個(gè)體的同一行中。圖8中左邊所示的是宏塊A在從i行到i+15行在CPU虛擬內(nèi)存中分成16行,它們都存儲(chǔ)在圖8右邊所示的SDRAMbank0的一行中。
如圖9所示,本發(fā)明對(duì)于圖像幀中每一個(gè)宏塊存儲(chǔ)的流程如下步驟901,圖像處理程序需要存儲(chǔ)一個(gè)宏塊數(shù)據(jù)時(shí),處理器向SDRAM控制器發(fā)送存儲(chǔ)指令和一個(gè)宏塊數(shù)據(jù)以及該宏塊數(shù)據(jù)在處理器中的虛擬地址。
步驟902,SDRAM控制器接收到上述指令后,將該宏塊數(shù)據(jù)映射到SDRAM芯片中的一行,即產(chǎn)生該宏塊數(shù)據(jù)在SDRAM芯片中的地址,包括片選信號(hào)CS0、體信號(hào)bank0bank1、行地址信息row、列地址信息column,其中該宏塊所有數(shù)據(jù)的CS0、bank0bank1、row相同。
本發(fā)明的映射過(guò)程與現(xiàn)有技術(shù)不同,以現(xiàn)有技術(shù)中舉例的地址映射方法為例,本發(fā)明將處理器輸出的虛擬地址中的高位地址映射到SDRAM的行地址,低位地址映射到SDRAM頁(yè)面內(nèi)的列地址。由于一個(gè)宏塊在處理器中的虛擬地址僅在低位地址發(fā)生變化,經(jīng)過(guò)本發(fā)明的映射之后,行地址是相同的、而列地址是變化的,因此一個(gè)宏塊數(shù)據(jù)就被映射到了SDRAM的同一個(gè)行中。
由于目前SDRAM芯片的一行為512字節(jié)到4096字節(jié),遠(yuǎn)大于圖像處理中的一個(gè)宏塊的256字節(jié),因此在SDRAM芯片中的一行完全能夠存儲(chǔ)一個(gè)宏塊數(shù)據(jù)。
為了使得不同的宏塊映射到SDRAM芯片的不同行中,可以結(jié)合虛擬地址中的高位地址和低位地址產(chǎn)生行地址信息。還以上面的地址映射方法為例,將高位地址中的一位或多位與一位低位地址進(jìn)行“與”、“或”或者其它運(yùn)算后產(chǎn)生行地址信息,就能夠使得不同宏塊的行地址信息不同,從而將不同宏塊映射到不同的行。
步驟903,SDRAM控制器發(fā)送active命令和CS0、bank0bank1、row,根據(jù)地址信息中的CS0、bank0bank1和row選中CS0對(duì)應(yīng)的SDRAM芯片中bank0bank1對(duì)應(yīng)的bank,并激活與row地址對(duì)應(yīng)的行。
步驟904,SDRAM控制器發(fā)送write命令和A的column,在指定的bank和行中根據(jù)地址信息中的column選中相應(yīng)的列,并寫(xiě)入宏塊的第一個(gè)字節(jié)的數(shù)據(jù),即A。重復(fù)發(fā)送write命令和column,依次根據(jù)地址信息中的column選中相應(yīng)的列并寫(xiě)入一字節(jié)數(shù)據(jù),直到寫(xiě)入第A+255字節(jié)數(shù)據(jù)。
由于本發(fā)明中一個(gè)宏塊數(shù)據(jù)是存儲(chǔ)在同一個(gè)行中的,中間不需要precharge和active命令,并且后一個(gè)write命令可以在前一個(gè)write命令之后立即發(fā)出,即連續(xù)地發(fā)送write命令和列地址信息,那么在前一個(gè)write命令寫(xiě)入數(shù)據(jù)的下一個(gè)時(shí)鐘周期上升沿就可以寫(xiě)入下一個(gè)數(shù)據(jù),減少了寫(xiě)入兩個(gè)數(shù)據(jù)之間的延遲時(shí)間。
在本步驟中,還可以采用突發(fā)(burst)模式訪問(wèn)SDRAM,這種訪問(wèn)模式以訪問(wèn)指定的地址開(kāi)始,然后按照預(yù)先設(shè)定的方式定位其它的數(shù)據(jù)的地址。Burst模式訪問(wèn)順序主要由突發(fā)長(zhǎng)度(burst length)、突發(fā)類(lèi)型(burst type)和起始列地址所決定。突發(fā)長(zhǎng)度和突發(fā)類(lèi)型都是在SDRAM上電初始化時(shí)載入模式寄存器(mode register)的,這些參數(shù)是由廠商或者用戶(hù)定義的。其中突發(fā)類(lèi)型主要分為兩種連續(xù)存取(sequential)和交叉存取(interleaved);突發(fā)長(zhǎng)度決定了read或者write命令能夠訪問(wèn)的列地址的最大數(shù)目,對(duì)于sequential和interleaved這兩種突發(fā)類(lèi)型它們的突發(fā)長(zhǎng)度可以是1、2、4、8,另外全頁(yè)(full-page)突發(fā)模式僅僅適用于sequential類(lèi)型,全頁(yè)突發(fā)可以用突發(fā)終止(burst terminate)命令來(lái)產(chǎn)生任意的突發(fā)長(zhǎng)度。當(dāng)一個(gè)read或者write命令被發(fā)出之后,突發(fā)長(zhǎng)度就被選定了,以后的訪問(wèn)操作會(huì)以這個(gè)突發(fā)長(zhǎng)度為限進(jìn)行存取操作。
以全頁(yè)突發(fā)為例,在SDRAM上電初始化時(shí)載入模式寄存器的突發(fā)類(lèi)型和突發(fā)長(zhǎng)度分別為sequential和full-page,在本步驟中SDRAM控制器發(fā)送write命令和起始列地址,即該宏塊第一個(gè)數(shù)據(jù)的列地址,不妨設(shè)為n列,根據(jù)起始列地址n以及突發(fā)模式得出該宏塊數(shù)據(jù)在行中的列地址為n、n+1、...、n+256,在步驟903選中的行中根據(jù)上述列地址依次寫(xiě)入該宏塊的256個(gè)數(shù)據(jù)。在寫(xiě)入第256個(gè)數(shù)據(jù)時(shí),SDRAM控制器發(fā)送burst terminate命令,從而完成該宏塊的數(shù)據(jù)存儲(chǔ)。
步驟905,在完成寫(xiě)入該宏塊中A+255字節(jié)數(shù)據(jù)時(shí),SDRAM控制器發(fā)送precharge命令,使得當(dāng)前行失活,以便于進(jìn)行下面的存儲(chǔ)或讀取操作。
步驟906,結(jié)束當(dāng)前宏塊數(shù)據(jù)的存儲(chǔ)。
如圖10所示,本發(fā)明中每一個(gè)宏塊的讀取過(guò)程如下步驟1001,圖像處理程序需要讀取一個(gè)宏塊數(shù)據(jù)時(shí),處理器向SDRAM控制器發(fā)出讀取命令和該宏塊數(shù)據(jù)在處理器中的虛擬地址。
步驟1002,SDRAM控制器接收到上述請(qǐng)求后,根據(jù)該宏塊數(shù)據(jù)在處理器中的虛擬地址將該宏塊數(shù)據(jù)映射到SDRAM中的一行,并產(chǎn)生地址信息,包括片選信號(hào)CS0、體信號(hào)bank0bank1、行地址信息row、列地址信息column。其中的映射過(guò)程與本發(fā)明存儲(chǔ)一個(gè)宏塊數(shù)據(jù)時(shí)的映射過(guò)程相同。
步驟1003,SDRAM控制器發(fā)送active命令和CS0、bank0bank1、row,根據(jù)地址信息中的CS0、bank0bank1和row選中CS0對(duì)應(yīng)的SDRAM芯片中bank0bank1對(duì)應(yīng)的bank,并激活與row地址對(duì)應(yīng)的行。
步驟1004,SDRAM控制器發(fā)送read命令和A的column,在指定的bank和行中根據(jù)地址信息中的column選中相應(yīng)的列,并讀取該宏塊的第一個(gè)字節(jié)的數(shù)據(jù),即A。重復(fù)發(fā)送read命令及column,依次根據(jù)地址信息中的column選中相應(yīng)的列并讀取一字節(jié)數(shù)據(jù),直到讀取A+255字節(jié)數(shù)據(jù)。
同樣由于本發(fā)明中一個(gè)宏塊數(shù)據(jù)是存儲(chǔ)在同一個(gè)行中的,中間不需要precharge和active命令,后一個(gè)read命令可以在前一個(gè)read命令之后立即發(fā)出,即連續(xù)地發(fā)送read命令和列地址信息,那么在前一個(gè)read命令讀取數(shù)據(jù)的下一個(gè)時(shí)鐘周期上升沿就可以讀取下一個(gè)數(shù)據(jù),減少了讀取兩個(gè)數(shù)據(jù)之間的延遲時(shí)間。
在本步驟中同樣可以采用burst模式讀取該宏塊數(shù)據(jù),具體過(guò)程和寫(xiě)入時(shí)一樣,不同的是在寫(xiě)入時(shí)發(fā)送的是write命令,而在讀取時(shí)發(fā)送的是read命令。
步驟1005,在完成讀取該宏塊中A+255字節(jié)數(shù)據(jù)時(shí),SDRAM控制器發(fā)送precharge命令,使得當(dāng)前行失活,以便于進(jìn)行下面的存儲(chǔ)或讀取操作。
步驟1006,結(jié)束當(dāng)前宏塊數(shù)據(jù)的讀取。
參考圖11和圖12所示的本發(fā)明存儲(chǔ)和讀取數(shù)據(jù)的時(shí)序圖,圖中存取數(shù)據(jù)時(shí)采用連續(xù)發(fā)送write/read命令的方式。如圖所示,根據(jù)本發(fā)明存儲(chǔ)一個(gè)宏塊數(shù)據(jù)或者讀取一個(gè)宏塊數(shù)據(jù),在寫(xiě)入或讀取第一個(gè)數(shù)據(jù)時(shí)需要6個(gè)時(shí)鐘周期,而后面的255個(gè)各需要1個(gè)時(shí)鐘周期,存儲(chǔ)或讀取一個(gè)宏塊數(shù)據(jù)總共需要6+256=262個(gè)時(shí)鐘周期,不到現(xiàn)有技術(shù)230 1個(gè)時(shí)鐘周期的八分之一。
本發(fā)明也可以應(yīng)用在圖像處理中單位數(shù)據(jù)塊是塊(block)的情形,所述步驟與宏塊一樣,這里不再贅述。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種針對(duì)圖像處理的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器SDRAM存取方法,其特征在于,在圖像處理過(guò)程中以圖像的數(shù)據(jù)塊為數(shù)據(jù)存取單位,該方法包括以下步驟A.SDRAM控制器接收到存取一個(gè)數(shù)據(jù)塊的請(qǐng)求后,根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息,所述地址信息包括SDRAM的片選信號(hào)、體信號(hào)、行地址信息和列地址信息,其中所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的片選信號(hào)、體信號(hào)和行地址信息相同;B.根據(jù)所述片選信號(hào)、體信號(hào)和行地址信息激活SDRAM中對(duì)應(yīng)的行;C.SDRAM控制器發(fā)送存取命令和所述列地址信息;在步驟B所述的行中,選中所述列地址信息指示的列,并在所述列中存取所述數(shù)據(jù)塊中與所述列地址信息對(duì)應(yīng)的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)塊為宏塊或塊。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中所述根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息的步驟包括將所述虛擬地址中的高位地址映射為SDRAM的行地址,以及將虛擬地址中的低位地址映射為SDRAM的列地址。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中所述根據(jù)請(qǐng)求中所述數(shù)據(jù)塊在處理器中的虛擬地址產(chǎn)生所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息的步驟包括將所述虛擬地址中的高位地址與一位低位地址進(jìn)行運(yùn)算后映射為SDRAM的行地址,以及將虛擬地址中的低位地址映射為SDRAM的列地址。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟B包括SDRAM控制器發(fā)送激活active命令和片選信號(hào)、體信號(hào)和行地址信息;根據(jù)所述片選信號(hào)選中該片選信號(hào)指示的SDRAM芯片;在所述SDRAM芯片中根據(jù)體信號(hào)選中該體信號(hào)指示的體;在所述體中根據(jù)所述行地址信息激活該行地址信息指示的行。
6.根據(jù)權(quán)利要求1、3、4之一所述的方法,其特征在于,步驟C中所述列地址信息為所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息;所述SDRAM控制器發(fā)送存取命令和所述列地址信息的步驟為SDRAM控制器依次發(fā)送存取命令和所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在步驟C中,SDRAM控制器依次連續(xù)地發(fā)送存取命令和所述數(shù)據(jù)塊中各個(gè)數(shù)據(jù)的列地址信息。
8.根據(jù)權(quán)利要求1、3、4之一所述的方法,其特征在于,步驟C之前進(jìn)一步包括確定步驟A中所述列地址信息中第一個(gè)數(shù)據(jù)的列地址信息為起始列地址信息的步驟;步驟C中所述SDRAM控制器發(fā)送存取命令和所述列地址信息的步驟為SDRAM控制器發(fā)送存取命令和所述起始列地址信息;步驟C中所述選中所述列地址信息指示的列的步驟包括根據(jù)所述起始列地址信息和預(yù)先設(shè)定的突發(fā)burst模式確定burst模式的列地址信息,選中busrt模式的列地址信息指示的列。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟C之后進(jìn)一步包括關(guān)閉步驟B中所述的行的步驟。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,SDRAM控制器通過(guò)發(fā)送預(yù)充電precharge命令關(guān)閉步驟B中所述的行。
全文摘要
本發(fā)明公開(kāi)了一種針對(duì)圖像處理的SDRAM存取方法,該方法包括以下步驟SDRAM控制器接收到存取一個(gè)數(shù)據(jù)塊的請(qǐng)求后,產(chǎn)生數(shù)據(jù)塊中各個(gè)數(shù)據(jù)在SDRAM中的地址信息,所述地址信息包括片選信號(hào)、體信號(hào)、行地址信息和列地址信息,其中各個(gè)數(shù)據(jù)的片選信號(hào)、體信號(hào)和行地址信息相同;根據(jù)所述片選信號(hào)、體信號(hào)和行地址信息激活SDRAM中對(duì)應(yīng)的行;在步驟B所述的行中依次根據(jù)所述列地址信息選中所述列地址信息指示的列并存取所述數(shù)據(jù)塊的各個(gè)數(shù)據(jù)。由于本發(fā)明將一個(gè)數(shù)據(jù)塊的數(shù)據(jù)映射到SDRAM芯片中的同一行,在讀取或?qū)懭朐摂?shù)據(jù)塊的數(shù)據(jù)時(shí),不需要多余的預(yù)充電和激活命令,減少了訪問(wèn)SDRAM的延時(shí)時(shí)間,提高了數(shù)據(jù)存取的速度。
文檔編號(hào)G06F12/00GK1674151SQ200510056888
公開(kāi)日2005年9月28日 申請(qǐng)日期2005年3月28日 優(yōu)先權(quán)日2005年3月28日
發(fā)明者白鋒 申請(qǐng)人:北京中星微電子有限公司