在便携式电子产品如U盘、MP3播放器、数码相机中,常常需要大容量、高密度的存储器,而在各种存储器中,NANDFLASH以价格低、密度高、效率高等优势成为***理想的器件。但NANDFLASH的控制逻辑比较复杂,对时序要求也十分严格,而且***重要的是NANDFLASH中允许存在一定的坏块(坏块在使用过程中还可能增加),这就给判断坏块、给坏块做标记和擦除等操作带来很大的难度,于是就要求有一个控制器,使系统用户能够方便地使用NANDFLASH,为此提出了一种基于FPGA的NANDFLASH控制器的设计方法,并用VHDL给予实现,Modelsim得出仿真结果,并在ALTERA公司的EP2C35F672器件中得到验证。FPGA与NANDFLASH接口图如图1所示。
FPGA和NAND接口
2NANDFLASH操作
NANDFLASH器件的管脚分为控制信号、I/O二类,地址和数据是复用I/O管脚。通常NANDFLASH器件包括一定数目BLOCK,每个BLOCK包括一定数目的PAGE,每个NANDFLASH器件把BLOCK,PAGE按照行列地址进行寻址,基于这种特殊的结构。
2.1READID
NANDFLASH器件ID包括:ManufactureID,deviceID以及容量大小,这些重要的信息是判断NANDFLASH的重要凭证,因此将这些信息读出来加以判断就显得特别重要。在CLE为高,WE#上升沿,在I/O输入90H命令让NANDFLASH进入读ID状态,接着在ALE为高,WE#上升沿,在I/O输入00H地址,在等待tWHR将RE#置为读,在RE#连续4个上升沿将ID读出。仿真图如图2所示。
仿真图
2.2判断坏块
NANDFLASH作为一种特殊的储存器件,内部集成电路使得BLOCK与BLOCK是相互***的,因此一定数目坏块的存在不会影响其他BLOCK。但坏块总数是有一定的限制的,超过一定的数目后器件将认为不能再使用。在出厂前厂家会在器件的每个BLOCK的***页和第二页的列地址为2048标注上坏的信息,FFh代表此BLOCK是好,非FFh代表此BLOCK是坏。但是这些重要信息在执行Erase和Programming命令的时候会被擦除掉,因此,我们在做这些操作之前应该将坏块识别出来如图3所示,并加以标注或者用好的块来代替,以方便以后的访问。随着使用时间的推移,坏块的数目还会增加,因此我们必须随时更新坏块链表。坏块识别时序仿真图如图4所示。
2751700 IB STME 24BDO 1/3-250
2752932 IBSSTME 24BK RB-T
FBM201
FBM207C
FBM237
FBM242
IS200VSVOH1B
EP3758-5151-7-56BC-CU
140ACI03000
MVME5110-2261-MPC7410
MDX61B0022-5A3-4-00
1784-PKTX/A
DSDP150
AI4
T2550
6DD1640-0AH0
AS-P120-000
DCD60X7/14
2711-K6C5L1
176B6001
3HAB2241-1
3HA***45-1
3HAB5956-1
3HAB6372-1
3HAB7215-1
3HAB8101-10
3HAB8101-3
3HAB8101-8
3HAC1462-1
3HNE00313-1
MC07A005-5A3-4-00
MC07A008-5A3-4-00
MCO7B0011-5A3-4-00
6ES5482-8MA13
1756-A10
1756-A17
1756-A4
1756-A7
1756-CN2R
1756-EN2T
1756-IB16
1756-IF16
1756-IF16I
1756-IM16I
1756-IR6I
1756-L63
1756-N2
1756-OA16
1756-OB16E
1756-OF8
1756-PA75
"1756-RM "
1756-TBCH
1756-TBNH
1786-BNCJ
1786-RPA
1786-RPFRXL
1786-TPS
1786-XT
DOU2.5
DV505-400SAB
WL12G-V530
DV505-400SAB
64KBYTE 700-951-OKF00
330980-50-00
A06B-6093-H152
ASBSV8 /LED-5
G4 ODC5 OPTO 22
A06B-0243-B100
1756-A10
1756-A17
1756-A4
1756-A7
1756-CN2R
1756-EN2T
1756-IB16
1756-IF16
1756-IF16I
1756-IM16I
1756-IR6I
1756-L63
1756-N2
1756-OA16
1756-OB16E
1756-OF8
1756-PA75
1756-RM
1756-TBCH
1756-TBNH
1786-BNCJ
1786-RPA
1786-RPFRXL
1786-TPS
1786-XT
2098-DSD-010X
2098-DSD-020X
6FC5410-0AY01-0AA1
A06B-6134-H302
2711-K10C16
IC200ACC313
IC200ALG230
IC200CHS022
IC200CPU001
IC200MDL631
IC200MDL750
IC200PWR101
IC200TBM002
IC647MPS101
IC690PWR024
CLM01.3-X-0-4-FW
VS-656MR5
6SE9531-7DK40
E0451-521-038
IC695CPU310
4351B
ABC-PDP AB7000-C
GZAH 821 107 P0158
140ACI04000
140NOE77100
140XTS 002 00
140ACI03000
140ACO13000
140ARI03010
140CPS11420
140CPU65150
140CPU67160
140CRA93200
140CRP93200
140DDI35300
140DDO35300
140NOE77101
140XBP00600
140XBP01000
140XBP01600
140XTS00200
3EH73031BBAF
6FC5210-0DA20-2AA1
DSAO120
DSAO120A
DSDP170
TU810V1
IC647TRT000
IC647TRT999
CAN-CBM-DP
SE-B5.700.020-00.000
2711-K10C15
2711-NM232
2711-NMCC
1771-CT
1771-OWNA
1784-PCIC/B
1784-PKTX
MA0185100
PC832-001-T
DV505-400SAB
48PT2-9003
E110
ED510
1336F-B100-AE-EN
CP5611
PCI-1602B
HC-KFS73
MR-J2S-70A
A03B-0819-C512
TVD1.3-08-03
DSAI130
DSAI145/146
DSDI120A
DSTA131
DSTA145
DSTD150A
LE4-116-DD1
FR-D740-3.7K-CHT
FR-F740-55K-CHT
3051CD2A02A1ABH2 (0-40KPA)
3051CD2A02A1ABH2(0-10KPA)
3051CG2A02A1AH2B1(0-40KPA)
3051GP1A2B21AB4(0-100KPA)
3051GP3A2B21AB4(0-0.6MPA)
3051GP3A2B21AB4(0-1.6MPA)
3051GP3A2B21AB4(0-1MPA)
3051GP3A2B21AB4(0-4MPA)
6EW1811-8AA
HMS01.1N-W0020-A-07-NNNN
HMS01.1N-W0036-A-07-NNNN
140CPU43412
9907-167
6ES7315-2AG10-0AB0
1756-DNB/D
140CPU43412A
140DDI84100
140DRA84000
G3 *** 50/100-T
5X00119G01
CIMR-HB4A0515
6ES7315-2AG10-0AB0
6ES7321-1FH00-0AA0
6ES7953-8LG20-0AA0
C200H-IA222
CIMR-HB4A0180
DCS800-S02-0260-05+K454+控制盘
DCS800-S02-0450-05+K454+控制盘
HLE45-600H-3F.AC
HLE45-600L-3F.AC
1756-CNB
1756-CNB/D
LKA5B
VT3006-S35/R1
MPG-4 RF
IC693MDL753
A20B-2000-0670-04D
140CRA93200
140CRP93200
1746-IB16
1746-OB16
1746-P2
1747-L532
1756-CNBR/E
PM856
PM856K01
LD4-LC130
DSAI 130
DSAO 120
DSAO 120A
DSDI 110A
DSDO 115
DSDP 170
TB807
TU810V1
1746-HSRV
DSDP150
6EW1861-2AE
1203-GK1
SRM50-HWA0-K01
1336-QOUT-SP25A
1336-SN-SP16A
1756-CNB/D
1756-ENBT/A
1794-OE12
IC697CGR935
A06B-6079-H106
1769-OB32
AK-BX556M
6SE6430-2UD42-5GBO
DCS40-25
194R-NJ100P3
6GK1105-2AE00
3401
PC32000F
CIMR-MR5N27P5
IC3645OSC5E9
0 811 405 060
140CPU53414A
IC3645OSC5E9
194R-NJ100P3
DCS-401-0405REV.A.1405A
J120-172
J120-190