,, , ,
(上海航天電子技術(shù)研究所,上海 201109)
NAND Flash[1]固存由于其具有的優(yōu)點(diǎn)廣泛應(yīng)用于航天數(shù)據(jù)處理系統(tǒng),這些優(yōu)點(diǎn)包括訪問(wèn)速度快、低功耗、高密度、大容量、抗震性強(qiáng)等[2]。由于NAND Flash的制造工藝不能保證其存儲(chǔ)區(qū)域在生命周期內(nèi)保持性能的可靠,因此在NAND Flash 生產(chǎn)及使用過(guò)程中都有可能產(chǎn)生壞塊[3]。在數(shù)據(jù)處理系統(tǒng)中使用固存控制FPGA對(duì)壞塊進(jìn)行管理,為保證壞塊管理的正確性,必須對(duì)固存控制FPGA進(jìn)行嚴(yán)格驗(yàn)證。隨著壞塊管理設(shè)計(jì)復(fù)雜性越來(lái)越高,對(duì)壞塊的驗(yàn)證難度也隨之變得日益復(fù)雜。傳統(tǒng)上,一個(gè)完整的設(shè)計(jì),往往需要花費(fèi)70%的時(shí)間在驗(yàn)證上,即便如此,也很難保證壞塊管理的完全正確性[4]。傳統(tǒng)的對(duì)固存控制FPGA壞塊管理的驗(yàn)證方法有模塊級(jí)仿真和硬件聯(lián)測(cè)。前者單獨(dú)測(cè)試固存的擦寫、讀、全擦除等流程,無(wú)法模擬固存工作過(guò)程中壞塊的產(chǎn)生及其對(duì)固存控制過(guò)程的影響,難以保證驗(yàn)證的充分性。后者在硬件上宏觀上測(cè)試系統(tǒng)功能,被動(dòng)地等待固存壞塊產(chǎn)生,難以主動(dòng)控制固存壞塊產(chǎn)生位置,且測(cè)試周期長(zhǎng),無(wú)法保證壞塊在不同分布工況下的功能正確性。為此有必要設(shè)計(jì)一種壞塊受控的仿真系統(tǒng)來(lái)保證壞塊驗(yàn)證的充分性,并提高壞塊驗(yàn)證效率。
選用VCS作為搭建壞塊仿真環(huán)境的平臺(tái)。VCS是Synopsys公司提供的FPGA/ASIC仿真驗(yàn)證平臺(tái),支持VHDL、Verilog、SystemVerilog等語(yǔ)言[5]。
編寫執(zhí)行腳本Makefile文件對(duì)仿真模型和固存控制FPGA進(jìn)行分析、編譯、仿真。觀察結(jié)果輸出,檢查壞塊管理的正確性。在Makefile中對(duì)VCS做仿真設(shè)置,VCS工作過(guò)程分為:分析(Analysis)、編譯(Elaboration)、仿真(Simulation)[6]。
分析(Analysis)是VCS仿真的第一階段。該階段對(duì)庫(kù)文件、固存控制FPGA、仿真模型進(jìn)行分析、進(jìn)行語(yǔ)法檢查。編譯(Elaboration)是VCS仿真的第二階段。該階段VCS使用在分析(Aanlysis)階段產(chǎn)生的中間文件,建立例化層次并生成可執(zhí)行的二進(jìn)制文件。仿真(Simulation)是VCS仿真第三階段。該階段可通過(guò)命令./{OUTPUT}-gui-cm {CM_COMMAND}-cm_dir {OUTPUT}打開仿真界面,觀察仿真波形[7]。
在VCS平臺(tái)中通過(guò)Verilog語(yǔ)言建立仿真模型,如圖1所示。仿真模型情況如表1所示。核心仿真模型是EEPROM模型和固存模型。前者用于驗(yàn)證壞塊表的維護(hù),并將維護(hù)過(guò)程記錄在數(shù)據(jù)文件中(eeprom0.dat~eeprom3.dat),后者用于模擬固存的全擦除、擦寫、讀流程,并在上述工作流程中模擬產(chǎn)生壞塊并反饋給固存控制FPGA,將固存響應(yīng)過(guò)程記錄在固存響應(yīng)過(guò)程文件文件中(flashctrl.dat)。 遙控指令發(fā)送模型用于發(fā)送讀、寫、停等遙控指令,其中指令保存在文件remote_control.txt中。
圖1 仿真系統(tǒng)結(jié)構(gòu)
仿真模型詳情如表1所示,對(duì)EEPROM模型和固存模型做詳細(xì)闡述。
表1 仿真模型表
1.2.1 EEPROM模型
EEPROM模塊包括3片EEPROM,其中EEPROM1為初始?jí)膲K表,EEPROM2為備份壞塊表,EEPROM3為工作壞塊表。其中,工作壞塊表是固存工作時(shí)的日常用表,初始?jí)膲K表和備份壞塊表是工作壞塊表出現(xiàn)異常時(shí),作為備用的應(yīng)急表。三種表的作用將在其維護(hù)過(guò)程的驗(yàn)證中做詳細(xì)說(shuō)明。
建立工作壞塊表包括初始化流程和受固存FPGA控制的讀/寫流程。初始化流程的意義是建立初始?jí)膲K表,讀寫流程的意義是在存儲(chǔ)板工作流程中,根據(jù)壞塊變化情況維護(hù)EEPROM中的工作壞塊表。EEPROM地址范圍為0 ~ 131071,其存儲(chǔ)的數(shù)據(jù)位寬為8bit,每個(gè)EEPROM地址對(duì)應(yīng)固存中的一個(gè)塊地址。每個(gè)EEPROM地址中的數(shù)據(jù)位寬為8bit,判斷壞塊的閾值為5,即EEPROM地址中“1”的個(gè)數(shù)小于5,則認(rèn)為該EEPROM地址對(duì)應(yīng)的固存塊為壞塊。通過(guò)Verilog語(yǔ)言可以隨機(jī)產(chǎn)生壞塊也可精確產(chǎn)生壞塊。EEPROM的地址范圍為0~131071,對(duì)應(yīng)固存中131072個(gè)塊。對(duì)工作壞塊表的維護(hù)過(guò)程存儲(chǔ)在記錄文件eeprom3.dat中。建立工作壞塊表流程如圖2所示。
圖2 建立工作壞塊表流程
1.2.2 固存模型
使用Verilog語(yǔ)言建立固存模型,在模型參數(shù)端口可精確設(shè)置壞塊發(fā)生的位置(設(shè)置固存的塊地址、層地址、頁(yè)地址)。由固存芯片資料可知,擦寫流程中產(chǎn)生壞塊的方式與讀流程中產(chǎn)生壞塊的方式不同。故在固存模型中設(shè)置三種模式的壞塊反饋機(jī)制:第一,擦寫固存時(shí)壞塊判斷標(biāo)準(zhǔn):查詢6次未收到準(zhǔn)備好信息,或收到準(zhǔn)備好信息但存儲(chǔ)板反饋為壞塊時(shí),則認(rèn)為出現(xiàn)壞塊[8-9]。第二,讀固存初始?jí)膲K表壞塊判斷標(biāo)準(zhǔn):查詢1次收到讀出廠標(biāo)志為低電平(壞塊),則認(rèn)為出現(xiàn)壞塊。第三,讀固存時(shí)壞塊判斷標(biāo)準(zhǔn):讀操作時(shí)當(dāng)讀完一個(gè)區(qū)塊數(shù)據(jù)后,對(duì)收到的漢明校驗(yàn)計(jì)數(shù)結(jié)果進(jìn)行判斷,若漢明校驗(yàn)信號(hào)低電平脈沖個(gè)數(shù)大于遙控指令設(shè)定的閾值,則認(rèn)為該區(qū)塊為壞塊。其中第一、第三種情況出現(xiàn)在固存工作過(guò)程中,是固存自發(fā)行為。第二種情況受遙控指令控制,當(dāng)遙控指令發(fā)送模型發(fā)送“讀初始?jí)膲K表指令”后,固存讀EEPROM第1層中存儲(chǔ)的初始?jí)膲K信息。固存壞塊產(chǎn)生機(jī)制如圖3所示。
圖3 固存工作流程中壞塊產(chǎn)生流程圖
對(duì)固存壞塊管理的驗(yàn)證包括壞塊表維護(hù)過(guò)程的驗(yàn)證和壞塊分布對(duì)固存讀寫流程影響的驗(yàn)證。
仿真系統(tǒng)對(duì)固存壞塊表維護(hù)過(guò)程的驗(yàn)證包括建立初始?jí)膲K表、恢復(fù)初始?jí)膲K表、恢復(fù)備份壞塊表、建立備份壞塊表、壞塊取消、壞塊上注、工作壞塊表下傳、寫固存時(shí)壞塊查詢及標(biāo)記、讀固存時(shí)壞塊查詢及標(biāo)記、擦除固存時(shí)壞塊查詢及標(biāo)記。
1)建立初始?jí)膲K表:仿真系統(tǒng)發(fā)送“讀初始?jí)膲K表指令(32’h000018C8)”。仿真系統(tǒng)根據(jù)固存模型反饋,將固存中的初始?jí)膲K情況寫入記錄文件eeprom1.dat。Data為8bit數(shù)據(jù),若數(shù)據(jù)的二進(jìn)制形式含“1”的個(gè)數(shù)小于5,則是壞塊,若“1”的個(gè)數(shù)大于等于5,則是好塊。固存好塊地址在eeprom1.dat中記錄情況(部分)如下所示:
top_tb.MU5: Addr = 000b,Data = 7f; top_tb.MU5: Addr = 001c,Data = df;
top_tb.MU5: Addr = 001f,Data = 7f; top_tb.MU5: Addr = 0024,Data = fd;
2)恢復(fù)初始?jí)膲K表:仿真系統(tǒng)發(fā)送“恢復(fù)初始?jí)膲K表指令(32’h000018C7)” 。FPGA將初始?jí)膲K表eeprom1.dat的數(shù)據(jù)寫入工作壞塊表eeprom3.dat。導(dǎo)入數(shù)據(jù)時(shí)進(jìn)行閾值為5的判斷,即若數(shù)據(jù)“1”的個(gè)數(shù)小于5,認(rèn)為是壞塊,若數(shù)據(jù)“1”的個(gè)數(shù)大于5,認(rèn)為是好塊。將好塊寫為全1,將壞塊寫為全0。eeprom3.dat記錄了恢復(fù)初始?jí)膲K表的全部過(guò)程。固存共131072個(gè)塊,仿真系統(tǒng)將整個(gè)恢復(fù)壞塊表流程記錄,發(fā)現(xiàn)初始?jí)膲K表最后一個(gè)數(shù)據(jù)無(wú)法寫入工作表。
經(jīng)分析原因如下:在讀初始?jí)膲K表最后一個(gè)地址時(shí),在狀態(tài)機(jī)state_prom的狀態(tài)PROM_RDPROM_FIRST_OELOW態(tài)將wrprom_nxt_end置為高電平,導(dǎo)致寫工作壞塊表最后一個(gè)地址時(shí)片選信號(hào)無(wú)效,無(wú)法完成對(duì)工作表最后一個(gè)地址的寫入。針對(duì)該問(wèn)題的修改措施為:將對(duì)初始?jí)膲K表判最后一個(gè)地址的位置由狀態(tài)PROM_RDPROM_FIRST_OELOW移狀態(tài)PROM_WRPROM_NXT_END,使得判到初始?jí)膲K表最后一個(gè)地址時(shí),對(duì)工作表的片選信號(hào)有效,從而完成對(duì)最后一個(gè)地址的寫入。
3)恢復(fù)備份壞塊表:仿真系統(tǒng)發(fā)送“恢復(fù)備份壞塊表指令(32’h000018C6)”。仿真系統(tǒng)將備份壞塊表中的信息寫入工作壞塊表,即通過(guò)讀eeprom2.dat寫eeprom3.dat記錄了恢復(fù)備份壞塊表過(guò)程。由于備份表關(guān)于地址的控制邏輯與初始表關(guān)于地址的邏輯相同,故備份表最后一個(gè)地址(131071)也無(wú)法被選中,及備份壞塊表的最后一個(gè)地址信息復(fù)發(fā)恢復(fù)到工作壞塊表。修改措施與恢復(fù)初始?jí)膲K表的修改方法相同。
4)建立備份壞塊表:仿真系統(tǒng)發(fā)送“建立備份壞塊表指令(32’h000018C5)”。仿真系統(tǒng)將工作壞塊表信息寫入備份壞塊表,即讀eeprom3.dat寫eeprom2.dat。仿真系統(tǒng)同樣發(fā)現(xiàn)工作壞塊表最后一個(gè)地址無(wú)法寫入備份壞塊表。修改措施與恢復(fù)初始?jí)膲K表的修改方法相同。
5)壞塊上注:當(dāng)固存數(shù)據(jù)傳輸異常,地面控制站認(rèn)為固存某地址是壞塊時(shí),需要進(jìn)行壞塊上注,在工作壞塊表中將固存的壞塊信息進(jìn)行標(biāo)注。仿真系統(tǒng)發(fā)送“壞塊上注指令32’hbf000005”,即向固存地址05h上注信息,將其標(biāo)記為壞塊。觀察eeprom3.dat,可見(jiàn)仿真系統(tǒng)對(duì)指定的壞塊進(jìn)行了上注。
6)壞塊取消:當(dāng)?shù)孛婵刂普菊J(rèn)為固存某地址是好塊時(shí),需要進(jìn)行壞塊取消。其工作流程類似于壞塊上注。仿真系統(tǒng)發(fā)送“壞塊取消指令32’hb5000013”,即向固存地址13h上注信息,將其標(biāo)記為好塊。觀察eeprom3.dat,地址13 h由壞塊(00h)轉(zhuǎn)變?yōu)楹脡K(ffh)。
7)工作壞塊表下傳:仿真系統(tǒng)發(fā)送“壞塊表下傳指令”,工作壞塊表信息會(huì)通過(guò)遙測(cè)下傳。
8)寫固存時(shí)壞塊查詢及標(biāo)記:仿真系統(tǒng)發(fā)送“寫指令”。仿真系統(tǒng)可根據(jù)工作壞塊表對(duì)固存壞塊標(biāo)記情況跳過(guò)對(duì)應(yīng)的壞塊,只寫好塊。通過(guò)查看仿真系統(tǒng)產(chǎn)生的eeprom3.dat中壞塊分布信息及flashctrl.dat中固存寫過(guò)程,可以驗(yàn)證FPGA跳過(guò)了壞塊,只寫好塊。
9)讀固存時(shí)壞塊查詢及標(biāo)記:在仿真系統(tǒng)中令漢明校驗(yàn)開啟,令固存模型在讀流程中產(chǎn)生壞塊,固存壞塊信息保存在文件flashctrl.dat中,工作壞塊表對(duì)固存讀流程中壞塊變化情況保存在文件eeprom3.dat中。通過(guò)比較flashctrl.dat與eeprom3.dat可以驗(yàn)證在讀流程中壞塊產(chǎn)生及標(biāo)記的正確性。
10)擦除固存時(shí)壞塊查詢及標(biāo)記:令仿真系統(tǒng)模擬固存在擦除過(guò)程中不產(chǎn)生壞塊,固存操作記錄flashctrl.dat中只對(duì)工作壞塊表eeprom3.dat中的好塊進(jìn)行擦除;令固存在擦除過(guò)程中產(chǎn)生壞塊,eeprom3.dat根據(jù)固存壞塊變化情況實(shí)時(shí)進(jìn)行變化。
2.2.1 讀停問(wèn)題描述
固存控制FPGA要求讀固存頁(yè)地址到達(dá)300 h時(shí),可自動(dòng)讀停。若不能讀停而對(duì)相同地址重復(fù)讀,會(huì)造成數(shù)據(jù)重復(fù)、紊亂。令仿真系統(tǒng)中工作壞塊表第0塊、第4095塊為好塊,其余塊為壞塊(塊地址12d也為壞塊),觀察固存能否在頁(yè)地址300 h時(shí)自動(dòng)讀停。工作壞塊表設(shè)置方式如下所示:
initial begin
k = 0;
sram_cnt = 0;
repeat(131072) begin
sram[sram_cnt] = 8’h00; //備注:00h表示壞塊
sram_cnt = sram_cnt + 1;
end
for (k = 0;k < 4096; k = k + 1)begin
sram[0] = 8’hff; //備注:將第0塊,第4095塊設(shè)置為好塊,其余均為壞塊
sram[4095] = 8’hff; //備注:ffh表示好塊
end
end
固存控制FPGA在頁(yè)地址為300h(768d),即塊地址為768/64=12d(1塊包含64頁(yè))時(shí)配合頁(yè)讀使能信號(hào)rd_page_adden對(duì)信號(hào)cntt進(jìn)行計(jì)數(shù),當(dāng)cntt計(jì)到“10”時(shí),令固存讀停,源代碼下所示。
process(rst_n,clk)
… …
if(zs_rd_addreq='1')then
cntt <=(others=>'0');
elsif (rd_page_adden = '1')and(rd_addr(width downto 0)="000" & x"0300")then
cntt <=cntt+1;
……
end process;
process(rst_n,clk)
begin
… …
elsif (cntt ="10")then
rd_stop <='1';
else
rd_stop <='0';
… …
end process;
由于仿真系統(tǒng)已將第1塊~第4094塊均設(shè)置為壞塊,故固存頁(yè)地址跳過(guò)了這些地址,當(dāng)頁(yè)地址為300h時(shí),固存頁(yè)讀地址使能信號(hào)rd_page_adden保持無(wú)效,cntt計(jì)數(shù)失效,固存讀停失敗。仿真如圖4所示。
圖4 地址為300 h時(shí),信號(hào)RD_PAGE_ADDEN為低電平
2.2.2 讀停設(shè)計(jì)優(yōu)化
固存讀停失敗的原因是未考慮壞塊對(duì)判停位置的影響。針對(duì)讀停失效的修改方法是增加對(duì)壞塊的考量,增加壞塊標(biāo)志信號(hào)blk_invalid的判斷。若固存準(zhǔn)備讀停時(shí)遇到壞塊,信號(hào)cntt正常進(jìn)行計(jì)數(shù),計(jì)數(shù)到達(dá)“10”時(shí),信號(hào)rd_stop有效,可令固存讀停,優(yōu)化后的代碼如下所示:
process(rst_n,clk)
… …
if(zs_rd_addreq='1')then
cntt <=(others=>'0'); //備注;當(dāng)blk_invalid為1時(shí),表示遇到壞塊。
elsif( (rd_page_adden='1')or (blk_invalid ='1'andrd_check_en = '1') )and(rd_addr(width downto 0)="000" & x"0300")then //備注:準(zhǔn)備讀停時(shí),增加對(duì)壞塊的考慮
cntt <=cntt+1;
… …
end process;
2.3.1 寫停問(wèn)題描述
固存在工作時(shí),若寫到最后一塊,要求可以自動(dòng)寫停。令固存模型的最后一塊為壞塊,仿真發(fā)現(xiàn)固存寫到最后一塊時(shí),未寫停,而是對(duì)最后一塊重復(fù)寫,導(dǎo)致數(shù)據(jù)出錯(cuò)。原因在于,當(dāng)固存最后一塊為壞塊時(shí),固存控制FPGA會(huì)跳過(guò)最后一塊,最后一頁(yè)地址"111"&x"fffff"無(wú)法執(zhí)行到,即if語(yǔ)句條件不成立,寫溢出信號(hào)wr_overflow無(wú)法置高,固存無(wú)法寫停。出錯(cuò)的代碼如下:
elseif (wr_addr = “111”&x”fffff”) then //備注:32’h7fffff即8388608d
wr_overflow <= ‘1’; //備注:8388608/64 = 13072,即最后一塊的末頁(yè)
2.3.2 寫停設(shè)計(jì)優(yōu)化
針對(duì)固存最后一塊為壞塊的工況,不判最后一塊的末頁(yè),改為判最后一塊的首頁(yè),即頁(yè)地址由fffff改為fffc0,優(yōu)化后的代碼如下所示:
elseif (wr_addr = “111”&x”fffc0”) then //備注: fffff-fffc0 = 3f,即63
wr_overflow <= ‘1’; //備注:8388608/64 = 13072,即最后一塊的末頁(yè)
此時(shí)if語(yǔ)句條件滿足,寫溢出信號(hào)wr_overflow有效(高電平),固存可寫停。
2.4.1 壞塊連續(xù)分布驗(yàn)證的必要性
固存一般應(yīng)用在數(shù)據(jù)處理系統(tǒng),數(shù)據(jù)處理系統(tǒng)對(duì)數(shù)據(jù)處理速率比較敏感,在全速率工作時(shí),要求數(shù)據(jù)流暢傳輸,不阻塞。但由于固存本身物理特性,寫固存前需要對(duì)其進(jìn)行擦除,如果固存連續(xù)出現(xiàn)壞塊,則需對(duì)其進(jìn)行連續(xù)擦除,直到擦到好塊為止[10-11]。數(shù)據(jù)處理系統(tǒng)的載荷輸入端不間斷地向固存輸入載荷數(shù)據(jù),如果壞塊連續(xù)出現(xiàn),固存一直處于擦除流程,不接收載荷數(shù)據(jù),數(shù)據(jù)會(huì)阻塞在固存前端,如前端緩存FIFO,造成FIFO寫溢出,導(dǎo)致數(shù)據(jù)丟失。故有必要驗(yàn)證壞塊連續(xù)分布對(duì)數(shù)據(jù)處理系統(tǒng)工作安全性的影響。
2.4.2 壞塊連續(xù)分布驗(yàn)證過(guò)程
令固存模型在擦除時(shí)連續(xù)五次遇到壞塊,仿真系統(tǒng)設(shè)置方法如下:
case (erase_block_addr)
16’h0000,16’h0001,16’h0002,16’h0003,16’h0004: force_sts_fail = 1’b1;
default: force_sts_fail = 1’b0; //備注:force_sts_fail低電平表示擦除時(shí)遇到好塊
end case
令固存連續(xù)出現(xiàn)5次壞塊時(shí),發(fā)現(xiàn)固存數(shù)據(jù)輸出端丟失數(shù)據(jù)。輸出數(shù)據(jù)記錄文件內(nèi)容(部分)如下所示,發(fā)現(xiàn)計(jì)數(shù)區(qū)丟失,表明固存丟失數(shù)據(jù)。
L1:1acf fc1d 540f 0000 00ff aaaa aaaa aaaa
L2: aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa
L3: aaaa aaaa aaaa aaaa aaaa 3fff 1234 1234
L4: aaaa aaaa aaaa aaaa aaaa 3fff 1234 1234
仿真如圖5所示。期望的第一幀數(shù)據(jù)計(jì)數(shù)區(qū)應(yīng)為“0001”,計(jì)數(shù)區(qū)位置應(yīng)在數(shù)據(jù)區(qū)“1234”前,但因固存連續(xù)出現(xiàn)壞塊,導(dǎo)致計(jì)數(shù)區(qū)丟失。
圖5 仿真波形顯示丟失計(jì)數(shù)區(qū)
在仿真系統(tǒng)中令壞塊連續(xù)出現(xiàn)的次數(shù)逐漸減小,直到固存輸出端數(shù)據(jù)正常。此時(shí)壞塊連續(xù)出現(xiàn)的次數(shù)為3。
2.4.3 壞塊連續(xù)分布對(duì)數(shù)據(jù)處理系統(tǒng)安全性的啟示
仿真結(jié)果表明,當(dāng)壞塊連續(xù)出現(xiàn)4次及以上時(shí),數(shù)據(jù)處理系統(tǒng)會(huì)丟失數(shù)據(jù)。為此,設(shè)計(jì)對(duì)壞塊的控制需進(jìn)行兩方面的考慮。
1)研讀固存芯片手冊(cè),向芯片廠商求證固存壞塊是否會(huì)連續(xù)出現(xiàn)4次或4次以上。若固存芯片廠商不能保證壞塊分布可靠性,則需對(duì)數(shù)據(jù)處理系統(tǒng)性能做出限制,如降低載荷輸入速率。
2)若載荷數(shù)據(jù)速率不允許降低,可監(jiān)測(cè)固存前級(jí)緩存FIFO的編程滿信號(hào)。若連續(xù)出現(xiàn)壞塊, FIFO發(fā)生寫溢出,將FIFO的編程滿信號(hào)通過(guò)遙測(cè)通知地面控制站,地面控制站可將對(duì)應(yīng)通道的錯(cuò)誤數(shù)據(jù)丟棄,改用備用通道數(shù)據(jù)。
針對(duì)固存物理特性造成的壞塊產(chǎn)生不可預(yù)知性,設(shè)計(jì)了壞塊產(chǎn)生受控的閉環(huán)仿真系統(tǒng),提供了存儲(chǔ)三種壞塊表的EEPROM模型和可反饋壞塊信息的固存模型,并對(duì)壞塊表維護(hù)過(guò)程和壞塊分布對(duì)固存工作狀態(tài)的影響進(jìn)行了仿真驗(yàn)證,實(shí)現(xiàn)了壞塊分布的全面覆蓋及壞塊管理結(jié)果的記錄可查。為適應(yīng)當(dāng)前航天產(chǎn)品型譜化工作,下一步將對(duì)壞塊仿真系統(tǒng)所含模型進(jìn)行模塊化封裝,以期可通過(guò)修改遙控指令文件、EEPROM模型和固存模型參數(shù),增強(qiáng)仿真系統(tǒng)在不同型號(hào)航天產(chǎn)品中的通用性。
參考文獻(xiàn):
[1] Samsung,K9K8G08U0A [EB/OL],http://www.samsung.com/Products/Semiconductor,2006-1-10.
[2] 喬立巖,張 鵬,魏德寶,等.一種新型NAND Flash 壞塊管理算法的研究與實(shí)現(xiàn)[J]. 電子測(cè)量技術(shù), 2015,38(11):37-41.
[3] 彭 兵,步 凱,徐 欣, NAND Flash壞塊管理研究[J]. 微處理機(jī),2009,2(4) :113-115.
[4] 宋秀蘭, 吳曉波.高性能驗(yàn)證平臺(tái)設(shè)計(jì)與搭建[J]. 電子器件,2008,31(6):1819-1821.
[5] Synopsys VCS MX/VCS MXi user guide [S] .Version E-2011.03-SP1.2011.
[6] Synopsys.Design ware AHB Verification IP databook[S].March 24.2003.
[7] Synopsys.Reference verification methodology user guide[S].September 2004.
[8] 邢 旺,郁聰沖.數(shù)據(jù)記錄器中NAND Flash的壞塊管理方法[J].船艦電子工程, 2016, 36(8):132-134.
[9] Takeuchi K. Novel co-design of NAND Flash memory and high-speed solid-state drives [J]. VLSI circuit,2009,44(4):1224-1227.
[10] 張 鵬,喬立巖.NADN Flash壞塊管理算法研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué), 2015.
[11] 楊 博,李 波.基于NAND FLASH的嵌入式系統(tǒng)啟動(dòng)速度的研究[J]. 計(jì)算機(jī)測(cè)量與控制,2010,18(8):1869-1875.