1 前言
闪存(又称FLASH,闪速存储器)是一种新兴的半导体存储器,是一种不挥发性存储器NVM(Non-Volatile Memory)。它采用类似于EPROM的单管叠栅结构的存储单元,是新一代用电信号擦除的可编程ROM;既吸收了EPROM结构简单、编程可靠的优点,又具有EEPROM用隧道效应擦除的快捷特性,集成度可做得很高,因而在便携式数据存储和各种图像采集记录系统中得到了广泛的应用。其主要特点有:非易失性,可靠性高;功耗小;寿命长,可以在在线工作的情况下进行写入、读出和擦除操作,标准擦写次数可达10万次;密度大、成本低,具有很高的容量密度,价格也在不断降低;具有抗震动、抗冲击、温度适应范围宽等。正是由于闪存具有上述诸多优点,近年得到了快速而迅猛的发展。
全球闪速存储器的主要供应商有AMD、Atmel、Fujistu、Hitachi、Hyundai、Intel、Micron、Mitsubishi、Samsung、SST、Sharp、Toshiba。由于各自技术架构的不同,分为几大阵营,因此闪速存储也按其采用技术的不同而分为几大类:
*NOR技术——代表公司Intel,特点为擦除和写入慢、随机读快;
*NAND技术——代表公司Samsung、Toshiba,特点为随机读写慢、以页为单位连续读写快;
*AND技术——代表公司Hitachi,特点为低功耗,价格高。
*由EEPROM派生的闪速存储器。特点:介于NOR与EEPROM之间。
存储器的发展具有容量更大、体积更小、功耗更低、价格更低的趋势,这在闪速存储器行业表现得淋漓尽致。随着半导体制造工艺的发展,主流闪速存储器厂家采用90nm,甚至73nm的制造工艺。
借助于先进工艺的优势,闪速存储器的容量可以更大:NOR技术已经出现512Mb的器件,NAND和AND技术已经有32Gb的器件。
芯片的封装尺寸更小:从最初DIP封装,到PSOP、SSOP、TSOP封装,再到BGA封装,闪速存储器已经变得非常纤细小巧。
工作电压更低:从最初12V的编程电压,一步步下降到5V、3.3V、2.7V、1.8V单电压供电;符合国际上低功耗的潮流,更促进了便携式产品的发展。
位成本大幅度下降:采用NOR技术的Intel公司的28F128J3价格为25美元,NAND技术和AND技术的闪速存储器已经突破10MB/2美元的价位,性价比极高。
本文中讨论的是采用NAND技术的TH58NVG1S3A。
2 TH58NVG1S3A芯片
TH58NVG1S3A是Toshiba公司生产的一款闪存芯片。它的单片容量是2Gbits,采用的是NAND技术,它可以在200μs内完成一页2112个字节的编程操作,还可以在2ms内完成128K字节的擦除操作,同时数据区内的数据能以20MBps的速度读出。
TH58NVG1S3A大容量闪存芯片的I/O口既可以作为地址的输入端,也可以作为数据的输入/输出端,同时还可以作为指令的输入端。芯片上的写控制器能自动控制所有编程和擦除操作,包括提供必要的重复脉冲、内部确认和数据空间等。
2.1 TH58NVG1S3A芯片的性能参数
TH58NVG1S3A的主要特点如下:
•采用3.3V电源;
•芯片内部的存储单元阵列为(256+8192K)×8bits,数据寄存器和缓冲存储器均为(2K+64)×8bits;
•具有指令/地址/数据复用的I/O口;
•由于采用可靠的CMOS移动门技术,使得芯片最大可实现100000次编程/擦除操作,该技术可以保证数据保存10年而不丢失。
2.2 TH58NVG1S3A芯片的主要引脚说明
TH58NVG1S3A有48个引脚,具体功能如下:
I/O0~I/O7:数据输入输出口,I/O口常用于指令和地址的输入以及数据的输入/输出,其中数据在读的过程中输入。当芯片没有被选中或不能输出时,I/O口处于高阻态。
CLE:指令锁存端,用于激活指令到指令寄存器的路径,并在WE上升沿且CLE为高电平时将指令锁存。
ALE:地址锁存端用于激活地址到内部地址寄存器的路径,并在WE上升沿且ALE为高电平时,地址锁存。
CE:片选端用于控制设备的选择。当设备忙时CE为高电平而被忽略,此时设备不能回到备用状态。
RE:读使能端,用于控制数据的连续输出,并将数据送到I/O总线。只有在RE的下降沿时,输出数据才有效,同时它还可以对内部数据地址进行累加。
WE:写使能控制端,用于控制I/O口的指令写入,同时,通过该端口可以在WE脉冲的上升沿将指令、地址和数据进行锁存。
WP:写保护端,通过WP端可在电源变换中进行写保护。当WP为低电平时,其内部高电平发生器将复位。
RY/BY_N:就绪/忙输出,RY/BY_N的输出能够显示设备的操作状态。RY/BY_N处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后,RY/BY_N会自动返回高电平。由于该端是漏极开路输出,所以即使当芯片没有被选中或输出被禁止时,它也不会处于高阻态。
3 利用CPLD对TH58NVG1S3A控制的实现
本项目采用的CPLD是LATTICE公司的高密度在系统可编程逻辑器件ISPLSI1032E,这款CPLD有84脚和100脚两种封装形式,有64个I/O口供用户使用,内部集成6000门,有192个寄存器。能够满足设计需要。
3.1 硬件连接
图1所示为ISPLSI1032E控制TH58NVG1S3A芯片的主要信号连接情况。图中ADDR、DATA、CMD是系统与外部的接口信号,提供给用户使用;CLK是输入到CPLD的时钟信号(频率为20Mhz);另外ISPLSI1032E提供6根控制线和8根数据线以实现对TH58NVG1S3A的逻辑控制和数据交换,这些对用户是不透明的。ADDR是提供给闪存的29位的地址输入线,可实现对闪存的512M×8bits单元寻址;CMD为3位输入线表示对闪存的操作状态(读、写、擦除等);DATA 为双向8位数据线;RY/BY_N是TH58NVG1S3A的反馈信号,示意操作过程是否结束;其他信号是TH58NVG1S3A的控制信号。
3.2 软件设计
本文使用VHDL语言对CPLD进行编程。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,使用VHDL语言对CPLD进行编程,可以将硬件工作软件化,从而大大简化了硬件设计任务,提高了设计效率和可靠性,在语言方面具有很好的易读性;同时VHDL语言描述的系统是以并行方式工作的,大大提高了系统的运算速度;用VHDL语言进行电子系统设计的最大优点是使我们专致于功能的实现,而不需要对不影响功能的因素花费过多时间和精力,缩短了产品的开发时间。VHDL是一种标准语言,不是针对某厂家的器件,而是针对所有可编程逻辑器件,因而具有普遍性,成为最常用的硬件描述语言。程序流程如图2 所示。其中用CMD=001表示读闪存,CMD=010表示对闪存进行写操作,CMD=100表示对闪存进行块擦除。
TH58NVG1S3A的读是按页执行的。读操作首先把00H命令写到指令寄存器作为读地址输入指令,一旦该指令被锁存,就不能在下页中写入读操作了,然后输入5个周期的地址数据到地址寄存器中进行地址译码,最后把30H写到指令寄存器作为读开始指令,但是并不是马上就能从闪存读出数据,直到将选定页中的2112字节数据存入数据寄存器后才能从闪存输出数据,系统可以通过分析RY/BY_N脚的输出来判断数据转移是否完成。选定页中的2112字节数据能够在25μs内被存入数据寄存器中,而存入数据寄存器的数据可以很快地被读出,数据通过周期为50ns 的RE脉冲被连续输出至I/O。
TH58NVG1S3A的写操作也是按页进行的。首先输入连续数据输入指令80H,再输入5个周期的地址数据到地址寄存器中进行地址译码,之后在50ns的WE周期上升沿将要写入的2112字节数据写入数据寄存器中,最后输入自动编程指令10H开始编程。可以通过查询RY/BY_N脚的输出来判断编程是否完成。编程完成后通过输入读状态寄存器70H来确定编程操作是否成功。虽然闪存的写操作是以页为单位的,但是TH58NVG1S3A可以将一页空间(2112字节)分成8个部分(0-511,512-1023,1024-1535,1536-2047,2048-2063,2064-2079,2080-2095,2096-2111)分别操作,只是在进行写操作的时候,把要进行写操作的部分写入需要的数据,其他7个不需要进行写操作的部分必须写“1”。
TH58NVG1S3A的擦除操作是以块为单位进行的。块地址装载将从一个块擦除指令60H开始,之后是三个周期的块地址输入,然后输入擦除指令D0H开始擦除,通过查询R/B来判断擦除操作是否完成。TH58NVG1S3A内的状态寄存器可以确认编程和擦除操作是否成功完成。在写入指令(70H)到指令寄存器后,读循环会把状态寄存器的内容在RE的下降沿输出到I/O。而在新的指令到达前,指令寄存器将保持读状态。
本文编程的读操作仿真波形如图3,写和擦除与读操作方式类似,不再赘述。
4 结束语
本文的创新点是成功使用CPLD控制TOSHIBA公司新推出的2Gbits NAND FLASH芯片 TH58NVG1S3A,完成了软硬件设计,使本系统相对于传统的存储方式来说更适用于非常恶劣的环境,有非常高的可靠性,能够承受强烈的震动,具有较低的功耗,灵活性高,控制方便,已经成功应用于某航天项目中,并产生了很好的效果。
责任编辑:gt
评论
查看更多