基于DSP的Flash存储器坏块自动检测系统

随着电子技术飞速发展,智能电子产品随处可见,如pc机、移动电话、pda、数码相机、游戏机、数字电视等,而诸如此类的电子产品的核心器件往往离不开存储器。无论是从存储器的物理结构、存储容量、数据读写速度、可靠性、耐用性,还是产品的实用性方面。其种类繁多。然而由于种种原因,越来越多的电子产品采用数据传输快、容量大的nand型flash存储器。虽然nand型flash具有许多优点,但其有随机产生不可避免的坏块,如果不能很好解决该坏块将导致高故障率。因此,这里提出一种基于dsp的flash存储器坏块自动检测系统。
1 系统设计方案
图l为flash存储器坏块自动检测系统结构框图。
本系统设计采用at89c51自动检测nand型flash存储器的无效块,获取flash存储器的坏块信息,为后续数据存储做准备。本系统设计包括硬件电路和配套软件设计2部分。其硬件电路主要由单片机、控制、显示和存储器4部分组成,其中单片机部分采用常规的最小系统电路;控制部分由按键和单片机的外部中断组成,按钮通过电阻与接地端相连,而复位键则与电源端相连;显示部分采用单片机的p0和p1端口控制8位七段共阳极数码管,位选通端由p2端口控制数据端由pl控制;存储器部分与单片机相连,由于存在电平差异,所以需加电平转换器74lvx42-45,可将由单片机输出的5 v电压转到3 v,并将由flash输出的3 v电压转到5 v,其转换方向便于控制。而软件设计部分采用单片机c语言编写程序,当数据存储到单片机后,用一个循环语句将其放到数组里,这样可以通过改变某一变量实现上下查询。则将这个变量的改变放在外部中断程序中。
2 硬件电路设计
硬件电路设计由于选用的51单片机是ttl器件,而所要检测的nand型flash存储器是cmos器件,这2种类型器件的电平不相匹配,因此需增加电平转换器74154245,从而实现电压的5 v与3 v的双向转换。
2.1 单片机的连接
为了方便读图,该系统设计的电路原理图中的许多导线连接都采用网络标号的方法,而标号的命名基本采用引脚名称。单片机的p1端口的位操作控制flash的控制端,p0端口作为单片机和flash的地址和数据传输端口。其中数据的流向采用p1.6和p1.7控制,要读取flash的数据时,如读id时,先对单片机的p1端口位操作,依照时序设置控制字,接着由单片机的po端口输出读取id的命令,然后设置写地址的控制字,输入地址00h。读状态时,连续的re脉冲可输出id代码。页读取操作与此类似。图2为单片机电路连接图。
2.2 flash存储器的连接
k9k8g08uom是采用nand技术的1 gb大容量、高可靠、非易失性flash存储器,具有高密度、高性能特点。其无效块定义为包含有一个或更多无效字节,且其可靠性不能被保证,则无效块中的信息称为无效块信息。和所有的有效块一样,它具有相同的ac和dc参数,一个无效块不会影响有效块的运行,因为它有相应独立的指令资源依靠选择晶体管,该系统设计必须通过地址掩盖其无效块。第l块(地址是ooh)为了保证是有效块,不要求纠错l k编程/擦除周期。
除了先装载好的无效块信息,所有器件的存储单元都被擦除,无效块状态定义在空余区域的第1个字节。在每块第1页2 048字节的列地址中没有ffh。很多情况下,无效块信息也是能擦除的,一旦擦除,它不可能恢复其原有信息。因此,系统必须在原来无效块的信息基础上认识无效块。该系统设计就是通过读每块的第1页判定该块是否为无效块。
依据该flash器件数据资料中各个引脚的功能,设计flash的电路连接,图3只给出k9k8g08uom部分所用引脚,电路中flash的控制端经电平转换器后与单片机的pl端口相连,而i/o端口经电平转换器与单片机的p0端口相连。
2.3 74lvx4245电平转换器
74lvx4245提供5 v和3 v之间转换的8位双向电平转换器。该器件的t/r引脚控制数据流向。发射端使数据由a端到b端,而接收端使数据由b端到a端。a端接5 v总线,而b端接3 v总线,如图4所示。
2.4 数码管
采用共阳极数码管动态显示方式。为了提高驱动能力,采用三极管驱动,用p2端口的低电平对数码管进行位点亮,p0端口输入要显示的字符。本系统设计时,第l位和第2位显示第几个坏块,后3位显示无效块地址。
3 系统软件设计
采用μvision2集成开发环境,μvision2支持8051的所有keil工具包,其中包括c编辑器、宏汇编器、链接器,定位器和目标文件至hex格式的转换器。系统软件设计,即单片机代码设计通常可采用汇编语言或c语言。图5是无效块判断的主要流程。
本设计中软件核心部分是存储器的页读取函数。函数中定义无符号整型变量赋值2 048,依据页读取的时序,先将读指令00h由函数writ-ecommand写入flash的命令寄存器,接着由writeaddress函数将4个周期的地址写入flash的地址寄存器,再由writecommand函数将读命令30h写入flash指令寄存器,延时后读状态的控制字的设置,在2 048个读信号脉冲中读取缓存数据。该函数完整源程序代码如下:
4 结论
本设计满足系统设计要求,能够实现对flash存储器的id号的读取,准确读取存储器无效块的数目和相应的物理地址,通过功能按钮实现对无效块地址的上下查询。将存储器换成flash后可以很好地检测器件的无效块的分布情况。可以成为选择性能更好的器件工具,同时还可准确获取无效块地址,为以后数据存储打好基础。
华为Mate10什么时候上市?最新消息:华为Mate10真机渲染图曝光,全面屏+麒麟970+第三代徕卡,干掉iPhone8妥妥的
数字电位器AD8402与8031的接口电路及程序设计
电磁炉LED数字显示驱动芯片WT2003H的功能特点
大唐移动总工程师王映民:基于场景的5G技术和业务
PCIe Gen5.0的设计与优化
基于DSP的Flash存储器坏块自动检测系统
歌尔如何减少TWS耳机与耳机充电盒之间接触点
除了华为我们还应该有100个“华为”
SMT的加工流程是什么
什么电子废品含金量最高
两千元左右的投影仪推荐 5款全网最公认的投影仪推荐
戴耳机耳朵不舒服?骨传导耳机才是最佳选择
同步升压DC-DC转换器概述/特征/功能/布局注意事项
C++多继承的二义性问题
奶嘴柔性测试仪的使用方法
电力监控云平台系统的主要功能
超声波清洗机偏爱BD系列工业级连接器的原因,在这里
为何电机控制总线多选ethercat?
使用Arduino和加速度计构建一个简单且便宜的计步器
基于PLC和工业智能网关,实现智能工厂设备远程监控和故障报警