电子盘IDE接口Flash读写FPGA.doc_第1页
电子盘IDE接口Flash读写FPGA.doc_第2页
电子盘IDE接口Flash读写FPGA.doc_第3页
电子盘IDE接口Flash读写FPGA.doc_第4页
电子盘IDE接口Flash读写FPGA.doc_第5页
免费预览已结束,剩余70页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要摘要在信息时代,存储设备作为记录信息的载体,越来越被人们广泛的使用。传统的机械硬盘具有容量大,技术成熟的特点。但在工业,军事应用中往往要求存储设备具有稳定性高,轻便,体积小,工作温度范大等特点。电子盘,一种以Flash芯片作为存储介质的存储设备就具备这样的特点。本文将介绍一种基于FPGA的Flash高速读写及电子盘设计的方案。本方案设计的电子盘采用改进的IDE接口与采用VxWorks系统的主机通讯,并对Flash存储介质进行读写。具体介绍两方面的内容,一方面是标准的IDE接口和在其基础上做出改进;另一方面是对Flash芯片的读写等操作。然后针对这两方面进行EDA编程。最后,与主机联机调试。关键字:电子盘,IDE接口,Flash读写,FPGA目录ABSTRACTAs an information carrier, the storage device is more and more widely used in the information age. Traditional mechanical hard drives have their charactors in both large capacity and mature technology. But in industrial and military, the storage drivers must have the following features, high stability, lightweight, wide range of working temperature. Electronic disk, a storage driver with flash chips as the storage medium, has such characteristics.This thesis introduces a design of an FPGA-based electronic disk with high-speed reading and writing operation. The electronic disk communicate with the host, a VxWorks operation, through an improved IDE interface and be able to read, write, and erase the flash chips. The paper describe two aspects in detail: one is the standard IDE interface and the improved IDE interface based on it. Another one is the operation of reading and writing on the flash chips. Then focusing on the EDA programming on both of the aspects. Finally, connecting with the host to test the electronic disk. Key Words: electronic disk, IDE interface, Flash reading and writing, FPGAIV目录第1章 引言11.1 选题背景11.2 课题目标和意义1第2章 电子盘的技术基础22.1硬盘技术简介22.1.1 硬盘的逻辑结构22.1.2硬盘的工作原理32.2 IDE接口介绍42.2.1 IDE接口信号定义42.2.2 IDE接口寄存器访问62.2.3 IDE(ATA)协议概述92.3 Flash芯片介绍122.3.1内部组织结构122.3.2 指令系统和读写时序142.4 FPGA芯片介绍17第3章 电子盘的总体设计193.1电子盘的设计要求193.2 要求分析193.3 模块的划分223.4 电子盘读写和擦除操作对模块的调用24第4章 各个模块的设计274.1改进的IDE接口寄存器模块的设计274.1.1 i_ctrl_reg模块的设计284.1.2 i_cmd_reg模块的设计294.1.3 state_r模块的设计314.1.4 sector_reg32模块的设计334.1.5 其它模块的设计354.1.6 读写FIFO模块的设计364.2 Flash操作控制模块的设计374.2.1 flash_wr模块的设计384.2.2 flash_rd模块的设计414.2.3 erase模块的设计434.3改进IDE接口与Flash控制交互模块的设计464.3.1 address_cal模块的设计474.3.2 host_dec模块设计494.3.3 ide_sm模块的设计51第5章 电子盘的联试545.1 联试的原理545.2 联测的准备工作555.3 电子盘的读写585.4 联测的总结60结束语61参考文献62致谢63外文资料原文64翻译文稿68第1章 引言第1章 引言1.1 选题背景在过去的几十年里,机械硬盘作为人们的数据的主要存储设备得到了广泛的应用。而在2000年前后,一种以Flash为存储介质的存储设备U盘出现了。它低耗,轻便,人们可以很方便地随身携带。很快它便流行起来,几乎人手一块。但是随着时间的推移U盘的容量却一直没有大的提升,一直维持在个位数。人们希望有一种既有U盘那样轻便,又有机械硬盘那样大容量,同时具有高速存储速度的存储设备。电子盘便是在这样的情况先发展起来的。1.2 课题目标和意义 本次设计的电子盘为某一采用VxWorks系统的主机的移动存储设备。采用一片 Xilinx Spartan-3AN XC3S1400AN 作为电子盘的控制器,多片Samsung K9K9G08U1M nandflash 作为存储介质,通过改进的IDE接口与主机通讯。设计的关键是对电子盘的控制器进行EDA编程设计,实现改进的IDE接口指令及其相关寄存器与nandflash的读写等操作的结合。改进的IDE接口及多片nandflash芯片的并行读写可以是电子盘的读写速度大幅提高,达到高速读写的目的。由于采用nandflash作为存储介质,该电子盘较一般的机械硬盘具有启动快,噪声小,读写快,工作温度范围宽,抗震性能好的特点。而这些特点也是电子盘优于一般的机械硬盘的地方。随着科技的进步,半导体工业的发展,成本的降低,相信在未来,大容量的电子盘会代替机械硬盘,所以对电子盘的设计还是很有意义的。1第2章 电子盘的技术基础第2章 电子盘的技术基础2.1硬盘技术简介本小节对机械硬盘的逻辑结构和基本的工作原理进行介绍。通过对逻辑结构的介绍,可以对Flash芯片基本的储存单划分起到指导作用,以配合IDE接口读写。对工作原理的介绍,可以加深对硬盘读写过程的理解,并对FPGA编程起一定的帮助作用。2.1.1 硬盘的逻辑结构硬盘的逻辑结构包括:盘面,磁道,柱面,扇区等1。其组成如图2-1。图2-1 硬盘逻辑结构盘面(磁头):硬盘通常由重叠的一组盘片构成,每一个盘片就是一个盘面,通常是从上到下依次从“0”开始编号。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。柱面:硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。 对硬盘对数据的读写,是以扇区为基本单位,一个扇区的大小为512Byte,而Flash芯片的数据读写一般是以页为单位操作的,擦除以块为单位进行,一块为64页。了解这些逻辑结构和基本读写单位对电子盘的逻辑单元的划分有着帮助的作用。具体的电子盘的逻辑划分将在第三章中具体地介绍。2.1.2硬盘的工作原理硬盘工作时,盘片以设计的转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定的位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使得盘片表面磁性物质状态发生改变,并在写电流磁场消失后保持,这样数据就存储下来了;当系统从硬盘中读取数据时,磁头经过片面指定区域,盘片表面磁场产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。硬盘电路板的三大控制模块,如图2-2。包括主控芯片,电机驱动芯片,前置信号处理器2。其中主控芯片把硬盘的微处理器,接口,数字信号处理器集成在一个芯片中。用于电机驱动芯片的控制及和数字,前置信号处理器进行数据交换。电机驱动芯片用于驱动硬盘主轴电机和音圈电机。前置信号处理器用于加工整理磁头传来的数据。图2-2 硬盘电路板原理图对硬盘的电路板的了解对电子盘的控制器的模块设计有着参考作用。具体的电子盘的控制器的设计将在第三章中介绍。2.2 IDE接口介绍 IDE:集成设备电路,也称为ATA(Advanced Technology Attachment)3。IDE总线是平行总线,在SATA(Serial ATA)引入后,Parallel ATA(IDE)被称为PATA.它一般会作为ATA硬件的接口,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘接口无法替代的地位。2.2.1 IDE接口信号定义 IDE接口的ATA标准信号包含信号电缆和电源显得电气特性,该标准考虑到新技术的发展,不仅适用于通用的5V逻辑,也适用于3.3V的电路逻辑。IDE电缆长度小于46cm,除DASP,PDIAG,IOCS16和SPSYNC:PSEL信号外,几乎所有信号都使用TTL电平线路收发器4。IDE接口引脚定义如表2-1所示。表2-1 40pin IDE接口信号定义表主机I/O口方向设备 I/O口复位1- RESET- -12- Ground -2数据总线位0-153-183-1819-地 -1920- (keypin) -20DMA 请求212324- Ground -24I/O 读25- DIOR- -2526- Ground -26I/O 通道就绪272930- Ground -30中断请求31- INTRQ -3116位地址线使用3233传输诊断34*- PDIAG- -*34地址位035- DAO -35地址位236- DA2 -36片选信号037- CS1FX- -37片选信号138- CS3FX- -38驱动器状态39- DASP- -*3940- Ground -40对其中重要的信号的说明:CS1FX- :主机发出 与DA2:0结合,用于选择命令块寄存器。CS3FX- :主机发出 与DA2:0结合,用于选择控制块寄存器。DA2:0 : 主机发出 与前两个信号结合,用于访问寄存器或数据。DD0-DD15 : 双向 数据线。DIOR- : 主机发出 读取I/O数据。DIOW- :主机发出 写 I/O数据。DMACK- :主机发出 DMA传输方式确认。DMARQ- :设备发出 DMA 传输方式请求。INTRQ :设备发出 设备中断。IORDY :设备发出 I/O准备好。2.2.2 IDE接口寄存器访问主机对IDE接口硬盘的控制是通过硬盘控制器上的二组寄存器实现5。一组为命令寄存器组(Task File Registers),I/O的端口地址为1F0H1F7H。其作用是传送命令与命令参数。另一组为控制/诊断寄存器(Control/Diagnostic Registers) I/O的端口地址为3F6H3F7H 其作用是控制硬盘驱动器,如表2-2:表2-2 IDE寄存器的访问表地址功能CS1FX-CS3FX-DA2DA1DA0读操作(DIOR-)写操作 (DIOW-)控制/诊断寄存器NNXXX数据线高阻态无用NA0XX数据线高阻态无用NA10X数据线高阻态无用NA110状态交换寄存器设备控制寄存器NA111驱动器地址无用 命令块寄存器AN000数据寄存器数据寄存器AN001错误寄存器特征寄存器AN010扇区数目寄存器扇区数目寄存器AN011扇区编号寄存器扇区编号寄存器AN011* LBA bits 0- 7* LBA bits 0- 7AN100柱面数低位寄存器柱面数低位寄存器AN100* LBA bits 8-15* LBA bits 8-15AN101柱面数高位寄存器柱面数高位寄存器AN101* LBA bits 16-23* LBA bits 16-23AN110 驱动器/磁头寄存器 驱动器/磁头寄存器AN110* LBA bits 24-27* LBA bits 24-27AN111状态寄存器命令寄存器AAXXX无效地址无效地址 在硬盘执行读写过程中为了节省I/O地址空间用相同的地址来标识不同的寄存器例如表2.2中端口地址1F7H 在向硬盘写入数据时作为命令寄存器而向硬盘读取数据时作为状态寄存器表2.2中各寄存器功能如下:数据寄存器:是主机和硬盘控制器的缓冲区之间进行8位或16位数据交换用的寄存器使用该寄存器进行数据传输的方式称程序输入输出方式即PIO方式数据交换的另一种方式是通过DMA通道这种方式不使用数据寄存器进行数据交换。错误寄存器:该寄存器包含了上次命令执行后硬盘的诊断信息每位意义见表2-3 在启动系统硬盘复位或执行硬盘的诊断程序后,也在该寄存器中保存着一个诊断码。表2-3 IDE错误寄存器位意义0AMNF 没找到所要访问的扇区的数据区1TK0NF 在执行恢复RECALIBRATE命令时0磁道没有发现2ABRT 对硬盘发非法指令或因硬盘驱动器故障而造成命令执行的中断3MAC 该信号用来向主机发出通知表示介质的改变4IDNF 没有找到访问的扇区或CRC发生错误5MC 这是发送给主机一个信号以通知主机使用新的传输介质6UNC 在读扇区命令时出现不能校正的ECC错误因此此次数据传输无效7BBK 在访问扇区的ID数据场发现坏的数据块时会置1下面的扇区数寄存器磁道数寄存器驱动器/磁头寄存器三者合称为介质地址寄存器介地址可以用CHS方式或LBA方式在驱动器/磁头寄存器中指定用何种方式。扇区计数寄存器:指明所要读/写的扇区总数,其中0表示传输256个扇区,如果在数据读写过程发生错,误寄存器将保存尚未读写的扇区数目。磁道数寄存器:指明所要读/写的磁道数。驱动器/磁头寄存器:指定硬盘驱动器号与磁头号和寻址方式如表2-4。表2-4 IDE驱动器/磁头寄存器765432101L1DRVHS3HS2HS1HS0HS0至HS3(磁头选择):在LBA方式中,是逻辑扇区号的的高四位DRV(驱动器选择):0选择主驱动器,1选择从驱动器。L(LBA方式):L=1,置驱动器为LBA模式;L=0,置驱动器位CHS模式。状态寄存器:保存硬盘控制器命令执行后的状态和结果,如表2-5所示。表2-5 IDE状态寄存器位意义0ERR 错误(ERROR) 该位为1表示在结束前次的命令执行时发生了无法恢复的错误在错误寄存器中保存了更多的错误信息1IDX 反映从驱动器读入的索引信号2CORR 该位为1时表示已按ECC算法校正硬盘的读数据3DRQ 为1表示请求主机进行数据传输(读或写)4DSC 为1表示磁头完成寻道操作已停留在该道上5DF 为1时表示驱动器发生写故障6DRDY 为1时表示驱动器准备好可以接受命令7BSY 为1时表示驱动器忙(BSY) 正在执行命令在发送命令前先判断该位命令寄存器:包含执行的命令代码。当向命令寄存器写命令时,相关该命令的参数必须先写入。在写命令时,状态寄存器的BSY位置1。如果命令是非法,则中止执行。在IDE标准中,IDE命令一共有30多个,其中有10个是通用型(也称强制型)命令6。主要的参数如表2-6所示:表2-6 IDE命令代码命令代码O/M命令代码O/M承认介质改变DBHO长度(进制重试)22H,23HM启动DCH,DDHO扇区读校验(禁止重试)40H,41HM检查电源模式98H,E5HO复位E7HO门锁DEHO恢复驱动器状态EAHO开锁DFHO寻道7XHM驱动器诊断90HM设置特性参数EFHO格式化磁道50HM设置多扇区模式C6HO确认驱动器ECHO设置睡眠模式99H.E6HO空闲97H,E3HO设置准备模式96H,E2HO立即进入空闲95H,E1HO立即进入准备模式94H,E0HO初始化驱动器参数91HM写参数缓冲区E8HO预补偿1XHMDMA写(禁止重试)CAH,CBHO度扇区缓冲区E4HO多扇区写C5HODMA读(禁止重试)C8H,09HO部分写E9HO读驱动器状态E9HO写扇区(禁止重试)30H,31HM多扇区读C4HO长写32H,33HM读扇区(禁止重试)20HM写校验3CHO注:M表示强制,O表示可选择设备控制寄存器:将该寄存器的SRST位设置为1,可以使硬盘驱动器处于复位状态,IEN表示是否允许中断,其中0为允许。由此可见对该寄存器发送0X0CH命令即令硬盘复位,其格式如表2-7所示。表2-7 设备控制寄存器76543210-1SRSTIEN02.2.3 IDE(ATA)协议概述IDE协议中的命令必须根据协议规定来执行,因此命令被分为了几个类别。命令类别及其相关协议的定义如下7: 对于所有的命令,主机要发出前都要检查设备发出的BSY信号是否有效,当BSY=0时才会发出并执行。对于大多数的命令,主机需要等待设备的DRDY信号为1才会发出该命令,而有的命令当它被标记为DRDY=x,将不会检查DRDY信号就会被发送。 数据的传输可以有多种方式,而不拘泥与以下的几种,但是作为一个规范的ATA设备,它应该至少支持下面的几种传输方式的一种。1.PIO方式数据输入命令 这一类命令包括:-设备识别命令;-读取缓存器命令;-读扇区命令。执行过程包括一个或多个扇区(一个扇区为512bytes)的数据从设备传输到主机。 a)主机发送参数到特征寄存器,扇区数寄存器,扇区编号寄存器,柱位地址寄存器,面寄存器。 b)主机向命令寄存器发送命令参数。 c) 设备将BSY信号置为有效,准备数据的传送。 d)当一个扇区的数据准备好,设备将DRQ信号置为有效,同时将BSY置为无效,然后将INTRQ信号设为有效。 e)受到INTRQ信号后,主机读取设备的状态寄存器,然后再通过设备的数据寄存器读取数据。当主机读取了设备的状态寄存器,设备将INTRQ信号设为无效。 f) 设备将DRQ只为无效。如果还要传输另外扇区的数据,设备又会将BSY置为有效。然后回到d)步骤,继续顺序执行。2.PIO传输方式数据输出命令 这一类别的命令包括:-格式化命令;-写缓存器命令;-写扇区命令.执行过程包括一个或多个扇区(一个扇区为512bytes)的数据从主机传输到设备。a)主机发送参数到特征寄存器,扇区数寄存器,扇区编号寄存器,柱位地址寄存器,面寄存器。 b)主机向命令寄存器发送命令参数。c) 当设备好接收第一个扇区的数据时,将BSY信号置为有效。d) 主机向设备的数据寄存器写入数据。e) 设备将DRQ置为无效,BSY置为有效。f) 当设备完成将数据写入扇区后,设备将BSY置为无效,同时将INTRQ设为有效。如果还需要传输下一扇区的数据,设备还会将DRQ信号设为有效。g)在收到INTRQ信号后,主机读取设备的状态寄存器的信息。h)设备取消中断。i)如果还有扇区数据需要传输,回到d)步骤继续执行。3.无数据传送命令 这一类别的命令包括:-设备诊断命令 (DRDY=x);-空闲命令;-初始化设备参数 (DRDY=x);-读取能源模式;-校正命令;-跳转命令;-设置特征参数命令;-设置快操作模式;-暂停命令.这些命令执行过程中没有数据的参与。a) 主机发送参数到特征寄存器,扇区数寄存器,扇区编号寄存器,柱位地址寄存器,面寄存器。b) 主机向命令寄存器发送命令参数。c) 设备将BSY设为有效。d) 当设备执行完命令后,将BSY设为无效,将INTRQ信号置为有效。g)主机读取设备的状态寄存器。h) 设备将INTRQ置为无效。4. 其它命令 这一类别的命令包括:-块读取命令;-睡眠命令;-块写入命令;协议的这一类命令在这里不做介绍,在协议的单个命令中有介绍。5. DMA方式数据传输命令 这一类别的命令包括:-Read DMA;-Write DMA;DMA数据传输方式的与PIO传输模式有两点不同: - 数据传输需要用到slave-DMA通道; - 数据的传输中当某一扇区传输完成后不会有中断。初始化DMA数据传输方式的数据传输命令与普通读写扇区命令相同,只不过需要在传输之前主机需要初始化slave-DMA传输通道。DMA传输方式中断处理与先前的传输方式有两点不同: - 数据的传输中当某一扇区传输完成后不会有中断。 - 主机会在读取设备状态信息前重置DMA通道。DMA传输方式与PIO传输方式相比,能使传输变得高效,不会占用主机处理器的太多资源。 a) 命令时序: 1)主机初始化slave-DMA通道; 2)主机更新设备的命令块寄存器; 3)主机向设备的命令寄存器写入命令参数; b) 数据传输时序: 1)设备通过DMARQ信号来取得slave-DMA通道的使用权来传输数据。 c) 状态时序: 1)设备产生中断信号,并传输到主机。 2)主机重置slave-DMA通道。 3)主机读取设备的状态寄存器和错误寄存器。2.3 Flash芯片介绍 和磁盘类似,NAND Flash读写数据的基本粒度为页(page),然而读、写数据所需的时间却不一样,一般写入时间是读出的3到10倍8。此外,Flash不允许数据的直接覆盖写,必须首先擦除旧有数据才能写入新的,而擦除的粒度为块(block),通常一个块包含有64个页。擦除的速度是很慢的,而且每一块的擦除次数也有限,平均为100万次。2.3.1内部组织结构图2-3为三星K9K8G08U0M芯片9的Flash组织结构图。 图2-3 三星K9K8G0U0M芯片的Flash组织结构图 从图中可以看出,整个Flash的容量为8448Mbit,其中含有8192个物理块,每块包含64个页,每页除了2K的数据区之外,还有64字节的额外空间用于存放错误校验码等信息。除了Flash的主体,我们还可以看到一个一页大小的数据寄存器。事实上,每一次Flash的读写操作都需要使用这个寄存器来完成。例如,读操作实际上分成两个阶段,首先是把指定地址中的整页数据载入到寄存器中(时间为20微秒),然后再从寄存器输出数据,可以连续输出,也可以根据指定偏移量随机输出,且随机输出的次数不限(每个字节的输出周期为20纳秒);而写操作也分为两个阶段,第一阶段是把数据从外界输入到寄存器,可以整页输入,也可以随机输入,且随机输入的次数不限,每字节的输入周期也是20纳秒,第二阶段便是把寄存器中的数据固化到Flash上,时间为200微秒,每一页原则上只能有一次固化操作,然而大部分NAND Flash允许在同一页中的几个片断按照先后顺序分几次写入,该芯片为4次,这种情况叫做partial page programming10。本次设计所用的三星K9K8G08U1M芯片为两边三星K9K8G08U0M的集成并通过片选信号区别。 K9K8G08U0M芯片的存储位密度是8Gbits,规格是1G8bit。内部存储体共有8 192个存储块(Block),划分成4个存储平面(Plane),Plane0Plane3。每个存储平面内含2 048个存储块和一个独立页面寄存器(2 112B)。给Plane0分配的块地址是0000H,0002H,0FFEH。给Plane1分配的块地址是0001H,0003H,0FFFH。给Plane2分配的块地址是1000H,1002H,1FFEH。给Plane3分配的块地址是1001H,1003H,1FFFH。 每个存储块由64个存储页面(Page)组成,存储块容量是(128K4K)B。每个存储页面的容量是(2K64)B,其中64个备用字节安排在页面高位地址区。芯片内置高电压发生器和写控制器,自动产生编程电压和编程脉冲,自动完成编程和擦除操作。芯片具有10万次有效编程或擦除操作周期,数据有效保存期10年。芯片采用地址、数据和命令三总线复合设计,由一条8位双向总线(D7D0)分时传送命令、地址和数据,采用单电源2.7V3.6V供电。这种设计有效减小了芯片尺寸,实现了不同容量存储芯片的引脚完全兼容。芯片提供WP输入引脚,对芯片提供上电期间的写保护,防止芯片被意外编程或者擦除。2.3.2 指令系统和读写时序与低密度、小容量的NAND Flash芯片相比,高密度、大容量的K9K8G08U0M芯片不仅具有与前者兼容的各种操作命令,而且扩展了双页面编程、双页面备份和双存储块擦除等命令,使得芯片的编程和擦除操作更为灵活、更加高效11。表2-8为K9K8G08U0M芯片的主要操作命令:表2-8 K9K8G08U0M指令指令 第一总线周期 第二总线周期 忙时是否接受命令 读页面 00h 30h NO 读状态 70h - YES读ID 90h - NO页编程 80h 10h NO块擦除 60h D0h NO 复位 FFh - YES 表2-9 K9K8G08U0M地址周期周期I/O0I/O1I/O2 I/O3I/O4I/O5I/O6I/O7地址第一周期A0A1A2A3A4A5A6A7列地址1第二周期A8A9A10A11LLLL列地址2第三周期A12A13A14A15A16A17A18A19行地址1第四周期A20A21A22A23A24A25A26A27行地址2第五周期A28A29 A30 LLLLL行地址3读页面:芯片以存储页面为单位读取数据,从芯片读出一个字节的最快时间是30ns。芯片上电后,命令码00H自动生效。第1第2总线周期串行输入2字节列地址(A11A0),第3第5总线周期串行输入3字节行地址(A30A12),第6总线周期输入命令码30H,启动读页面数据。在20s(tR)时间内,由行地址选择的页面中,2 112字节数据被读入页面寄存器中。系统控制器通过查询RDY/BUSY引脚的输出状态,测试页面数据传送是否完成。一旦完成,通过读信号/RE的连续脉动控制,以25ns为周期,将逐个数据字节读出芯片。在此期间,列地址自动从起始值变化到终止值。图2-4为读页面数据时序图。图2-4 页读数据时序页编程(写入):芯片以存储页面为单位编程。允许只对页面中的一部分单元编程,在未经擦除的情况下,对一个页面的部分单元编程的次数不超过4次。存储块中的页面按照地址次序编程。页面编程的步骤是,输入命令80H,接着输入5周期行列地址,再输入数据序列,最后输入编程确认命令10H。编程操作开始后,RDY/BUSY引脚呈现低电平(忙状态),典型的编程时间约200s(tPROG)。通过查询RDY/BUSY引脚的状态,或者向芯片写入读状态命令70H后,再查询D6引脚的输出状态,可以测试页面编程是否完成。查询D0引脚的输出状态,可以测试页面编程是否成功。页面编程的操作时序如图2-5。图2-5 页编程时序块擦除:芯片以存储块为单位擦除,典型的擦除时间约1.5ms(tBERS)。块擦除的步骤是,输入命令60H,接着输入3周期行,然后输入命令D0H,查询RDY/BUSY引脚的实时状态,或者向芯片写入读状态命令(70H),查询D6引脚的输出状态,可以测试存储块擦除过程是否完成,查询引脚D0的输出状态,可以测试存储块擦除是否成功。图2-6为块擦除的时序。图2-6 块擦除时序图读状态寄存器:芯片内部有一个状态寄存器。通过读取状态信息,可以查询读数据、编程、备份和擦除过程是否完成以及是否成功完成。读状态寄存器命令(70H)写入芯片后,芯片进入并保持在读状态模式,对芯片读操作,状态信息在片选信号/CE或读信号/RE的下降沿从D7D0引脚输出。当芯片处于读状态模式,如果要进行读页面数据,必须写入命令(00H),将芯片工作模式切换到读数据模式,才能读页面数据。表2-10为状态寄存器定义:表2-10 状态寄存器定义表Di页面编程块擦除页面读取状态定义D00/10/1-0:成功 1:失败D60/10/10/10:忙 1:就绪D70/10/10/10:写保护 1:可以写2.4 FPGA芯片介绍FPGA(现场可编程门阵列)是一种大规模可编程逻辑器件,它的体系结构和逻辑单元灵活、集成度高以及适用范围宽, 并且设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验,因此被广泛应用于产品的原型设计和产品生产之中。 本次设计使用的FPGA芯片为Xilinx Spartan-3AN XC3S1400AN。它目前是Xilinx Spartan系列中性能最好的一款。它集成了存储器,乘法器,DCM,SelectIO,热插拔和电源管理等功能。系统门达到1400K,等效逻辑单元达到25344个,Slice达到11264个,分布式RAM为176Kb,块RAM为576Kb,系统闪存为16Mb,而专用乘法器达到32个,DCM为8个,用户I/O为502个,差分I/O为227对12。图2-7 XC3S1400AN内部结构图17第3章 电子盘的总体设计第3章 电子盘的总体设计3.1电子盘的设计要求本次设计的重点是电子盘的控制器,该控制器采用改进的IDE接口(ATA接口)与主机连接,并对Flash芯片进行读写擦除操作,读大于30MByte/s,写速度大于15MByte/s。电子盘容量为32GB,采用16片单片容量为2Gx8bit的三星K9K8G08U1M芯片分组并联。 采用FPGA芯片Xilinx Spartan-3AN XC3S1400AN作为控制器芯片。3.2 要求分析设计的要求主要有两个方面: 第一个方面是读写速度,由第二章中关于所用Flash芯片的介绍,经过数据计算出芯片的理论最大读取速度:(2KB/1024)/(20us+20nsx2k)=32MB/s 达到指标(实际中不可能达到)理论最大写入速度:(2KB/1024)/(20nsx2k+200us)=8.1MB/s 未达到要求。因此需要对Flash芯片进行并联操作。由于电子盘的主机为VxWorks系统,它给电子盘的传输数据位宽为32位,而单片falsh的数据位宽为8位。因此采用4片flash并联操作。电子盘的控制器同一时刻可以对4片flash进行读写,擦除操作。具体的每次对16片Flash芯片中的4片进行选择方式如下:单片三星K9K8G08U1M是由两片K9K8G08U0M叠加而成,它有两个芯片使能端,分别使能两片K9K8G08U0M。我们将16片Flash分为两组,每一组8片,如图3-1。图3-1 Flash芯片使能控制这样第一组8片K9K8G08U1M的使能端有ceA0:7和ceB0:7两组;第二组的使能端有ceC0:7和ceD0:7两组。32GB电子盘分为8()个磁头,32768()个柱面(磁道),一个磁道有256()个扇区,一个扇区512Byte。其中的8个磁头分别对应f_ce0:7,并通过它来使能Flash芯片具体关系见表3-1:表3-1 磁头对Flash芯片的使能关系表磁头有效Flash芯片使能有效f_ce0ceA0ceA2ceA4ceA6f_ce1ceB0ceB2ceB4ceB6f_ce2ceC0ceC2ceC4ceC6f_ce3ceD0ceD2ceD4ceA6f_ce4ceA1ceA3ceA5ceA7f_ce5ceB1ceB3ceB5ceB7f_ce6ceC1ceC3ceC5ceC7f_ce7ceD1ceD3ceD5ceD7 第二个方面为改进的IDE接口,改进的IDE接口仍然遵循基本的IDE协议,同时作出了一些改变,主要的改变如下:1. 数据线位宽由标准的16位变为32位;2. 对IDE接口信号的变化;具体的变化是:将寄存器的地址为由DA0:2三位变为ba0:13十四位,但在寻址时只利用其低六位;增加了主机可以读取的test0,test1信号,有效时分别表示数据寄存器(读写FIFO)空,满;取消了DMA传输请求,确认信号,I/O通道就绪信号,16位地址线使用信号,传输诊断信号,驱动器状态信号。3. 主机向电子盘发送的是扇区的地址位宽为32位,但只有低26位有意义。其中高三位为磁头编号,次15位为柱面编号,低8位为扇区编号;4. 对IDE接口寄存器的寻址位由3位变成了6位;具体对应方式如表3-2:表3-2 改进的寄存器寻址表nWRnCS1nRDnCS2AIN5:0有效输出006b000001W_FEATURE006b000010W_SECCNT006b000111W_COMMAND006b000000W_D_CONTROL006b000001R_ERROR006b000010R_SECCNT006b000111R_STATUS006b000000R_A_STATUS006b000000R_DATA 006b011000W_REG32006b011000R_REG325. 必要的IDE寄存器功能有一定的变化;错误寄存器:标准的错误寄存器,可以向主机反映8种错误(具体见第二章),改进后的错误寄存器仅保留了一种错误,即因为对控制器发出了非法命令而导致的执行中断。主机读取到的错误参数只能为00000100.地址寄存器:这个寄存器相当于IDE接口中的扇区编号寄存器,柱面编号寄存器,磁头编号寄存器的总和。它用来寄存32位扇区的地址。表3-3 地址寄存器定义扇区号柱面磁头无效sec0-sec7sec8-sec22sec23-sec25sec26-sec31控制寄存器:只接受IDE接口的必需的命令(具体见第二章)。6. 无DMA传输方式,采用PIO传输方式;PIO传输方式如下:读取数据过程: a)主机发送参数到特征寄存器,扇区数寄存器,扇区地址寄存器。 b)主机向命令寄存器发送命令参数。 c) 设备将BSY信号置为有效,准备数据的传送。 d)当一个扇区的数据准备好,设备将DRQ信号置为有效,同时将BSY置为无效,然后将INTRQ信号设为有效。 e)受到INTRQ信号后,主机读取设备的状态寄存器,然后再通过设备的数据寄存器读取数据。当主机读取了设备的状态寄存器,设备将INTRQ信号设为无效。 f) 设备将DRQ设为无效。如果还要传输另外扇区的数据,设备又会将BSY置为有效。然后回到d)步骤,继续顺序执行。写入数据过程:a)主机发送参数到特征寄存器,扇区数寄存器,扇区地址寄存器。 b)主机向命令寄存器发送命令参数。c) 当设备好接收第一个扇区的数据时,将BSY信号置为有效。d) 主机向设备的数据寄存器写入数据。e) 设备将DRQ置为无效,BSY置为有效。f) 当设备完成将数据写入扇区后,设备将BSY置为无效,同时将INTRQ设为有效。如果还需要传输下一扇区的数据,设备还会将DRQ信号设为有效。g)在收到INTRQ信号后,主机读取设备的状态寄存器的信息。h)设备取消中断。i)如果还有扇区数据需要传输,回到d)步骤继续执行。以上两个方面的问题得到解决后下面开始进行总体模块的设计。3.3 模块的划分 根据对改进的传输方式的分析,我们可以将整个电子盘控制模块分为三个大的模块,每个模块再细分为多个模块实现各自功能。 首先,应该有一个IDE的寄存器大模块,下面细分有多个子模块分别对应IDE接口协议的必要的寄存器,如状态寄存器,扇区地址寄存器,扇区数寄存器等。 其次,还应该有一个直接对Flash芯片读写,擦除操作的大模块,其子模块应该有读Flash子模块,写Flash子模块,擦除Flash子模块。 最后,也是电子盘控制器的最重要的模块,它应该有的功能是对IDE的各个寄存器进行访问;对Flash控制模块的返回信号和IDE命令结合当前状态,做出对Flash进行操作的命令,IDE寄存器访问命令,或不作处理。 综合上述,得到下面的原理框图:图3-2 电子盘原理图改进的IDE接口寄存器模块:电子盘通过ATA接口(IDE接口)与主机进行通讯,该模块应包含IDE接口的控制寄存器模块,命令寄存器模块,读写两fifo模块(数据寄存器模块),错误寄存器模块,扇区数目寄存器模块,状态寄存模块。Flash读写擦除模块:它是直接对Flash芯片进操作的模块。包括读模块,写模块,擦除模块。改进的IDE接口寄存器与Flash控制交互控制模块:交互控制作模块为电子盘的控制核心,是电子盘的最关键一步。地址转换模块,其功能是将地址寄存器中的扇区地址转化为对Flash操作时的行列地址。对寄存器组访问控制模块,负责主机对寄存器组访问使能寻址。状态控制模块,该模块可以对寄存器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论