微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于fpga控制flash擦写读的问题

关于fpga控制flash擦写读的问题

时间:10-02 整理:3721RD 点击:
刚接触FPGA控制flash擦写读,上电建立无效块后,界面输入擦,写,读指令,然后执行各功能,现在我往flash全写0,采写入的数据是完全正确,但是数据从flash中读出后总是随机的有些0会变为1,这是那方便问题呐?求大神解答……整了好多天了,都不知道哪里的问题

FLASH在存储和读取过程中好像是会产生一些随机的错误,这个时候就需要一些纠错算法,一般的FLASH都带有ECC纠错模块的,比如纠1位错误或者2位及以上错误,本人最近刚好在研究ECC纠错算法,就是加在MEMORY,利用ECC算法编码,使存储的数据加入了ECC编码,在读取的时候利用ECC译码纠错出正确的原始数据,不过纠错能力因算法而异,有些只能纠一个错误,多了就没效果了,纠多位随机错误的算法也有,就复杂不少

2楼正解,NAND flash需要由纠错码配合保证数据被正确读出,特别是TLC型,如果没有纠错码配合,出错概率大增。


谢谢解答,不过能不能详细的讲解一下ECC纠错模块?以前没接触过,或者推荐一些资料~非常感谢


谢谢解答,不过能不能详细的讲解一下纠错码设定的方法?以前没接触过,非常感谢


1位纠错的ECC算法,你可以参考下汉明码的编码解码方法,比较简单,搜索下汉明码资料很多,代码也不少2位以上的纠错ECC算法,你可以参考下BCH的编码解码方法,相对比较复杂,设计到矩阵运算,不过网上也有不少代码可供参考

用cpu去读写比较方便


因为要加入ECC验证码,是要增加额外的存储空间,比如你FLASH的位宽是32位,实际上是数据位D+校验位P=32位,校验位占据一定的空间;读取ECC编码时,数据可能出错,校验位也有可能出错,但ECC纠错算法是可以检测到你检验位错误的,不影响纠正数据位;
编码时的校验位:通过数据位D计算得到
解码时的验证位:通过数据位D+校验位P计算得到;通过验证位的值判断错误位置进行纠错
当然纠错的位数越多,算法越复杂

如果是對NAND FLASH做寫入,是先將資料放到一個 data buffer,然後需要一些延遲時間讓資料從 data buffer 寫入內部,先確認這個步驟是正確的。這可以去偵測 busy pin或是讀 state 來判斷。還有,要寫入data,一定要先做 erase 動作。另外,你如果是沒做ECC,按理是不會去存取那些附加的空間。

要加ECC,具体用哪种需要看你的flash需要了


谢谢耐心回答,非常感谢~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top