摘 要:本文介绍了一种以TMS320C54x为核心的移动存储终端,终端中使用NAND Flash作为存储器件。讨论了TMS320C54x对NAND Flash的编程以及接口设计。
关键词:DSP;NAND;Flash
引言
移动存储终端包括手机、掌上电脑、PDA和数码相机等手持设备及各种信息家电。在这类产品中既要结合存储功能,又需要具备一定的信号处理能力,因此基于DSP芯片的设计方案成为这些产品的主流方案。同时,为了降低产品成本,采用具有较高容量/价格比的NAND Flash存储芯片也成为移动存储设备的首选。本文介绍在基于TMS320C54x的移动存储设备中,NAND Flash的设计和应用。
系统构成
本系统以TMS320C5409作为核心芯片,完成控制和信号处理功能。使用两块内存芯片:Intel公司的4MB Flash芯片28F004B3存放系统的启动代码,采用Samsung公司的NAND Flash芯片作为用户数据的存储芯片。
TMS320C5409
TMS320C5409是一款定点DSP芯片,其主要应用是无线等通信系统。它的主要特点包括:
(1)运算速度快。
(2)具有优化的CPU结构。
(3)具有低功耗方式。
(4)具有较多的智能外设。
除了标准的串行口和时分复用(TDM)串行口外,还提供了自动缓冲串行口BSP和与外部处理器通信的HPI(Host Port Interface)接口。BSP可提供2K字数据缓冲的读写能力,从而可以降低处理器的额外开销,即使在IDLE方式下,BSP也可以全速工作。HPI可以与外部标准的微处理器直接接口。同时,还具有I/O口等控制信号。
NAND Flash
在移动存储设备中,由于NAND的存储容量大,因此得到了广泛的应用。本系统采用Samsung公司的NAND Flash芯片K9F5608U0M-YCB0进行存储。该芯片存储容量为32MB,其中主数据区为32MB,辅助数据区为1MB,工作电压为2.7~3.6V,I/O端口宽度为8位。
NAND Flash芯片的内存按页和块的结构组织,其中每个数据页内有528个字节,前512个字节为主数据存储器,存放用户数据,后16个字节为辅助数据存储器,存放ECC代码,坏块信息和文件系统代码。每个数据块包含32个页,一片K9F5608U0M包括2048个块。
NAND Flash芯片内有一个容量为528字节的静态寄存器,称为页寄存器,用来在数据存取时作为缓冲区使用。编程数据和读取的数据可以在寄存器和存储阵列中按528个字节的顺序递增访问。当对芯片的某一页进行读写时,其数据首先被转移到该寄存器中,通过这个寄存器和其它芯片进行数据交换,片内的读写操作由片内的处理器自动完成。
NAND Flash的接口引脚分为三类:数据引脚、控制引脚和状态引脚。其中数据接口高度复用,既用作地址总线,又用作数据总线和命令输入接口。本系统采用的芯片有8个I/O数据引脚(I/O1~I/O8),用来输入/输出地址、数据和命令。控制NAND Flash的控制引脚有5个,其中CLE和ALE分别为命令锁存使能引脚和地址锁存使能引脚,用来选择I/O端口输入的是命令还是地址。/CE、/RE和/WE分别为片选信号,读使能信号和写使能信号。状态引脚R/B表示设备的状态,当数据写入、编程和随机读取时,R/B处于高电平,表明芯片正忙,否则输出低电平。
系统连接及配置
TMS320C5409具有16根数据总线和23根地址总线,可以对memory和I/O口进行扩展。由于NAND Flash的存储速度较慢,因此使用I/O空间对其进行访问。CLE和ALE 分别由地址线A1和A0控制。
DSP采用XF作为NAND Flash的片选信号。状态输出信号R/B与BIO相连,作为DSP对NAND Flash的状态监控。
由于NAND Flash中的程序无法直接运行,因此需要将程序代码存储在其它芯片中。系统采用Intel Flash芯片28F004B3作为boot区域使用,按照扩展memory对其进行访问。系统启动时,C5409芯片的boot流程将Flash芯片28F004B3中的可执行代码搬移到片内RAM中,然后在DSP片内运行程序。上电后自动进入读模式状态,利用XF作为控制引脚对NAND Flash进行片选,可以根据系统的各种请求读写用户数据。
读写控制的实现
NAND Flash主要用于大块的数据存储,因此数据读写都是基于页的。在程序中,由于NAND Flash的宽度为8 bit,因此DSP进行读写时只利用C5409数据线的低8bit。对于NAND Flash而言,通常只处理其主数据区的512个字节,辅助数据区不使用。在以文件为基础的存储产品中我们需要对辅助数据区进行处理。同时由于NAND Flash允许芯片中存在坏块,因此在读写时需要绕过。
本系统使用NAND Flash的基本操作有以下三种:读一页数据,写一页数据,块擦除。在这几种方式下,每次的地址配置,其页内地址A0~A7均为0,A9~A24选定所在的页。
DSP读数据时,首先置低XF,对NAND Flash进行片选,然后向I/O端口0x0001发送read命令,配置完read命令后,向I/O端口0x0002发送地址信号,对地址进行选定。此后从I/O端口0x0000连续进行512个字节的读操作,完成对整个页的读取。最后拉高XF。
DSP写入NAND Flash的操作也以页为基本单位,首先置低XF片选NAND Flash,然后向I/O端口0x0001发送写入命令,进行地址配置,再向I/O端口0x0000写入一个字节。每写入一个字节后都循环读取状态寄存器的值,判断NAND芯片I/O的第6位,如果为低,则芯片正忙,如果为高,则写完数据,这时可以继续下一个字节的写入操作。
DSP对NAND Flash的擦除以块为基础,即一次擦除32页,地址由NAND Flash地址中的A14~A23确定。由于系统中利用R/B和DSP的/BIO相连,因此也可以利用对BIO进行检测来判断是否写完或擦除完毕。
结语
本系统中,利用DSP来进行控制和信号处理,利用与NAND Flash的简单连接实现大量数据的存储。在此基础上,可以根据需要完成对各种信号的处理和存储,从而构成一个相对独立、便携的设备。低端设备中对数据的完备性要求较低,因此本系统中省略了对坏块的处理和ECC处理,在扩展SM卡等设备中可以增加这些功能。