基于USB2.0的高性能移动存储设备的设计
时间:02-05
来源:21IC
点击:
1.引言
闪存盘(FLASH MEMORY)是USB接口的一种典型应用,1999年朗科研发出全球第一款USB闪存盘,成功启动了全球闪存盘行业。由于闪存是一种基于半导体的存储器,信息在断电后可以保存,并且还具有低功耗、速度快、可擦写性、高可靠性、低成本等特点,是高数据存储密度的最佳选择,在外部存储领域、嵌入式系统、工控行业和信息家电业得到广泛使用,如手机、数码相机、MP3等。市场上的FLASH有多种技术来实现,其中最常用的有NAND(与非)和NOR(异或)两种。
武汉电离层观象台的高频多普勒与到达角探测分析系统在投入实际观测后,获得了一些很重要的观测数据[1],该系统的数据采集单元采用闪存作为数据移动存储设备,实现与计算机的信息交互,完成数据的分析与处理。本文所讨论的NAND FLASH存储器与USB2.0控制器的硬件连接和软件编程方法,在研究开发USB移动存储器使其更稳定安全地工作,具有重要的价值。本文首先介绍移动存储设备的硬件设计部分,重点讨论了该移动存储设备的硬件接口设计,继而给出固件程序的编程方法。其中设备固件的编写是本设计的重点。
2.硬件实现
本移动存储设备的USB2.0控制器采用ATMEL公司的AT89C5131芯片,数据存储介质采用SAMSUNG公司的NAND FLASH 芯片K9K2G08U0A。
2.1 AT89C5131芯片特点
AT89C5131是ATMEL公司生产的基于80C52内核的高性能内置全速USB控制器的8位单CPU微处理芯片[2],直接与MCS-51系列兼容,其内部集成了32KB的Flash存储器,可用于IN- System Programming;内置4KB EEPROM,其中的1KB用于用户数据的存储,具有1个控制端口和6个普通可编程端口,并且支持控制传送、同步传送、中断传送和批量传送四种传输方式。该芯片的优点是采用开发者熟悉的结构和指令集,处理能力强,构成系统的电路简单,调试方便。
2.2 K9K2G08U0A芯片特点
K9K2G08U0A存储器芯片的总容量为(256M +8192k)bit*8bit,分为2048扇区,每扇区又分为64页,每页除了2k字节的主存储区外,还包括64字节的备用[3]。它以200μs/ 页完成2112个字节的编程操作;还可以在2ms内完成128k字节的擦除操作;同时随机读数时间是25μs;数据线与地址线复用为I/O0-I/O7共 8根线;另外还分别提供了命令控制信号线;数据保存时间超过10年。NAND FLASH存储器不会因为存储容量的增加而增加引脚数目,从而极大方便了系统设计和产品升级,但芯片的连接方法与编程访问同传统存储器相比仍有较大差异。
2.3 硬件原理图
该系统的硬件部分由内置USB控制器的单片机AT89C5131,SAMSUNG公司的NAND FLASH 芯片K9K2G08U0A组成,硬件原理图如图1所示。必须写入相应的命令才能顺利执行闪存的各种操作,由于数据线与地址线复用为8根线,因此地址、命令以及数据的输入/输出需要通过命令锁存信号(CLE)和地址锁存信号(ALE)共同控制从而分时复用。
I/O[7:0]:数据输入/输出端口,该信号与AT89C5131芯片的P0[7:0]连接。
:写使能信号。在其上升沿时,命令、地址和数据锁存到相应的寄存器中。该信号与AT89C5131芯片的P3.6 信号连接。
:读使能信号。在其下降沿时,输出数据到I/O总线,同时,它还可以对内部数据地址进行累加。该信号与AT89C5131芯片的P3.7 信号连接。
CLE:命令锁存使能信号。当CLE为高电平时,命令在 上升沿通过I/O端口送入命令寄存器。该信号与AT89C5131芯片的P1.0引脚连接。
ALE:地址锁存使能信号。当ALE为高电平时,地址在 上升沿送入地址寄存器。该信号与AT89C5131芯片的P1.1引脚连接。
:片选信号。用于控制设备的选择。当设备忙时 为高电平而被忽略,当处于编程和擦除操作时设备不能回到备用状态。该信号与AT89C5131芯片的P1.2引脚连接。
R/ :准备好/忙输出。当它为低电平时,表示编程、擦除和随机读操作正在进行,在操作完成后返回高电平;当芯片没被选中或输出禁止时,其为高电平时。该信号与AT89C5131芯片的P1.3引脚连接。
3.固件设计实现
本文设计的USB移动存储设备采用Bulk-Only传输方式,遵循UFI命令规范。移动存储设备固件的主要功能是响应USB总线的各种标准请求,向主机返回设备的状态信息;同时,解析接收到的SCSI命令,进行相应的命令处理和数据读写操作。固件设计采用中断驱动,当AT89C5131从总线上接收到请求包时,通过调用相应的中断事件处理函数来实现,后台处理USB传输,从而保证了闪存的快速读写速率。主要中断事件有:
(1)主循环等待USB中断,设置相应标志位。移动存储设备插入主机后,主机向移动闪存的控制断点0发出标准请求,固件进入标准请求处理函数,设备回送给主机所要求的相应描述符,调用相关驱动程序。
(2)当USB主机通过Bulk-In端口读取闪存数据后,产生Bulk-In端口中断。
(3)当AT89C5131通过Bulk-Out端口接收到主机发送的命令字CBW后,触发Bulk-Out端口中断。
闪存盘(FLASH MEMORY)是USB接口的一种典型应用,1999年朗科研发出全球第一款USB闪存盘,成功启动了全球闪存盘行业。由于闪存是一种基于半导体的存储器,信息在断电后可以保存,并且还具有低功耗、速度快、可擦写性、高可靠性、低成本等特点,是高数据存储密度的最佳选择,在外部存储领域、嵌入式系统、工控行业和信息家电业得到广泛使用,如手机、数码相机、MP3等。市场上的FLASH有多种技术来实现,其中最常用的有NAND(与非)和NOR(异或)两种。
武汉电离层观象台的高频多普勒与到达角探测分析系统在投入实际观测后,获得了一些很重要的观测数据[1],该系统的数据采集单元采用闪存作为数据移动存储设备,实现与计算机的信息交互,完成数据的分析与处理。本文所讨论的NAND FLASH存储器与USB2.0控制器的硬件连接和软件编程方法,在研究开发USB移动存储器使其更稳定安全地工作,具有重要的价值。本文首先介绍移动存储设备的硬件设计部分,重点讨论了该移动存储设备的硬件接口设计,继而给出固件程序的编程方法。其中设备固件的编写是本设计的重点。
2.硬件实现
本移动存储设备的USB2.0控制器采用ATMEL公司的AT89C5131芯片,数据存储介质采用SAMSUNG公司的NAND FLASH 芯片K9K2G08U0A。
2.1 AT89C5131芯片特点
AT89C5131是ATMEL公司生产的基于80C52内核的高性能内置全速USB控制器的8位单CPU微处理芯片[2],直接与MCS-51系列兼容,其内部集成了32KB的Flash存储器,可用于IN- System Programming;内置4KB EEPROM,其中的1KB用于用户数据的存储,具有1个控制端口和6个普通可编程端口,并且支持控制传送、同步传送、中断传送和批量传送四种传输方式。该芯片的优点是采用开发者熟悉的结构和指令集,处理能力强,构成系统的电路简单,调试方便。
2.2 K9K2G08U0A芯片特点
K9K2G08U0A存储器芯片的总容量为(256M +8192k)bit*8bit,分为2048扇区,每扇区又分为64页,每页除了2k字节的主存储区外,还包括64字节的备用[3]。它以200μs/ 页完成2112个字节的编程操作;还可以在2ms内完成128k字节的擦除操作;同时随机读数时间是25μs;数据线与地址线复用为I/O0-I/O7共 8根线;另外还分别提供了命令控制信号线;数据保存时间超过10年。NAND FLASH存储器不会因为存储容量的增加而增加引脚数目,从而极大方便了系统设计和产品升级,但芯片的连接方法与编程访问同传统存储器相比仍有较大差异。
2.3 硬件原理图
该系统的硬件部分由内置USB控制器的单片机AT89C5131,SAMSUNG公司的NAND FLASH 芯片K9K2G08U0A组成,硬件原理图如图1所示。必须写入相应的命令才能顺利执行闪存的各种操作,由于数据线与地址线复用为8根线,因此地址、命令以及数据的输入/输出需要通过命令锁存信号(CLE)和地址锁存信号(ALE)共同控制从而分时复用。
I/O[7:0]:数据输入/输出端口,该信号与AT89C5131芯片的P0[7:0]连接。
:写使能信号。在其上升沿时,命令、地址和数据锁存到相应的寄存器中。该信号与AT89C5131芯片的P3.6 信号连接。
:读使能信号。在其下降沿时,输出数据到I/O总线,同时,它还可以对内部数据地址进行累加。该信号与AT89C5131芯片的P3.7 信号连接。
CLE:命令锁存使能信号。当CLE为高电平时,命令在 上升沿通过I/O端口送入命令寄存器。该信号与AT89C5131芯片的P1.0引脚连接。
ALE:地址锁存使能信号。当ALE为高电平时,地址在 上升沿送入地址寄存器。该信号与AT89C5131芯片的P1.1引脚连接。
:片选信号。用于控制设备的选择。当设备忙时 为高电平而被忽略,当处于编程和擦除操作时设备不能回到备用状态。该信号与AT89C5131芯片的P1.2引脚连接。
R/ :准备好/忙输出。当它为低电平时,表示编程、擦除和随机读操作正在进行,在操作完成后返回高电平;当芯片没被选中或输出禁止时,其为高电平时。该信号与AT89C5131芯片的P1.3引脚连接。
3.固件设计实现
本文设计的USB移动存储设备采用Bulk-Only传输方式,遵循UFI命令规范。移动存储设备固件的主要功能是响应USB总线的各种标准请求,向主机返回设备的状态信息;同时,解析接收到的SCSI命令,进行相应的命令处理和数据读写操作。固件设计采用中断驱动,当AT89C5131从总线上接收到请求包时,通过调用相应的中断事件处理函数来实现,后台处理USB传输,从而保证了闪存的快速读写速率。主要中断事件有:
(1)主循环等待USB中断,设置相应标志位。移动存储设备插入主机后,主机向移动闪存的控制断点0发出标准请求,固件进入标准请求处理函数,设备回送给主机所要求的相应描述符,调用相关驱动程序。
(2)当USB主机通过Bulk-In端口读取闪存数据后,产生Bulk-In端口中断。
(3)当AT89C5131通过Bulk-Out端口接收到主机发送的命令字CBW后,触发Bulk-Out端口中断。
- USB 2.0标准(04-14)
- USB2.0规范的主要特点(04-14)
- USB设备驱动程序的设计(05-20)
- 基于TUSB6020的USB OTG接口设计(08-25)
- 基于SOPC的高速数据采集系统的分析与设计(01-01)
- IEEE 802.16x标准和机制(08-28)