返回首页
当前位置: 主页>Flash存储开发>

基于FPGA控制的NAND Flash存储设计

时间:2018-04-14 23:43来源:USB开发群 作者:USB开发频道 点击:

  

现代信息存储技术中对存储器的容量和速度及存储可靠性提出越来越高的要求,而传统的存储器件如DRAM,SRAM,EPROM,EEPROM等由于容量小、速度低等缺点无法满足高速大容量存储的技术要求,Flash因其具有体积小、成本低、功耗小、寿命长、存储密度高等特点,逐渐成为高速大容量存储系统设计的主流方案[1]。Flash存储是一种非易失性的存储技术,NOR和NAND是其中两种主流的存储技术,其中NOR型Flash容量较小,写入速度较慢,但随机读取速度快,因此常用于嵌入式系统的程序存储;NAND型Flash能提供极高的存储密度,易实现大容量存储,而且其读写和擦除速度很快,其缺点是逻辑控制比较复杂,需要相应的逻辑控制器件如单片机,CPLD,FPGA等对其进行逻辑控制,其中FPGA由于时钟频率高、内部延时小、全部控制逻辑由硬件完成、速度快、效率高[2]以及丰富的逻辑资源而受到广泛应用。1系统设计1.1系统硬件设计整个存储电路采用模块化设计,其核心是FP-GA控制模块和Flash存储模块,其硬件结构框图如图1所示。图1系统硬件结构框图该存储电路主要完成对数据的实时存储及操作,电源模块对其他模块供电,使其进入正常工作状态;高速数据接收发送模块实现数据的高速长距离传输,其一般采用LVDS,Hotlink芯片实现此功能;FPGA作为整个存储电路的控制核心,接收上级设备的指令控制存储器进入不同的工作状态,同时接收并处理高速数据,将其存入Flash芯片中;Flash存储模块主要实现数据接收处理,实现接收数据的实时存储,并在数据存储完成后,对存储的数据进行回读分析。1.2 FPGA控制逻辑设计数据存储的核心程序控制由FPGA完成,其内部逻辑设计框图如图2所示。接口命令控制模块主要功能有两个,一是接收上位机发来的指令,并将其解码判别发给Flash控图2 FPGA控制模块设计框图制模块,另一个功能是将接收或发送的数据进行串并转换,实现数据的高速传输;Flash控制模块接收接口命令控制模块发来的解码后指令,对Flash芯片进行操作,控制Flash进入读、写、擦除等工作状态;无效块存储模块存储实现Flash的无效块地址检验、存储及更新;读写FIFO(内部双口RAM)的功能是实现存储器接口速率的匹配,实现存储器的高速读写的可靠性。2 Flash可靠存储的关键技术Flash是一种非易失性存储技术,随着工艺技术的发展,Flash存储芯片尺寸的不断减小,存储容量需求的不断增加,存储可靠性成为Flash应用过程中最严重的挑战[3]。2.1指令可靠性设计2.1.1三线组合指令在采集存储系统中,根据上位机发出的控制指令,使存储器实现相应的读、写、擦除、复位、停止读数等操作,控制指令的可靠性是实现存储器工作状态有效控制的首要问题。为保证指令发送的可靠性,上位机到存储器的指令采用并行发送的方式,即用3条状态线(State0,State1,State2)进行组合发送。在软件设计中,利用ISE软件使用硬件描述语言VHDL[4]构建一个三线制指令控制器,也就是建立一个基于FPGA实现的、可复用的功能模块,可随时调用于其他需要此模块的系统中,如图3所示,具体接口指令定义如表1所示。图3三线控制器接口封装图表1状态线组合指令定义STATE0(r/w)STATE1(rst)STATE2(erase)req指令信号信号描述0 1 0 X复位(rst_en)复位存储器的地址,复位后地址为0;1 0 0 X记录(wr_en)接到该指令后,存储器开始写数据;0 0 1 X擦除(er_en)接到该指令后,擦除存储器中的数据;1 1 1 0读数(req_en)req=‘0’读取存储器数据;1 1 1 1停止读数停止读数指令。采用组合逻辑指令控制能有效减少控制线的数量,简化硬件电路结构,同时能快速实现指令的扩充,如以上3个状态线最多能实现8个指令,方便设计人员设计和调试。在对Flash进行控制时,主要指令包括复位、读写、擦除及停止读数等控制指令,三线组合能组合不同指令,在不影响存储系统性能的情况下实现Flash的可靠控制。2.1.2指令检测不同于识别单线控制信号,主控制核心FPGA接收到上级设备发来的命令后,接口命令制模块首先对3条状态线的当前状态进行识别和检测,检测无误后按照表1中状态组合在FPGA内部产生相对应的Flash控制使能信号发送给Flash控制模块,Flash控制模块识别接收到的使能信号,执行相应的FLASH操作。上述操作中,采用有限状态机的方法检测指令的有效性,检测状态图如图4所示,各状态转换含义如下。1)S0:等待。起始状态,指令完成或指令已执行时转入,或者信号无效时转入等待状态。2)S1:检测状态线信号。检测状态信号时转入,多个信号同时有效并保持时,视为有效信号时图4指令检测状态转换图转入判决状态。3)S2:判决。判决状态线信号的有效性。在N次采样期间,移位判决单一信号应保持有效,转入有效状态,信号异常转入无效状态,重新检测。4)S3:有效。信号线就绪、等待执行下一步操作。将信号线延时消抖,转入判断组合指令状态。5)S4:组合判断。对照已经定义好的状态线组合定义判断是否为有效信号,如果转入是使能信号生成状态,否则转入无效状态。6)S5:使能信号生成。按照状态线组合定义表生成相应的使能控制信号,完成后直接转完成状态。7)S6:无效。状态线信号无效或者指令是伪指令时转入。8)S7:完成。指令完成,屏蔽已执行指令并转空闲状态。通过以上状态检测,对于错误指令、干扰产生的伪指令等正确予以过滤,最大限度防止误操作,提高指令的可靠性,同时由于最终的FLASH控制使能信号是由FPGA内部产生,信号速度快、抖动小,使FLASH存储控制更加可靠[4]。2.2 Flash无效块管理由于NAND Flash的工艺限制,在其出厂时或使用过程中会出现无效块,当对这些无效块进行读写或擦除操作时由于不能将某些位拉高,造成读写或擦除错误,可能会使上位机软件进入死循环,造成数据的丢失和误码[5]。因此对FLASH读写擦除操作之前必须对Flash进行无效块检测,建立一套完善的坏块管理机制,使得系统能够准确地存储数据,保证数据的可靠性[6]。图5无效块检测操作流程Flash Memory在出厂时已经进行了检测,对于K9WBG08U1M,通过读相应块第一页和第二页的第4 096个地址来判断,如果均是“FFH”,则认为是有效块[7]。在对无效块进行处理时,为了防止使用过程中出现的无效块造成数据存储丢失或误码,需要对无效块地址信息进行实时更新,因此在软件设计中采用上电立即对Flash进行无效块检测。芯片K9WBG08U1M由两片K9KAG08U0M组成,每片K9KAG08U0M由4个4 Gb的存储平面组成,每个平面包含2 048个块,为提高擦除效率,对8个平面采用并行处理的方法[8],在程序初始化中设置块地址为0,f_plane




秦华 『上海买保险』上海地区人寿保险资深寿险顾问 上海外籍人士买保险-高端人士医疗办理
服务项目:儿童医疗/子女教育金/养老保险/重大疾病/意外伤害/员工团险/公众责任
免费热线『上海』:13761630213, QQ:107242375, Email:victor.qin@qq.com
选择保险事业 为了爱,为了一份坚定的承诺!MSN:
上海地区请直接拨打本人电话,应约免费上门提供免费保险方案。
Baoxian.ws>>           旅行签证保险、上门办理>>        重大疾病网>>     上海重大疾病一览    
友情链接: 走在上海人寿保险的前端    和讯保险博客    上海投保在线    Shanghai Insurance    秦华的个人简历



顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
图文并茂 我的链接
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
上海高端医疗/住院医疗保险信息
上海保险规划师信息
上海子女教育理财保险信息
上海保险规划师信息
上海女性高端生育保险方案-等待期
上海保险规划师信息
上海三口之家家庭保障方案
上海保险规划师信息
上海女性特色重大疾病保险方案
上海保险规划师信息
上海女性白领理财保险方案
上海保险规划师信息
上海养老理财规划保险方案
上海保险规划师信息
通过网络取得初步咨询
  •    
上海办理-免费咨询送计划书
上海买保险
上海办理-申根签证 出国旅行保险
上海买保险
上海买保险,海外基金,买保险,友邦保险,中国人民健康保险,养老保险,儿童保险,儿童医疗,子女教育金,太平洋保险,医疗保险,工伤保险条例,中国人寿保险,保险公司,中国平安保险,医疗险,进口药,自费药,外籍人士医疗,泰康人寿,英国保诚集团,上海综合保险,国际医疗保险,上海医疗保险,上海社会保险,上海养老保险,上海市综合保险,上海平安保险,上海太平洋保险,和睦家医院,上海综合保险卡,买保险,高端医疗,重大疾病,意外伤害,定期寿险,家庭理财,友邦保险,金茂大厦,少儿互助基金,上海社保,太平洋集团,港安医院