欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

具有檢錯/糾錯電路的非揮發(fā)存儲器及其讀寫數(shù)據(jù)的方法

文檔序號:6754420閱讀:149來源:國知局
專利名稱:具有檢錯/糾錯電路的非揮發(fā)存儲器及其讀寫數(shù)據(jù)的方法
技術(shù)領(lǐng)域
發(fā)明涉及非揮發(fā)存儲器,尤其涉及具有檢錯/糾錯(Error Checking and Correcting, ECC)電路的非揮發(fā)存儲器及其讀寫方法。
背景技術(shù)
隨著集成電路的飛速發(fā)展,半導(dǎo)體存儲器的集成度越來越高,容量也越來越大。隨 之而來的問題是半導(dǎo)體存儲器的可靠性和成品率面臨嚴(yán)重的挑戰(zhàn),比如信噪比隨著集成度 的增加而減小,存儲節(jié)點電荷量的降低使得存儲單位更容易受宇宙射線的影響,深亞微米 技術(shù)下的工藝偏差和材料缺陷導(dǎo)致存儲器成品率的降低等。糾錯碼是一種不但可以檢測錯誤而且可以定位錯誤位置并進而糾正錯誤的一類 編碼,是半導(dǎo)體存儲器中一種重要的容錯技術(shù)。漢明碼是一種常用的糾錯碼,由于其簡單、 易于實現(xiàn)等特點,在存儲器中得以廣泛應(yīng)用。根據(jù)漢明碼的理論,漢明碼中校驗位的個數(shù)需滿足如下關(guān)系2k 彡 m+k+1(式 1)其中k為校驗位個數(shù);m為數(shù)據(jù)位個數(shù)。由上述式1可以看出,數(shù)據(jù)位越多則校驗位所占的比例越低,也就是說采用ECC電 路的面積開銷越小。比如,1個字節(jié)(byte)的數(shù)據(jù)位需要4比特的校驗位,存儲陣列的面積 開銷是50% ;4個字節(jié)的數(shù)據(jù)位則需要6個比特的校驗位,存儲陣列的面積開銷是18. 8%0對于外部接口是以字節(jié)為單位進行數(shù)據(jù)傳輸?shù)木哂蠩CC電路的非揮發(fā)存儲器,現(xiàn) 有技術(shù)中為了能夠解決減少存儲器面積開銷的問題,普遍采用多字節(jié)數(shù)據(jù)位的ECC碼字, 使校驗位能夠占用較少的比例。但是在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)存儲器內(nèi)部進行 讀寫時,現(xiàn)有技術(shù)采用的是多字節(jié)數(shù)據(jù)位的ECC碼字,尤其是在向內(nèi)部存儲陣列寫入新的 數(shù)據(jù)時,是以較大的空間單位如頁(Page,如128KB)來操作的,如果輸入數(shù)據(jù)量不滿一頁 (這種情形目前是非常常見的),則會增加寫入時間,大大降低了存儲靈活性,十分浪費寫 操作的空間,而且操作過程中不必要的擦除/編程操作會大大降低存儲器的使用壽命。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是在于需要提供一種具有檢錯/糾錯電路的非揮發(fā) 存儲器以及該存儲器的讀寫方法,存儲器內(nèi)部以ECC碼字為單位進行讀寫操作。為了解決上述技術(shù)問題,本發(fā)明提供了一種向具有檢錯/糾錯電路的非揮發(fā)存儲 器連續(xù)寫入數(shù)據(jù)的方法,該方法包括獲得外部輸入數(shù)據(jù)的首地址及末地址;根據(jù)所述首地址及末地址緩存所述外部輸入數(shù)據(jù);若所述外部輸入數(shù)據(jù)所在的檢錯/糾錯數(shù)據(jù)組有部分字節(jié)不需要被替換,則從所述非揮發(fā)存儲器的存儲陣列中獲得該不需要被替換的字節(jié)即回寫數(shù)據(jù);將所述外部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù),組成新的檢錯/ 糾錯數(shù)據(jù)組并緩存,一個時鐘周期緩存一個所述新的檢錯/糾錯數(shù)據(jù)組;為所述新的檢錯/糾錯數(shù)據(jù)組生成對應(yīng)的校驗位;將所述新的檢錯/糾錯數(shù)據(jù)組及對應(yīng)的校驗位寫入到所述存儲陣列。優(yōu)選地,從所述存儲陣列中獲得所述回寫數(shù)據(jù)的步驟,包括以檢錯/糾錯碼字為 單位,從所述存儲陣列中讀取所述首地址和/或末地址的數(shù)據(jù)所在的檢錯/糾錯碼字,從中 獲得所述回寫數(shù)據(jù);所述檢錯/糾錯碼字,包括若干檢錯/糾錯數(shù)據(jù)組,以及與所述若干檢 錯/糾錯數(shù)據(jù)組相對應(yīng)的校驗位;其中一個檢錯/糾錯數(shù)據(jù)組包含有若干字節(jié)。優(yōu)選地,所述外部輸入數(shù)據(jù)以字節(jié)為單位,對所述外部輸入數(shù)據(jù),或者所述外部輸 入數(shù)據(jù)及所述回寫數(shù)據(jù)通過鎖存,組成所述新的檢錯/糾錯數(shù)據(jù)組。優(yōu)選地,獲得所述外部輸入數(shù)據(jù)在所述非揮發(fā)存儲器中的首地址后,根據(jù)所述首 地址為所述外部輸入數(shù)據(jù)連續(xù)分配存儲地址,一直分配到所述末地址為止。為了解決上述技術(shù)問題,本發(fā)明還提供了一種從具有檢錯/糾錯電路的非揮發(fā)存 儲器讀取數(shù)據(jù)的方法,其特征在于,以檢錯/糾錯碼字為單位,從所述非揮發(fā)存儲器的存儲 陣列中讀取數(shù)據(jù);所述檢錯/糾錯碼字,包括若干檢錯/糾錯數(shù)據(jù)組以及與所述若干檢錯/ 糾錯數(shù)據(jù)組相對應(yīng)的校驗位,一個檢錯/糾錯數(shù)據(jù)組包含有至少兩個字節(jié)。優(yōu)選地,獲取所要讀取的數(shù)據(jù)所在檢錯/糾錯碼字的地址,然后以所述檢錯/糾錯 碼字為單位從所述存儲陣列中讀取數(shù)據(jù)。優(yōu)選地,所述非揮發(fā)存儲器的外部接口,以字節(jié)為單位進行輸出。為了解決上述技術(shù)問題,本發(fā)明還提供了一種具有檢錯/糾錯電路的非揮發(fā)存儲 器,包括存儲陣列、檢錯/糾錯電路及緩沖器,還包括輸入鎖存器,用于接收外部輸入數(shù)據(jù);輸出鎖存器,與所述檢錯/糾錯電路相連,用于鎖存經(jīng)過所述檢錯/糾錯電路進行 檢錯/糾錯后的檢錯/糾錯數(shù)據(jù)組,其中檢錯/糾錯數(shù)據(jù)組包括至少兩個字節(jié);選擇單元,與所述緩沖器、輸入鎖存器及輸出鎖存器相連,寫數(shù)據(jù)操作過程中,從 所述輸入鎖存器,或者所述輸入鎖存器和輸出鎖存器中,獲取數(shù)據(jù)并組成檢錯/糾錯數(shù)據(jù) 組,發(fā)送給所述緩沖器。優(yōu)選地,所述選擇單元,從所述輸入鎖存器,或者所述輸入鎖存器和輸出鎖存器中 以檢錯/糾錯數(shù)據(jù)組為單位獲取數(shù)據(jù)。優(yōu)選地,該非揮發(fā)存儲器進一步包括存儲陣列及寫入狀態(tài)機,所述寫入狀態(tài)機用 于接收讀操作指令或?qū)懖僮髦噶?;根?jù)所述讀操作指令,以檢錯/糾錯碼字為單位,從所述存儲陣列中讀取數(shù)據(jù);所 述檢錯/糾錯碼字,包括若干檢錯/糾錯數(shù)據(jù)組以及與所述若干檢錯/糾錯數(shù)據(jù)組相對應(yīng) 的校驗位,一個檢錯/糾錯數(shù)據(jù)組包含有至少兩個字節(jié);根據(jù)所述寫操作指令,獲得外部輸入數(shù)據(jù)的首地址及末地址,并根據(jù)所述首地址 及末地址緩存所述外部輸入數(shù)據(jù);判斷所述外部輸入數(shù)據(jù)所在的檢錯/糾錯數(shù)據(jù)組是否有 部分字節(jié)不需要被替換,是則從所述存儲陣列中獲得該不需要被替換的字節(jié)即回寫數(shù)據(jù), 將所述外部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù),組成新的檢錯/糾錯數(shù)據(jù)組并緩存到所述緩沖器,一個時鐘周期緩存一個所述新的檢錯/糾錯數(shù)據(jù)組。優(yōu)選地,所述寫入狀態(tài)機獲得所述外部輸入數(shù)據(jù)在所述非揮發(fā)存儲器中的首地址 后,根據(jù)所述首地址為所述外部輸入數(shù)據(jù)連續(xù)分配存儲地址,直至分配到所述外部輸入數(shù) 據(jù)在所述存儲陣列中的末地址為止。優(yōu)選地,所述選擇單元在所述寫入狀態(tài)機發(fā)送的選擇信號作用下,將所述外部輸 入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù),組成新的檢錯/糾錯數(shù)據(jù)組。優(yōu)選地,所述寫入狀態(tài)機通過一控制信號的不同邏輯值,來指示所述檢錯/糾錯 電路對從所述存儲陣列中讀取的數(shù)據(jù)進行檢錯/糾錯,或者為所述新的檢錯/糾錯數(shù)據(jù)組 產(chǎn)生校驗位。優(yōu)選地,所述選擇單元由若干二選一多路選擇器構(gòu)成。優(yōu)選地,該非揮發(fā)存儲器還包括輸出單元,與所述輸出鎖存器相連,用于以字節(jié)為單位輸出所述輸出鎖存器鎖存 的數(shù)據(jù),包括多路選擇器。與現(xiàn)有技術(shù)相比,本發(fā)明中對于外部接口是以字節(jié)為單位進行數(shù)據(jù)傳輸?shù)木哂?ECC電路的非揮發(fā)存儲器,實現(xiàn)了以ECC碼字為單位從存儲陣列中讀數(shù)據(jù)或者向存儲陣列 中寫數(shù)據(jù),在有效減少校驗位占用存儲器容量的比例、節(jié)省存儲器陣列中校驗位的面積開 銷的同時,數(shù)據(jù)寫入時不需要為每個字節(jié)都標(biāo)示標(biāo)志位,只對對應(yīng)的ECC碼字進行擦除操 作,提高了存儲的靈活性以及存儲空間的利用效率,加快了數(shù)據(jù)寫操作的速度,同時減少了 以頁為單位執(zhí)行讀寫操作對存儲器的使用壽命的影響。


圖1為本發(fā)明非揮發(fā)存儲器一實施例的組成示意圖。圖2是圖1所示實施例中選擇單元的組成示意圖。圖3為讀數(shù)據(jù)操作實施例中數(shù)據(jù)位置示意圖。圖4為讀數(shù)據(jù)操作實施例的流程示意圖。圖5為寫數(shù)據(jù)操作實施例中數(shù)據(jù)位置示意圖。圖6為寫數(shù)據(jù)操作實施例的流程示意圖。
具體實施例方式以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應(yīng)用 技術(shù)手段來解決技術(shù)問題,并達成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。圖1為本發(fā)明非揮發(fā)存儲器一實施例的組成示意圖,該非揮發(fā)存儲器的外部接口 以字節(jié)為單位傳輸數(shù)據(jù)。在本實施例中,ECC碼字為38位(bit),包括ECC數(shù)據(jù)組(ECC data set)和校驗位,其中ECC數(shù)據(jù)組為32位,校驗位為6位。以8位為1個字節(jié)(byte),ECC數(shù) 據(jù)組共有4個字節(jié)(至少兩個字節(jié))。以下如未特別聲明,本申請下述各實施例中IfECC 數(shù)據(jù)組包含4個字節(jié),1字節(jié)包含8位。如圖1所示,該存儲器實施例主要包括存儲陣列(Memory Array) 110、寫入狀態(tài)機 (Write State Machine,WSM) 120、行地址譯碼器125、列地址譯碼器及靈敏放大器126、ECC 電路130、緩沖器140、輸出鎖存器(Latch) 150、輸出單元160、輸入鎖存器170及選擇單元180,其中存儲陣列110,與行地址譯碼器125及列地址譯碼器及靈敏放大器126相連,用于 存儲數(shù)據(jù);讀操作時,以ECC碼字為單位向列地址譯碼器及靈敏放大器126輸出數(shù)據(jù);寫操 作時,接收列地址譯碼器及靈敏放大器126發(fā)送過來的ECC數(shù)據(jù)組及與該ECC數(shù)據(jù)組對應(yīng) 的校驗位并存儲;寫入狀態(tài)機120,與行地址譯碼器125、列地址譯碼器及靈敏放大器126、ECC電路 130、輸出單元160及選擇單元180相連,用于控制存儲器讀寫的所有時序;在讀數(shù)據(jù)操作時,根據(jù)讀操作指令向行地址譯碼器125及列地址譯碼器及靈敏放 大器126分別發(fā)送用于定位所述目標(biāo)數(shù)據(jù)所在ECC碼字地址的行地址信號和列地址信號, 向ECC電路130發(fā)送一用于對ECC數(shù)據(jù)組進行檢錯/糾錯指示的檢錯/糾錯信號,向輸出 單元160發(fā)送一用于在ECC數(shù)據(jù)組中進行字節(jié)定位的選通信號,該選通信號包含有字節(jié)定 位信息;在寫數(shù)據(jù)操作時,根據(jù)寫操作指令獲得待寫入數(shù)據(jù)的首地址并記錄,根據(jù)該首地 址為后續(xù)輸入數(shù)據(jù)分配地址并記錄;檢測并判斷首地址的數(shù)據(jù)所在的ECC數(shù)據(jù)組是否有部 分字節(jié)需要被替換,如果是則從存儲陣列110中讀出該需要被替換的部分字節(jié)所在的ECC 碼字;如果是整個ECC數(shù)據(jù)組中的字節(jié)都需要被替換,則不必讀出該ECC數(shù)據(jù)組所在的ECC 碼字;在收到外部控制輸入的停止寫入的信息時,獲得待寫入數(shù)據(jù)的末地址并記錄;檢測 并判斷末地址的數(shù)據(jù)所在的ECC數(shù)據(jù)組是否有部分字節(jié)需要被替換,如果是則從存儲陣列 110中讀出該需要被替換的部分字節(jié)所在的ECC碼字;根據(jù)寫操作指令向選擇單元180發(fā) 送從輸入鎖存器170中讀取外部輸入數(shù)據(jù)的選擇信號,以及從輸出鎖存器150中讀取回寫 數(shù)據(jù)的選擇信號,其中該外部輸入數(shù)據(jù)為外部輸入的待寫入數(shù)據(jù),以字節(jié)為單位,該回寫數(shù) 據(jù)為從存儲陣列110中讀出并回寫到存儲陣列110中的待寫入數(shù)據(jù),也以字節(jié)為單位;前述 的首地址的數(shù)據(jù)為外部輸入數(shù)據(jù);還用于向ECC電路130發(fā)送一用于為ECC數(shù)據(jù)組產(chǎn)生校 驗位的校驗位產(chǎn)生信號;行地址譯碼器125,與存儲陣列110及寫入狀態(tài)機120相連,用于從存儲陣列110 中取數(shù)據(jù)時確認(rèn)數(shù)據(jù)地址(包括讀數(shù)據(jù)操作時從存儲陣列110中取數(shù)據(jù)的情形,以及寫數(shù) 據(jù)操作時從存儲陣列110中取數(shù)據(jù)的情形),接收寫入狀態(tài)機120發(fā)送的行地址信號,對該 行地址信號進行譯碼,獲得含有數(shù)據(jù)地址的行地址信息,并將該行地址信息發(fā)送給存儲陣 列 110 ;列地址譯碼器及靈敏放大器126,與存儲陣列110、寫入狀態(tài)機120、ECC電路130 及緩沖器140相連,接收寫入狀態(tài)機120所發(fā)送的列地址信號,寫數(shù)據(jù)操作時,接收從緩沖 器140中發(fā)送過來的ECC數(shù)據(jù)組及與該ECC數(shù)據(jù)組對應(yīng)的校驗位,然后發(fā)送到存儲陣列110 中存儲;ECC電路130,與寫入狀態(tài)機120、列地址譯碼器及靈敏放大器126、緩沖器140及 輸出鎖存器150相連,用于在讀數(shù)據(jù)操作時,接收列地址譯碼器及靈敏放大器126發(fā)送的 ECC碼字,并根據(jù)該寫入狀態(tài)機120發(fā)送的該檢錯/糾錯信號,利用ECC碼字中的校驗位對 ECC碼字中的ECC數(shù)據(jù)組進行檢錯/糾錯,獲得校驗后的正確的ECC數(shù)據(jù)組(以下簡稱為檢 錯/糾錯后的ECC數(shù)據(jù)組),將該檢錯/糾錯后的ECC數(shù)據(jù)組發(fā)送至輸出鎖存器150 ;還用 于在寫數(shù)據(jù)操作時,將回寫數(shù)據(jù)所在的ECC數(shù)據(jù)組發(fā)送到輸出緩存器150中,并根據(jù)寫入狀態(tài)機120發(fā)送的該校驗位產(chǎn)生信號,為緩沖器140中存儲的ECC數(shù)據(jù)組產(chǎn)生校驗位;在本實 施例中,檢錯/糾錯信號與校驗位產(chǎn)生信號是用同一控制信號的不同邏輯值來表示的;緩沖器140,與列地址譯碼器及靈敏放大器126、ECC電路130及選擇單元180相 連,用于緩存通過選擇單元180所輸入的外部輸入數(shù)據(jù),或者外部輸入數(shù)據(jù)及回寫數(shù)據(jù),在 所輸入的數(shù)據(jù)組成一 ECC數(shù)據(jù)組后,存儲ECC電路130為該ECC數(shù)據(jù)組所生成的校驗位,并 將該ECC數(shù)據(jù)組及對應(yīng)的校驗位通過列地址譯碼器及靈敏放大器126寫入存儲陣列110 ; 在本實施例中,緩沖器140的存儲容量,與存儲陣列110中的頁的大小相等;輸出鎖存器150,與ECC電路130、輸出單元160及選擇單元180相連,用于存儲經(jīng) 過ECC電路130進行檢錯/糾錯后的ECC數(shù)據(jù)組;在讀數(shù)據(jù)操作過程中,將檢錯/糾錯后的 ECC數(shù)據(jù)組發(fā)送給輸出單元160 ;在寫數(shù)據(jù)操縱過程中,將檢錯/糾錯后的ECC數(shù)據(jù)組按字 節(jié)發(fā)送給選擇單元180 ;輸出單元160,與寫入狀態(tài)機120、輸出鎖存器150及選擇單元180相連,用于根據(jù) 寫入狀態(tài)機120發(fā)送的選通信號,將輸出鎖存器150中所保存的ECC數(shù)據(jù)組按字節(jié)輸出;在 本實施例中,一個ECC數(shù)據(jù)組包含四個字節(jié),因此該輸出單元160為一四選一多路選擇器, 以將輸出鎖存器150中的數(shù)據(jù)按每次一字節(jié)選擇輸出;選通信號采用2bits地址信號,典型 地,選取表示最低兩位地址的地址信號A[1 0];在其他實施例中,如果一個ECC數(shù)據(jù)組包括 其他數(shù)量的字節(jié)數(shù)目,則可以選用相應(yīng)的多路選擇器,比如一個ECC數(shù)據(jù)組包含8個字節(jié), 此時就可以選用八選一多路選擇器作為該輸出單元160;總之,輸出單元160選用多路選擇 器時,該選用的多路選擇器的類型,根據(jù)一次所能輸出的數(shù)據(jù)長度占鎖存器中ECC數(shù)據(jù)組 的比例來確定;輸入鎖存器170,與選擇單元180相連,用于接收外部輸入的待寫入數(shù)據(jù)(Sbits), 即前述的外部輸入數(shù)據(jù),并將外部輸入數(shù)據(jù)以32bits為單位發(fā)送給選擇單元180 ;選擇單元180,與寫入狀態(tài)機120、緩沖器140、輸出鎖存器150及輸入鎖存器170 相連,用于在寫入狀態(tài)機120發(fā)送的選擇信號的指示下,從輸出鎖存器150中讀取回寫數(shù) 據(jù),從輸入鎖存器170中讀取外部輸入數(shù)據(jù),然后將所讀取的數(shù)據(jù)組成一個32比特的ECC 數(shù)據(jù)組,將該ECC數(shù)據(jù)組發(fā)送到緩沖器140中。本實施例中,通過該選擇單元180所輸入的數(shù)據(jù)包含兩種,一種是外部輸入的外 部輸入數(shù)據(jù),另一種是從存儲陣列110中讀取并經(jīng)輸出鎖存器150輸出的回寫數(shù)據(jù),因此該 選擇單元180為一組二選一多路選擇器,它們同時選擇數(shù)據(jù)并組成ECC數(shù)據(jù)組一次性輸出。在本實施例中,該二選一多路選擇器的數(shù)量為4個,如圖2所示。在圖2所示的選 擇單元180中,四個二選一多路選擇器分別為第一多路選擇器Si、第二多路選擇器S2、第三 多路選擇器S3及第四多路選擇器S4。這四個二選一多路選擇器的兩個輸入端,均分別與輸 出鎖存器150及輸入鎖存器170相連。每個二選一多路選擇器,均用于在作用于各自的選 擇信號作用下,從輸出鎖存器150或輸入鎖存器170按字節(jié)(Sbits)讀取數(shù)據(jù),如圖所示, 作用于第一多路選擇器S 1的選擇信號為第一選擇信號Sel [1],作用于第二多路選擇器S2 的選擇信號為第二選擇信號Sel [2],作用于第三多路選擇器S3的選擇信號為第三選擇信 號Sel [3],作用于第四多路選擇器S4的選擇信號為第四選擇信號Sel [4]。這四個二選一多 路選擇器的輸出端,連接在一起,用于根據(jù)各自的輸出,組成一 32bits的ECC數(shù)據(jù)組。其中 的輸出鎖存器150及輸入鎖存器170的容量均為32bits,輸出鎖存器150 —次接收32bits的回寫數(shù)據(jù),輸入鎖存器170 —次接收Sbits的外部輸入數(shù)據(jù)。需要說明的是,寫操作過程中之所以要回寫數(shù)據(jù),是因為存儲器的外部接口是以 字節(jié)為單位進行讀寫操作的,而存儲器內(nèi)部是以ECC碼字為單位進行讀寫操作的,當(dāng)一個 字節(jié)的數(shù)據(jù)寫入存儲器時,其對應(yīng)的ECC碼字就需要重新寫入存儲陣列110中;為了保證在 ECC碼字中不需要被替換的數(shù)據(jù)(即前述的回寫數(shù)據(jù))與進行替換的數(shù)據(jù)(即前述的外部 輸入數(shù)據(jù))進行重組后獲得的新的ECC碼字是準(zhǔn)確的,所以向存儲陣列110中寫入數(shù)據(jù)時 先經(jīng)過檢錯/糾錯處理,保證了寫入的ECC碼字準(zhǔn)確無誤。如圖1所示,緩沖器140包括數(shù)據(jù)緩沖器(Data Buffer) 142和校驗位緩沖器 (Check_bit Buffer) 144,其中數(shù)據(jù)緩沖器142,與列地址譯碼器及靈敏放大器126、ECC電路130及選擇單元180 相連,用于存儲通過選擇單元180所輸入的數(shù)據(jù)(外部輸入數(shù)據(jù),或者外部輸入數(shù)據(jù)及回寫 數(shù)據(jù)),在本實施例中,所存儲的數(shù)據(jù)用于組成包含4個Sbits的ECC數(shù)據(jù)組,也即一個ECC 數(shù)據(jù)組共32位;校驗位緩沖器144,與列地址譯碼器及靈敏放大器126及ECC電路130相連,用于 存儲ECC電路130為數(shù)據(jù)緩沖器142中所存儲的ECC數(shù)據(jù)組所生成的校驗位,由于32位數(shù) 據(jù)需要6位校驗位,因此在本實施例中,該校驗位為6位。以下通過一個讀數(shù)據(jù)操作實施例和一個寫數(shù)據(jù)操作實施例,來進一步詳細說明圖 1所示非揮發(fā)存儲器實施例的特點。(一 )讀數(shù)據(jù)操作實施例讀數(shù)據(jù)時,以ECC碼字為單位從存儲陣列中讀取數(shù)據(jù),其中該ECC碼字包括ECC數(shù) 據(jù)組(ECC data set)和校驗位。本實施例欲要讀出存儲陣列第M個ECC碼字中ECC數(shù)據(jù) 組的第三個字節(jié)datal,即圖3所示的帶陰影的字節(jié)。圖4為讀數(shù)據(jù)操作實施例的流程示意圖,結(jié)合圖1所示非揮發(fā)存儲器實施例以及 圖3所示數(shù)據(jù)位置示意,該讀數(shù)據(jù)操作實施例主要包括如下步驟步驟S410,根據(jù)讀操作指令,寫入狀態(tài)機120向行地址譯碼器125及列地址譯碼器 及靈敏放大器126分別發(fā)送用于定位所要讀取的數(shù)據(jù)所在的ECC碼字的行地址信號和列地 址信號,向ECC電路130發(fā)送一用于對ECC數(shù)據(jù)組進行檢錯/糾錯指示的檢錯/糾錯信號, 還向輸出單元160發(fā)送一用于從ECC數(shù)據(jù)組中定位目標(biāo)數(shù)據(jù)datal的選通信號;步驟S420,行地址譯碼器125及列地址譯碼器及靈敏放大器126分別對該行地址 信號和列地址信號進行譯碼,分別獲得目標(biāo)數(shù)據(jù)datal所在ECC碼字的行地址信息和列地 址信息,并將該行地址信息和列地址信息發(fā)送給存儲陣列110 ;步驟S430,存儲陣列110收到行地址譯碼器125及列地址譯碼器及靈敏放大器 126發(fā)送的該行地址信息和列地址信息后,根據(jù)該些地址信息(即該行地址信息及列地址 信息),將含有該目標(biāo)數(shù)據(jù)datal的該第M個ECC碼字經(jīng)列地址譯碼器及靈敏放大器126發(fā) 送給ECC電路130,其中該第M個ECC碼字包含ECC數(shù)據(jù)組和校驗位,待輸出數(shù)據(jù)datal包 含在該ECC數(shù)據(jù)組中;在本讀數(shù)據(jù)實施例中,是要讀出1字節(jié)(Sbits)的數(shù)據(jù),則從存儲陣列110中讀出 的ECC碼字為38位(bit);該38位的ECC碼字中包含32位的ECC數(shù)據(jù)組(一個ECC數(shù)據(jù) 組包含四個Sbits的字節(jié))和6位的校驗位,該待輸出的1字節(jié)的目標(biāo)數(shù)據(jù)datal,包含在該32位的ECC數(shù)據(jù)組中;步驟S440,ECC電路130接收到該第M個ECC碼字后,根據(jù)寫入狀態(tài)機125發(fā)送的 該檢錯/糾錯信號,利用該第M個ECC碼字中的校驗位對該第M個ECC碼字中的ECC數(shù)據(jù) 組進行檢錯/糾錯,獲得檢錯/糾錯后的ECC數(shù)據(jù)組;步驟S450,ECC電路130將該檢錯/糾錯后的ECC數(shù)據(jù)組發(fā)送至輸出鎖存器150 ;步驟S460,輸出單元160根據(jù)該選通信號,從輸出鎖存器150所存儲的該檢錯/糾 錯后的ECC數(shù)據(jù)組中獲得目標(biāo)數(shù)據(jù)datal并輸出;由于一個ECC數(shù)據(jù)組包含四個8bits的字節(jié),因此該輸出單元160為一四選一多 路選擇器,以將輸出鎖存器150中的數(shù)據(jù)按每次一字節(jié)選擇輸出,選通信號采用2bits地址 信號,典型地,選取最低兩位地址A[1:0]。在本讀數(shù)據(jù)操作的實施例中,寫入狀態(tài)機120向該行地址譯碼器125及列地址譯 碼器及靈敏放大器126發(fā)送地址信號,向該ECC電路130發(fā)送該檢錯/糾錯信號,以及向該 四選一多路選擇器發(fā)送的該選通信號的時序,是由寫入狀態(tài)機120控制的,而且沒有嚴(yán)格 的限制,也即前述步驟S410與后續(xù)步驟并不存在嚴(yán)格的先后順序。比如在其他的讀操作實 施例中,寫入狀態(tài)機120向該ECC電路130發(fā)送該檢錯/糾錯信號,可以是在前述步驟S420 中該ECC電路130接收到該ECC碼字之后;又如寫入狀態(tài)機120向該四選一多路選擇器發(fā) 送的該選通信號,可以是在前述步驟S440中該ECC電路進行檢錯/糾錯之后,或者前述步 驟S450中該ECC電路將該檢錯/糾錯后的ECC數(shù)據(jù)組發(fā)送至該輸出鎖存器150之后。4字節(jié)的ECC數(shù)據(jù)組一次輸出1字節(jié),將2位地址作為4選1的選通信號,該2位 地址為輸出數(shù)據(jù)首地址的低兩位,由于是連續(xù)操作,因此后續(xù)數(shù)據(jù)的地址根據(jù)該首地址累 加1獲得。以上是以欲要讀出的數(shù)據(jù)為一個字節(jié)為例來說明的。如果欲要讀出的數(shù)據(jù)是包含 在一個ECC碼字中的兩個、三個或者四個字節(jié),則寫入狀態(tài)機120向四選一多路選擇器發(fā)送 的選通信號分別包含該兩個、三個或者四個字節(jié)的地址信息。如果欲要讀出的數(shù)據(jù)包含在多個ECC碼字中,則在讀操作時,每次讀出一個ECC碼 字,然后從該ECC碼字中依次讀出各字節(jié)的數(shù)據(jù)。通過讀取該多個ECC碼字,最后獲得該包 含在多個ECC碼字中的欲要讀出的數(shù)據(jù)。( 二)寫數(shù)據(jù)操作實施例在本實施例中,選擇單元180為一二選一多路選擇器,要寫入的從外部輸入的外 部輸入數(shù)據(jù)為9字節(jié)共72bits,欲要從存儲陣列110第N個ECC碼字的ECC數(shù)據(jù)組第二個 字節(jié)開始寫入,結(jié)束于第N+2個ECC碼字的ECC數(shù)據(jù)組第二個字節(jié)。當(dāng)然,一次輸入的外部 輸入數(shù)據(jù),不能超過數(shù)據(jù)緩沖器142的容量。圖5所示的帶陰影的字節(jié)為待寫入的字節(jié),且 每字節(jié)數(shù)據(jù)位對應(yīng)的ECC數(shù)據(jù)組是固定的。圖6為寫數(shù)據(jù)操作實施例的流程示意圖,結(jié)合圖1所示非揮發(fā)存儲器實施例以及 圖5所示的數(shù)據(jù)位置示意,該寫數(shù)據(jù)操作主要包括如下步驟步驟S610,根據(jù)寫操作指令,寫入狀態(tài)機120獲得外部輸入數(shù)據(jù)在非揮發(fā)存儲器 中的首地址并記錄;在本實施例中,該外部輸入數(shù)據(jù)的首地址為存儲陣列110中第N個ECC碼字的ECC 數(shù)據(jù)組第二個字節(jié)的地址;
步驟S620,根據(jù)該首地址,寫入狀態(tài)機120為后續(xù)的外部輸入數(shù)據(jù)分配在非揮發(fā) 存儲器中的存儲地址并記錄;在本實施例中,該分配的存儲地址為從該首地址開始的連續(xù)9個字節(jié)的地址;步驟S630,寫入狀態(tài)機120在收到外部控制輸入的停止寫入的信息時,獲得外部 輸入數(shù)據(jù)在非揮發(fā)存儲器中的末地址并記錄;也即為外部輸入數(shù)據(jù)分配存儲地址時,該存 儲地址一直分配到所獲得的末地址為止;步驟S640,將該9個字節(jié)的外部輸入數(shù)據(jù)按照各自的地址,緩存到輸入鎖存器170 中;步驟S650,寫入狀態(tài)機120根據(jù)外部輸入數(shù)據(jù)的首地址(即該9個字節(jié)中第一個 字節(jié)的地址),從存儲陣列Iio中讀取第N個ECC碼字的ECC數(shù)據(jù)組,緩存于輸出鎖存器 150,并指示選擇單元180從輸出鎖存器150中讀取該第N個ECC碼字的ECC數(shù)據(jù)組中的第 一個字節(jié);步驟S652,寫入狀態(tài)機120指示選擇單元180從輸入鎖存器170中讀取外部輸入 數(shù)據(jù)按地址排列的前三個字節(jié);步驟S654,選擇單元180根據(jù)寫入狀態(tài)機120的指示,從輸出鎖存器150中讀取該 第N個ECC碼字的ECC數(shù)據(jù)組中的第一個字節(jié),從輸入鎖存器170中讀取外部輸入數(shù)據(jù)按 地址排列的前三個字節(jié);步驟S656,選擇單元180將讀取的四個字節(jié),即該第N個ECC碼字的ECC數(shù)據(jù)組中 的第一個字節(jié)以及該外部輸入數(shù)據(jù)按地址排列的前三個字節(jié),組成一個ECC數(shù)據(jù)組,為新 的第N個ECC碼字的ECC數(shù)據(jù)組,并將該新的第N個ECC碼字的ECC數(shù)據(jù)組,在一個時鐘周 期內(nèi)發(fā)送到數(shù)據(jù)緩沖器142中緩存;其中從輸出鎖存器150中讀取的字節(jié)為該新的第N個 ECC碼字的ECC數(shù)據(jù)組的第一個字節(jié),從輸入鎖存器170中讀取的三個字節(jié)為該新的第N個 ECC碼字的ECC數(shù)據(jù)組的第二、第三及第四個字節(jié);步驟S658,寫入狀態(tài)機120指示選擇單元180從輸入鎖存器170中讀取外部輸入 數(shù)據(jù)按地址排列的第四到第七個字節(jié);步驟S660,選擇單元180根據(jù)寫入狀態(tài)機120指示,從輸入鎖存器170中讀取外部 輸入數(shù)據(jù)中第四到第七個字節(jié),并將這四個字節(jié)按順序組成新的第N+1個ECC碼字的ECC 數(shù)據(jù)組,在一個時鐘周期內(nèi)發(fā)送到數(shù)據(jù)緩沖器142中緩存;步驟S662,寫入狀態(tài)機120根據(jù)外部輸入數(shù)據(jù)的末地址(即該9個字節(jié)中第九個 字節(jié)的地址),從存儲陣列Iio中讀取第N+2個ECC碼字的ECC數(shù)據(jù)組,緩存于輸出鎖存器 150,并指示選擇單元180從輸出鎖存器150中讀取該第N+2個ECC碼字的ECC數(shù)據(jù)組中的 第三及第四個字節(jié);步驟S664,寫入狀態(tài)機120指示選擇單元180從輸入鎖存器170中讀取外部輸入 數(shù)據(jù)按地址排列的第八及第九個字節(jié);步驟S670,選擇單元180根據(jù)寫入狀態(tài)機120的指示,從輸入鎖存器170中讀取該 外部輸入數(shù)據(jù)按地址排列的第八及第九個字節(jié),從輸出鎖存器150中讀取該第N+2個ECC 碼字的ECC數(shù)據(jù)組中的第三及第四個字節(jié);步驟S675,選擇單元180將讀取的四個字節(jié),即該外部輸入數(shù)據(jù)按地址排列的第 八及第九個字節(jié)以及該第N+2個ECC碼字的ECC數(shù)據(jù)組中的第三及第四個字節(jié),組成新的第N+2個ECC碼字的ECC數(shù)據(jù)組,在一個時鐘周期內(nèi)發(fā)送到數(shù)據(jù)緩沖器142中緩存;其中該 外部輸入數(shù)據(jù)按地址排列的第八及第九個字節(jié),為該新的第N+2個ECC碼字的ECC數(shù)據(jù)組 的第一及第二個字節(jié),該第N+2個ECC碼字的ECC數(shù)據(jù)組中的第三及第四個字節(jié),為該新的 第N+2個ECC碼字的ECC數(shù)據(jù)組的第三及第四個字節(jié);上述流程中從存儲陣列110中讀取數(shù)據(jù)的操作過程,請參照圖4所示讀數(shù)據(jù)操作 實施例,此處不再贅述。回寫時是把輸出鎖存器150中的數(shù)據(jù)按字節(jié)發(fā)送到選擇單元180, 由選擇單元180組成新的ECC數(shù)據(jù)組后發(fā)送到緩沖器142。在本實施例中,由于外部輸入數(shù)據(jù)的首地址,是第N個ECC碼字中ECC數(shù)據(jù)組的第 二個字節(jié)的位置,為了保證寫入的準(zhǔn)確性,需要將該第N個ECC碼字中ECC數(shù)據(jù)組的第一個 字節(jié)讀取出來并進行回寫;由于外部輸入數(shù)據(jù)的末地址,是第N+2個ECC碼字中ECC數(shù)據(jù)組 的第二個字節(jié),需要將該第N+2個ECC碼字中ECC數(shù)據(jù)組的第三、第四個字節(jié)讀取出來并進 行回寫;步驟S680,ECC電路130分別為數(shù)據(jù)緩沖器142中存儲的三個新的ECC數(shù)據(jù)組生 成各自對應(yīng)的校驗位,然后將所生成的校驗位發(fā)送到校驗位緩沖器144緩存;步驟S690,將該三個新的ECC數(shù)據(jù)組與各自對應(yīng)的校驗位,一次一個碼字(一個 ECC數(shù)據(jù)組及對應(yīng)的校驗位)地發(fā)送到存儲陣列110,按照對應(yīng)的地址進行存儲。由于是從存儲陣列110第N個ECC碼字的ECC數(shù)據(jù)組第二個字節(jié)開始寫入,并且 結(jié)束于第N+2個ECC碼字的ECC數(shù)據(jù)組第二個字節(jié),因此需要將該第N個ECC碼字的ECC 數(shù)據(jù)組第一個字節(jié),以及該第N+2個ECC碼字的ECC數(shù)據(jù)組第三、第四個字節(jié)讀出并回寫到 數(shù)據(jù)緩沖器142。本寫數(shù)據(jù)操作實施例中,該新的第N個ECC碼字的ECC數(shù)據(jù)組中,第一個字節(jié)為從 存儲陣列110中讀出并回寫的字節(jié),后三個字節(jié)為外部輸入數(shù)據(jù)中順序排列的第一、第二 及第三個字節(jié);該新的第N+1個ECC碼字的ECC數(shù)據(jù)組,順序排列外部輸入數(shù)據(jù)的第四至第 七個字節(jié);該新的第N+2個ECC碼字的ECC數(shù)據(jù)組第一及第二個字節(jié),分別為外部輸入數(shù)據(jù) 的第八和第九個字節(jié),后兩個字節(jié),為從存儲陣列110中讀出并回寫的字節(jié)。現(xiàn)有技術(shù)中對待寫入的整頁數(shù)據(jù)的每個字節(jié),都需要采用標(biāo)志位來標(biāo)示地址。在 本發(fā)明中,采用首位地址確定后根據(jù)該首位地址連續(xù)數(shù)據(jù)的方法,不需要為每個字節(jié)都標(biāo) 示標(biāo)志位。相比現(xiàn)有技術(shù)而言,本發(fā)明中最多需要兩次標(biāo)示地址信息(首地址及末地址) 即可。需要說明的是,上述寫數(shù)據(jù)操作實施例中,為外部輸入數(shù)據(jù)分配存儲地址時是以 連續(xù)加1的方式進行分配的,實際上還可以采用記錄等方式為外部輸入數(shù)據(jù)分配存儲地 址。另外,上述寫數(shù)據(jù)操作實施例是以連續(xù)寫入(即在存儲陣列中外部輸入數(shù)據(jù)的存儲地 址是連續(xù)的)的方式進行說明的,對于不連續(xù)寫入(即在存儲陣列中外部輸入數(shù)據(jù)的存儲 地址是不連續(xù)的)的外部輸入數(shù)據(jù),可以將其視作若干連續(xù)寫入的數(shù)據(jù)段,從而采用上述 寫操作實施例的步驟完成寫入。由圖6所示寫操作實施例可知,在寫操作過程中,寫入狀態(tài)機120需要判斷是否需 要從存儲陣列110中讀出數(shù)據(jù)以進行回寫,如果需要則從存儲陣列110中讀取相應(yīng)的ECC 碼字存入示出鎖存器150,并指示選擇單元從中讀取相應(yīng)的字節(jié)。接收外部輸入數(shù)據(jù)時,獲得外部輸入數(shù)據(jù)的首地址并記錄,并根據(jù)首地址為外部輸入數(shù)據(jù)分配地址。收到外部控制輸入的停止寫入的信息時,獲得外部輸入數(shù)據(jù)的末地址 并記錄。根據(jù)該首地址尋址定位該首地址數(shù)據(jù)所在的ECC數(shù)據(jù)組,根據(jù)該末地址尋址定位 該末地址數(shù)據(jù)所在的ECC數(shù)據(jù)組;然后分別判斷該首地址數(shù)據(jù)所在的ECC數(shù)據(jù)組是不是有 部分字節(jié)不需要被替換,以及該末地址數(shù)據(jù)所在的ECC數(shù)據(jù)組是不是有部分字節(jié)不需要被替換。如果該首地址數(shù)據(jù)所在的ECC數(shù)據(jù)組和/或該末地址數(shù)據(jù)所在的ECC數(shù)據(jù)組,有 部分字節(jié)不需要被替換,則通過行地址譯碼器125、列地址譯碼器及靈敏放大器126及ECC 電路130等,將ECC數(shù)據(jù)組緩存到輸出鎖存器150,并指示選擇單元180從中讀取不需要被 替換的字節(jié)。選擇單元180在選擇信號的作用下,從輸出鎖存器150中讀取回寫數(shù)據(jù),從輸 入鎖存器170中讀取外部輸入數(shù)據(jù),組成新的ECC數(shù)據(jù)組后發(fā)送到數(shù)據(jù)緩沖器142存儲。如 果是整個ECC數(shù)據(jù)組的全部字節(jié)均需要被替換,則無需從存儲陣列110中讀出數(shù)據(jù)。在數(shù)據(jù)緩沖器142存儲了全部需要寫入到存儲陣列110中的數(shù)據(jù)(包括外部輸入 數(shù)據(jù),如果有回寫數(shù)據(jù)的話還包括回寫數(shù)據(jù))后,向ECC電路130發(fā)送校驗位產(chǎn)生信號。ECC 電路130根據(jù)該校驗位產(chǎn)生信號,為數(shù)據(jù)緩沖器142中存儲的每個ECC數(shù)據(jù)組分別生成校 驗位并發(fā)送到校驗位緩沖器144中存儲,然后將各ECC數(shù)據(jù)組及對應(yīng)的校驗位經(jīng)列地址譯 碼器及靈敏放大器126發(fā)送到存儲陣列110。在發(fā)往存儲陣列110時,可以將ECC數(shù)據(jù)組及 對應(yīng)的校驗位發(fā)送給存儲陣列110中存儲,一次寫入一個ECC碼字。在圖6所示的寫數(shù)據(jù)操作實施例中,數(shù)據(jù)緩沖器142中存儲的是新的第N、第N+1 及第N+2個ECC碼字中的ECC數(shù)據(jù)組,相應(yīng)的,校驗位緩沖器144中分別存儲該新的第N、第 N+1及第N+2個ECC碼字中的ECC數(shù)據(jù)組的校驗位,其中,每個ECC數(shù)據(jù)組為32位,對應(yīng)的 校驗位為6位。上述該寫操作實施例,實現(xiàn)了將存儲陣列中第N個ECC碼字ECC數(shù)據(jù)組第二個字 節(jié)開始,至第N+2個ECC碼字ECC數(shù)據(jù)組第二個字節(jié)結(jié)束的共9個字節(jié),替換為新輸入的外 部輸入數(shù)據(jù)。結(jié)合圖2所示,在執(zhí)行寫數(shù)據(jù)的過程中,一個二選一多路選擇器一次只向數(shù)據(jù)緩 沖器142發(fā)送1字節(jié)的數(shù)據(jù),無論是從外部輸入的外部輸入數(shù)據(jù),還是從存儲陣列中讀出的 回寫數(shù)據(jù)與外部輸入數(shù)據(jù)的組合。在本實施例中,一個選擇單元180含有四個二選一多路 選擇器,因此在一個時鐘周期向數(shù)據(jù)緩沖器142發(fā)送四個字節(jié)。在上述寫操作實施例中,由 于一個ECC數(shù)據(jù)組包含4個字節(jié),因此對于一個ECC數(shù)據(jù)組而言,選擇單元180向數(shù)據(jù)緩沖 器142發(fā)送的ECC碼字中,最多包含三個字節(jié)的回寫數(shù)據(jù)。需要說明的是,本發(fā)明上述各實施例,是以一個ECC碼字包含4個字節(jié)、一字節(jié)為 Sbits為例進行說明的,并不構(gòu)成對ECC碼字或者字節(jié)的限制,一個ECC碼字具體包含多少 字節(jié)、或者一個字節(jié)包含多少bits,本發(fā)明并沒有限定。本發(fā)明的技術(shù)方案,以遠小于頁的ECC碼字為單位,完成數(shù)據(jù)的讀寫。本發(fā)明技術(shù) 方案適用于外部接口以字節(jié)為單位進行數(shù)據(jù)傳輸?shù)姆菗]發(fā)存儲器,尤其是EEPR0M。采用若 干字節(jié)的數(shù)據(jù)位和對應(yīng)的校驗位組成一個ECC碼字,并且以ECC碼字為單位進行讀寫,降低 了 ECC電路的面積開銷。存儲器可以按地址連續(xù)地讀取數(shù)據(jù)或?qū)懭霐?shù)據(jù),只需輸入讀寫對 應(yīng)的指令以及操作的起始地址即可,存儲器內(nèi)部會自動執(zhí)行連續(xù)的操作而不必重新輸入指令和地址,因為后續(xù)地址自動產(chǎn)生,因此接口可以非常簡單。當(dāng)存儲器隨機輸入一個字節(jié)的 數(shù)據(jù)時,存儲器內(nèi)部只需要將該字節(jié)對應(yīng)的ECC碼字進行重新寫入即可,與現(xiàn)有技術(shù)以頁 為單位讀取或?qū)懭霐?shù)據(jù)相比,有效延長了存儲器的使用壽命。而且,在一次數(shù)據(jù)寫入過程 中,最多只需兩次從存儲陣列中讀出若干個字節(jié)長度的ECC碼字,與現(xiàn)有技術(shù)相比,也降低 了數(shù)據(jù)寫入時的時間和功耗。 雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采 用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本 發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
一種向具有檢錯/糾錯電路的非揮發(fā)存儲器連續(xù)寫入數(shù)據(jù)的方法,其特征在于,該方法包括獲得外部輸入數(shù)據(jù)的首地址及末地址;根據(jù)所述首地址及末地址緩存所述外部輸入數(shù)據(jù);若所述外部輸入數(shù)據(jù)所在的檢錯/糾錯數(shù)據(jù)組有部分字節(jié)不需要被替換,則從所述非揮發(fā)存儲器的存儲陣列中獲得該不需要被替換的字節(jié)即回寫數(shù)據(jù);將所述外部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù),組成新的檢錯/糾錯數(shù)據(jù)組并緩存,一個時鐘周期緩存一個所述新的檢錯/糾錯數(shù)據(jù)組;為所述新的檢錯/糾錯數(shù)據(jù)組生成對應(yīng)的校驗位;將所述新的檢錯/糾錯數(shù)據(jù)組及對應(yīng)的校驗位寫入到所述存儲陣列。
2.如權(quán)利要求1所述的方法,其特征在于,從所述存儲陣列中獲得所述回寫數(shù)據(jù)的步 驟,包括以檢錯/糾錯碼字為單位,從所述存儲陣列中讀取所述首地址和/或末地址的數(shù)據(jù) 所在的檢錯/糾錯碼字,從中獲得所述回寫數(shù)據(jù);所述檢錯/糾錯碼字,包括若干檢錯/糾 錯數(shù)據(jù)組,以及與所述若干檢錯/糾錯數(shù)據(jù)組相對應(yīng)的校驗位;其中一個檢錯/糾錯數(shù)據(jù)組 包含有若干字節(jié)。
3.如權(quán)利要求1所述的方法,其特征在于,所述外部輸入數(shù)據(jù)以字節(jié)為單位,對所述外 部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù)通過鎖存,組成所述新的檢錯/糾錯 數(shù)據(jù)組。
4.如權(quán)利要求1所述的方法,其特征在于,獲得所述外部輸入數(shù)據(jù)在所述非揮發(fā)存儲 器中的首地址后,根據(jù)所述首地址為所述外部輸入數(shù)據(jù)連續(xù)分配存儲地址,一直分配到所 述末地址為止。
5.一種從具有檢錯/糾錯電路的非揮發(fā)存儲器讀取數(shù)據(jù)的方法,其特征在于,以檢錯/ 糾錯碼字為單位,從所述非揮發(fā)存儲器的存儲陣列中讀取數(shù)據(jù);所述檢錯/糾錯碼字,包括 若干檢錯/糾錯數(shù)據(jù)組以及與所述若干檢錯/糾錯數(shù)據(jù)組相對應(yīng)的校驗位,一個檢錯/糾 錯數(shù)據(jù)組包含有至少兩個字節(jié)。
6.如權(quán)利要求1所述的方法,其特征在于,獲取所要讀取的數(shù)據(jù)所在檢錯/糾錯碼字的 地址,然后以所述檢錯/糾錯碼字為單位從所述存儲陣列中讀取數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其特征在于,所述非揮發(fā)存儲器的外部接口,以字節(jié)為單 位進行輸出。
8.一種具有檢錯/糾錯電路的非揮發(fā)存儲器,包括存儲陣列、檢錯/糾錯電路及緩沖 器,其特征在于,還包括輸入鎖存器,用于接收外部輸入數(shù)據(jù);輸出鎖存器,與所述檢錯/糾錯電路相連,用于鎖存經(jīng)過所述檢錯/糾錯電路進行檢錯 /糾錯后的檢錯/糾錯數(shù)據(jù)組,其中檢錯/糾錯數(shù)據(jù)組包括至少兩個字節(jié);選擇單元,與所述緩沖器、輸入鎖存器及輸出鎖存器相連,寫數(shù)據(jù)操作過程中,從所述 輸入鎖存器,或者所述輸入鎖存器和輸出鎖存器中,獲取數(shù)據(jù)并組成檢錯/糾錯數(shù)據(jù)組,發(fā) 送給所述緩沖器。
9.如權(quán)利要求8所述的非揮發(fā)存儲器,其特征在于,所述選擇單元,從所述輸入鎖存 器,或者所述輸入鎖存器和輸出鎖存器中以檢錯/糾錯數(shù)據(jù)組為單位獲取數(shù)據(jù)。
10.如權(quán)利要求8所述的非揮發(fā)存儲器,其特征在于,該非揮發(fā)存儲器進一步包括存儲 陣列及寫入狀態(tài)機,所述寫入狀態(tài)機用于接收讀操作指令或?qū)懖僮髦噶睿桓鶕?jù)所述讀操作指令,以檢錯/糾錯碼字為單位,從所述存儲陣列中讀取數(shù)據(jù);所述檢 錯/糾錯碼字,包括若干檢錯/糾錯數(shù)據(jù)組以及與所述若干檢錯/糾錯數(shù)據(jù)組相對應(yīng)的校 驗位,一個檢錯/糾錯數(shù)據(jù)組包含有至少兩個字節(jié);根據(jù)所述寫操作指令,獲得外部輸入數(shù)據(jù)的首地址及末地址,并根據(jù)所述首地址及末 地址緩存所述外部輸入數(shù)據(jù);判斷所述外部輸入數(shù)據(jù)所在的檢錯/糾錯數(shù)據(jù)組是否有部分 字節(jié)不需要被替換,是則從所述存儲陣列中獲得該不需要被替換的字節(jié)即回寫數(shù)據(jù),將所 述外部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù),組成新的檢錯/糾錯數(shù)據(jù)組并 緩存到所述緩沖器,一個時鐘周期緩存一個所述新的檢錯/糾錯數(shù)據(jù)組。
11.如權(quán)利要求10所述的非揮發(fā)存儲器,其特征在于,所述寫入狀態(tài)機獲得所述外部 輸入數(shù)據(jù)在所述非揮發(fā)存儲器中的首地址后,根據(jù)所述首地址為所述外部輸入數(shù)據(jù)連續(xù)分 配存儲地址,直至分配到所述外部輸入數(shù)據(jù)在所述存儲陣列中的末地址為止。
12.如權(quán)利要求10所述的非揮發(fā)存儲器,其特征在于,所述選擇單元在所述寫入狀態(tài) 機發(fā)送的選擇信號作用下,將所述外部輸入數(shù)據(jù),或者所述外部輸入數(shù)據(jù)及所述回寫數(shù)據(jù), 組成新的檢錯/糾錯數(shù)據(jù)組。
13.如權(quán)利要求10所述的非揮發(fā)存儲器,其特征在于,所述寫入狀態(tài)機通過一控制信 號的不同邏輯值,來指示所述檢錯/糾錯電路對從所述存儲陣列中讀取的數(shù)據(jù)進行檢錯/ 糾錯,或者為所述新的檢錯/糾錯數(shù)據(jù)組產(chǎn)生校驗位。
14.如權(quán)利要求8所述的非揮發(fā)存儲器,其特征在于,所述選擇單元由若干二選一多路 選擇器構(gòu)成。
15.如權(quán)利要求8至14中任一項權(quán)利要求所述的非揮發(fā)存儲器,其特征在于,該非揮發(fā) 存儲器還包括輸出單元,與所述輸出鎖存器相連,用于以字節(jié)為單位輸出所述輸出鎖存器鎖存的數(shù) 據(jù),包括多路選擇器。
全文摘要
本發(fā)明公開了一種具有ECC電路的非揮發(fā)存儲器及其讀寫數(shù)據(jù)的方法,存儲器內(nèi)部以ECC碼字為單位進行讀寫操作。其中寫入數(shù)據(jù)的方法包括獲得外部輸入數(shù)據(jù)的首地址及末地址并緩存外部輸入數(shù)據(jù);若外部輸入數(shù)據(jù)所在的ECC數(shù)據(jù)組有部分字節(jié)不需要被替換,則從非揮發(fā)存儲器的存儲陣列中獲得該不需要被替換的字節(jié)即回寫數(shù)據(jù);將外部輸入數(shù)據(jù),或者外部輸入數(shù)據(jù)及回寫數(shù)據(jù),組成新的ECC數(shù)據(jù)組并緩存;為新的ECC數(shù)據(jù)組生成對應(yīng)的校驗位;將新的ECC數(shù)據(jù)組及對應(yīng)的校驗位寫入到存儲陣列。本發(fā)明在數(shù)據(jù)寫入時只對對應(yīng)的ECC碼字進行擦除操作,本發(fā)明提高了存儲的靈活性以及存儲空間的利用效率。
文檔編號G11C16/10GK101930799SQ200910087520
公開日2010年12月29日 申請日期2009年6月23日 優(yōu)先權(quán)日2009年6月23日
發(fā)明者蘇如偉 申請人:北京芯技佳易微電子科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永善县| 南溪县| 黎川县| 台北县| 芮城县| 沅江市| 石狮市| 都安| 饶平县| 太湖县| 陇西县| 中方县| 道孚县| 共和县| 仪陇县| 镇康县| 谢通门县| 通榆县| 石楼县| 廊坊市| 玛曲县| 麻江县| 肥城市| 吉安市| 贵德县| 阜宁县| 甘洛县| 文成县| 山东省| 高清| 浮山县| 保康县| 桐梓县| 石城县| 博白县| 清丰县| 兴安盟| 庐江县| 阿克陶县| 偃师市| 武威市|