專利名稱:實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置和方法
實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置和方法技術(shù)領(lǐng)域:
本發(fā)明涉及一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法和裝置。背景技術(shù):
隨著技術(shù)的發(fā)展,用戶界面和圖像特效越來(lái)越絢麗,其對(duì)應(yīng)所需要的圖像素材也越來(lái)越多,這些圖像素材的特點(diǎn)是圖像小而多,造成了在處理和顯示特效時(shí),素材圖像占用了大量的存儲(chǔ)空間。如果能盡量的減少這些圖像的存儲(chǔ)空間,將是非常有意義的。
目前的存儲(chǔ)方式是當(dāng)圖像數(shù)據(jù)寬度不是word (計(jì)算機(jī)數(shù)據(jù)單位”字”,等于32bit) 的整數(shù)倍的時(shí)候,會(huì)將一行中最后一個(gè)word中無(wú)效的部分使用無(wú)效數(shù)據(jù)填充,下一行的數(shù)據(jù)重新從word對(duì)齊的地址開始存儲(chǔ),這種存儲(chǔ)方式處理簡(jiǎn)單,但是圖像存儲(chǔ)空間中的無(wú)效數(shù)據(jù)會(huì)浪費(fèi)存儲(chǔ)資源。
如圖1所示,若需存儲(chǔ)寬度為14byte(8bit就稱為一個(gè)字節(jié)(Byte))的圖象數(shù)據(jù), 首先從0x0的地址寫數(shù)據(jù),寫到14byte的位置時(shí),最后兩個(gè)byte使用無(wú)效數(shù)據(jù)填充,下一行的數(shù)據(jù)重新從word對(duì)齊的地址0x10的地址開始存儲(chǔ)下一個(gè)14byte的圖象數(shù)據(jù),同樣, 當(dāng)寫14byte的位置時(shí),最后兩個(gè)byte使用無(wú)效數(shù)據(jù)填充,依次類推,每個(gè)line最后兩個(gè) byte都是使用無(wú)效數(shù)據(jù)填充,造成大量的存儲(chǔ)空間浪費(fèi)。
再如圖2所示,若需存儲(chǔ)寬度為13byte的圖象數(shù)據(jù),首先從0x0的地址寫數(shù)據(jù),寫到13byte的位置時(shí),最后3個(gè)byte使用無(wú)效數(shù)據(jù)填充,下一行的數(shù)據(jù)重新從word對(duì)齊的地址0x10的地址開始存儲(chǔ)下一個(gè)13byte的圖象數(shù)據(jù),同樣,當(dāng)寫13byte的位置時(shí),最后兩個(gè)byte使用無(wú)效數(shù)據(jù)填充,依次類推,每個(gè)line最后3個(gè)byte都是使用無(wú)效數(shù)據(jù)填充,造成大量的存儲(chǔ)空間浪費(fèi)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題之一,在于提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置,在圖像數(shù)據(jù)寬度不是word的整數(shù)倍的時(shí)候,會(huì)將一行最后幾個(gè)像素和下一行的開始像素?cái)?shù)據(jù)存儲(chǔ)于一個(gè)word中,這樣會(huì)節(jié)省圖像的取巧存儲(chǔ)空間,特別是在大量的小圖片需要存儲(chǔ)的時(shí)候,可以節(jié)省大量的存儲(chǔ)資源。
本發(fā)明是通過(guò)下述技術(shù)方案解決上述技術(shù)問(wèn)題的一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置,其特征在于包括依次連接的行緩存單元、寫數(shù)據(jù)準(zhǔn)備單元以及寫控制單元;所述行緩存單元還與外部電路的圖像采集或者處理電路連接,所述寫控制單元還與外部電路的圖像存儲(chǔ)單元連接;
所述圖像存儲(chǔ)單元負(fù)責(zé)存儲(chǔ)緊湊存儲(chǔ)的圖像數(shù)據(jù);
所述圖像采集或者處理電路負(fù)責(zé)產(chǎn)生需要存儲(chǔ)的圖像數(shù)據(jù),將圖像數(shù)據(jù)存入行緩存單元中;
所述寫控制單元負(fù)責(zé)運(yùn)算每次寫動(dòng)作的地址,按照存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令,并從寫數(shù)據(jù)準(zhǔn)備單元取寫數(shù)據(jù)寫到圖像存儲(chǔ)單元中;
所述寫數(shù)據(jù)準(zhǔn)備單元負(fù)責(zé)檢測(cè)行緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,寫操作行緩存數(shù)據(jù)進(jìn)行整合后交給寫控制單元寫到圖像存儲(chǔ)單元中,同時(shí)計(jì)算寫字節(jié)有效位并將其送往寫操作單元;
所述行緩存單元包含兩行或者兩行以上的圖像數(shù)據(jù)存儲(chǔ)空間,當(dāng)有一行的行緩存數(shù)據(jù)被外部的圖像采集或者處理電路填滿后該行緩存變?yōu)橛行顟B(tài),所述寫數(shù)據(jù)準(zhǔn)備單元檢測(cè)到有行緩存狀態(tài)為有效時(shí),就開始一行的寫操作,當(dāng)全部行緩存都有無(wú)效時(shí),寫控制單元暫停工作并等待行緩存狀態(tài)變?yōu)橛行?,等任意一個(gè)行緩存狀態(tài)變?yōu)橛行Ш?,開始新一行的寫操作。
本發(fā)明要解決的技術(shù)問(wèn)題之二,在于提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,在圖像數(shù)據(jù)寬度不是word的整數(shù)倍的時(shí)候,會(huì)將一行最后幾個(gè)像素和下一行的開始像素?cái)?shù)據(jù)存儲(chǔ)于一個(gè)word中,這樣會(huì)節(jié)省圖像的取巧存儲(chǔ)空間,特別是在大量的小圖片需要存儲(chǔ)的時(shí)候,可以節(jié)省大量的存儲(chǔ)資源。
本發(fā)明是通過(guò)下述技術(shù)方案解決上述技術(shù)問(wèn)題的一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,包括如下步驟
步驟1、開始,首先由一圖像采集或者處理電路負(fù)責(zé)產(chǎn)生需要存儲(chǔ)的圖像數(shù)據(jù),將圖像數(shù)據(jù)存入復(fù)數(shù)個(gè)行緩存單元中;
步驟2、寫數(shù)據(jù)準(zhǔn)備單元開始檢測(cè)行復(fù)數(shù)個(gè)行緩存單元的緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,進(jìn)入步驟3,否則繼續(xù)檢測(cè);
步驟3、寫數(shù)據(jù)準(zhǔn)備單元不斷寫操作有效的行緩存單元中的圖像數(shù)據(jù),再根據(jù)寫目標(biāo)地址的word對(duì)齊情況,進(jìn)行整合成1個(gè)word的寫數(shù)據(jù)送往一寫控制單元;
步驟4、寫控制單元運(yùn)算每次寫動(dòng)作的地址,按照一圖像存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令,并從寫數(shù)據(jù)準(zhǔn)備單元得到寫數(shù)據(jù),并將其寫到圖像存儲(chǔ)單元中的目標(biāo)地址,每次寫操作寬度為4字節(jié),直到整行數(shù)據(jù)被寫到目標(biāo)地址;
步驟5、不斷循環(huán)步驟2 4,直到圖像所有行都被寫到圖像存儲(chǔ)單元的目標(biāo)地址中。
本發(fā)明具有如下優(yōu)點(diǎn)本發(fā)明的控制方法和控制裝置是在圖像數(shù)據(jù)寬度不是 word的整數(shù)倍的時(shí)候,會(huì)將一行最后幾個(gè)像素和下一行的開始像素?cái)?shù)據(jù)存儲(chǔ)于一個(gè)word 中,這樣會(huì)節(jié)省圖像的存儲(chǔ)空間,特別是在大量的小圖片需要存儲(chǔ)的時(shí)候,可以節(jié)省大量的存儲(chǔ)資源;控制方法思路清晰,便于控制裝置硬件電路實(shí)現(xiàn);控制裝置配置方便,對(duì)外接口友好,方便外部顯示或者處理電路使用。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
圖1為現(xiàn)有技術(shù)中一示例的圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu)示意圖。
圖2為現(xiàn)有技術(shù)中另一示例的圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu)示意圖。
圖3為本發(fā)明一實(shí)施例的圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu)示意圖。
圖4為本發(fā)明另一實(shí)施例的圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu)示意圖。
圖5為本發(fā)明存儲(chǔ)控制裝置結(jié)構(gòu)示意圖。
圖6為本發(fā)明存儲(chǔ)控制方法流程框圖。
圖7為本發(fā)明再一實(shí)施例的圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu)示意圖。
圖8為圖7實(shí)施例的寫操作過(guò)程步驟分解狀態(tài)的存儲(chǔ)結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)結(jié)構(gòu),在圖像數(shù)據(jù)寬度不是word 的整數(shù)倍的時(shí)候,會(huì)將一行最后幾個(gè)像素和下一行的開始像素?cái)?shù)據(jù)存儲(chǔ)于一個(gè)word中,這樣會(huì)節(jié)省圖像的取巧存儲(chǔ)空間,特別是在大量的小圖片需要存儲(chǔ)的時(shí)候,可以節(jié)省大量的存儲(chǔ)資源。
如圖3所示,若需存儲(chǔ)寬度為14byte的圖象數(shù)據(jù),首先從0x0的地址寫數(shù)據(jù),寫到 14byte的位置時(shí),最后兩個(gè)byte使用下一行的數(shù)據(jù)填充,即下一行的數(shù)據(jù)從地址Oxc的地址開始存儲(chǔ)下一個(gè)Hbyte的圖象數(shù)據(jù),同樣,當(dāng)寫14byte的位置時(shí),最后4個(gè)byte使用下一行的數(shù)據(jù)填充,依次類推,沒(méi)有存儲(chǔ)空間浪費(fèi),可以節(jié)省大量的存儲(chǔ)資源。
再如圖4所示,若需存儲(chǔ)寬度為13byte的圖象數(shù)據(jù),首先從0x0的地址寫數(shù)據(jù),寫到13byte的位置時(shí),最后3個(gè)byte使用下一行的數(shù)據(jù)填充,即下一行的數(shù)據(jù)從地址Oxd的地址開始存儲(chǔ)下一個(gè)13byte的圖象數(shù)據(jù),同樣,當(dāng)寫13byte的位置時(shí),最后2個(gè)byte使用下一行的數(shù)據(jù)填充,依次類推,沒(méi)有存儲(chǔ)空間浪費(fèi),可以節(jié)省大量的存儲(chǔ)資源。
結(jié)合圖5至圖8,詳細(xì)介紹本發(fā)明控制方法。
首先如圖5所示,本發(fā)明提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置,包括依次連接的行緩存單元、寫數(shù)據(jù)準(zhǔn)備單元以及寫控制單元;所述行緩存單元還與外部電路的圖像采集或者處理電路連接,所述寫控制單元還與外部電路的圖像存儲(chǔ)單元連接;。
所述圖像存儲(chǔ)單元負(fù)責(zé)存儲(chǔ)緊湊存儲(chǔ)的圖像數(shù)據(jù);
所述圖像采集或者處理電路負(fù)責(zé)產(chǎn)生需要存儲(chǔ)的圖像數(shù)據(jù),將圖像數(shù)據(jù)存入行緩存單元中;
所述寫控制單元負(fù)責(zé)運(yùn)算每次寫動(dòng)作的地址,按照存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令,并從寫數(shù)據(jù)準(zhǔn)備單元取寫數(shù)據(jù)寫到圖像存儲(chǔ)單元中;
所述寫數(shù)據(jù)準(zhǔn)備單元負(fù)責(zé)檢測(cè)行緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,寫操作行緩存數(shù)據(jù)進(jìn)行整合后交給寫控制單元寫到圖像存儲(chǔ)單元中,同時(shí)計(jì)算寫字節(jié)有效位并將其送往寫操作單元;
所述行緩存單元包含兩行或者兩行以上的圖像數(shù)據(jù)存儲(chǔ)空間,當(dāng)有一行的行緩存數(shù)據(jù)被外部的圖像采集或者處理電路填滿后該行緩存變?yōu)橛行顟B(tài),所述寫數(shù)據(jù)準(zhǔn)備單元檢測(cè)到有行緩存狀態(tài)為有效時(shí),就開始一行的寫操作,當(dāng)全部行緩存都有無(wú)效時(shí),寫控制單元暫停工作并等待行緩存狀態(tài)變?yōu)橛行В热我庖粋€(gè)行緩存狀態(tài)變?yōu)橛行Ш?,開始新一行的寫操作。
再如圖6所示,本發(fā)明再提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,可以采用上述的存儲(chǔ)控制裝置進(jìn)行控制,具體包括如下步驟
步驟1、開始,所述的存儲(chǔ)控制裝置開始工作。
步驟2、寫數(shù)據(jù)準(zhǔn)備單元開始檢測(cè)行緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,進(jìn)入步驟3,否則繼續(xù)檢測(cè);
其中,行緩存的有效狀態(tài)由圖像采集或者處理電路決定,當(dāng)圖像采集或者處理電路向行緩存單元中任意一個(gè)行緩存填充圖像數(shù)據(jù)達(dá)到一行圖像數(shù)據(jù)時(shí),該行的狀態(tài)會(huì)自動(dòng)變?yōu)橛行?,?dāng)一行圖像數(shù)據(jù)寫操作完畢,對(duì)應(yīng)的行緩存狀態(tài)會(huì)被置為無(wú)效。
步驟3、寫數(shù)據(jù)準(zhǔn)備單元不斷寫操作有效的行緩存中的圖像數(shù)據(jù),再根據(jù)寫目標(biāo)地址進(jìn)行整合出1個(gè)word的寫數(shù)據(jù)送往寫控制單元;其規(guī)則是寫數(shù)據(jù)準(zhǔn)備單元根據(jù)寫目標(biāo)地址word對(duì)齊的情況,從行緩存單元讀取需要的數(shù)據(jù),如果寫目標(biāo)地址word對(duì)齊,則讀完整的一個(gè)word數(shù)據(jù),否則根據(jù)不對(duì)齊情況讀取所需字節(jié)數(shù)據(jù)結(jié)合無(wú)效數(shù)據(jù)成為一個(gè)完整的word數(shù)據(jù)送往寫控制單元。比如目標(biāo)地址為Oxl對(duì)word取整余1,則從行緩存取3個(gè)字節(jié)有效數(shù)據(jù)結(jié)合1個(gè)字節(jié)無(wú)效數(shù)據(jù)成為1個(gè)完整word送往寫控制單元。
步驟4、寫控制單元運(yùn)算每次寫動(dòng)作的地址,按照存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令, 并從寫數(shù)據(jù)準(zhǔn)備單元得到寫數(shù)據(jù),并將其寫到圖像存儲(chǔ)單元中的目標(biāo)地址,每次寫操作寬度為4字節(jié),直到整行數(shù)據(jù)被寫到目標(biāo)地址。其規(guī)則是寫控制單元從起始目標(biāo)地址開始寫動(dòng)作,每次寫操作的數(shù)據(jù)為1個(gè)word,當(dāng)目標(biāo)地址不是word對(duì)齊時(shí),對(duì)每行的第一個(gè)和最后一個(gè)word數(shù)據(jù)只需要部分寫入,所以在每行的第一個(gè)和最后一個(gè)word操作中通過(guò)寫字節(jié)控制位來(lái)控制word中4個(gè)字節(jié)的是否寫入,在每行數(shù)據(jù)的操作中,每次寫操作地址累加1 個(gè)word,在寫完一行之后,寫地址跳轉(zhuǎn)到下一行繼續(xù)開始,由于數(shù)據(jù)位寬為1個(gè)word,存儲(chǔ)器支持word對(duì)齊的4個(gè)寫字節(jié)控制位來(lái)控制每個(gè)字節(jié)的寫操作,所以每次寫操作的地址都會(huì)被寫控制單元自動(dòng)word對(duì)齊。
步驟5、不斷循環(huán)步驟2 4,直到圖像所有行都被寫到圖像存儲(chǔ)單元的目標(biāo)地址中。
現(xiàn)在具體介紹一下每次word的寫操作地址的運(yùn)算方法,以及寫控制方法。
1、首先介紹需要用到的三個(gè)變量
三個(gè)變量分另Ij為 line_align、next_line_start_addr 禾口 line_count ;
line_align 用于表示當(dāng)前操作行的目標(biāo)地址的word對(duì)齊情況;line_align是一個(gè)累加量,是每行數(shù)據(jù)量(每行像素個(gè)數(shù)X每個(gè)像素字節(jié)數(shù))除以一個(gè)word的余數(shù)值的累加,初始值為圖像目標(biāo)存儲(chǔ)地址除以word的字節(jié)余數(shù),比如line_align初始值為0,第一行圖像寬度14字節(jié)除以WorcK4字節(jié))余2字節(jié),則第一行的line_align = 2,這說(shuō)明第一行最后一個(gè)word中低兩個(gè)字節(jié)是第一行數(shù)據(jù),剩余部分為下一行的數(shù)據(jù);line_align在每行第一個(gè)word寫完后更新。
next_line_start_addr 用于記錄下一行的起始地址;其初始值等于圖像目標(biāo)存儲(chǔ)地址,之后每計(jì)算完一行,next_line_start_addr就進(jìn)行一次累加,計(jì)算方法為next_ line_start_addr = next_line_start_addr+每行像素個(gè)數(shù)X每個(gè)像素占字節(jié)數(shù);該變量在每行最后一個(gè)word寫完后更新。
line_count 用于統(tǒng)計(jì)本行已經(jīng)寫了多少字節(jié)數(shù)據(jù);line_COunt初始值為0,在每行開始寫操作后,用于計(jì)算已經(jīng)寫出去的字節(jié)數(shù),可以用作判斷哪一次寫動(dòng)作為本行的最后一個(gè)word寫,當(dāng)每行的字節(jié)數(shù)減line_COimt得到的差值小于等于4個(gè)字節(jié)時(shí),可以確定下一次寫動(dòng)作為本行的最后一個(gè)word寫;line_COimt在每行寫動(dòng)作結(jié)束后清零。
2、如何判斷是否已經(jīng)寫到一行中的最后一個(gè)word,可采用下述方法進(jìn)行
1) line_count 初始值為 0 ;
2)在每行第一個(gè)word寫操作時(shí),line_count累加值計(jì)算為line_count = line_count+G-line_align),在每行第一個(gè)和最后一個(gè)word寫操作之間的每次寫操作,line_ count都累加4,而判斷每行最后一個(gè)word的寫操作方法就是當(dāng)每行的字節(jié)數(shù)減line_ count得到的差值小于等于4個(gè)字節(jié)時(shí),可以確定下一次寫數(shù)為本行的最后一個(gè)word寫操作;寫操作完每行最后一個(gè)word后,line_count自動(dòng)清零;
3、控制寫操作地址的具體流程
a)next_line_start_addr初始值等于圖像存儲(chǔ)目標(biāo)地址;
b)第一次word寫操作,寫操作地址為neXt_line_Start_addr的初始值(圖像存儲(chǔ)目標(biāo)地址),之后第一行的每次word寫操作,都在next_line_Start_addr基礎(chǔ)上加一個(gè)word偏移量,直到第一行最后一個(gè)word ;在第一行最后一個(gè)word寫操作完畢后,next_ 1 ine_start_addr 進(jìn)行更新,計(jì)算方法為 next_line_start_addr = next_line_start_ addr+每行像素個(gè)數(shù)X每個(gè)像素占字節(jié)數(shù);然后,下一行的第一個(gè)寫操作地址又從新的 next_l ine_start_addr開始,每次一個(gè)word偏移量累加,直到下一行寫完,next_l ine_ start_addr再更新,如此循環(huán)直到圖像寫操作完畢;
c)將每次最終輸出的寫操作地址對(duì)4取整后輸出,這是由于一次寫操作數(shù)據(jù)寬度為1個(gè)word,所以最終輸出的寫操作地址需要對(duì)4取整。
4、寫數(shù)據(jù)準(zhǔn)備單元如何控制從行緩存讀數(shù)據(jù)和整合寫數(shù)據(jù)和計(jì)算寫字節(jié)有效位
(1) line_align初始值為圖像存儲(chǔ)目標(biāo)地址除以word的字節(jié)余數(shù);
(2) line_align在每行第一個(gè)word寫操作完后更新,更新算法為line_align = (line_align+每行圖像數(shù)據(jù)字節(jié)數(shù)% 4) % 4,算式中%為取余符號(hào);
(3)每行的第一次word寫操作,需要根據(jù)line_align的值來(lái)判斷從行緩存中讀取多少字節(jié)來(lái)作word數(shù)據(jù)整合,從行緩存中讀取的字節(jié)數(shù)為從行緩存起始點(diǎn)開始的 (4-line_align)字節(jié),再在低位加上line_align個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而整合出1個(gè) word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效。比如第一行第一個(gè)word的line_align為0,則從行緩存中讀取起始點(diǎn)開始的4個(gè)字節(jié)數(shù)據(jù),然后把這四個(gè)字節(jié)數(shù)據(jù)作為一個(gè)word寫數(shù)據(jù)傳給寫控制單元,寫字節(jié)有效位位二進(jìn)制1111 ;如果line_align為1則從行緩存中讀取起始點(diǎn)開始的3個(gè)字節(jié)數(shù)據(jù),然后將3字節(jié)作為高位數(shù)據(jù),再拼上低位1個(gè)字節(jié)的任意無(wú)效數(shù)據(jù)成為一個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫字節(jié)有效位為二進(jìn)制1110 ;
(4)每行第一個(gè)word后,最后一個(gè)word前的每次行緩存讀取,都是直接在上一次讀取的基礎(chǔ)上再向后讀取4個(gè)字節(jié),并將這4個(gè)字節(jié)作為寫數(shù)據(jù)送往寫操作單元,寫字節(jié)有效位都為二進(jìn)制1111 ;
(5)最后一個(gè)word時(shí),如果Iinejlign為0則從行緩存讀取4個(gè)字節(jié)數(shù)據(jù)并作為寫數(shù)據(jù)送到寫操作單元;如果不為0,則從行緩存讀取line_align個(gè)字節(jié)數(shù)據(jù),并將這 line_align個(gè)數(shù)據(jù)作為低位,整合上(4-line_align)個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為Ifword 數(shù)據(jù)送往寫操作單元,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效,比如line_align為1則從行緩存讀取1個(gè)字節(jié)數(shù)據(jù),并將這1個(gè)數(shù)據(jù)作為低位,整合上高位3個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word數(shù)據(jù)送往寫操作單元,寫字節(jié)有效位為二進(jìn)制0001。
其中,寫字節(jié)有效位指這樣的一個(gè)數(shù)據(jù),該數(shù)據(jù)的每個(gè)比特對(duì)應(yīng)于寫數(shù)據(jù)中的各個(gè)字節(jié),0表示該字節(jié)寫無(wú)效,也就是不將該字節(jié)寫入存儲(chǔ)器,1表示該字節(jié)寫有效,也就是將該字節(jié)寫入存儲(chǔ)器;對(duì)于32比特位寬,寫字節(jié)有效位為4比特,對(duì)應(yīng)于寫數(shù)據(jù)中的4個(gè)字節(jié)的寫有效控制。比如寫數(shù)據(jù)為0x4321,寫字節(jié)有效位為2比特二進(jìn)制數(shù)0011,目標(biāo)地址的數(shù)據(jù)為0x00000000,則寫數(shù)據(jù)經(jīng)過(guò)寫字節(jié)有效位控制寫入后,寫數(shù)據(jù)的低2字節(jié)被寫入目標(biāo)地址,則寫動(dòng)作完成后目標(biāo)地址0x00000000的數(shù)據(jù)變?yōu)?x0021。
請(qǐng)重點(diǎn)參考圖7和圖8,下面詳細(xì)介紹一具體操作示例
該具體操作示例是以一個(gè)圖像寬度為10字節(jié)為例,期望將圖像以緊湊形式寫到起始目標(biāo)地址為Oxl的存儲(chǔ)空間中。
具體操作如圖7所示,圖7中寫數(shù)據(jù)4個(gè)字節(jié)中左邊為低位數(shù)據(jù),右邊為高位數(shù)據(jù)。其最終期望的存儲(chǔ)在圖像存儲(chǔ)單元中前兩行和第三行前3個(gè)字節(jié)緊湊存儲(chǔ)的圖像數(shù)據(jù)存放方式。
一開始,由寫數(shù)據(jù)準(zhǔn)備單元檢測(cè)行緩存狀態(tài),如果沒(méi)有行緩存狀態(tài)為有效,則沒(méi)有寫操作,當(dāng)外部圖像采集或者處理電路將行緩存填充滿后行緩存狀態(tài)變?yōu)橛行?,寫?shù)據(jù)準(zhǔn)備單元檢測(cè)到后,如圖8所示,開始寫操作
第1 次寫操作,line_align 等于起始地址% 4 = 1,next_line_start_addr 等于 0x1,寫地址為next_line_start_addr對(duì)4取整為0x0。由于是一行中的第一個(gè)word寫操作,line_count累加值為(4_line_align),所以line_count累加后為3。每行的第一次 word寫操作,需要根據(jù)line_align的值來(lái)判斷從行緩存中讀取多少字節(jié)來(lái)做word數(shù)據(jù)拼湊,從行緩存中讀取的字節(jié)數(shù)為從行緩存起始點(diǎn)開始的G-line_align)字節(jié),再在低位加上line_align個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效,所以第一次操作讀取行緩存中起始點(diǎn)開始的3字節(jié),再在低位加上1個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1110。
第2次寫操作,寫地址時(shí)在前一寫地址基礎(chǔ)上加4等于0x4,next_line_start_ addr等于1,line_align在每行第一個(gè)word寫操作完后更新,更新算法為
line_align = (line_align+每行圖像數(shù)據(jù)字節(jié)數(shù)% 4) % 4,所以 line_align = (1+10% 4)% 4 = 3, line_count累加4等于7。因?yàn)椴皇潜拘械牡谝粋€(gè)word或者最后一個(gè)word,所以讀數(shù)據(jù)準(zhǔn)備單元讀取行緩存中上一次讀取結(jié)束點(diǎn)開始的4字節(jié),并將這1個(gè) word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1111。
第3次寫操作,line_align等于3,寫地址在前一寫地址基礎(chǔ)上加4等于0x8。由于每行的字節(jié)數(shù)10減line_C0Unt值7得到的差值3小于4個(gè)字節(jié),所以判定當(dāng)前word為本行最后一個(gè)寫數(shù)據(jù),并且line_COunt在本次寫操作完畢后清零。最后一個(gè)word時(shí),如果line_align為0則從行緩存讀取4個(gè)字節(jié)數(shù)據(jù)并作為寫數(shù)據(jù)送到寫操作單元;如果不為0,則從行緩存讀取line_align個(gè)字節(jié)數(shù)據(jù),并將這line_align個(gè)數(shù)據(jù)作為低位,拼湊上 (4-line_align)個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word數(shù)據(jù)送往寫操作單元。寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效。因?yàn)榇藭r(shí)line_ align為3,所以從行緩存讀取3個(gè)字節(jié)數(shù)據(jù),并將這3個(gè)數(shù)據(jù)作為低位,拼湊上1個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word數(shù)據(jù)送往寫操作單元。寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制0111,此時(shí),第一行數(shù)據(jù)寫操作完畢。next_line_start_addr在本行結(jié)束后更新,next_line_start_ addr = 1+10 = 11(16 進(jìn)制為 Oxb)。
此時(shí),寫數(shù)據(jù)準(zhǔn)備單元繼續(xù)開始檢測(cè)行緩存狀態(tài),如果沒(méi)有行緩存狀態(tài)為有效,則沒(méi)有寫操作。當(dāng)外部圖像采集或者處理電路將行緩存填充滿后行緩存狀態(tài)變?yōu)橛行В瑢憯?shù)據(jù)準(zhǔn)備單元檢測(cè)到后,繼續(xù)開始寫操作。
第4 次寫操作,line_align 等于 3,next_line_start_addr 等于 Oxb,寫地址等于 next_line_start_addr 對(duì) 4 取整,也就是 0x8。line_count 累加值為 G_line_align),等于 1。每行的第一次word寫操作,需要根據(jù)line_align的值來(lái)判斷從行緩存中讀取多少字節(jié)來(lái)做word數(shù)據(jù)拼湊,從行緩存中讀取的字節(jié)數(shù)為從行緩存起始點(diǎn)開始的(4-line_align) 字節(jié),再在低位加上line_align個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效。所以第一次操作讀取行緩存中起始點(diǎn)開始的1字節(jié),再在低位加上3個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作, 寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1000。
第5次寫操作,寫地址在前一寫地址基礎(chǔ)上加4等于Oxc,next_line_start_addr 等于Oxb,line_align在每行第一個(gè)word寫操作完后更新,更新算法為
line_align = (line_align+每行圖像數(shù)據(jù)字節(jié)數(shù)% 4) % 4,所以 line_align = (3+10% 4)%4 = l,line_count累加4等于5,因?yàn)椴皇潜拘械牡谝粋€(gè)word或者最后一個(gè) word,所以讀數(shù)據(jù)準(zhǔn)備單元讀取行緩存中上一次讀取結(jié)束點(diǎn)開始的4字節(jié),并將這1個(gè)word 的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1111。
第6次寫操作,寫地址在前一寫地址基礎(chǔ)上加4等于0xl0,next_line_start_addr 等于0xb,line_align等于1。line_count累加4等于9.因?yàn)椴皇潜拘械牡谝粋€(gè)word或者最后一個(gè)word,所以讀數(shù)據(jù)準(zhǔn)備單元讀取行緩存中上一次讀取結(jié)束點(diǎn)開始的4字節(jié),并將這1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1111。
第7次寫操作,line_align等于1,寫地址在前一寫地址基礎(chǔ)上加4等于0x14。 由于每行的字節(jié)數(shù)10減line_C0Unt值9得到的差值1小于4個(gè)字節(jié),所以判定當(dāng)前word 為本行最后一個(gè)寫數(shù)據(jù),并且line_COunt在本次寫操作完畢后清零。最后一個(gè)word時(shí), 如果line_align為0則從行緩存讀取4個(gè)字節(jié)數(shù)據(jù)并作為寫數(shù)據(jù)送到寫操作單元;如果不為0,則從行緩存讀取line_align個(gè)字節(jié)數(shù)據(jù),并將這line_align個(gè)數(shù)據(jù)作為低位,拼湊上(4-line_align)個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word數(shù)據(jù)送往寫操作單元。寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效.因?yàn)榇藭r(shí)line_align為1,所以從行緩存讀取1個(gè)字節(jié)數(shù)據(jù),并將這1個(gè)數(shù)據(jù)作為低位,拼湊上3 個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word數(shù)據(jù)送往寫操作單元。寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制0001。此時(shí),第二行數(shù)據(jù)寫操作完畢.next_line_start_addr在本行結(jié)束后更新,next_ line_start_addr = 11+10 = 21 (16 進(jìn)制為 0x15)。
此時(shí),寫數(shù)據(jù)準(zhǔn)備單元繼續(xù)開始檢測(cè)行緩存狀態(tài),如果沒(méi)有行緩存狀態(tài)為有效,則沒(méi)有寫操作.當(dāng)外部圖像采集或者處理電路將行緩存填充滿后行緩存狀態(tài)變?yōu)橛行В瑢憯?shù)據(jù)準(zhǔn)備單元檢測(cè)到后,繼續(xù)開始寫操作。
第8 次寫操作,line_align 等于 1,next_line_start_addr 等于 0x15,寫地址等于 next_line_start_addr 對(duì) 4 取整,也就是 0x14. line_count 累力口值為(4_line_align), 等于3。每行的第一次word寫操作,需要根據(jù)line_align的值來(lái)判斷從行緩存中讀取多少字節(jié)來(lái)做word數(shù)據(jù)拼湊,從行緩存中讀取的字節(jié)數(shù)為從行緩存起始點(diǎn)開始的align)字節(jié),再在低位加上line_align個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效。所以第一次操作讀取行緩存中起始點(diǎn)開始的3字節(jié),再在低位加上1個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè)word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位為二進(jìn)制1110。
此時(shí)第三行的第一個(gè)數(shù)據(jù)寫操作完畢,第三行之后的數(shù)據(jù)和后面所有行的數(shù)據(jù)都按照上面的規(guī)則進(jìn)行寫操作,直到整個(gè)圖像寫操作完畢。
雖然以上描述了本發(fā)明的具體實(shí)施方式
,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置,其特征在于包括依次連接的行緩存單元、寫數(shù)據(jù)準(zhǔn)備單元以及寫控制單元;所述行緩存單元還與外部電路的圖像采集或者處理電路連接,所述寫控制單元還與外部電路的圖像存儲(chǔ)單元連接;所述圖像存儲(chǔ)單元負(fù)責(zé)存儲(chǔ)緊湊存儲(chǔ)的圖像數(shù)據(jù);所述圖像采集或者處理電路負(fù)責(zé)產(chǎn)生需要存儲(chǔ)的圖像數(shù)據(jù),將圖像數(shù)據(jù)存入行緩存單元中;所述寫控制單元負(fù)責(zé)運(yùn)算每次寫動(dòng)作的地址,按照存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令,并從寫數(shù)據(jù)準(zhǔn)備單元取寫數(shù)據(jù)寫到圖像存儲(chǔ)單元中;所述寫數(shù)據(jù)準(zhǔn)備單元負(fù)責(zé)檢測(cè)行緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,寫操作行緩存數(shù)據(jù)進(jìn)行整合后交給寫控制單元寫到圖像存儲(chǔ)單元中,同時(shí)計(jì)算寫字節(jié)有效位并將其送往寫操作單元;所述行緩存單元包含兩行或者兩行以上的圖像數(shù)據(jù)存儲(chǔ)空間,當(dāng)有一行的行緩存數(shù)據(jù)被外部的圖像采集或者處理電路填滿后該行緩存變?yōu)橛行顟B(tài),所述寫數(shù)據(jù)準(zhǔn)備單元檢測(cè)到有行緩存狀態(tài)為有效時(shí),就開始一行的寫操作,當(dāng)全部行緩存都有無(wú)效時(shí),寫控制單元暫停工作并等待行緩存狀態(tài)變?yōu)橛行?,等任意一個(gè)行緩存狀態(tài)變?yōu)橛行Ш?,開始新一行的寫操作。
2.一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于包括如下步驟步驟1、開始,首先由圖像采集或者處理電路負(fù)責(zé)產(chǎn)生需要存儲(chǔ)的圖像數(shù)據(jù),將圖像數(shù)據(jù)存入復(fù)數(shù)個(gè)行緩存單元中;步驟2、寫數(shù)據(jù)準(zhǔn)備單元開始檢測(cè)行復(fù)數(shù)個(gè)行緩存單元的緩存狀態(tài)是否為有效,如果有效就開始一行的寫操作,進(jìn)入步驟3,否則繼續(xù)檢測(cè);步驟3、寫數(shù)據(jù)準(zhǔn)備單元不斷寫操作有效的行緩存單元中的圖像數(shù)據(jù),再根據(jù)寫目標(biāo)地址的word對(duì)齊情況,進(jìn)行整合成1個(gè)word的寫數(shù)據(jù)送往寫控制單元;步驟4、寫控制單元運(yùn)算每次寫動(dòng)作的地址,按照一圖像存儲(chǔ)單元的寫時(shí)序發(fā)出寫命令,并從寫數(shù)據(jù)準(zhǔn)備單元得到寫數(shù)據(jù),并將其寫到圖像存儲(chǔ)單元中的目標(biāo)地址,每次寫操作寬度為4字節(jié),直到整行數(shù)據(jù)被寫到目標(biāo)地址;步驟5、不斷循環(huán)步驟2 4,直到圖像所有行都被寫到圖像存儲(chǔ)單元的目標(biāo)地址中。
3.如權(quán)利要求2所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述復(fù)數(shù)個(gè)行緩存單元的行緩存的有效狀態(tài)由圖像采集或者處理電路決定,當(dāng)圖像采集或者處理電路向行緩存單元中任意一個(gè)行緩存填充圖像數(shù)據(jù)達(dá)到一行圖像數(shù)據(jù)時(shí),該行緩存單元的狀態(tài)會(huì)自動(dòng)變?yōu)橛行В?dāng)一行圖像數(shù)據(jù)寫操作完畢,對(duì)應(yīng)的行緩存狀態(tài)會(huì)被置為無(wú)效。
4.如權(quán)利要求2所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述步驟3中的整合成1個(gè)word的寫數(shù)據(jù)的方法是寫數(shù)據(jù)準(zhǔn)備單元根據(jù)寫目標(biāo)地址word對(duì)齊的情況,從行緩存單元讀取需要的數(shù)據(jù),如果寫目標(biāo)地址word對(duì)齊,則讀完整的一個(gè)word 數(shù)據(jù),否則根據(jù)不對(duì)齊情況讀取所需字節(jié)數(shù)據(jù)結(jié)合無(wú)效數(shù)據(jù)成為一個(gè)完整的word數(shù)據(jù)送往寫控制單元。
5.如權(quán)利要求2所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述步驟4中的寫控制單元運(yùn)算每次寫動(dòng)作的地址的的方法是寫控制單元從起始目標(biāo)地址開始寫動(dòng)作,每次寫操作的數(shù)據(jù)為1個(gè)word,當(dāng)目標(biāo)地址不是word對(duì)齊時(shí),對(duì)每行的第一個(gè)和最后一個(gè)word數(shù)據(jù)只需要部分寫入,所以在每行的第一個(gè)和最后一個(gè)word操作中通過(guò)寫字節(jié)控制位來(lái)控制word中4個(gè)字節(jié)的是否寫入,在每行數(shù)據(jù)的操作中,每次寫操作地址累加1個(gè)word,在寫完一行之后,寫地址跳轉(zhuǎn)到下一行繼續(xù)開始,由于數(shù)據(jù)位寬為1個(gè)word, 存儲(chǔ)器支持word對(duì)齊的4個(gè)寫字節(jié)控制位來(lái)控制每個(gè)字節(jié)的寫操作,所以每次寫操作的地址都會(huì)被寫控制單元自動(dòng)word對(duì)齊。
6.如權(quán)利要求2或4所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述步驟3中的整合成1個(gè)word的寫數(shù)據(jù)的方法具體包括如下步驟步驟31、設(shè)定一個(gè)變量line_align用于表示當(dāng)前操作行的目標(biāo)地址的word對(duì)齊情況; line_align是一個(gè)累加量,更新累加計(jì)算公式為line_align = (line_align+每行圖像數(shù)據(jù)字節(jié)數(shù)% 4) % 4,算式中%為取余符號(hào);初始值為圖像目標(biāo)存儲(chǔ)地址除以word的字節(jié)余數(shù);步驟32、判斷已經(jīng)寫到一行中的第幾個(gè)word,具體是判斷是每行第一個(gè)word、第一個(gè) word與最后一個(gè)word之間的word,或者是最后一個(gè)word的哪一種?步驟33、根據(jù)判斷結(jié)果進(jìn)行寫操作若是每行的第一個(gè)word,寫操作時(shí)是先根據(jù)line_align的值來(lái)判斷從行緩存中讀取多少字節(jié)來(lái)作word數(shù)據(jù)拼湊,從行緩存中讀取的字節(jié)數(shù)為從行緩存起始點(diǎn)開始的 (4-line_align)字節(jié),再在低位加上line_align個(gè)字節(jié)的任意無(wú)效數(shù)據(jù),從而拼湊出1個(gè) word的寫數(shù)據(jù)送往寫控制單元進(jìn)行寫操作,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效;若是每行第一個(gè)word與最后一個(gè)word之間,寫操作時(shí)每次行緩存讀取,都是直接在上一次讀取的基礎(chǔ)上再向后讀取4個(gè)字節(jié),并將這4個(gè)字節(jié)作為寫數(shù)據(jù)送往寫操作單元,寫字節(jié)有效位都為二進(jìn)制1111;若是最后一個(gè)word,寫操作時(shí),如果line_align為0則從行緩存讀取4個(gè)字節(jié)數(shù)據(jù)并作為寫數(shù)據(jù)送到寫操作單元;如果不為0,則從行緩存讀取line_align個(gè)字節(jié)數(shù)據(jù),并將這 line_align個(gè)數(shù)據(jù)作為低位,拼湊上(4-line_align)個(gè)字節(jié)任意無(wú)效數(shù)據(jù)成為1個(gè)word 數(shù)據(jù)送往寫操作單元,寫數(shù)據(jù)的寫字節(jié)有效位中任意無(wú)效數(shù)據(jù)對(duì)應(yīng)的寫有效位狀態(tài)為無(wú)效,其他字節(jié)都為有效。
7.如權(quán)利要求2或6所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述步驟32的具體判斷過(guò)程包括321)設(shè)定一個(gè)變量line_Coimt用于統(tǒng)計(jì)本行已經(jīng)寫了多少字節(jié)數(shù)據(jù);line_Coimt初始值為0 ;322)在每行第一個(gè)word寫操作時(shí),line_count累加值計(jì)算為line_count= line_ count+G-Iine_align),在每行第一個(gè)和最后一個(gè)word寫操作之間的每次寫操作,line_ count都累加4 ;當(dāng)每行的字節(jié)數(shù)減line_COimt得到的差值小于等于4個(gè)字節(jié)時(shí),可以確定下一次寫數(shù)為本行的最后一個(gè)word寫操作;寫操作完每行最后一個(gè)word后,line_Coimt自動(dòng)清零。
8.如權(quán)利要求5所述的實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制方法,其特征在于所述步驟4中的寫控制單元運(yùn)算每次寫動(dòng)作的地址的方法是41)設(shè)定一個(gè)變量neXt_line_Start_addr用于記錄下一行的起始地址;其初始值等于圖像存儲(chǔ)目標(biāo)地址;42)第一次word寫操作,寫操作地址為neXt_line_Start_addr的初始值,之后第一行的每次word寫操作,都在next_line_Start_addr基礎(chǔ)上加一個(gè)word偏移量,直到第一行最后一個(gè)word ;在第一行最后一個(gè)word寫操作完畢后,next_line_start_addr進(jìn)行更新, 計(jì)算方法為next_line_start_addr = next_line_start_addr+每行像素個(gè)數(shù)X每個(gè)像素占字節(jié)數(shù);然后,下一行的第一個(gè)寫操作地址又從新的neXt_line_Start_addr開始,每次一個(gè)word偏移量累加,直到下一行寫完,next_line_start_addr再更新,如此循環(huán)直到圖像寫操作完畢;43)將每次最終輸出的寫操作地址對(duì)4取整后輸出。
全文摘要
本發(fā)明提供一種實(shí)現(xiàn)節(jié)省圖像存儲(chǔ)空間的存儲(chǔ)控制裝置和方法,裝置包括圖像存儲(chǔ)單元、圖像采集或者處理電路、寫控制單元、寫數(shù)據(jù)準(zhǔn)備單元以及復(fù)數(shù)個(gè)行緩存單元;方法是當(dāng)寫數(shù)據(jù)準(zhǔn)備單元檢測(cè)行行緩存單元的緩存狀態(tài)為有效就開始一行的寫操作,再根據(jù)寫目標(biāo)地址的word對(duì)齊情況,進(jìn)行整合成1個(gè)word的寫數(shù)據(jù)送往寫控制單元;寫控制單元運(yùn)算每次寫動(dòng)作的地址,發(fā)出寫命令,得到寫數(shù)據(jù),并將其寫到圖像存儲(chǔ)單元中的目標(biāo)地址,每次寫操作寬度為4字節(jié),直到整行數(shù)據(jù)被寫到目標(biāo)地址;如此循環(huán)將所有行都被寫到圖像存儲(chǔ)單元的目標(biāo)地址中。其優(yōu)點(diǎn)是在圖像數(shù)據(jù)寬度不是word的整數(shù)倍的時(shí)候,會(huì)將一行最后幾個(gè)像素和下一行的開始像素?cái)?shù)據(jù)存儲(chǔ)于一個(gè)word中,節(jié)省了圖像的存儲(chǔ)空間。
文檔編號(hào)G06F13/16GK102521793SQ20111039338
公開日2012年6月27日 申請(qǐng)日期2011年12月1日 優(yōu)先權(quán)日2011年12月1日
發(fā)明者廖裕民 申請(qǐng)人:福州瑞芯微電子有限公司