EPRO PR6423/010-010、PR6423/010-030传感器,现货销售,顺丰包邮,欲购从速。
详情描述:
以Nandflash为存储介质的固态存储系统中,因为Nandflash的固有特性,在多次读写后,储存在flash中的数据将会变得不可靠。所以有必要开发一种能实现数据可靠传输的手段来提高flash和主控芯片之间数据传输的可靠性。文中介绍了ECC码的特点和原理,在FPGA开发环境下实现ECC校验功能。并通过工程实现,在FPGA上实现了该ECC算法。测试结果表明256Byte数据生成22bit的ECC校验数据。能够检测1bit错误和2bit错误,并能纠正1bit错误。
1引言
评价存储器的一个重要指标就是它的可靠性。在一般的数据存储中,几个位的错误可能不是很关键的问题,但是如果发生在某个敏感的数据上,这个小小的故障可能会导致严重的后果。因此,必须采取一些措施来及时检出并纠正出错的数据。目前常用的方法有:奇偶校验、CRC校验、重复码校验等。
ECC校验是在奇偶校验的基础上发展而来的,它将数据块看作一个矩阵,利用矩阵的行、列奇偶信息生成ECC校验码。它能够检测并纠正单比特错误和检测双比特错误,但对双比特以上的错误不能保证检测。它克服了传统奇偶校验只能检出奇数位出错、校验码冗长、不能纠错的局限性。文中在介绍高速大容量固态存储器的硬件结构基础上,详细介绍了ECC校验码的生成规则以及ECC校验流程,并通过FPGA实现了该算法。
2存储器的硬件结构及介绍
本文中的存储器是以ARM为SSD控制器,用16片Flash芯片构成存储阵列,采用SATA接口实现数据的高速率存储。Flash存储阵列分为8组,每组2片,每组Flash芯片共用数据和控制总线。该存储器的硬件结构如图1所示。

图1SSD构架图
存储板上的存储芯片用的是Micron公司的高速大容量固态存储芯片NandFlashMemory,其容量为1G×8bit,分为8192个块,每个块又分为64页,1页有(2k+64)Byte,其中一页有64bit的空闲区。存储板上的SSD控制器是由AR***26为核心的控制芯片,它负责数据的缓冲和整个存储器的时序控制,并负责以页为单位生成校验码,并把校验码存入到页的空闲区内。下面以2048bit为单位介绍校验码的生成以及校验流程。
3ECC生成
Flash在读写数据的时候是以页为单位进行的,可以以2048bit为单位生成校验码。每个数据有8位信息组成,可以把这2048个数据看成256×8的矩阵,这样就可以分别生成行校验码和列校验码来分别校验。ECC校验中,每256个数据生成3个字节的校验码,这24位的校验码分成3个部分:6位的列校验信息,16位的行校验信息,其余的2位置1,ECC校验码组成,如图2所示。其中CP0、CP1、CP2、CP3、CP4、CP5是列校验码,而LP0、LP1、LP2、LP3、LP4、LP5、LP6、LP7、LP8、LP9、LP10、LP11、LP12、LP13、LP14、LP15是行校验码。行列校验码生成表,如图2所示。
图2列和行奇偶的框图
图2列和行奇偶的框图
处理每个数据字节在整个数据模块上计算列奇偶。
列奇偶位的计算方法为:
CP0=bit7⊕bit5⊕bit3⊕bit1
CP1=bit6⊕bit4⊕bit2⊕bit0
CP2=bit7⊕bit6⊕bit3⊕bit2
CP3=bit5⊕bit4⊕bit1⊕bit0
CP4=bit7⊕bit6⊕bit5⊕bit4
CP5=bit3⊕bit2⊕bit1⊕bit0
其中⊕为异或运算符。
行奇偶位的计算方法为:
LP0=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1、3、5、7、9……行的总合)
LP1=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第2、4、6、8、10……行的总合)
LP2=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1、2、5、6、9、10……行的总合)
LP3=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第3、4、7、8……行的总合)
LP4=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1、2、3、4……行的总合)
LP5=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第5、6、7、8……行的总合)
LP6=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1到8……行的总合)
LP7=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第9到16……行的总合)
LP8=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1到16……行的总合)
LP9=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第17到32……行的总合)
LP10=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1到32……行的总合)
LP11=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第33到64……行的总合)
LP12=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第1到64……行的总合)
LP13=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(第65到128……行的总合)
LP14=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(上一半行的总合)
LP15=bit7⊕bit6⊕bit5⊕bit4⊕bit3⊕bit2⊕bit1⊕bit0(下一半行的总合)
4ECC校验
INFICON FL-9496
ADVANTECH 2718 16
AGILENT HFBR-762B
Applied 3540i
TRENTON BPG6600
HP 16320-66551
BROOKS 6256
MARVAC A-20
Coreco XR-M130-18306
Lightw***e 3200
MOXA ED6008
N***ITAR 1-61448
CARD PAC-SDD-02A-V2.0 hold
Dell 1950
Dell 1950
Toshiba IK-M43
Toshiba IK-M43
GLENTEK ***C9915-1D-1
GLENTEK ***C9915-1D-1
Vivid CLV-401
SEIKOSHA VP-4500
*** LIB-81
DELTA RPS-700-2
Roper 01-376-004
APPLIED 0150-12117
APPLIED 0150-09351
PACK AK-BX551C
ADVANTECH AIMB-270-A1
APPLIED HT34-486
PELCO ERD97P21-U
AML 149-0831-30
ADVANTECH POD-6706
APPLIED 3870-02579
DELTA 603672-109
ADVANTECH 2A-100 1U
Spellman PTV5P300X2094
BIRD DA-140/AD
MKS 290C-12272
ADVANTECH PPC-60S-RT 386
Hamamatsu R6095
Advantech UNO-2171-P12E
APC AP7998
IWAKI FA-2E-S
CISCO 73-3903-08
CISCO FE-511-K9
AGILENT HFBR-712BP
APPLIED 0240-75106
AXIS 8800-0033
NANOMETRICS 8200-0298
XP 4004-0006
TOKYO CT0EE-T00499-1
NEI 702-1002-OQ
HP HDMP-1032KF
XANTREX 300-2
HAMAMATSU F15014
KLA-TENCOR 0058069-000
Keyence MS2-H150
XYCARB 255860
APPLIED 0190-09900HOT
FESTO CRVZS-20
ACDS BRC22A
APPLIED 0190-15137
BALDOR NB0258A00
APPLIED 3870-01471
HP C7369-20821
ADTRAN 1202890E1
ADVANTECH MIC-2000/8
DELTA 603437-104
DANAHER 30209
DANAHER 30051
FISHER 506D
MPS SPSS811-1-LF
ADVANTECH ISP-103
AGILENT HFBR-772BE
APANTAC DA-HDTV-SDI
Advantech 6201
ANORAD 69080-LP
DALSA-CORECO XP-2631
KOLLMORGEN EM19-28030-BC3
CISCO DS-SFP-FC8G-LW 10-2459
Mellanox MHGA28-ITC
SCHAFFNER FN351H-64-33
ADVANTECH 5501E
SIEMENS A9B10040657
TOKYO 3D10-202405-13
ALLIED 12-PORT