註明來自
以mlc為例:
對fgf(floating gate flash)技術的,mlc programming一般分兩步走:先program lower page,然後program upper page。
對某個cell來說,當寫入1時,無需programming,閾值電壓保持不變,還是處於e狀態;當寫入0時,必須進行programming,使它的閾值電壓落到d範圍 ,即e->d。
programming某個page時,往其所在的wl控制極上施加高電平,襯底接地,對需要programming的儲存單元(如上圖綠色圈起來的cell):1->0,其bitline接地;對不需要programming的儲存單元(如上圖紅色圈起來的cell):1->1,bitline拉高,就能抑制其programming。
由於每個儲存單元的體質不一樣,有些cell很快就能讓其閾值電壓跳到d範圍,而有些儲存單元需要若干次programming,才能使其到達d。flash採用program + verify的方式進行programming,即開始在wl控制極上施加乙個電壓,如上圖所示,假設vpgm =19v,讓這個電壓持續一段時間,然後撤掉,對每個programming的儲存單元進行驗證,看其閾值電壓是否超過驗證電壓vvfy,如果超過,說明達到d狀態,這些儲存單元的bitline從接地到拉高,讓其不再繼續programming,而對那些沒有達到d狀態的儲存單元,還需要繼續programming。vpgm會加大,比如增加0.5v,vpgm = 19.5v,繼續programming,verify,直到達到d狀態。
在programming upper page之前,flash需要讀取該page,獲取page中所有cell的當前狀態,然後根據輸入,programming cell到相應的目標狀態。
如果當前cell狀態處於e,如果寫入1,無需programming,e狀態保持不變;如果寫入0,則需要programming該cell到狀態d1; 如果當前cell狀態處於d,如果寫入1,program該cell到d2;如果寫入0,則需要programming該cell到狀態d3;
比較一下lower page programming和upper page programming,有以下幾個不同:
1.program upper page時,需先知道當前cell的狀態,在programming之前需要讀所有的cells; program lower page時候無需此操作,因為所有cell都處於擦除狀態;
2.program upper page時,需要verify好幾個電平,而program lower page時,只需verify乙個電平;
3.program lower page時,e狀態和d狀態可以隔得比較遠,因此program時候可以加更大的初始program電壓和更大的步進(step)電壓;而program upper page時,e,d1,d2,d3之間的間隔比較小,因此program需要更精細的控制電壓,不然一下program過頭了。比如本來期望從e狀態跳躍到d1狀態,不小心電壓加大了,直接就跳到d2,那就麻煩了。
分兩次寫最大的問題是,如果在programming upper page時發生異常掉電,那麼之前lower page的資料也丟失。
那些人,那些事
很久沒有整理一下自己的思緒,聽著熟悉的歌,那歌聲會讓我想起那些人,那些事.乙個標點,乙個符號,乙個個早已在歲月深處冰封的眼神,一段沒有伴侶的歸途。一直以來我都認為我的人生就是這樣,平平淡淡,安安靜靜,波瀾不驚地在歲月的 眼角劃過,不留絲毫痕跡。現在看來,原來我寫的東西在很大程度上是是在滿足自己的某種...
那些人,那些事
一年前的今天,我大概和bi11一起奔波於各大招聘會上,白天各睡各的覺,晚上一起在工作室寫著程式 那時候似乎成都已經很冷,工作室有著溫暖的空調.而現在猛烈的陽光一件薄薄的襯衫真讓我不敢相信已經是十一月了.我在成都待了四年,說實話我不喜歡成都,不過還是有著很多讓人快樂的人和事給了我很多快樂的回憶.先說說...
那些人,那些事
回顧一下自己的it職業生涯,應該和大多數同僚一樣,從無知還有些自負的毛頭小子,到在技能上還算熟練,在性格上也變得成熟的奔三人士,在這個過程中給我最大的感覺就是越學習越發現自己懂得東西少,在職場上越來越感覺到僅僅靠技術層面上的提高是不能讓我們大多數人成功的。在自己目前的職業生涯中經歷過太多人太多事,大...