在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5092|回复: 11

[求助] 关于fpga控制flash擦写读的问题

[复制链接]
发表于 2017-4-26 12:10:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
刚接触FPGA控制flash擦写读,上电建立无效块后,界面输入擦,写,读指令,然后执行各功能,现在我往flash全写0,采写入的数据是完全正确,但是数据从flash中读出后总是随机的有些0会变为1,这是那方便问题呐?求大神解答……整了好多天了,都不知道哪里的问题
发表于 2017-4-26 15:59:13 | 显示全部楼层
FLASH在存储和读取过程中好像是会产生一些随机的错误,这个时候就需要一些纠错算法,一般的FLASH都带有ECC纠错模块的,比如纠1位错误或者2位及以上错误,本人最近刚好在研究ECC纠错算法,就是加在MEMORY,利用ECC算法编码,使存储的数据加入了ECC编码,在读取的时候利用ECC译码纠错出正确的原始数据,不过纠错能力因算法而异,有些只能纠一个错误,多了就没效果了,纠多位随机错误的算法也有,就复杂不少
发表于 2017-4-26 17:32:14 | 显示全部楼层
2楼正解,NAND flash需要由纠错码配合保证数据被正确读出,特别是TLC型,如果没有纠错码配合,出错概率大增。
 楼主| 发表于 2017-4-26 17:46:30 | 显示全部楼层
回复 2# 热锅上的野人
谢谢解答,不过能不能详细的讲解一下ECC纠错模块?以前没接触过,或者推荐一些资料~非常感谢
 楼主| 发表于 2017-4-26 17:51:21 | 显示全部楼层
回复 3# 杰克淡定
[size=42.1866683959961px]谢谢解答,不过能不能详细的讲解一下纠错码设定的方法?以前没接触过,非常感谢
发表于 2017-4-27 09:02:56 | 显示全部楼层
回复 4# 孔文青

1位纠错的ECC算法,你可以参考下汉明码的编码解码方法,比较简单,搜索下汉明码资料很多,代码也不少2位以上的纠错ECC算法,你可以参考下BCH的编码解码方法,相对比较复杂,设计到矩阵运算,不过网上也有不少代码可供参考
 楼主| 发表于 2017-4-27 10:37:49 | 显示全部楼层
回复 6# 热锅上的野人 我查找了一些论文,说是要将原ECC校验码随数据写入到flash.的附加存储空间,这里的附加存储空间是空闲存储空间吗?而且回放ECC检验码的时候,这个码不会也出错吗?谢谢回答~
发表于 2017-4-27 14:16:59 | 显示全部楼层
用cpu去读写比较方便
发表于 2017-4-27 16:45:47 | 显示全部楼层
回复 7# 孔文青

因为要加入ECC验证码,是要增加额外的存储空间,比如你FLASH的位宽是32位,实际上是数据位D+校验位P=32位,校验位占据一定的空间;读取ECC编码时,数据可能出错,校验位也有可能出错,但ECC纠错算法是可以检测到你检验位错误的,不影响纠正数据位;
编码时的校验位:通过数据位D计算得到
解码时的验证位:通过数据位D+校验位P计算得到;通过验证位的值判断错误位置进行纠错
当然纠错的位数越多,算法越复杂
发表于 2017-4-28 23:30:55 | 显示全部楼层
如果是對NAND FLASH做寫入,是先將資料放到一個 data buffer,然後需要一些延遲時間讓資料從 data buffer 寫入內部,先確認這個步驟是正確的。這可以去偵測 busy pin或是讀 state 來判斷。還有,要寫入data,一定要先做 erase 動作。另外,你如果是沒做ECC,按理是不會去存取那些附加的空間。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-3 21:24 , Processed in 0.022098 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表