BENAND Flash的编程实现及优化

2016-03-20 09:14傅启国
单片机与嵌入式系统应用 2016年11期
关键词:字节时序校验

傅启国

(南京西尔特电子有限公司,南京211111)

BENAND Flash的编程实现及优化

傅启国

(南京西尔特电子有限公司,南京211111)

介绍了BENAND Flash的基本结构和信号,详细讨论了其擦除及读写数据的时序,设计了一套对其编程的系统。针对其内嵌ECC等特点分析了BENAND Flash在工厂编程里的具体步骤,并在编程和校验环节进行优化,有力地提升了工厂编程行业内BENAND Flash的编程效率。

BENAND Flash;内嵌ECC;编程;校验

引 言

BENAND Flash是东芝公司新发明的一种NAND Flash,它基于SLC NAND闪存,内嵌ECC(Error Correction Code,纠错码),并且具有与通用的SLC NAND闪存兼容的封装和引脚定义,这一点保证其在现有产品中可以轻松地与SLC NAND实现替换。BENAND在减轻主机处理器处理ECC负担的同时,最大程度地避免了协议更改,并且允许主机处理器支持最先进工艺的NAND闪存,以上优点使得BENAND Flash逐渐被广泛使用。

1 BENAND Flash的基本结构

目前东芝推出的BENAND Flash,其容量主要有1 Gb、2 Gb、4 Gb和8 Gb四种,封装形式有TSOP48、FBGA63和FBGA67三种。以1 Gb容量的BENAND Flash为例,它由1024个区块组成,每个区块包含64个页,每一页都包含一个2 048字节的数据区和64字节的备用区,总共包含2 112字节,所以1 Gb容量的BENAND Flash实际共包含(2 048+64)×64×1024字节,其结构示意图如图1所示。

图1 1Gb容量BENAND Flash结构图

BENAND Flash以页为基本单元进行存储,以块为基本单元进行擦除,以页为基本单元进行写入和读出,具有很快的写入和擦除速度。除了电源、地和8个I/O口,主要由7个控制信号构成:

①芯片使能(CE#):如果没有检测到该信号, BENAND Flash就保持待机模式,不对任何控制信号作出响应。

②写使能(WE#):WE#负责将地址、命令或数据写入到BENAND Flash中。

③读使能(RE#):RE#允许数据输出。

④指令锁存使能(CLE):当CLE为高时,在WE#信号的上升沿,命令被锁存到BENAND Flash的指令寄存器中。

⑤地址锁存使能(ALE):当ALE为高时,在WE#信号的上升沿,地址被锁存到BENAND Flash的地址寄存器中。

⑥就绪/忙(RY/BY#):如果BENAND Flash处于忙状态,该信号为低,否则为高。

⑦写保护(WP#):如果WP#为低,则BENAND Flash处于保护状态,无法被擦除或写入数据。

2 BENAND Flash的编程实现

2.1 BENAND Flash编程系统

本文以CPU和FPGA为主要控制芯片,以PC机为上位机,设计了一个可以对不同封装、不同容量的BENAND Flash进行编程的系统,系统的硬件结构框图如图2所示。

图2 系统硬件结构框图

PC机负责发送命令、显示及传输数据;CPU负责接收命令并进一步对FPGA发出具体操作指令,并发送及接收具体数据;FPGA负责写入数据和读取数据等逻辑实现,并连接不同封装芯片的引脚到其内部控制信号。

2.2 BENAND Flash擦除操作

与普通的NAND Flash相似,BENAND Flash也存在原始坏块,其出厂允许的坏块数为总数的2%以内,所以1 Gb容量的BENAND Flash允许的最大坏块数为20个。

由于坏块本身不允许被擦除,在擦除之前,必须要先检测出原始坏块。从第一个Block开始,从头到尾全部扫描一遍。扫描方法是,直接读取当前Block的任意一页的任意一个字节,如果为0x00则为坏块,如果为0x FF则为好块,其流程如图3所示。

判断任意一页的任意一个字节的方法也是BENAND Flash所特有的,一般的NAND Flash需要判断特定页的特定位置,如第一页备用区的第一个字节。

擦除时序包括:发出0x60命令输出地址,发出0x D0命令启动擦除,等待完成和状态反馈,最后的状态反馈通过发出0x70命令来读I/O的最低位的状态来实现,如果为0,则表示擦除成功,否则表示擦除失败,其时序如图4所示。

一般Block擦除的典型时间tBERASE为2.5 ms,所以一般2~3 s即可对1 Gb容量的BENAND Flash擦除完毕。

图3 坏块扫描流程图

2.3 BENAND Flash写操作与读操作

写操作时序包括:发出0x80命令输出地址,把整页待烧录数据打入BENAND Flash内部的Data Cache,发出0x10命令执行写入操作,等待完成和状态反馈,与擦除操作一样,最后的状态反馈通过读I/O的最低位的状态来实现,如果为0则表示写入成功,否则表示写入失败,其时序如图5所示。

由图5可以看出,写操作的tPROG时间在整个写时序中时间最长,一般需要300μs以上,对1 Gb容量的BENAND Flash来说,共包含65 536页,所以全片写数据至少要在20 s以上。

读取一页数据的读操作时序与写操作类似,只是在具体命令上不同,0x80~0x10命令换成了0x00~0x30命令,不再赘述。

3 BENAND Flash的编程优化

与普通的NAND Flash相似,一般BENAND Flash的工厂编程步骤分为三步:擦除、编程和校验。虽然BENAND Flash自带ECC,但在批量烧录中也无法保证所有芯片发生的比特反转在BENAND Flash内嵌ECC的可纠错范围之内,难免会有少量芯片出现较多位反转的情况。所以在工厂编程中,除了要按特定的坏块管理方案将数据烧录进芯片,还要将芯片里的数据读出来进行校验,以确认所烧录的数据完全正确。

擦除本身时间很短,对于追求生产效率的工厂来说,尽可能地缩短编程及校验时间就显得尤为重要。

在编程这一步,实际上就是对BENAND Flash顺序地进行页写入操作,实现把每一页的数据都写入到BENAND Flash对应的页中。从上述写操作的时序可以看出,页编程时间tPROG是比较长的,从芯片手册上可以得知,最长需要700μs,可以充分利用这一段较长的等待时间。即在FPGA中设计FIFO,在RY/BY#为低时,将待烧录数据先写入FIFO,从而节省了部分数据传输的时间。另外,考虑到BENAND Flash的烧录源文件与普通NANDFlash类似,烧录源文件一般不可能是满数据,而是会存在大量0x FF的空数据。所以,在真正烧录数据之前,可以在PC机端直接对烧录源文件进行扫描分析,如果发现对应BENAND Flash的整页数据都是0x FF,则将该页的位置记录下来,在真正烧录到该页时,直接跳过该页的烧录,也可以节省一定的时间,当然,能节约的具体时间取决于烧录源文件的具体数据情况。

图4 擦除时序图

图5 写操作时序图

在校验这一步,传统的NAND Flash芯片校验只能按照页读出数据时序的读出数据和源文件比较,BENAND Flash可以采用此方法,但速度较慢。由于BENAND Flash自带ECC纠错能力,并且也提供了相应的命令来读取每一页是否发些了比特反转及发生了几位比特反转的具体信息,所以为了提高效率,可以不必把每一页的所有数据都读取出来与源文件比较,而是把每页划分为4个Sector,每个Sector包含512字节主数据区和16字节备用区,用BENAND Flash提供的0x7A命令直接读取ECC的状态来判断是否发生了超过自身纠错能力的位反转,读时序如图6所示。

图6 读ECC状态时序图

由图6可以看出,只需先发送0x7A命令,随后就可读出每个Sector的ECC状态,再对照ECC状态表即可知道该Sector的比特反转及纠错情况,具体的ECC状态表如表1所列。

表1 ECC状态表

如果某Sector的状态输出值在0~8之间,则表示没有位反转或发生了可纠错的比特反转数,校验通过;如果状态输出值为0x F,则意味着该Sector发生了超过芯片纠错能力的比特反转数,芯片校验不能通过,应当重新烧录或弃片。该种方法与传统的只能靠逐个字节读出芯片整页数据比较的方法完全不同,把原先需要读出2 112个字节的时间,缩短为只需读取4个ECC Status的时间,校验效率提升极其明显。

结 语

东芝公司的BENAND Flash由于兼容性好、内嵌ECC、可靠性高等优点逐渐被广泛使用,本文对其擦除、写数据、读数据等时序进行了较为详细的讨论,并针对其特点对工厂编程的整个过程进行分析,提出在编程中采用FIFO设计、预先对源文件扫描的方法节省烧写时间。采用直接读取ECC Status进行校验的方法提高了校验效率,对工厂编程行业内BENAND Flash的编程效率提升有较高的参考价值。

[1]李泽明,杨燕娇,张会新.一种Nand Flash ECC校验设计及FPGA实现[J].电视技术,2013,37(17):7375.

[2]马丰玺,杨斌,卫洪春.非易失存储器NAND Flash及其在嵌入式系统中的应用[J].计算机技术与发展,2007,17(1): 203205.

[3]魏国.一种NAND Flash控制器验证平台的设计[J].电子科技,2013(7):142143.

傅启国(工程师),研究方向为电力自动化与嵌入式开发。

Programming Realization and Optimization of BENAND Flash

Fu Qiguo
(Nanjing Xeltek Electronic Co.,Ltd.,Nanjing 211111,China)

In the paper,basic structure and signal of BENAND Flash is introduced.Erase,write and read timing are discussed in detail, and a BENAND Flash programming system is designed.According to the characteristics of built-in ECC,the steps of programming and verification of BENAND Flash are analyzed,which effectively increases the programming efficiency in BENAND Flash factory programming industry.

BENAND Flash;built-in ECC;programming;verification

TP29

:A

薛士然

2016-07-28)

猜你喜欢
字节时序校验
清明
No.8 字节跳动将推出独立出口电商APP
基于不同建设时序的地铁互联互通方案分析
No.10 “字节跳动手机”要来了?
炉温均匀性校验在铸锻企业的应用
基于FPGA 的时序信号光纤传输系统
简谈MC7字节码
结合抓包实例分析校验和的计算
分析校验和的错误原因
基于模体演化的时序链路预测方法