关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于闪存的星载大容量存储器的研究和实现

基于闪存的星载大容量存储器的研究和实现

作者:时间:2010-01-08来源:网络收藏

1.2 无效块的管理

本文引用地址:http://www.amcfsurvey.com/article/202575.htm


三星芯片在使用过程中会出现无效块。无效块是指一个块中存在一个或多个无效位,其可靠性不能得到保证,必须加以标识和旁路(当然无效块不会影响到其它块的有效性)4并进行数据备份。为了对无效块实现管理,可以建立一张无效块到冗余区有效块的映射表。映射表结构如图2所示。映射原理如下: 开始是一张初始无效块映射表,这张表可以根据三星公司技术手册给出的算法建立起来。按照图示的映射数据结构对整个存储区进行编号,并根据这个编号对映射表进行排序。进行写操作时,按照上述的映射结构将写地址与映射表进行比较,比较到块级即可。如果是无效块,将待写入的数据写到被映射到的块;如果不是,则直接写入该块。如果在写某块的某页时出现编程错误,则将该块添加进无效块映射表(当编程出错时就表明出错页对应的块无效),同时从该出错页开始,将该块后面的页数据都写入到对应的映射块。这样,在数据读出时,可将读地址与映射表比较,并且需要比较到页级以确定每一页的确切存放位置。如果该页编程正确,则直接读出;如果错误,则到被映射的块的对应页读数据,并且该页之后的页也从被映射块中读数据。根据三星的技术资料,对无效块进行读操作是允许的,即对于编程出错页前面的那些编程正确的页是可以正确读出的,而对无效块进行编程和擦除的操作是不推荐的,因为有时这些操作会使邻近的块也失效4。所以读操作要查找到每一页的对应存放位置,而写操作只要查找到块就行。查找时采用二分查找算法。擦除完后,将擦除出错的块也添加进无效块映射表。无效块映射表需要不断维护和更新。


构成的系统实现方案2.1 系统的组成


该实现方案将上述关键问题的解决方法融合进来,系统由存储区模块、接口模块、数据缓冲模块及主控模块四部分组成,系统原理图如图3所示。


2.1.1 存储区模块


为了实现并行和流水技术,整个存储区模块按如下方式构成:由4片K9K1G08U0M型三星芯片组成一个子模块,8个子模块组成8级流水的大模块,而这个大模块即是整个存储区,其总容量为32Gbit。无效块备份的冗余区可以设在每个子模块内部,即从子模块的每块芯片中预留出一部分空间。这种模块化管理的方式既便于系统扩展,又可以在不影响系统正常工作的情况下旁路已损坏的存储块。


2.1.2 接口模块


系统与外部的接口有两个。一是与CPU的接口,主要完成系统的初始化、外部命令和地址的输入以及内部状态参数的输出,同时CPU 还要对存储区完成管理:无效块的管理、地址的译码和映射等;二是与外部高速数据源的接口,主要完成外部高速数据的接收和发送。这里选用了1394高速总线作为数据源总线。


2.1.3 数据缓冲模块


这一模块包括数据输入FIFO、数据输出FIFO和一个作为数据备份的SRAM。由于闪存的写入速度比较慢,如果没有数据缓冲区,外部的高速数据很有可能会丢失,而且数据回放时也需要一个缓冲区使内外的数据率匹配。考虑到编程出错时需要重新加载数据,按照流水线的工作方式,如果不进行数据备份,可能会出现出错时的数据丢失,因此选用了一个SRAM进行数据备份。当将输入FIFO的数据写入FLASH时,同时也将数据写入到SRAM进行备份;当需要重新编程时,再从SRAM中将相应的备份数据重新写入FLASH。


2.1.4 主控模块


这一模块完成整个系统的内部控制,是核心控制机构,连接着存储区、数据缓冲以及外部接口三个模块,完成它们之间的数据、命令、地址、状态的相互传递、转换和处理。主控模块又分为三个子模块,即存储区控制子模块、存储区数据子模块和1394接口控制子模块,分别由三片FPGA(现场可编程逻辑阵列)完成。



评论


相关推荐

技术专区

关闭