![片上系统设计思想与源代码分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/301/688301/b_688301.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.4 NandFlash控制器的设计
4.4.1 NandFlash控制器的方框图
最基本的NandFlash控制器只完成NandFlash的操作中的基本子操作,包括命令周期、地址周期、地址结束周期、读周期,将其他操作留给软件。
更加复杂一点的NandFlash控制器能够完成NandFlash的硬件前向纠检错功能,如图4-8所示。写操作中,整个页的数据被写到2048B的缓存中,同时硬件生成前向纠错校验字节,并将所有数据存储到NandFlash中。在读数据的过程中,整个页被读出,同时前向纠错逻辑负责检测读取的数据是否有效。若数据有效,则主处理器或DMA可以将数据进一步使用,否则主处理器进行相应的错误处理。可以根据设计者的喜好进一步设计DMA请求和应答逻辑。
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0094_0002.jpg?sign=1739522789-GSFa87fTCwZHPQb3jNPopEvMGxZHNl21-0-5a2105139118b0ece986e49af5752c64)
图4-8 NandFlash控制器的方框图
4.4.2 NandFlash控制器的前向纠错原理
NandFlash控制器的前向纠错可以自由设计,三星公司给出了一个参考设计,可以纠正1比特错误,检测多比特错误。
在该算法中,每2048个比特生成22比特校验码,包括16比特的行奇校验和6比特的列奇校验。数据安排如表4-2所示,生成的校验位如表4-3所示。
表4-2 数据安排
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0095_0001.jpg?sign=1739522789-6pP4joiQty8pRFW1CQgHIk2Ft9nCLpOS-0-47f223e8d81a545e2f760fdff1ec4d5f)
表4-3 生成的校验位
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0095_0002.jpg?sign=1739522789-EURHgLCmzqILxClNGj5iClpQGPaRwFRN-0-0acdf1f2720b5ab341a17bd543a610c9)
校验位的初值为0,生成方法如图4-9所示。
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0095_0005.jpg?sign=1739522789-uofWWxGAPLzqnn60rcBgubOgGw4opex2-0-4473c3680f9234c4fed2fef6a2f1ecab)
图4-9 校验位生成方法
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0095_0003.jpg?sign=1739522789-SQIhidgUOGG0hGqltdeYXHpeprxX9I9l-0-e8ec0d5b5dc92d481dee68a6bdf9b2f7)
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0095_0004.jpg?sign=1739522789-HS6Apxh4tTwu6DsJ8J9KMTH8wzraDG3w-0-ec979e7e5e3bede1ec71ad85b86d3145)
经过观察可以发现,若只发生了1比特错误,则该比特的位置为
( P1024,P512,P256,P128,P64,P32,P16,P8,P4,P2,P1)。
当读取了256节的数据,新生成的校验码和存储的校验码进行比较,如果两者相等,则数据无错误,若有新生成的校验码和存储的校验码异或后,可出现如下几种情况。
(1)有11个1,则该错误为可纠正错误;
(2)为1个比特,则校验比特发生错误,数据本身无错误;
(3)出现其他情况,代表多个错误,不可纠正。如图4-10所示。
![](https://epubservercos.yuewen.com/54D051/3590509604582801/epubprivate/OEBPS/Images/figure_0096_0001.jpg?sign=1739522789-RCBsHhF09v3C0XqI7TBewLA6VWyeAtLb-0-f2b027c345fe37b2fb99c6c587619da5)
图4-10 数据校验