亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

單次可編程存儲器的數(shù)據(jù)編程電路及方法

文檔序號:6769343閱讀:147來源:國知局

專利名稱::單次可編程存儲器的數(shù)據(jù)編程電路及方法
技術(shù)領(lǐng)域
:本發(fā)明是有關(guān)于一種單次可編程(one-time-programmable,OTP)存儲器,特別是有關(guān)于單次可編程存儲器的數(shù)據(jù)編程方法。
背景技術(shù)
:隨著個(gè)人電子產(chǎn)品的快速發(fā)展,固態(tài)數(shù)據(jù)儲存技術(shù)已變?yōu)槿找嬷匾?。在可攜式消費(fèi)電子產(chǎn)品中,固態(tài)數(shù)據(jù)儲存裝置更朝向小型化、簡單化及低成本的目標(biāo)邁進(jìn)。固態(tài)數(shù)據(jù)儲存技術(shù)(例如可擦除可編程只讀存儲器(EPROM)、電子可擦除可編程只讀存儲器(EEPROM)等)非常適合發(fā)展高速的應(yīng)用裝置,尤其是具有復(fù)雜與昂貴程序的高速應(yīng)用裝置。然而,就許多消費(fèi)性電子產(chǎn)品而言,相較于高速度,低成本的考量將更為重要。于是,具有較低制造成本,且即使電源下降但所儲存的數(shù)據(jù)亦不會消失的永久性單次可編程存儲器成為不可欠缺的元件。單次可編程存儲器可廣泛地使用在動態(tài)隨機(jī)存取存儲器(DRAM)或靜態(tài)隨機(jī)存儲器(SRAM)的大容量的存儲器中的備用(redundancy)部分、模擬電路的校正(calibrating)、碼(例如密鑰等)的儲存、或是管理信息(例如制造過程的紀(jì)錄)的儲存等。此外,單次可編程存儲器僅能進(jìn)行一次數(shù)據(jù)編程。換言之,一旦對單次可編程存儲器中的記憶單元(memorycell)完成編程動作之后,便無法對儲存在記憶單元中的數(shù)據(jù)進(jìn)行修正。對單次可編程存儲器而言,由于可在該存儲器離開制造廠后才被寫入數(shù)據(jù),亦即可依照該存儲器所配置的環(huán)境以及應(yīng)用而由使用者寫入數(shù)據(jù),因此在使用上較其他存儲器(例如掩模式只讀存儲器(MaskROM))更為方便。
發(fā)明內(nèi)容本發(fā)明提供一種數(shù)據(jù)編程電路。該數(shù)據(jù)編程電路包括一單次可編程存儲器以及一控制單元。該單次可編程存儲器用以儲存對應(yīng)于一第一版本的只讀存儲器碼的一第一版本編碼數(shù)據(jù)。該控制單元用以將一第二版本的只讀存儲器碼儲存至該單次可編程存儲器,其中該控制單元根據(jù)該第一版本編碼數(shù)據(jù)以及該第二版本的只讀存儲器碼產(chǎn)生一匹配表,并從該匹配表中找出具有相同的數(shù)據(jù)內(nèi)容的該第一版本編碼數(shù)據(jù)的一第一數(shù)據(jù)片段以及該第二版本的只讀存儲器碼的一第二數(shù)據(jù)片段。該控制單元將該第二數(shù)據(jù)片段編碼為一特定地址并儲存至該單次可編程存儲器,以及該特定地址是指向該單次可編程存儲器中該第一版本編碼數(shù)據(jù)的該第一數(shù)據(jù)片段。再者,本發(fā)明提供一種數(shù)據(jù)編程方法,適用于一單次可編程存儲器,其中該單次可編程存儲器儲存對應(yīng)于一第一版本的只讀存儲器碼的一第一版本編碼數(shù)據(jù)。該數(shù)據(jù)編程方法包括從該單次可編程存儲器讀取出該第一版本編碼數(shù)據(jù),并將該第一版本編碼數(shù)據(jù)還原成該第一版本的只讀存儲器碼;根據(jù)該第一版本的只讀存儲器碼,對一第二版本的只讀存儲器碼進(jìn)行編碼;以及,將已編碼的該第二版本的只讀存儲器碼儲存至該單次可編程存儲器。對該第二版本的只讀存儲器碼進(jìn)行編碼的步驟更包括根據(jù)該第一版本的只讀存儲器碼以及該第二版本的只讀存儲器碼,產(chǎn)生一匹配表;從該匹配表中找出具有相同數(shù)據(jù)內(nèi)容的該第一版本的只讀存儲器碼的一第一數(shù)據(jù)片段以及該第二版本的只讀存儲器碼的一第二數(shù)據(jù)片段;以及,將該第二數(shù)據(jù)片段的數(shù)據(jù)內(nèi)容編碼為一特定地址,其中該特定地址是指向該單次可編程存儲器中該第一版本編碼數(shù)據(jù)的該第一數(shù)據(jù)片段。為讓本發(fā)明的該目的、特征和優(yōu)點(diǎn)能更明顯易懂,以下結(jié)合附圖對本發(fā)明的具體實(shí)施方式作詳細(xì)說明,其中圖1顯示根據(jù)本發(fā)明一實(shí)施例所述的數(shù)據(jù)編程電路;圖2顯示根據(jù)本發(fā)明一實(shí)施例所述的單次可編程存儲器所儲存的數(shù)據(jù)布局的示意圖;圖3顯示根據(jù)本發(fā)明一實(shí)施例所述的使用圖1的控制單元對欲更新的EEPROM版本進(jìn)行編碼的示意圖;圖4A顯示根據(jù)本發(fā)明一實(shí)施例所述的經(jīng)由控制單元所編碼的數(shù)據(jù)片段;圖4B顯示根據(jù)本發(fā)明另一實(shí)施例所述的經(jīng)由控制單元所編碼的另一數(shù)據(jù)片段;圖5顯示根據(jù)本發(fā)明一實(shí)施例所述的數(shù)據(jù)編程方法;圖6顯示根據(jù)本發(fā)明另一實(shí)施例所述的數(shù)據(jù)編程方法;圖7顯示第二版本的只讀存儲器碼中從數(shù)據(jù)區(qū)塊DBl至數(shù)據(jù)區(qū)塊DBN之間不同路徑的示意圖;以及圖8顯示根據(jù)本發(fā)明另一實(shí)施例所述的使用圖1的控制單元對欲更新的EEPROM版本進(jìn)行編碼的示意圖。主要元件符號說明100數(shù)據(jù)編程電路;110控制單元;120,200單次可編程存儲器;210標(biāo)頭區(qū)段;220、314、830、850、870數(shù)據(jù)區(qū)段;220_1、220_2、···、220_NEEPROM版本;230閑置空間;240起始位置堆疊區(qū)段;240_1、240_2、···、240_N數(shù)據(jù)區(qū)塊;250錯(cuò)誤還原區(qū)段;312標(biāo)頭區(qū)段;316區(qū)段標(biāo)頭區(qū)塊;318區(qū)段數(shù)據(jù)區(qū)塊;322原始尺寸區(qū)塊;324編碼尺寸區(qū)塊;326、326A、326B、840、860、880數(shù)據(jù)片段;327、327A、327B片段標(biāo)頭區(qū)塊;329、329A、329B、846、866、886片段數(shù)據(jù)區(qū)塊;410、430、842、862、882旗標(biāo)欄位;420、440、844、864、884長度欄位;DATAeom只讀存儲器碼;DBl、DB2、DB3、DB(a)、···、DB(M_1)、···、DB(N_2)、DB(N_l)、DBN數(shù)據(jù)區(qū)塊;DS1、DS2匹配數(shù)據(jù)片段;以及PH1-PH3路徑。具體實(shí)施例方式為讓本發(fā)明的該和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉出較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下實(shí)施例圖1顯示根據(jù)本發(fā)明一實(shí)施例所述的數(shù)據(jù)編程電路100。數(shù)據(jù)編程電路100包括控制單元110以及單次可編程(OTP)存儲器120。在數(shù)據(jù)編程電路100中,可通過控制單元110對只讀存儲器碼DATAot進(jìn)行編碼、壓縮等運(yùn)算處理,再將經(jīng)過處理的數(shù)據(jù)儲存至單次可編程存儲器120中,使得使用者可使用較少的儲存容量來儲存只讀存儲器碼DATAm。此外,數(shù)據(jù)編程電路100可應(yīng)用于任何電子產(chǎn)品中。圖2顯示根據(jù)本發(fā)明一實(shí)施例所述的單次可編程存儲器200所儲存的數(shù)據(jù)布局的示意圖。單次可編程存儲器200可被劃分為不同的區(qū)段(section)。例如,在圖2中,單次可編程存儲器200包括標(biāo)頭(header)區(qū)段210、數(shù)據(jù)區(qū)段220、閑置空間(freespace)230、起始位置堆疊(stack)區(qū)段MO以及錯(cuò)誤還原區(qū)段250,其中每一區(qū)段可由多個(gè)字節(jié)(byte)所組成。標(biāo)頭區(qū)段210用以儲存單次可編程存儲器200的主要信息。例如單次可編程存儲器200的實(shí)際尺寸、單次可編程存儲器200是否可以被繼續(xù)寫入或是單次可編程存儲器200是否可以被使用/讀取(即是否需旁路(bypass)單次可編程存儲器200,原因在于單次可編程存儲器200已損壞)等等。數(shù)據(jù)區(qū)段220包括多個(gè)EEPROM版本220_1至220_N,其為先前所寫入的已編碼的不同EEPROM版本,其中每一EEPROM版本包括多個(gè)數(shù)據(jù)片段(segment)。閑置空間230為單次可編程存儲器200內(nèi)尚未被使用到的空間。起始位置堆疊區(qū)段240用來儲存數(shù)據(jù)區(qū)段220中每一EEPROM版本的起始地址以及結(jié)束地址,此外亦可注明每一EEPROM版本是否可正常使用。錯(cuò)誤還原區(qū)段250具有固定的尺寸,其可用來記載單次可編程存儲器200中損壞的記憶單元所欲儲存的數(shù)據(jù)以及該錯(cuò)誤記憶單元的地址等信息,以供單次可編程存儲器200的存取單元(例如圖1的控制單元110)進(jìn)行還原。同時(shí)參考圖1及圖2,首先,控制單元110會將單次可編程存儲器200內(nèi)的全部數(shù)據(jù)初始化為0。接著,控制單元110會將已編碼的第一個(gè)EEPROM版本220_1寫入至標(biāo)頭區(qū)段210的末端。在此實(shí)施例中,控制單元110是以字節(jié)為單位對單次可編程存儲器200進(jìn)行數(shù)據(jù)寫入。此外,在將EEPROM版本220_1寫入至單次可編程存儲器200之前,控制單元110會根據(jù)EEPROM版本220_1的數(shù)據(jù)長度而得到對應(yīng)于EEPROM版本220_1的起始地址以及結(jié)束地址等相關(guān)信息,并將其寫入至起始位置堆疊區(qū)段MO內(nèi)。在此實(shí)施例中,控制單元110會將EEPROM版本220_1的起始地址以及結(jié)束地址寫入至數(shù)據(jù)區(qū)塊(block)240_1內(nèi)的不同欄位中,其中數(shù)據(jù)區(qū)塊緊鄰于錯(cuò)誤還原區(qū)段250。相似地,控制單元110可將新版本的EEI3ROM數(shù)據(jù)(例如EEI3ROM版本220_2、EEPROM版本220_3至EEI3ROM版本220_N)依序?qū)懭胫灵e置空間230內(nèi),以對單次可編程存儲器200進(jìn)行更新。同時(shí),控制單元110亦會將更新的EEPROM版本的起始地址以及結(jié)束地址寫入至起始位置堆疊區(qū)段MO內(nèi)所對應(yīng)的數(shù)據(jù)區(qū)塊的不同欄位中。舉例來說,對應(yīng)于EEPROM版本220_2的起始地址以及結(jié)束地址是儲存在數(shù)據(jù)區(qū)塊對0_2,而對應(yīng)于EEPROM版本220_N的起始地址以及結(jié)束地址是儲存在數(shù)據(jù)區(qū)塊Μ0_Ν。在圖2的實(shí)施例中,控制單元110依序由上往下的順序?qū)⒏碌腅EPROM版本寫入至單次可編程存儲器200中,即從標(biāo)頭區(qū)段210往起始位置堆疊區(qū)段240的方向。此外,控制單元110依序由下往上的順序?qū)?yīng)于更新的EEPROM版本的起始地址以及結(jié)束地址寫入至單次可編程存儲器200中,即從錯(cuò)誤還原區(qū)段250往數(shù)據(jù)區(qū)段220的方向。如圖2所顯示,閑置空間230是介于數(shù)據(jù)區(qū)段220以及起始位置堆疊區(qū)段240之間。因此,當(dāng)控制單元110欲將新版本的EEPROM數(shù)據(jù)寫入至單次可編程存儲器200內(nèi)時(shí),需先確認(rèn)閑置空間230是否有足夠的空間可進(jìn)行儲存。若有,則控制單元110會將對應(yīng)于新版本的EEPROM數(shù)據(jù)的起始位置以及結(jié)束位置寫入至起始位置堆疊區(qū)段M0,然后再將新版本的EEPROM數(shù)據(jù)寫入至閑置空間230中且緊接于前一版的EEPROM數(shù)據(jù)之后。反之,若閑置空間230沒有足夠的空間可儲存新版本的EEPROM數(shù)據(jù),則控制單元110不會對單次可編程存儲器200進(jìn)行任何寫入編程動作。由于工藝飄移(ProcessDrift)的影響,在單次可編程存儲器200中可能有部分的存儲單元為損壞的。因此,當(dāng)控制單元Iio將一字節(jié)的數(shù)據(jù)寫入至單次可編程存儲器200中對應(yīng)于一特定地址的數(shù)據(jù)區(qū)塊之后,必須接著再從單次可編程存儲器200中讀回該數(shù)據(jù)區(qū)塊所儲存的的內(nèi)容值,以確保該字節(jié)的數(shù)據(jù)已正確地被寫入至單次可編程存儲器200。假如所讀回的值不相同于所寫入的數(shù)據(jù),則控制單元110可判定對應(yīng)于該特定地址的數(shù)據(jù)區(qū)塊已經(jīng)損壞且無法繼續(xù)被使用。接著,控制單元110會執(zhí)行錯(cuò)誤還原程序,以便將該字節(jié)的數(shù)據(jù)以及該特定地址寫入至錯(cuò)誤還原區(qū)段250的一數(shù)據(jù)區(qū)塊中。在此實(shí)施例中,控制單元110會以由下往上的順序來搜尋錯(cuò)誤還原區(qū)段250中是否有空的數(shù)據(jù)區(qū)塊存在,以便進(jìn)行錯(cuò)誤還原程序。若有,則控制單元110會將該字節(jié)的數(shù)據(jù)以及該特定地址寫入至第一個(gè)被搜尋到的閑置區(qū)塊。若無,控制單元110則會將單次可編程存儲器200無法繼續(xù)被更新的訊息寫入至標(biāo)頭區(qū)段210內(nèi),于是單次可編程存儲器200無法繼續(xù)被更新,只能被讀取。由于,單次可編程存儲器200內(nèi)任一區(qū)段都有可能有損壞的存儲單元存在。因此,當(dāng)對單次可編程存儲器200的任一地址所對應(yīng)的數(shù)據(jù)區(qū)塊進(jìn)行讀取時(shí),控制單元110需要確認(rèn)被儲存在錯(cuò)誤還原區(qū)段250內(nèi)的地址是否相同于所欲讀取的地址。若是,則控制單元110會從錯(cuò)誤還原區(qū)段250中用來儲存該讀取地址的數(shù)據(jù)區(qū)塊內(nèi)讀取出對應(yīng)于該讀取地址的數(shù)據(jù)。若否,則控制單元110會直接從該讀取地址所對應(yīng)到的數(shù)據(jù)區(qū)塊中讀取出其內(nèi)容值。此外,在更新EEPROM版本時(shí),控制單元110會先將該EEPROM版本的結(jié)束地址寫入至起始位置堆疊區(qū)段240并讀回,以判斷是否需進(jìn)行錯(cuò)誤還原程序。若讀回的內(nèi)容值相同于所寫入的結(jié)束地址,則控制單元110會進(jìn)一步將該EEPROM版本的開始地址寫入至起始位置堆疊區(qū)段240并讀回,以判斷是否需進(jìn)行錯(cuò)誤還原程序。同樣地,若讀回的內(nèi)容值相同于所寫入的起始地址,則控制單元110會判斷該EEPROM版本的起始地址以及結(jié)束地址已成功被寫入至起始位置堆疊區(qū)段對0。圖3顯示根據(jù)本發(fā)明一實(shí)施例所述的使用圖1的控制單元110對欲更新的EEPROM7版本進(jìn)行編碼的示意圖,其中標(biāo)號310表示圖1的控制單元110所接收的只讀存儲器碼DATAeom的原始數(shù)據(jù)布局(layout)示意圖,而標(biāo)號320表示控制單元110對只讀存儲器碼DATAeom進(jìn)行編碼后的EEPROM數(shù)據(jù)布局示意圖。首先,原始的只讀存儲器碼DATAm包括標(biāo)頭區(qū)段312以及多個(gè)數(shù)據(jù)區(qū)段314,其中每一數(shù)據(jù)區(qū)段314包括區(qū)段標(biāo)頭區(qū)塊316以及區(qū)段數(shù)據(jù)區(qū)塊318。接著,控制單元110會將只讀存儲器碼DATA·中的全部數(shù)據(jù)區(qū)段314編碼為多個(gè)數(shù)據(jù)片段(segment)326,其中每一數(shù)據(jù)片段3包括片段標(biāo)頭區(qū)塊327以及片段數(shù)據(jù)區(qū)塊329。此外,編碼后的EEPROM數(shù)據(jù)320更包括EEPROM的原始尺寸區(qū)塊322以及編碼尺寸區(qū)塊324,其中原始尺寸區(qū)塊322用來記載只讀存儲器碼DATAm的原始數(shù)據(jù)長度,而編碼尺寸區(qū)塊3M用來記載只讀存儲器碼DATAm經(jīng)過編碼之后的數(shù)據(jù)長度。一般而言,只讀存儲器碼DATAm的原始數(shù)據(jù)長度大于經(jīng)過編碼之后的數(shù)據(jù)長度。在本發(fā)明中,對只讀存儲器碼DATAm的原始數(shù)據(jù)進(jìn)行編碼并依序編程至單次可編程存儲器120時(shí),控制單元110會先判斷目前欲進(jìn)行編碼的區(qū)段是否與先前寫入至單次可編程存儲器120的區(qū)段具有相同的內(nèi)容。若否,則控制單元110會將該區(qū)段直接寫入至單次可編程存儲器120,如圖4A所顯示。圖4A顯示根據(jù)本發(fā)明一實(shí)施例所述的經(jīng)由控制單元110所編碼的數(shù)據(jù)片段326A。數(shù)據(jù)片段326A包括片段標(biāo)頭區(qū)塊327A以及片段數(shù)據(jù)區(qū)塊329A,其中片段標(biāo)頭區(qū)塊327A包括旗標(biāo)欄位410以及長度欄位420。在圖4A中,旗標(biāo)欄位410被設(shè)為0以指示片段數(shù)據(jù)區(qū)塊329A為未經(jīng)壓縮處理的原始數(shù)據(jù)(rawdata),而長度欄位420用來紀(jì)錄片段數(shù)據(jù)區(qū)塊329A中未經(jīng)壓縮處理的原始數(shù)據(jù)的數(shù)據(jù)長度Lenl。反之,當(dāng)控制單元110判斷出目前欲進(jìn)行編碼的區(qū)段與先前寫入至單次可編程存儲器120的區(qū)段具有相同的內(nèi)容時(shí),則控制單元110不會對該區(qū)段進(jìn)行編碼。此時(shí),控制單元110會將對應(yīng)于先前寫入且具有相同內(nèi)容的區(qū)段的地址儲存至單次可編程存儲器120中,如圖4B所顯示。圖4B顯示根據(jù)本發(fā)明另一實(shí)施例所述的經(jīng)由控制單元110所編碼的數(shù)據(jù)片段326B。數(shù)據(jù)片段326B包括片段標(biāo)頭區(qū)塊327B以及片段數(shù)據(jù)區(qū)塊329B。同樣地,片段標(biāo)頭區(qū)塊327B亦包括旗標(biāo)欄位430以及長度欄位440。在圖4B中,控制單元110會將旗標(biāo)欄位430設(shè)為1以指示片段數(shù)據(jù)區(qū)塊329B內(nèi)所儲存的內(nèi)容為一特定地址Addr,其指向先前寫入的數(shù)據(jù)片段。此外,長度欄位440用來儲存先前所寫入的區(qū)段的數(shù)據(jù)長度Len2。因此,控制單元110對具有相同內(nèi)容的重復(fù)區(qū)段不會進(jìn)行重復(fù)編碼,于是可縮短編碼時(shí)間并減少欲儲存的數(shù)據(jù)量。圖5顯示根據(jù)本發(fā)明一實(shí)施例所述的數(shù)據(jù)編程方法,用以借由使用一控制單元(例如圖1的110)將一只讀存儲器碼儲存至一單次可編程存儲器。首先,控制單元會對只讀存儲器碼進(jìn)行編碼,并得到編碼后的只讀存儲器碼的數(shù)據(jù)長度(步驟S502)。接著,在步驟S504,根據(jù)編碼后的只讀存儲器碼的數(shù)據(jù)長度,控制單元可判斷單次可編程存儲器內(nèi)的閑置空間是否足夠儲存已編碼的只讀存儲器碼。若否,則數(shù)據(jù)編程程序?qū)⒔Y(jié)束于步驟S504。若是,則控制單元會根據(jù)編碼后的只讀存儲器碼的數(shù)據(jù)長度,來找出在閑置空間中用來儲存已編碼的只讀存儲器碼的適當(dāng)空間的起始地址以及結(jié)束地址(步驟S506)。接著,控制單元會將起始地址以及結(jié)束地址寫入單次可編程存儲器的堆疊區(qū)段中(步驟S508)。接著,控制單元會將已編碼的只讀存儲器碼寫入至閑置空間中(步驟S510)。如先前所描述,當(dāng)控制單元將起始地址、結(jié)束地址或是已編碼的只讀存儲器碼寫入至單次可編程存儲器時(shí),可借由讀回被寫入地址的內(nèi)容值來判斷寫入動作是否成功。若有,則控制單元會繼續(xù)將后續(xù)的數(shù)據(jù)寫入至單次可編程存儲器。若否,則控制單元會判定對應(yīng)于被寫入地址的數(shù)據(jù)區(qū)塊已損壞,并執(zhí)行一錯(cuò)誤還原程序,以便將欲寫入的數(shù)據(jù)以及其對應(yīng)的寫入地址儲存至單次可編程存儲器的錯(cuò)誤還原區(qū)段內(nèi)。于是,當(dāng)控制單元或是其他電路欲讀取單次可編程存儲器的數(shù)據(jù)時(shí),可讀取到正確的儲存值。此外,對只讀存儲器碼中具有相同內(nèi)容的重復(fù)區(qū)段而言,控制單元不會對相同的數(shù)據(jù)進(jìn)行重復(fù)編碼,且對應(yīng)于具有相同內(nèi)容的區(qū)段,控制單元會將一特定地址儲存至該單次可編程存儲器內(nèi),其中該特定地址是指向先前已寫入且具有相同內(nèi)容的區(qū)段,如先前所描述。圖6顯示根據(jù)本發(fā)明另一實(shí)施例所述的數(shù)據(jù)編程方法,用以將第二版本的只讀存儲器碼儲存至單次可編程存儲器中,其中單次可編程存儲器內(nèi)部已儲存對應(yīng)于第一版本的只讀存儲器碼的第一版本編碼數(shù)據(jù)。首先,在步驟S602,控制單元從單次可編程存儲器中讀取出第一版本編碼數(shù)據(jù),并將第一版本編碼數(shù)據(jù)還原成第一版本的只讀存儲器碼。接著,在步驟S604,控制單元會根據(jù)第一版本的只讀存儲器碼以及第二版本的只讀存儲器碼建立匹配表(matchingtable)。舉例來說,控制單元可使用最長公共子序列(LongestCommonSubsequence,LCS)演算法來得到不同只讀存儲器碼版本之間的匹配表。接著,在步驟S606,控制單元會從匹配表中找出第一版本的只讀存儲器碼以及第二版本的只讀存儲器碼之間具有相同數(shù)據(jù)內(nèi)容的多組匹配數(shù)據(jù)片段。此外,在一實(shí)施例中,控制單元可從多組匹配數(shù)據(jù)片段中選取出數(shù)據(jù)長度大于一特定臨界長度的匹配數(shù)據(jù)片段,以便簡化后續(xù)運(yùn)算。接著,在步驟S608,控制單元會計(jì)算第二版本的只讀存儲器碼中從第一數(shù)據(jù)區(qū)塊至第二數(shù)據(jù)區(qū)塊之間經(jīng)過匹配數(shù)據(jù)片段的每一路徑的權(quán)重。例如,參考圖7,圖7顯示第二版本的只讀存儲器碼中從數(shù)據(jù)區(qū)塊DBl至數(shù)據(jù)區(qū)塊DBN之間不同路徑的示意圖。在圖7中,路徑PHl表示數(shù)據(jù)區(qū)塊DBl依序通過數(shù)據(jù)區(qū)塊DB2、DB3.....DB(N_2)、DB(N-I)而到達(dá)數(shù)據(jù)區(qū)塊DBN的路徑;路徑PH2表示數(shù)據(jù)區(qū)塊DBl依序通過數(shù)據(jù)區(qū)塊DB2和DB3、匹配數(shù)據(jù)片段DSl、以及數(shù)據(jù)區(qū)塊DB6.....DB(N-I)而到達(dá)數(shù)據(jù)區(qū)塊DBN的路徑;而路徑PH3表示數(shù)據(jù)區(qū)塊DBl依序通過數(shù)據(jù)區(qū)塊DB2-DB5、匹配數(shù)據(jù)片段DS2、以及數(shù)據(jù)區(qū)塊DB(N-I)而到達(dá)數(shù)據(jù)區(qū)塊DBN的路徑。于是,控制單元可分別計(jì)算出路徑PHI、PH2與PH3的每一路徑的權(quán)重(weight)。在此實(shí)施例中,對一數(shù)據(jù)區(qū)塊而言,權(quán)重的計(jì)算是根據(jù)儲存該數(shù)據(jù)區(qū)塊于單次可編程存儲器中所需占用的空間大小。此外,每一匹配數(shù)據(jù)片段(例如DS1、DS2)皆對應(yīng)于儲存在單次可編程存儲器中第一版本編碼數(shù)據(jù)的一特定數(shù)據(jù)片段。于是,當(dāng)欲將第二版本的只讀存儲器碼內(nèi)一匹配數(shù)據(jù)片段儲存至單次可編程存儲器時(shí),控制單元可將該匹配數(shù)據(jù)片段編碼為一特定地址,其中該特定地址是指向單次可編程存儲器中所對應(yīng)的第一版本編碼數(shù)據(jù)的一特定數(shù)據(jù)片段。因此,當(dāng)控制單元欲將該匹配數(shù)據(jù)片段儲存至單次可編程存儲器時(shí),只需將該特定地址寫入至單次可編程存儲器,而非該匹配數(shù)據(jù)片段內(nèi)的全部數(shù)據(jù)區(qū)塊,如圖4B所顯示。在此實(shí)施例中,由于每一匹配數(shù)據(jù)片段皆可對應(yīng)到單次可編程存儲器中第一版本編碼數(shù)據(jù)的一特定數(shù)據(jù)片段,即控制單元可將每一匹配數(shù)據(jù)片段編碼為一特定地址。因此,每一匹配數(shù)據(jù)片段具有相同的權(quán)重,其與每一匹配數(shù)據(jù)片段所包含的數(shù)據(jù)區(qū)塊的數(shù)量無關(guān)。同時(shí)參考圖6及圖7,在步驟S610,控制單元會根據(jù)于步驟S608所得到的每一路徑的權(quán)重,來找出具有最小權(quán)重的一最短路徑以及位于該最短路徑上的匹配數(shù)據(jù)片段。例如,在圖7的例子中,控制單元會找出路徑PH3為具有最小權(quán)重的最短路徑,并找出位于路徑PH3上的匹配數(shù)據(jù)片段DS2。接著,在步驟S612,將第二版本的只讀存儲器碼中最短路徑上的匹配數(shù)據(jù)片段編碼為一特定地址,其中該特定地址是指向單次可編程存儲器中具有相同內(nèi)容的數(shù)據(jù)片段。因此,在找出第二版本的只讀存儲器碼中的全部最短路徑并進(jìn)行編碼之后,控制單元會將已編碼的第二版本的只讀存儲器碼儲存至單次可編程存儲器。如先前所描述,當(dāng)控制單元將已編碼的第二版本的只讀存儲器碼儲存至單次可編程存儲器時(shí),控制單元亦需對單次可編程存儲器的閑置空間進(jìn)行判斷,然后將起始地址與結(jié)束地址寫入至起始位置堆疊區(qū)段,并判斷是否需要執(zhí)行錯(cuò)誤還原程序,如圖5所描述。圖8顯示根據(jù)本發(fā)明一實(shí)施例所述的使用圖1的控制單元110對欲更新的EEPROM版本進(jìn)行編碼的示意圖,其中標(biāo)號810表示圖1的控制單元110所接收的只讀存儲器碼DATAeom的原始數(shù)據(jù)布局示意圖,而標(biāo)號820表示控制單元110根據(jù)圖6的方法對只讀存儲器碼DATAm進(jìn)行編碼后的EEPROM數(shù)據(jù)布局示意圖。首先,借由尋找具有最小權(quán)重的最短路徑,控制單元110可將只讀存儲器碼DATAm分為三個(gè)數(shù)據(jù)區(qū)段830、850與870,其中數(shù)據(jù)區(qū)段850具有最小權(quán)重的最短路徑并可對應(yīng)于單次可編程存儲器中已儲存的特定數(shù)據(jù)片段,即數(shù)據(jù)區(qū)段850與已儲存的特定數(shù)據(jù)片段具有相同的數(shù)據(jù)內(nèi)容。對數(shù)據(jù)區(qū)段830與870而言,由于無最小權(quán)重的最短路徑存在,因此控制單元110會直接將數(shù)據(jù)區(qū)段830與數(shù)據(jù)區(qū)段870內(nèi)的數(shù)據(jù)區(qū)塊DBO至數(shù)據(jù)區(qū)塊DB(a-Ι)以及數(shù)據(jù)區(qū)塊DB(a+b)至數(shù)據(jù)區(qū)塊DB(M-I)依序編碼至數(shù)據(jù)片段840以及數(shù)據(jù)片段880。在數(shù)據(jù)片段840中,控制單元110會將旗標(biāo)欄位842設(shè)為0以指示片段數(shù)據(jù)區(qū)塊846為未經(jīng)壓縮處理的原始數(shù)據(jù)(即數(shù)據(jù)區(qū)塊DBO-數(shù)據(jù)區(qū)塊DB(a-1)),并將數(shù)據(jù)長度a儲存至長度欄位844。相同地,在數(shù)據(jù)片段880中,控制單元110會將旗標(biāo)欄位882設(shè)為0以指示片段數(shù)據(jù)區(qū)塊886為未經(jīng)壓縮處理的原始數(shù)據(jù)(即數(shù)據(jù)區(qū)塊DB(a+b)_數(shù)據(jù)區(qū)塊DB(M-I)),并將數(shù)據(jù)長度(M_a_b)儲存至長度欄位884。再者,對數(shù)據(jù)區(qū)段850而言,最短路徑中匹配數(shù)據(jù)片段包括介于數(shù)據(jù)區(qū)塊DB(a-l)以及數(shù)據(jù)區(qū)塊DB(a+b)之間的多個(gè)數(shù)據(jù)區(qū)塊。因此,控制單元110可得到最短路徑中匹配數(shù)據(jù)片段的起始區(qū)塊為DB(a),而匹配數(shù)據(jù)片段的數(shù)據(jù)長度(匹配數(shù)據(jù)片段內(nèi)的數(shù)據(jù)區(qū)塊數(shù)量)為b。因此,在數(shù)據(jù)片段860中,控制單元110會將旗標(biāo)欄位862設(shè)為1以指示片段數(shù)據(jù)區(qū)塊866內(nèi)所儲存的內(nèi)容為一特定地址Addr,其指向先前寫入的特定數(shù)據(jù)片段。此外,控制單元110會將匹配數(shù)據(jù)片段的數(shù)據(jù)長度b儲存至長度欄位864。最后,控制單元110可依序?qū)?shù)據(jù)片段840、860與880寫入至單次可編程存儲器的閑置空間,以便將欲更新的只讀存儲器碼DATAeom儲存至單次可編程存儲器中。雖然本發(fā)明已以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的為準(zhǔn)。10權(quán)利要求1.一種數(shù)據(jù)編程電路,包括一單次可編程存儲器,用以儲存對應(yīng)于一第一版本的只讀存儲器碼的一第一版本編碼數(shù)據(jù);以及一控制單元,用以將一第二版本的只讀存儲器碼儲存至上述單次可編程存儲器,其中上述控制單元根據(jù)上述第一版本編碼數(shù)據(jù)以及上述第二版本的只讀存儲器碼產(chǎn)生一匹配表,并從上述匹配表中找出具有相同的數(shù)據(jù)內(nèi)容的上述第一版本編碼數(shù)據(jù)的一第一數(shù)據(jù)片段以及上述第二版本的只讀存儲器碼的一第二數(shù)據(jù)片段,其中上述控制單元將上述第二數(shù)據(jù)片段編碼為一特定地址并儲存至上述單次可編程存儲器,以及上述特定地址是指向上述單次可編程存儲器中上述第一版本編碼數(shù)據(jù)的上述第一數(shù)據(jù)片段。2.如權(quán)利要求1所述的數(shù)據(jù)編程電路,其特征在于,上述控制單元從上述匹配表中找出上述第一版本編碼數(shù)據(jù)以及上述第二版本的只讀存儲器碼之間具有相同數(shù)據(jù)內(nèi)容的多個(gè)匹配數(shù)據(jù)片段,其中每一上述匹配數(shù)據(jù)片段的數(shù)據(jù)長度大于一特定臨界長度。3.如權(quán)利要求2所述的數(shù)據(jù)編程電路,其特征在于,上述控制單元計(jì)算上述第二版本的只讀存儲器碼中從一第一數(shù)據(jù)區(qū)塊至一第二數(shù)據(jù)區(qū)塊之間經(jīng)過上述多個(gè)匹配數(shù)據(jù)片段的每一路徑的權(quán)重,以便找出具有最小權(quán)重的一最短路徑以及上述多個(gè)匹配數(shù)據(jù)片段中對應(yīng)于上述最短路徑的上述第二數(shù)據(jù)片段,其中每一上述匹配數(shù)據(jù)片段包括多個(gè)數(shù)據(jù)區(qū)塊,以及每一上述匹配數(shù)據(jù)片段的數(shù)據(jù)長度為上述多個(gè)數(shù)據(jù)區(qū)塊的數(shù)量。4.如權(quán)利要求3所述的數(shù)據(jù)編程電路,其特征在于,在上述第一數(shù)據(jù)區(qū)塊至上述第二數(shù)據(jù)區(qū)塊之間,每一上述匹配數(shù)據(jù)片段具有相同的權(quán)重。5.如權(quán)利要求3所述的數(shù)據(jù)編程電路,其特征在于,上述最短路徑的起點(diǎn)為上述第一數(shù)據(jù)區(qū)塊,而上述最短路徑的終點(diǎn)為上述第二數(shù)據(jù)區(qū)塊,上述第二數(shù)據(jù)片段包括在上述最短路徑中介于一第三數(shù)據(jù)區(qū)塊以及一第四數(shù)據(jù)區(qū)塊之間的多個(gè)數(shù)據(jù)區(qū)塊。6.如權(quán)利要求5所述的數(shù)據(jù)編程電路,其特征在于,上述控制單元將上述最短路徑中從上述第一數(shù)據(jù)區(qū)塊至上述第三數(shù)據(jù)區(qū)塊的每一數(shù)據(jù)區(qū)塊依序儲存至上述單次可編程存儲器的一第一片段內(nèi),以及上述控制單元將上述最短路徑中從上述第四數(shù)據(jù)區(qū)塊至上述第二數(shù)據(jù)區(qū)塊的每一數(shù)據(jù)區(qū)塊依序儲存至上述單次可編程存儲器的一第二片段內(nèi)。7.如權(quán)利要求6所述的數(shù)據(jù)編程電路,其特征在于,上述控制單元將上述特定地址儲存至上述單次可編程存儲器的一第三片段,以指示上述最短路徑中上述第二數(shù)據(jù)片段內(nèi)的數(shù)據(jù)區(qū)塊的相同于上述第一版本編碼數(shù)據(jù)的上述第一數(shù)據(jù)片段內(nèi)的數(shù)據(jù)區(qū)塊,其中上述第三片段是介于上述第一片段以及上述第二片段之間。8.一種數(shù)據(jù)編程方法,適用于一單次可編程存儲器,其中上述單次可編程存儲器儲存對應(yīng)于一第一版本的只讀存儲器碼的一第一版本編碼數(shù)據(jù),上述方法包括從上述單次可編程存儲器讀取出上述第一版本編碼數(shù)據(jù),并將上述第一版本編碼數(shù)據(jù)還原成上述第一版本的只讀存儲器碼;根據(jù)上述第一版本的只讀存儲器碼,對一第二版本的只讀存儲器碼進(jìn)行編碼;以及將已編碼的上述第二版本的只讀存儲器碼儲存至上述單次可編程存儲器,其中對上述第二版本的只讀存儲器碼進(jìn)行編碼的步驟更包括根據(jù)上述第一版本的只讀存儲器碼以及上述第二版本的只讀存儲器碼,產(chǎn)生一匹配表;從上述匹配表中找出具有相同數(shù)據(jù)內(nèi)容的上述第一版本的只讀存儲器碼的一第一數(shù)據(jù)片段以及上述第二版本的只讀存儲器碼的一第二數(shù)據(jù)片段;以及將上述第二數(shù)據(jù)片段的數(shù)據(jù)內(nèi)容編碼為一特定地址,其中上述特定地址是指向上述單次可編程存儲器中上述第一版本編碼數(shù)據(jù)的上述第一數(shù)據(jù)片段。9.如權(quán)利要求8所述的數(shù)據(jù)編程方法,其特征在于,對上述第二版本的只讀存儲器碼進(jìn)行編碼的步驟更包括從上述匹配表中找出上述第一版本的只讀存儲器碼以及上述第二版本的只讀存儲器碼之間具有相同數(shù)據(jù)內(nèi)容的多個(gè)匹配數(shù)據(jù)片段,其中每一上述匹配數(shù)據(jù)片段的數(shù)據(jù)長度大于一特定臨界長度。10.如權(quán)利要求9所述的數(shù)據(jù)編程方法,其特征在于,對上述第二版本的只讀存儲器碼進(jìn)行編碼的步驟更包括計(jì)算上述第二版本的只讀存儲器碼中從一第一數(shù)據(jù)區(qū)塊至一第二數(shù)據(jù)區(qū)塊之間經(jīng)過上述多個(gè)匹配數(shù)據(jù)片段的每一路徑的權(quán)重;以及根據(jù)每一路徑的權(quán)重,找出具有最小權(quán)重的一最短路徑以及上述多個(gè)匹配數(shù)據(jù)片段中對應(yīng)于上述最短路徑的上述第二數(shù)據(jù)片段,其中每一上述匹配數(shù)據(jù)片段包括多個(gè)數(shù)據(jù)區(qū)塊,以及每一上述匹配數(shù)據(jù)片段的數(shù)據(jù)長度為上述多個(gè)數(shù)據(jù)區(qū)塊的數(shù)量。11.如權(quán)利要求10所述的數(shù)據(jù)編程方法,其特征在于,在上述第一數(shù)據(jù)區(qū)塊至上述第二數(shù)據(jù)區(qū)塊之間,每一上述匹配數(shù)據(jù)片段具有相同的權(quán)重。12.如權(quán)利要求10所述的數(shù)據(jù)編程方法,其特征在于,上述最短路徑的起點(diǎn)為上述第一數(shù)據(jù)區(qū)塊,而上述最短路徑的終點(diǎn)為上述第二數(shù)據(jù)區(qū)塊,上述第二數(shù)據(jù)片段包括在上述最短路徑中介于一第三數(shù)據(jù)區(qū)塊以及一第四數(shù)據(jù)區(qū)塊之間的多個(gè)數(shù)據(jù)區(qū)塊。13.如權(quán)利要求12所述的數(shù)據(jù)編程方法,其特征在于,將已編碼的上述第二版本的只讀存儲器碼儲存至上述單次可編程存儲器的步驟更包括將上述最短路徑中從上述第一數(shù)據(jù)區(qū)塊至上述第三數(shù)據(jù)區(qū)塊的每一數(shù)據(jù)區(qū)塊依序儲存至上述單次可編程存儲器的一第一片段內(nèi);以及將上述最短路徑中從上述第四數(shù)據(jù)區(qū)塊至上述第二數(shù)據(jù)區(qū)塊的每一數(shù)據(jù)區(qū)塊依序儲存至上述單次可編程存儲器的一第二片段內(nèi)。14.如權(quán)利要求13所述的數(shù)據(jù)編程方法,其特征在于,將已編碼的上述第二版本的只讀存儲器碼儲存至上述單次可編程存儲器的步驟更包括將上述特定地址儲存至上述單次可編程存儲器的一第三片段,以指示上述最短路徑中上述第二數(shù)據(jù)片段內(nèi)的數(shù)據(jù)區(qū)塊的相同于上述第一版本編碼數(shù)據(jù)的上述第一數(shù)據(jù)片段內(nèi)的數(shù)據(jù)區(qū)塊,其中上述第三片段是介于上述第一片段以及上述第二片段之間。全文摘要本發(fā)明公開一種單次可編程存儲器的數(shù)據(jù)編程電路及方法。數(shù)據(jù)編程電路包括單次可編程存儲器及控制單元。單次可編程存儲器用以儲存對應(yīng)于第一版本的只讀存儲器碼的第一版本編碼數(shù)據(jù)??刂茊卧靡詫⒌诙姹镜闹蛔x存儲器碼儲存至單次可編程存儲器??刂茊卧鶕?jù)第一版本編碼數(shù)據(jù)及第二版本的只讀存儲器碼產(chǎn)生匹配表,并從匹配表中找出具有相同的數(shù)據(jù)內(nèi)容的第一版本編碼數(shù)據(jù)的第一數(shù)據(jù)片段及第二版本的只讀存儲器碼的第二數(shù)據(jù)片段??刂茊卧獙⒌诙?shù)據(jù)片段編碼為特定地址并儲存至單次可編程存儲器,其中特定地址是指向單次可編程存儲器中第一版本編碼數(shù)據(jù)的第一數(shù)據(jù)片段。文檔編號G11C17/18GK102403041SQ201010602829公開日2012年4月4日申請日期2010年12月14日優(yōu)先權(quán)日2010年9月13日發(fā)明者陳永緯申請人:慧榮科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1