ECC技术在大容量智能Smart Media卡上的应用

时间:2009-09-11来源:网络

首先将512位分成前256位和后256位。计算前256位中“1”的个数k,如果k为奇数,令P(256)=l;若k为偶数,则令P(256)=O。然后计算后面256位中“1”的个数为j,如果j为奇数,则令Q(256)=1;若j为偶数,则Q(256)=0。
然后,再把512位等分4块,每一块均为128位。把第一块、第三块合在一起,计算其中“1”的个数l,如果l为奇数,令P(128)=l;若f为偶数,令P(128)=0;把第二块和第四块合在一起,计算其中“1”的个数m,如果m为奇数,则令Q(128)=1,若m为偶数,令Q(128)=0。
第三步,把512位等分为8块,每块为64位,把奇数次块合并在一起,计算“l”的个数,决定P(64)是“1”还是“0”,再把偶数次块合并在一起,计算“1”的个数,决定Q(64)是“1',还是“0”。
依次类推,每次块数增加一倍,其块的位数减少一半,直到每块中只有1位为止。将奇数次块合并在一起,然后决定P(16)、P(8)、P(4)、P(2)、P(1)分别是“1”还是“0”;把偶数次块合在一起,决定Q(16)、Q(8)、Q(4)、Q(2)、Q(1)分别是“1”,还是“0”。
最后,把上述P(i)、Q(i)排成一列得P(256)Q(256)P(128)Q(128)P(64)Q(64)…P(1)Q(1)总共18位就构成ECC码,ECC码为3字节,多余位全为零。
4.2 简化ECC码算法
计算ECC码是一个子程序,要求程序要短,ECC子程序的长度为120字节,F015的程序空间可以容纳;执行要快,ECC子程序的执行时间约为2 ms。由于F015的程序空间不大,而子程序是在记录过程中经数据采集,运算再加上ECC码,然后存入Flash。运算时间过长会干扰下一点数据采集,破坏数据完整性。数据采集周期为1/8 s(125 ms),ECC运行时间应小于12.5 ms。
程序采用数据平行处理,巧妙重复利用F015指令,从而达到系统要求。

5 查错和校正
5.1 错误类型
常见内存错误为:单位、多位、列、行等错误。其中单位错误大多在读取一个完整比特时有一位出错;而多位错误是读相同比特时总是同一位数据出错;如果单位错误发生在很多词中,则视为列或行错误。
5.2 查错和校正算法
无错误时,ECC码全为0;当主区有1位错误,每一个相似组(eg:P8P8’)有l0或0&1,可以纠错;如果Flash有多于2位以上的错误,则没办法修正。
在数据存入前产生的ECC码为PQ先,在读出数据后计算得的ECC码为PQ后,具体算法如下:
(1)若PQ先^PQ后(^为异或),
(2)若异或后000 000 000 000 000 000,则表示数据无错。PQ先^PQ后,R=RF(256)RQ(256)RP(128)RQ(128)…RP(1)RQ(1),其中RP(256)=P(256)先^P(256)后,RQ(256)=Q(256)先^Q(256)后。
若RP(i)^RQ(i)为l,对所有i(i=1,2,4…256)都成立,则
存在1位错码,其出错的位置:由RP(256)RP(128)RP(64)RP(32)RP(16)RP(8)地址决定的这一字节中地址(范围0―63)在RP(4)RP(2)RP(1)的位上(O~7位)。将上述参数决定的该字节的位数据取非,就可校正数据中的错误。
(3)RP(i)^RQ(i)=1,只对一个i(i=1,2,4…256)成立。则ECC码PO先出错,数据正确。
(4)若出现其他情况,则无法校正数据错误。


6 ECC编码的实现

256字节数据的ECC码是3个字节,其中22个字节是有用的。ECC编码的产生、计算方法及错码检测方法框图分别如表4、图1和图2所示。

由图1和图2可看出,写入DOS文件系统所需的各功能区的内容,在实际编程中要严格按照其结构编写,否则计算机将无法识别。

7 结语
通过讨论和分析可见,SM卡的存储结构、DOS存储格式以及ECC代码的编写所构成SM卡数据存储系统的软件部分,说明了将ECC技术应用于大容量的SM卡是可行的。

1 2

关键词: Smart Media ECC 大容量

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版