本發(fā)明實(shí)施例涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種基于nandflash的數(shù)據(jù)讀取裝置和方法。
背景技術(shù):
半導(dǎo)體存儲(chǔ)器包括易失性存儲(chǔ)器和非易失性存儲(chǔ)器。nandflash是flash內(nèi)存,即閃存的一種,屬于非易失性存儲(chǔ)設(shè)備。
在現(xiàn)有技術(shù)中,讀取nandflash中存儲(chǔ)數(shù)據(jù)的方法如下:當(dāng)發(fā)起某次讀取數(shù)據(jù)命令后,從存儲(chǔ)單元讀出的數(shù)據(jù)送入錯(cuò)誤檢查和糾正(errorcorrectingcode,ecc)模塊,ecc模塊會(huì)對(duì)讀取的數(shù)據(jù)進(jìn)行判斷。如果讀取的數(shù)據(jù)的錯(cuò)誤量超出既定量,ecc模塊會(huì)對(duì)讀取的數(shù)據(jù)進(jìn)行矯正操作。如果矯正后的數(shù)據(jù)的錯(cuò)誤量依然超出既定量,則輸出此次讀取數(shù)據(jù)失敗的指示;如果讀取的數(shù)據(jù)的錯(cuò)誤量在既定量范圍內(nèi),則將讀取到的數(shù)據(jù)作為該次讀取結(jié)果的結(jié)果并輸出。
上述讀取nandflash中存儲(chǔ)數(shù)據(jù)的方法不可靠,經(jīng)常出現(xiàn)讀取失敗的情況。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種基于nandflash的數(shù)據(jù)讀取裝置和方法,以優(yōu)化數(shù)據(jù)讀取過(guò)程,提高數(shù)據(jù)讀取的成功率。
一方面,本發(fā)明實(shí)施例提供了一種基于nandflash的數(shù)據(jù)讀取裝置,包括:
存儲(chǔ)單元,用于存儲(chǔ)數(shù)據(jù);
錯(cuò)誤檢測(cè)和糾正單元,用于對(duì)根據(jù)讀數(shù)據(jù)操作指令從所述存儲(chǔ)單元讀取的數(shù)據(jù)進(jìn)行判斷和矯正,并根據(jù)判斷和矯正結(jié)果產(chǎn)生讀取成功狀態(tài)信號(hào)或讀取失敗狀態(tài)信號(hào),發(fā)送所述讀取失敗狀態(tài)信號(hào)至智能檢測(cè)單元,發(fā)送讀取成功狀態(tài)信號(hào)和讀取的數(shù)據(jù)至第第一數(shù)據(jù)選擇單元;
智能檢測(cè)單元,用于根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令至所述存儲(chǔ)單元,以再次觸發(fā)數(shù)據(jù)讀取操作;
第一數(shù)據(jù)選擇單元,用于根據(jù)所述讀取成功狀態(tài)信號(hào),輸出所述錯(cuò)誤檢測(cè)和糾正單元發(fā)送的所述讀取的數(shù)據(jù)。
另一方面,本發(fā)明實(shí)施例還提供了一種基于nandflash的數(shù)據(jù)讀取方法,包括:
當(dāng)接收到讀數(shù)據(jù)操作指令時(shí),使存儲(chǔ)單元中的數(shù)據(jù)處于可讀狀態(tài);
錯(cuò)誤檢測(cè)和糾正單元讀取存儲(chǔ)單元中的數(shù)據(jù),對(duì)所述讀取的數(shù)據(jù)進(jìn)行判斷和矯正,并根據(jù)判斷和矯正結(jié)果產(chǎn)生讀取成功狀態(tài)信號(hào)或讀取失敗狀態(tài)信號(hào);
智能檢測(cè)單元根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令以再次觸發(fā)數(shù)據(jù)讀取操作;
第一數(shù)據(jù)選擇單元根據(jù)所述讀取成功狀態(tài)信號(hào),輸出所述讀取的數(shù)據(jù)。
本發(fā)明實(shí)施例提供的技術(shù)方案,可以根據(jù)錯(cuò)誤檢測(cè)和糾正單元發(fā)出的讀取失敗狀態(tài)信號(hào)重新發(fā)送新得讀數(shù)據(jù)操作指令至存儲(chǔ)單元,以再次觸發(fā)數(shù)據(jù)讀取操作。由于nandflash中的錯(cuò)誤位多屬據(jù)臨界錯(cuò)誤,在重復(fù)讀數(shù)據(jù)后大多數(shù)能夠正確讀出數(shù)據(jù),因此可以大大提高nandflash使用過(guò)程中的可靠性,提高數(shù)據(jù)讀取的成功率,并且減小主芯片對(duì)于數(shù)據(jù)讀取裝置的檢查次數(shù),降低負(fù)載和功耗。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖做一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的一種基于nandflash的數(shù)據(jù)讀取裝置的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例二提供的一種基于nandflash的數(shù)據(jù)讀取裝置的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例三提供的一種基于nandflash的數(shù)據(jù)讀取方法的流程示意圖;
圖4是本發(fā)明實(shí)施例四提供的一種基于nandflash的數(shù)據(jù)讀取方法的流程示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下將參照本發(fā)明實(shí)施例中的附圖,通過(guò)實(shí)施方式清楚、完整地描述本發(fā)明的技術(shù)方案,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
圖1是本發(fā)明實(shí)施例一提供的一種基于nandflash的數(shù)據(jù)讀取裝置的結(jié)構(gòu)示意圖。參見圖1,圖中箭頭可表示傳輸數(shù)據(jù)或者信號(hào)的流向,該裝置包括:
存儲(chǔ)單元10,用于存儲(chǔ)數(shù)據(jù);
錯(cuò)誤檢測(cè)和糾正單元20,用于對(duì)根據(jù)讀數(shù)據(jù)操作指令從所述存儲(chǔ)單元10讀取的數(shù)據(jù)進(jìn)行判斷和矯正,并根據(jù)判斷和矯正結(jié)果產(chǎn)生讀取成功狀態(tài)信號(hào)或讀取失敗狀態(tài)信號(hào),發(fā)送所述讀取失敗狀態(tài)信號(hào)至智能檢測(cè)單元30,發(fā)送讀取成功狀態(tài)信號(hào)和讀取的數(shù)據(jù)至第一數(shù)據(jù)選擇單元40;
在讀取存儲(chǔ)單元10中存儲(chǔ)的數(shù)據(jù)時(shí),先向存儲(chǔ)單元10發(fā)送讀數(shù)據(jù)操作指令,數(shù)據(jù)操作指令包括需要讀取的數(shù)據(jù)的,錯(cuò)誤檢測(cè)和糾正單元20即可讀取到相應(yīng)的數(shù)據(jù),然后對(duì)讀取的數(shù)據(jù)進(jìn)行判斷和矯正。其中,錯(cuò)誤檢測(cè)和糾正單元20具體可為ecc(errorcorrectingcode)模塊,對(duì)讀取到的數(shù)據(jù)進(jìn)行檢測(cè)判斷和矯正的具體過(guò)程為現(xiàn)有技術(shù),可參考相關(guān)技術(shù)。當(dāng)錯(cuò)誤檢測(cè)和糾正單元20產(chǎn)生讀取失敗信號(hào)時(shí),說(shuō)明此次讀取的數(shù)據(jù)不滿足條件;當(dāng)產(chǎn)生讀取成功狀態(tài)信號(hào)時(shí),說(shuō)明此次讀取的數(shù)據(jù)滿足相應(yīng)的條件,可將讀取的數(shù)據(jù)輸出。
智能檢測(cè)單元30,用于根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令至所述存儲(chǔ)單元10,以再次觸發(fā)數(shù)據(jù)讀取操作;
當(dāng)智能檢測(cè)單元30接收到讀取失敗狀態(tài)信號(hào)時(shí),可以發(fā)送新的讀數(shù)據(jù)操作指令至存儲(chǔ)單元10,以再次觸發(fā)數(shù)據(jù)讀取操作,可以提高數(shù)據(jù)讀取的成功率。
其中,所述智能檢測(cè)單元30還用于:根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送參數(shù)調(diào)整指令至所述存儲(chǔ)單元10,以調(diào)整讀取所述存儲(chǔ)單元10時(shí)的數(shù)據(jù)偏移系數(shù)和溫度偏移系數(shù)。
當(dāng)智能檢測(cè)單元30發(fā)送新的讀數(shù)據(jù)操作指令至所述存儲(chǔ)單元10,以再次觸發(fā)數(shù)據(jù)讀取操作時(shí),可以發(fā)送參數(shù)調(diào)整指令至所述存儲(chǔ)單元10,以調(diào)整讀取所述存儲(chǔ)單元10時(shí)的數(shù)據(jù)偏移系數(shù)和溫度偏移系數(shù),提高數(shù)據(jù)讀取的成功率。
第一數(shù)據(jù)選擇單元40,用于根據(jù)所述讀取成功狀態(tài)信號(hào),輸出所述錯(cuò)誤檢測(cè)和糾正單元20發(fā)送的所述讀取的數(shù)據(jù)。
若錯(cuò)誤檢測(cè)和糾正單元20產(chǎn)生讀取成功狀態(tài)信號(hào),說(shuō)明此次數(shù)據(jù)讀取成功,可以將錯(cuò)誤檢測(cè)和糾正單元20發(fā)送的讀取的數(shù)據(jù)作為此次讀取的數(shù)據(jù)進(jìn)行輸出。
本實(shí)施例提供的技術(shù)方案,可以根據(jù)錯(cuò)誤檢測(cè)和糾正單元發(fā)出的讀取失敗狀態(tài)信號(hào)重新發(fā)送新得讀數(shù)據(jù)操作指令至存儲(chǔ)單元,以再次觸發(fā)數(shù)據(jù)讀取操作。由于nandflash中的錯(cuò)誤位多屬據(jù)臨界錯(cuò)誤,在重復(fù)讀數(shù)據(jù)后大多數(shù)能夠正確讀出數(shù)據(jù),因此可以大大提高nandflash使用過(guò)程中的可靠性,提高數(shù)據(jù)讀取的成功率,并且減小主芯片對(duì)于數(shù)據(jù)讀取裝置的檢查次數(shù),降低負(fù)載和功耗。
實(shí)施例二
圖2是本發(fā)明實(shí)施例二提供的一種基于nandflash的數(shù)據(jù)讀取裝置的結(jié)構(gòu)示意圖,本實(shí)施例是在實(shí)施例一的基礎(chǔ)上進(jìn)行了優(yōu)化。
在本實(shí)施例中,所述錯(cuò)誤檢測(cè)和糾正單元20,還用于發(fā)送所述讀取失敗狀態(tài)信號(hào)至第二數(shù)據(jù)選擇單元50;
所述智能檢測(cè)單元30,具體用于根據(jù)接收到的當(dāng)前讀取失敗狀態(tài)信號(hào)判斷是否滿足預(yù)設(shè)截止條件,若是,則產(chǎn)生截止控制信號(hào),發(fā)送至第一數(shù)據(jù)選擇單元40和第二數(shù)據(jù)選擇單元50,若否,則根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令至所述存儲(chǔ)單元10,以再次觸發(fā)數(shù)據(jù)讀取操作;
其中,所述預(yù)設(shè)截止條件為接收到的讀取失敗狀態(tài)信號(hào)的次數(shù)達(dá)到預(yù)設(shè)次數(shù)。
在本實(shí)施例的另一種實(shí)施例方式中,也可以將預(yù)設(shè)次數(shù)設(shè)置至無(wú)窮大,即當(dāng)智能檢測(cè)單元30接收到當(dāng)前讀取失敗狀態(tài)信號(hào)時(shí),發(fā)送新的讀數(shù)據(jù)操作指令至所述存儲(chǔ)單元10,以再次觸發(fā)數(shù)據(jù)讀取操作。
所述第二數(shù)據(jù)選擇單元50,用于根據(jù)所述截止控制信號(hào)輸出讀取失敗狀態(tài)信號(hào);
所述第一數(shù)據(jù)選擇單元40,還用于根據(jù)所述截止控制信號(hào),輸出所述錯(cuò)誤檢測(cè)和糾正單元20當(dāng)前發(fā)送的讀取的數(shù)據(jù)。
若智能檢測(cè)單元30產(chǎn)生截止控制信號(hào),說(shuō)明經(jīng)過(guò)預(yù)設(shè)次數(shù)的讀取,讀取的數(shù)據(jù)仍不滿足錯(cuò)誤檢測(cè)和糾正單元20的判斷和矯正條件,可以將錯(cuò)誤檢測(cè)和糾正單元20最后一次輸出的數(shù)據(jù)作為最終的讀取數(shù)據(jù)輸出,并輸出讀取失敗狀態(tài)信號(hào)。
進(jìn)一步的,參見圖2,所述錯(cuò)誤檢測(cè)和糾正單元20,包括:
數(shù)據(jù)錯(cuò)誤量判斷子單元201,用于判斷所述讀取的數(shù)據(jù)的錯(cuò)誤量是否大于設(shè)定閾量;
在數(shù)據(jù)存儲(chǔ)的時(shí)候,會(huì)保存有存儲(chǔ)數(shù)據(jù)的校驗(yàn)數(shù)據(jù),例如奇偶校驗(yàn)數(shù)據(jù)。在讀取存儲(chǔ)數(shù)據(jù)的時(shí)候,數(shù)據(jù)錯(cuò)誤量判斷子單元201根據(jù)校驗(yàn)數(shù)據(jù)判斷讀取的數(shù)據(jù)的錯(cuò)誤量是否大于設(shè)定閾量。
數(shù)據(jù)矯正子單元202,用于若所述讀取的數(shù)據(jù)的錯(cuò)誤量大于所述設(shè)定閾量,對(duì)所述讀取的數(shù)據(jù)進(jìn)行矯正;
第一信號(hào)控制子單元203,用于若所述讀取的數(shù)據(jù)的錯(cuò)誤量不大于所述設(shè)定閾量,產(chǎn)生所述讀取成功狀態(tài)信號(hào);
第二信號(hào)控制子單元204,用于若所述矯正后的數(shù)據(jù)的錯(cuò)誤量大于所述設(shè)定閾量,產(chǎn)生所述讀取失敗狀態(tài)信號(hào);
若所述矯正后的數(shù)據(jù)的錯(cuò)誤量不大于所述設(shè)定閾量,產(chǎn)生所述讀取成功狀態(tài)信號(hào);
數(shù)據(jù)輸出子單元205,用于輸出所述讀取的數(shù)據(jù)至所述第一數(shù)據(jù)選擇單元40。
本實(shí)施例提供的技術(shù)方案,智能檢測(cè)單元根據(jù)接收到的當(dāng)前讀取失敗狀態(tài)信號(hào)判斷數(shù)據(jù)讀取失敗的次數(shù)是否達(dá)到預(yù)設(shè)次數(shù),再次觸發(fā)數(shù)據(jù)讀取操作,并將讀取失敗狀態(tài)信號(hào)和讀取的數(shù)據(jù)輸出,方便外部讀取數(shù)據(jù)的程序根據(jù)輸出的狀態(tài)信號(hào)和數(shù)據(jù)使用輸出的數(shù)據(jù),可以提高nandflash使用過(guò)程中的可靠性,并且減小主芯片對(duì)于數(shù)據(jù)讀取裝置的檢查次數(shù),降低負(fù)載和功耗。
實(shí)施例三
圖3是本發(fā)明實(shí)施例三提供的一種基于nandflash的數(shù)據(jù)讀取方法的流程示意圖。該方法適用于需要從nandflash存儲(chǔ)介質(zhì)中讀取存儲(chǔ)的數(shù)據(jù)的情況,可由配置于上述實(shí)施例一或?qū)嵤├械臄?shù)據(jù)讀取裝置來(lái)執(zhí)行,所述裝置可由軟件和/或硬件實(shí)現(xiàn)。參見圖3,本實(shí)施例提供的基于nandflash的數(shù)據(jù)讀取方法具體包括:
s310、當(dāng)接收到讀數(shù)據(jù)操作指令時(shí),使存儲(chǔ)單元中的數(shù)據(jù)處于可讀狀態(tài);
s320、錯(cuò)誤檢測(cè)和糾正單元讀取存儲(chǔ)單元中的數(shù)據(jù),對(duì)所述讀取的數(shù)據(jù)進(jìn)行判斷和矯正,并根據(jù)判斷和矯正結(jié)果產(chǎn)生讀取成功狀態(tài)信號(hào)或讀取失敗狀態(tài)信號(hào);
s330、智能檢測(cè)單元根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令以再次觸發(fā)數(shù)據(jù)讀取操作;
s340、第一數(shù)據(jù)選擇單元根據(jù)所述讀取成功狀態(tài)信號(hào),輸出所述讀取的數(shù)據(jù)。
進(jìn)一步的,所述智能檢測(cè)單元根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令以再次觸發(fā)數(shù)據(jù)讀取操作,包括:
根據(jù)當(dāng)前讀取失敗狀態(tài)信號(hào)判斷是否滿足預(yù)設(shè)截止條件,若是,則產(chǎn)生截止控制信號(hào),若否,則根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作,以再次觸發(fā)數(shù)據(jù)讀取操作;
第二數(shù)據(jù)選擇單元根據(jù)所述截止控制信號(hào),輸出讀取失敗狀態(tài)信號(hào);
第一數(shù)據(jù)選擇單元根據(jù)所述截止控制信號(hào),輸出當(dāng)前讀取的數(shù)據(jù)。
其中,所述預(yù)設(shè)截止條件為產(chǎn)生的讀取失敗狀態(tài)信號(hào)的次數(shù)達(dá)到預(yù)設(shè)次數(shù)。
進(jìn)一步的,在所述智能檢測(cè)單元根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送新的讀數(shù)據(jù)操作指令以再次觸發(fā)數(shù)據(jù)讀取操作之前,還包括:
智能檢測(cè)單元根據(jù)所述讀取失敗狀態(tài)信號(hào)發(fā)送參數(shù)調(diào)整指令至所述存儲(chǔ)單元,以調(diào)整讀取所述存儲(chǔ)單元時(shí)的數(shù)據(jù)偏移系數(shù)和溫度偏移系數(shù)。
進(jìn)一步的,所述錯(cuò)誤檢測(cè)和糾正單元讀取存儲(chǔ)單元中的數(shù)據(jù),對(duì)所述讀取的數(shù)據(jù)進(jìn)行判斷和矯正,并根據(jù)判斷和矯正結(jié)果產(chǎn)生讀取成功狀態(tài)信號(hào)或讀取失敗狀態(tài)信號(hào),包括:
判斷所述讀取的數(shù)據(jù)的錯(cuò)誤量是否大于設(shè)定閾量;
若所述讀取的數(shù)據(jù)的錯(cuò)誤量大于所述設(shè)定閾量,對(duì)所述讀取的數(shù)據(jù)進(jìn)行矯正;
若所述讀取的數(shù)據(jù)的錯(cuò)誤量不大于所述設(shè)定閾量,產(chǎn)生所述讀取成功狀態(tài)信號(hào);
若所述矯正后的數(shù)據(jù)的錯(cuò)誤量大于所述設(shè)定閾量,產(chǎn)生所述讀取失敗狀態(tài)信號(hào)。
本實(shí)施例提供的技術(shù)方案,可以提高nandflash使用過(guò)程中的可靠性,,可以提高讀取數(shù)據(jù)的成功率。
實(shí)施例四
圖4是本發(fā)明實(shí)施例四提供的一種于nandflash的數(shù)據(jù)讀取方法的流程示意圖。所述方法是在接收到外部讀數(shù)據(jù)操作指令后順序執(zhí)行,參見圖4,所述方法包括:
s410、使存儲(chǔ)單元中的數(shù)據(jù)處于可讀狀態(tài);
s420、讀取存儲(chǔ)單元中的數(shù)據(jù);
s430、判斷讀取的數(shù)據(jù)的錯(cuò)誤量是否大于設(shè)定閾量,若否,跳轉(zhuǎn)至s490;
s440、對(duì)所述讀取的數(shù)據(jù)進(jìn)行矯正;
s450、判斷矯正后的數(shù)據(jù)的錯(cuò)誤量是否大于設(shè)定閾量,若否,跳轉(zhuǎn)至s490;
s460、產(chǎn)生讀取失敗狀態(tài)信號(hào);
s470、判斷產(chǎn)生的讀取失敗的狀態(tài)信號(hào)的次數(shù)是否達(dá)到預(yù)設(shè)次數(shù),若否,跳轉(zhuǎn)至s410;
s480、輸出讀取失敗狀態(tài)信號(hào);
s490、輸出當(dāng)前讀取的數(shù)據(jù)。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。