首页资源分类FPGA/CPLDAltera > 基于FPGA的多片NAND+FLASH并行存储控制器的设计与实现

基于FPGA的多片NAND+FLASH并行存储控制器的设计与实现

已有 445176个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:123

    分    享:

    文档简介

    基于FPGA的多片NAND+FLASH并行存储控制器的设计与实现

    文档预览

    分类号:TP311 密级: 单位代码:10422 学 号:201013014 ⑧0雾办写 硕士学 位 论文 (专业 学位) 论文题目:基于FPGA的多片NAND FLASH并行存储控 制器的设计与实现 The Design and Implement of FPGA·-Based Multi·-Chip NAND FLASH Parallel Storage Controller 作者姓名 肖才庆 学院 名 称计算机科学与技术学院 专业学位名称 计算机技术 指导 教 师 张瑞华副教授 合作导师—— 2012年4月20日 {掣I I l2l lll II I l Y21U1Il 18390㈣9 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均己在文中以明确方式标明。本声明 的法律责任由本人承担。 两五毽 论文作者签名: 日 期: 2Q12二垒=2Q 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 保存论文和汇编本学位论文。 (保密论文在解密后应遵守此规定) 论文作者签名:jL扛砧导师签名:避日 期: 2Q12=生=2Q 山东大学硕士学位论文 目录 摘要 ......……..….……....I Abstract U 第1章 绪论………………… 1.1 研究背景…………………………………………………………………。1 1.2 FLASH简介………………………………………………………………………………..2 1.2.1 两种架构的技术特点…………………………………………….2 1.2.2 NAND FLASH的分类…………………………………………。4 1.3 NAND FLASH发展前景………………………………………………5 1.4 SSD应用介绍…………………………………………………………..6 1.5 本文研究内容和意义…………………………………………………….7 1.6 第2章 2.1 论文的组织结构…………………………………………………………8 NAND FLASH存储结构和接口时序. 9 NAND FLASH存储结构………………………………………………。9 2.2 NAND FLASH接口定义………………………………………………11 2.3 NAND FLASH操作时序介绍………………………………………..13 2.3.1 块擦除操作……………………………………………………..16 2.3.2 读页操作……………………………………………………….1 6 2.3.3 写页操作……………………………………………………….17 2.3.4 读状态操作……………………………………………………..1 8 2.3.5 读ID操作………………………………………………………。l 9 2.3.6 复位操作……………………………………………………….19 2.4 本章小结………………………………………………………j………20 第3章 控制器控制逻辑设计 3.1 控制器设计总体框架…………………………………………………一2l 3.2 寄存器组和BUFFER实现…………………………………………….24 3.3 sRAM接口控制逻辑………………………………………………-!!’万 山东大学硕士学位论文 3.4 主状态机控制逻辑…………………………………………………….28 第4章 接口时序产生模块和命令实现模块设计 4.1 NAND FLASH接口时序产生模块…………………………………30 4.1.1 W NAND COMMAND子模块…………………………………。32 4.1.2 W NAND ADDRESS子模块………………………………………33 4.1.3 W NAND DATA子模块…………………………………………34 4.1.4 R NAND BYTEDATA子模块……………………………………35 4.1~ 4.1.6 R.NAND PAGEDATA子模块……………………………………36 本节小结…………………………………………………………37 4.2 NAND FLASH命令实现模块…………………………………………38 4.2.1 块擦除命令执行模块…………………………………………。39 4.2.2 读页命令执行模块……………………………………………..40 4.2.3 写页命令执行模块……………………………………………42 4.2.4 读ID命令执行模块……………………………………………43 4.2.5 读状态命令执行模块…………………………………………44 4.2.6 复位命令执行模块…………………………………………….45 4.2.7 本节小结……………………………………………………….46 第5章 ECC校验模块……。 47 第6章 控制器设计与实现的验证………… 51 6.1 功能仿真……………………………………………………………….52 6.2 FPGA板级验证………………………………………………………..56 6.2.1 处理器控制执行读状态操作………………………………….58 6.2.2 处理器控制执行块擦除操作…………………………………59 6.2.3 处理器控制执行页读取操作…………………………………60 6.2.4 处理器控制执行页编程操作…………………………………61 6.2.5 处理器控制执行读ID操作…………………………………~6l 6.2.6 处理器控制执行复位操作……………………………………62 6.3 FPGA验证以及结果分析……………………………………………….63 山东大学硕士学位论文 第7章 总结与展望. 7.1 工作总结………………………………………………………………65 7.2 工作展望…………………………………………………………………66 参考文献. .67 致 谢. 70 山东大学硕士学位论文 CONTENTS Chinese Abstract English Abstract…….........…. Ⅱ Chapter 1 Introduction…….…. 1.1 Research Background…………………………………………………………………….1 1.2 FLASH Introduction………………………………………………………………………2 1.2.1 Tl屺technical characteristics of the two architectures……………….2 1.2.2 Classification ofthe NAND FLASH………………………………………4 1.3 NAND FLASH Development Prospects…………………………………………。5 1.4 SSD Application Introduction…………………………………………………………6 1.5 Research Content and Meaning.………….:………………………………………….7 1.6 Orignizational SnllCtllre…………………………………………………………………8 Chapter 2 Storage Structure and Interface Timing of NAND FLASH…......9 2.1 Storage Structure ofNAND FLASH………………………………………………。9 2.2 Interface Defination ofNAND FLASH………………………………………….1 1 2.3 Operation Tming ofNAND FLASH………………………………………………13 2.3.1 Block Erase Operation……….…….…….…..………….….………….……16 2.3.2 2.3.3 2。3。4 Page Read Operation………………………………………………………….16 Page Write Operation..……….……….……..…….…….….………….…...17 Read Status Operation………………………………………………………..1 8 2.3.5 R.ead ID Operation……………………………………………….1 9 2.3.6 Reset Operation.………………………………………………………………..19 2.4 Summary…………………………………………………………………………………….20 Chapter 3 Control Logic Design 3.1 The Overall Framework of Controller…………………………………………….2 1 3.2 Implement of Registers and Buffers.……….…………..:.….….………….….…2√l 3.3 SRAM Interface Control Logic……………………………………………………..26 山东大学硕士学位论文 3.4 The Main State Machine Control Logic………………………………………….28 Chapter 4 Interface Timing Generation and Command Implement Module30 4.1 InterfIace Timing Generation Module……………………………………………。30 4.1.1Ⅵ,_NAND—COMMAND Submodule………………………………………。32 4.1.2 4.1.3 W—NAND—ADDRESS Submodule………………………………………….33 w』AND—DATA Submodule………………………………………………..34 4.1.4 R—.NAND—BYTEDATA Submodule………………………………………….35 4.1.5 R NAND PAGEDATA Submodule………………………………………….36 4.1.6 Section Summary……………………………………………………………..37 4.2 Command Implement Module……………………………………………………….38 4.2.1 Block Erase Command Execution Module…………………………39 4.2.2 4.2.3 4.2.4 Page Read Command Execution Module……………………………40 Page Write Command Execution Module…………………………..42 Command Read ID Execution Module……………………………….43 4.2.5 4.2.6 Read Status Command Execution Module………………………….44 Reset Command Execution Module…………………………………..45 4.2.7 Section Summary……………………………………………………………..46 Chapter 5 ECC Cheek Module……....…..……………..…….......……。……..…........47 Chapter 6 Controller Design and Implement Validation 51 6.1 Functional Simulation………………………………………………………………….52 6.2 FPGA Boards Verification…………………………………………………………….56 6.2.1 Processor Controll the Operation of Read Status………………..58 6.2.2 Processor Controll the Operation of Block Erase………………..59 6.2.3 Processor Controll the Operation of Page Read………………….60 6.2.4 Processor Controll the Operation of Page Write………………….6 1 6.2.5 Processor Controll the Operation of Read ID……………………。6l 6.2.6 Processor Controll the Operation of Reset………………………….62 6.3 FPGA Validation and Results Analysis…………………………………………..63 V 山东大学硕士学位论文 Chapter 7 Summary and Outlook.….….…....…................................................65 7.1 Summary…………………………………………………………………………………….65 7.2 Outlook………………………………………………………………………………………66 Acknowledgements.......…...……… 67 References.. 70 山东大学硕士学位论文 摘要 随着嵌入式系统的发展,对数据存储量的要求正在快速增长。FLASH具有速 度快、密度大、非易失性及可擦除性等特点,正在得到越来越广泛的应用。FLASH 主要有NOR和NAND两种,而NAND FLASH具有更小的体积、更快的写入和 擦除速度、更多的可擦写次数以及更低廉的每比特价格,成为了大量数据存储的 理想器件。 基于闪存的固态硬盘,采用FLASH芯片作为存储介质,这也是我们通常所说 的SSD。与传统的硬盘相比,它由固态电子存储芯片阵列制成,内部没有机械装 置,因此,SSD具有更快的读取速度,没有噪音,发热量低,不会发生机械故障, 工作温度范围大,体积小,重量轻,抗震动的优点。虽然有容量小,成本高,数 据难以恢复等缺点,但是,随着技术的不断发展进步,固态硬盘的技术发展也将 更加完善,固态硬盘也将得到更加广泛的应用。 NAND FLASH的控制逻辑复杂,数据、地址采用同一总线,实现串行读取, 随机读取速度慢且不能按字节随机编程。因此,本文探讨了基于Xilinx Spartan-3E 的多片NAND FLASH并行存储控制器的设计方案,设计实现了类SRAM接口, 处理器能够按照SRAM接口标准对NAND FLASH进行操作而不需要考虑NAND FLASH的接口规范,方便了NAND FLASH应用的扩展。 基于FPGA的多片NAND FLASH并行存储控制器,实现了SRAM接口和 NAND FLASH接口的转换,将复杂不通用的NAND接口转化为了简单通用的 SRAM接口,能够控制多片NAND FLASH的读写等操作;实现ECC校验功能, 对写入和读出的数据进行校验操作,提高处理效率;控制多片NAND FLASH芯片, 扩大了容量,提高了并行处理能力,便于实现SSD。 综上所述,基于FPGA的多片NAND FLASH并行存储控制器的设计实现,不 仅具有理论研究的价值,在SSD设计实现方面有实际的利用价值。 关键词:FPGA实现;多片并行;NAND FLASH控制器;ECC校验;FSM 山东大学硕士学位论文 ABSTRACT With the development of embedded system,data storage requirements ale growing rapidly.Now FLASH is being more and more widely used for their characteristics such as fast speed,high density,Non-volatile,erasable and∞on.There are mainly two kinds of FLASH,NOR FLASH and NAND FLASH,NAND FLASH has a smaller size,faster write and erase speed,more endurance,and lower per bit price,SO has becoming the ideal device for large data storage. FLASH-based solid state disk:using FLASH chips as the storage medium,that is what we usually refer to the SSD.Compared to traditional hard disk,it uses solid state electronic memory chip arrays made of internal mechanism.Therefore,SSD has faster read speed,no noise,fat low in calories,no mechanical failure,greater operating temperature range,small size,light weight,anti-vibration advantages.Although there ale shortcomings of small capacity,high cost and the data is difficult to restore,however, the technology of SSD develops witll the development of technology,so SSD will be 晰dely used in future. The control logic of NAND FLASH is more complex,data and address using the same bus to achieve serial read,random read speed is slow and Can not be random byte programing.So this paper investigates a multi-chip NAND FLASH parallel storage controller design based on Xilinx Spartan·3E谢m a SRAM interface,SO the processor call operate NAND FLASH by SRAM interface standard without the need to consider the NAND FLASH interface,and easy to be used in other expansion applications. The FPGA·based multi-chip NAND FLASH parallel storage controller realizes interface conversion,transfers the complex and not common NAND interface to simple and common SRAM interface,and Can control the read and write operation of NAND FLASH;implements ECC function to verify the read and write data operations, improves processing efficiency;controls multi-chip NAND to expand capacity and improve the parallel processing capability,to facilitate the achievement of SSD. II 山东大学硕士学位论文 In summary,the FPGA-based multi-chip NAND FLASH parallel storage controller, not only has the value of theoretical research,but also has practical value in SSD design. Keywords:FPGA implement;Multi-chip parallel;NAND FLASH controller;ECC; FSM III 山东大学硕士学位论文 IV 山东大学硕士学位论文 第1章绪论 1.1研究背景 随着嵌入式系统的发展,对数据存储量的要求正在快速增长。FLASH具有速 度快、密度大、非易失性及可擦除性等特点,正在得到越来越广泛的应用。FLASH 主要有NOR和NAND两种,而NAND FLASH具有更小的体积、更快的写入和 擦除速度、更多的可擦写次数以及更低廉的每比特价格,成为了大量数据存储的 理想器件【l】。随着应用领域的扩展,基于NAND FLASH的SSD(固态硬盘)具有体 积小、重量轻、耗电量低、速度快、可靠性高等特点,在Desktop PC与Server等 市场,将创造另一波NAND FLASH的应用高峰【2】。 目前,有许多厂商都在生产NAND FLASH产品,各家的产品缺乏统一的标准, 甚至来自于同一家供应商的NAND FLASH产品也可能与过去的产品不兼容。实际 上,各种NAND FLASH产品差别并不大,指令、寄存器集、引脚排列、电气参数 特性都比较相似,NAND FLASH业界团体“Open NAND FLASH Interface(ONFI)” 制定了连接NAND FLASH和控制芯片的接口标准“ONFI 3.0”,为NAND FLASH 产品的标准化铺平了道路131。 自2000年U盘(闪存盘)被发明以来,NAND FLASH的产量就直线上升,最近 十年来日益普及的数字移动电话,数码相机,数字摄像机等都已广泛利用NAND FALSH作为永久存储器【41。随着存储技术的不断进步,NAND FLASH的存储容量 越来越大、读写数度越来越快、性能价格比越来越高。但是NAND FLASH本身也 存在缺点,归纳起来有两点:一是读写控制时序复杂;二是位交换(O、1反转)问题。 FPGA技术的关键在于用户可编程,硬件实现用户的需求,因此,利用FPGA 来实现某些功能的硬化,加快执行速度。利用FPGA开发,能够方便、快速的构 造和仿真复杂的系统,可根据用户需求随时升级或修改,降低开发成本和缩短开 发周期。FPGA设计已经广泛的应用到医疗器械、系统仿真、工业控制、通信设备 等领域‘51。 本文利用FPGA设计实现多片NAND FLASH的并行存储控制器。利用FPGA 山东大学硕士学位论文 可编程和可实现硬件加速的特性,MCU通过FPGA实现控制多片NAND FLASH。 这样,不仅能扩充NAND FLASH的容量,而且能够并行访问多片NAND FLASH, 提高数据存取的速度。本文设计实现的基于FPGA的多片NAND FLASH并行存储 控制器是为搭建SSD(固态硬盘)平台做准备,实现了一个类SRAM接口,控制 4片NAND FLASH,具有ECC硬件校验模块[61。在此基础上,可以方便的进行SSD (固态硬盘)的设计【7J。 1.2 FLASH简介 FLASH,也称闪存,是在EPROMIs!、EEPROM的基础上发展起来的。FLASH 作为一种非易失性存储器,具有体积小、功耗低、速度快等优点,被广泛地运用 于嵌入式领域,如数字相机、数字录音机、移动电话和PDA等等。近几年来,FLASH 以远高于摩尔定律的增长速度高速发展。目前,FLASH的应用领域获得了极大扩 展,在嵌入式领域以及大容量高速存储领域都已经获得了广泛的应用,并且发展 前景广阔f9l。 Flash Memory按其内部构架的实现技术主要分为NAND、NOR等两种,这是 在考虑读写速度、擦除性能、密度大小和可靠性等因素后,采取的两种不同的实 现方式【lo]I。 1.2.1两种架构的技术特点 1.NOR FLASH技术 NOR技术,是最早出现的Flash Memory,目前仍是很多供应商采用的技术架 构。它源于传统的EPROM器件,与其它Flash存储技术相比,具有可靠性高、随 机读取速度快的优势,适用于擦除和编程操作较少而直接执行代码的场合。NOR FLASH具有以下特点【11·12】: 1)程序和数据可存放在同一芯片上,具有独立的数据和地址总线,随机读取 速度快,能够直接执行程序代码,无需先将代码下载至RAM中执行。 2)可以进行单字节或单字编程,但是必须以块为单位执行擦除操作,在进行 写入数据操作之前必须先进行块擦除操作。 NORFLASH单个芯片的存储容量相对不大,由于NOR FLASH的擦除和写入 2 山东大学硕士学位论文 操作速度较慢,并且体积相对较大,因此,NOR FLASH不适合应用在大容量的数 据存储中‘131。 2.NANDFLASH技术 NAND FLASH适合用做大容量数据存储或文件存储,正成为闪速磁盘技术的 核心。 NAND FLASH具有以下特点【14‘1刀: 1)以页为单位进行读、写操作,页大小通常为2K字节或512字节;以块为 单位进行擦除操作,1块大小通常在128KB到32KB之间,即1块一般有64页。 写入和擦除操作速度快,块擦除时间是毫秒级(比NOR FLASH的擦除时间快很 ‘ 多)。 2)没有单独的地址和数据总线,实现串行读取,随机读取速度慢且不能按字 节进行随机读写。 3)体积小,引脚数目少,是位成本(bitcost)最低的固态存储器,早已突破每兆 字节l美元的价格限制。 4)NAND芯片中可能存在坏块,坏块不会影响其他有效块的性能,但在使用 时需要将失效块在地址映射表中屏蔽起来,从而保证数据存储的正确性。 NAND FLASH不能按字节进行读写,因此,NAND随机存取的速度相对较慢, 而在进行连续的大容量数据存取时,速度相当快。 综上所述,NOR Flash工作电压低、随机读取快、功耗低、稳定性高;而NAND Flash则写回速度快、成本低、特别是容量大有很大优势【131。下面从几个方面对这 两种实现技术做以比较: (1)速度 NOR Flash的读取速度比NAND Flash稍快一些;NAND Flash的写入速度比 NOR Flash快很多;NAND Flash的擦除速度远比NOR Flash快。当选择存储解决 方案时,必须权衡各项因素【19-221。 (2)容量 NOR FLASH的每个存储单元与位线相连,增加了芯片内位线的数量,不利于 存储密度的提高。所以在面积和工艺相同的情况下,NAND Flash的容量比NOR 3 山东大学硕士学位论文 Flash大得多。 (3)易用性 NAND Flash的I/O端口采用复用的数据线和地址线,必须通过控制线控制不 同类型数据的读写,因此,与采取直接寻址方式的NOR Flash相比,控制逻辑复 杂。 (4)可靠性 所有的Flash器件都有位反转现象。位反转的问题更多见于NAND Flash。因 此,使用NAND Flash时,一般同时使用ECC(Error Checking and Correcting)算法。 (5)坏块处理 NAND Flash器件中的坏块是随机分布的,消除坏块的代价较高。NAND Flash 器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用,因此需要 软件进行相应的处理【23】。 (6)耐久性 . Flash由于写入和擦除数据时会导致介质的氧化降解,导致芯片老化,在这个 方面NOR尤甚,NAND类型的擦写次数大约是100万次,而NOR类型只有10 万次124】。 1.2.2 NAND FLASH的分类 NAND Flash底层存储实现上有两种不同的模式,SLC(Single Level Cell)和 MLC(Multi Levels Cell),它们之间各有优缺点,在各类产品中都有采用。从表 1.1中可以较为直观的发现他们性能的N另Ute51。 表1-1 SLCNANDFLASH和MLCNANDFLASH的比较 SLC NAND Flash M[LC NAND Flash 随即读取 25 Hs 50 ps 擦除 2ms per block 2ms per block 写入 250“s 9009s SLC结构的NAND FLASH一个存储单元只有两种电荷值,高低不同的电荷值 表明O或者1。因为只需要一组高低电平就可以区分0和1信号,所以SLC最大 的驱动电压可以做到很低。SLC结构简单,用一组变化电压驱动,速度很快同时 寿命较长也更为可靠。 4 山东大学硕士学位论文 MLC结构的NAND FLASH存储单元可实现多位存储,最常见的是2bit。它通 过不同级别的电压在一个单元中记录两组位信息(00、01、11、10),这样就可以 将原本SLC的记录密度理论提升一倍。因为电压变化频繁,MLC结构的NAND FLASH寿命远低于SLC结构的NAND FLASH,同时它的读写速度不如SLC,如 图1.1所示。 2 1.mvel,睁'bit/∞ll 4 I.鲥ols睁2 bit/e,oll C .2 暑 ‘C 曼 a 图1.1 SLC和MLC电压驱动的存储能力区别 显而易见,SLC在寿命和性能方面拥有独特的优势,不过需要更好的工艺才能 拥有较大的容量。MLC虽然在容量方面有先天的优势,但在速度和寿命方面存在 先天的不足。因此,SLC用在追求速度和可靠性而不计较成本的企业级产品中, MLC更适合在消费级产品中部署。 1.3 NAND FLASH发展前景 毫无疑问,随着技术的发展,存储器也朝着容量更大、体积更小、功耗更低的 方向发展。随着半导体制造工艺的发展,主流的FLASH厂家普遍采用50rim甚至 40nm的最新的制造工艺,FLASH的容量可以扩大到132G[261,制造成本大幅下降, 因此FLASH的性价比更高了。又因它独特的优势,促使了FLASH更加广泛的应 用。 NAND FLASH没有单独的地址、数据总线,不能对字节实现直接寻址,但因 它所具有的独特优势,在大容量的数据存储中,也得到了广泛的应用。现今,随 着制造工艺的发展,大容量的单片NAND FLASH在性价比、体积方面越来越具有 优势。随着SSD的兴起,基于FLASH的SSD的应用必将持续发展,在将来的存 储市场上具有极大的竞争力【27】。 图1-2是FLASH在不同应用中的发展趋势。从图中可以看出,FLASH在各个 领域的应用都将持续发展,尤其在SSD的发展中前景广阔123】。 5 山东大学硕士学位论文 0ther ●Solid State Drives ●Digital Video Canlcorders 籀Personal Navigation Devices Digital Still Cameras 缀Mobile Phones ■MP3,PMP Players 翳USB Flash Drives ●Flash Memory Cards 1.4 SSD应用介绍 图1-2 FLASH发展趋势预测图 在过去的20多年间,CPU发展迅速,主频不断提升,从单核、双核、再到多 核。内存也相继得到发展,从SDRAM到DDR、从DDR到DDR2再到DDR31291。 硬盘的容量和速度也得到了相应的提高。接口从PATA变成了SATA[川J,SCSI变 成了SAS[3l】,垂直记录技术在容量上的突破,但仍没能改变硬盘的磁记录方式。 随着技术的发展和进步,人们对于数据存储容量的需求越来越大,存储系统的 瓶颈越来越明显。传统的硬盘在体积、抗震性、存取速度等方面的劣势越来越明 显。随着嵌入式移动设备的迅猛发展以及对于恶劣环境下存储的要求提高,传统 的机械结构的硬盘已经不能满足应用的要求,而SSD的出现将解决这一难题。 IDC调查研究表明,2010年固态盘采用率将继续呈明显增长趋势,出货量有 望实现54%的年复合增长率,超出2008"---'2013年的预测期。SSD的主要市场将从 笔记本电脑向外扩展,如消费电子存储、台式机存储、企业级存储等。SSD的市 场规格预计到2013年会突破1亿台大关,2016年达到2.8亿台【32J。 基于FLASH的固态硬盘是采用FLASH芯片阵列作为存储介质,也就是我们 通常所说的SSD。与传统硬盘以磁介质来存储数据不同,SSD采用固态电子存储 芯片来存储数据,突破了传统机械硬盘的性能瓶颈,具有极高的存储效率,被认 为是存储技术发展的希望。与传统的机械式硬盘相比,SSD固态硬盘具有以下的 优…133]: 6 山东大学硕士学位论文 1)SSD内部没有机械装置,因此不存在数据查找时间、延迟时间和磁盘寻道 时间,数据存取速度快。 2)SSD全部采用闪存芯片,防震抗摔,使用范围广。 3)由于无机械部件及采用FLASH闪存芯片实现,SSD没有任何噪音,功耗 低。 4)质量轻,比常规1.8英寸硬盘重量轻20.30克,使得便携设备搭载多块SSD 成为可能。 虽然与传统的硬盘相比,SSD具有很大的优势,当然,SSD也存在一些不足。 1)SSD成本较高,固态硬盘的制造成本大约是每GB需要lO美元,而传统的 机械式硬盘的制造成本大约是每GB需要0.25.O.4美元。 2)SSD存储容量有待提高,固态硬盘的存储容量仍为几百GB左右。 随着固态硬盘在存取性能、抗震性以及功耗低等方面的优异表现,不仅在存储 领域,在各个需要大容量存储的行业,都呼吁这项革命性的存储技术的推广发展。 一些厂家已经在该领域进行了努力和尝试。随着人类进入云计算、物联网时代, 也给SSD市场带来了巨大的商机。未来,固态硬盘除了在传统的工业、军事、航 天等行业应用外,在消费电子、云服务器、嵌入式设备、安防、节能减排、企业 存储等领域也将有着广泛的市场需求041。 1.5本文研究内容和意义 NAND FLASH具有密度大、体积小、功耗低、读写速度快等特点,在当今的 存储市场中占有重要地位。基于NAND FLASH(闪存)的SSD也在迅猛的发展。 SSD需要由大容量的NAND FLASH阵列来构成,而NAND FLASH的引脚数目较 多并且读写控制比较复杂,直接由MCU控制多片NAND FLASH实现SSD存在许 多困难。 本文从搭建SSD平台的设计需求出发,设计了基于FPGA的多片NAND FLASH并行存储控制器,实现了类SRAM的接口,控制4片NAND FLASH的读 写操作操作。MCU(TM32)通过灵活的静态存储控制器(FSMC)模块,能够通 过NAND FLASH控制器对NAND FLASH进行读写控制。MCU(STM32)可以 7 山东大学硕士学位论文 挂接多个NAND FLASH控制器,这样就能够实现一个NAND FLASH阵列,能够 满足SSD设计的需求。MCU能在一定程度上实现并行操作,同时控制多个NAND FLASH的读写操作,每个NAND FLASH控制器也能够实现一定的并行操作。在 控制器的设计中,加入了ECC校验模块。ECC校验算法的硬件实现,能够减少 MCU的校验操作,提高MCU的读写操作效率。通过FPGA实现多片NAND FLASH 的存储控制,并且加入ECC硬件校验,在此基础上,能够更加方便的搭建SSD平 厶 口O NAND FLASH数据总线是复用的,操作复杂,将NAND FLASH复杂的不易 于操作的接口转换为类SRAM接口,MCU能够简单快捷的对NAND FLASH进行 读写操作。控制器能够控制多片NAND FLASH,扩充了NAND FLASH的总容量, 能够实现并行操作,提高了整体的读写等操作效率。在控制器的设计中,加入了 ECC校验模块,ECC校验算法的硬件实现,能够提高校验的效率,替代了MCU 的校验操作,进一步提高MCU的读写操作效率。 1.6论文的组织结构 论文的组织结构如下: 第l章是绪论,介绍了本文的研究背景和应用背景,讨论了FLASH的技术现 状和发展前景,以及SSD的相关知识。 第2章主要介绍NAND FLASH的存储结构和接口时序。 第3章是控制逻辑设计,主要介绍控制器设计总体框架,以及控制逻辑组成部 分的实现。 第4章主要介绍NAND FLASH命令实现模块和接口时序产生模块的设计实 现。‘ 第5章是ECC校验模块,主要介绍ECC校验算法及其硬件实现。 第6章是控制器设计实现的验证,主要包括仿真验证以及在FPGA开发板上进 行的片上验证。 第7章是总结和展望,对全文进行总结和对下一步工作的展望。 山东大学硕士学位论文 第2章 NAND FLASH存储结构和接口时序 本章结合设计采用的NAND FLASH的型号,着重介绍NAND FLASH的存储 结构及其接口时序。本章介绍的内容是多片NAND FLASH并行存储控制器设计的 理论基础。 2.1 NAND FLASH存储结构 NAND FLASH的数据存储与传统硬盘有很大的区别,传统硬盘以磁介质来存 储数据而NAND FLASH是以电子晶体管来存储数据的。在NAND FLASH中,数 据是以位的形式存储在存储单元(Memory Cell)中。SLC结构的NAND FLASH, 一个存储单元只能存储一位数据,而MLC结构的NAND FLASH,一个存储单元 能够存储两位数据。根据NAND FLASH的位宽不同,对于SLC结构的NAND FLASH而言,每8个或者16个存储单元连在一起,构成8位或者16位宽的NAND FLASH[35]。 、『pp(no印帅J 是 Programmedstate[生 是 E删‰亡野 ——P‘啪目 F一 ——争]啪∞■一 VppIEme) 图2-1 NAND FLASH存储单元编程和擦除操作原理 图2.1为NAND FLASH中存储单元的特殊结构,通过悬浮栅的电荷支持逻辑 实现。编程时,通过栅极提供的高电压,电子从衬底进入悬浮栅,形成…0’逻辑。 擦除时,通过栅极接地,将悬浮栅的电子倒回衬底中。由此可以看出,NAND FLASH 的特性,写操作可以将位为“1”的存储单元置为“0”,而不能将位为“O”的存储单元 置为“1”。擦除操作,将所有的位重置为“1”。NAND FLASH存储单元的这种特性, 9 山东大学硕士学位论文 注定了NAND FLASH的一些操作特性。在NAND FLASH的操作中,只有块擦除 操作才能将为“O”的位置为“1”,其他任何操作均不能实现此功能;在写入NAND FLASH之前,必须进行块擦除操作。 NAND FLASH的组织是块(block)、页(page)式的。不同的NAND FLASH 页大小不同,一般分为大页和小页。大页为2112字节,包括2048字节(2Kbytes) 的数据区(Data Area),用来存储用户数据,而剩下的64字节空间为备份数据区 (SpareArea),主要用来存放ECC校验码以及坏块标志等信息。小页为528字节, 包括512字节的数据区和16字节的备份数据区。对于大页的NAND FLASH,一 块由64页组成,而对于小页的NAND FLASH,一块由32页组成。本设计所使用 的NAND FLASH为现代公司的HY27UF(08)2G2B,容量为2Gbit,共包含2048 个块,每块由64页组成,而每页有2112bytes,因此,总容量为256MxSbit。图 2.2为HY27UF(08)2G2B的存储组织结构示意图【36】。 刚64pa融ges{ memory array 26b SLC device) 图2.2 NAND FLASH内部存储组织结构示意图 NAND FLASH内部数据存储结构以块页式为基础,它的操作也是基于这种组 织结构。NAND FLASH以页为读写操作的基本单位,以块为擦除操作的基本单位。 基于这种组织结构,NAND FLASH操作的寻址方式也就确定了,有三种地址,分 别是块地址(Block Address)、 页地址(Page Address)和页内地址(Column 10 山东大学硕士学位论文 Address)。本设计使用的NAND FLASH容量为2Gbff,有2048块,需要12位块 地址;每块包含64页,需要6位页地址;每页大小为2112字节,需要12位页内 地址。HY27UF(08)2G2B数据手册定义该NAND FLASH的地址如图2·3所示,共 分5个周期进行地址的写入。页读写操作需要5个周期的地址信息,而块擦除操 作只需要后3个周期的块地址。【A0-Alll为12位的页内地址;【A12-A171)白6位的 页地址;【A18一ms]为12位的块地址。 檄Cycle 2啊Cy咖 3rUCyde 4thC蝴e 5thCyde 加口 10l 102 103 如皤 K塔 l∞ 阳7 AO A1 Az A3 M A5 A6 ^7 加 ^9 A10 An L(1) L(1) Ltl} L《1) A12 A13 A14 A15 A16 A17 A18 A19 A20 A2l A22 A23 A24 A2S A26 A27 舵8 L11) L【i) Lfl) “1) L(” L(1’ L11) 图2-3 NAND FLASH地址周期定义 注:L‘1’表示未定义,并且默认为低电平。 2.2 NAND FLASH接口定义 NAND FLASH的接口采用的是通用的输入输出引脚,没有独立的数据和地址 总线。因此,NAND FLASH的地址、数据和指令均采用相同的输入输出总线 100.107(若为16位位宽的NAND FLASH,地址和指令均在100.107)上传输。 为了区分总线上的数据类型和读写操作,NAND FLASH还需要5个控制信号线。 NAND FLASH的接口如图2.4所示【36】。 穗 需薯 RE ^墟 CLE W≯ V醛 图24 NANDFLASH接口定义 山东大学硕士学位论文 NAND FLASH的接口定义说明如表2-1所示。 引脚名称 CE WE RE ALE CLE 胪 100.7 R?B, 表2.1 NAND FLASH接口引脚说明 输入/输出 功能说明 输入 片选信号,低电平有效。高电平时,其他任何控制信号均无 效 输入 输入 写使能信号,低电平有效。在上升沿时将数据、地址或命令 写入内部寄存器 读使能信号,低电平有效。在下降沿时,将相应数据放到输 入输出总线上 输入 地址锁存使能信号,高电平有效。高电平时,在写信号的上 升沿将地址锁存到其内部地址寄存器中 命令锁存使能信号,高电平有效。高电平时,在写信号的上 输入 升沿将命令锁存到其内部的命令寄存器中 写保护使能信号,低电平有效,防止无意的写入或者擦除操 输入 作 输入/输出 输入输出总线信号,用作地址和命令的输入,以及数据的输 入和输出 输出 NAND FLASH的状态标志输出,低电平表示存储器处于忙碌 状态,高电平表示存储器处于空闲状态 NAND FLASH内部组织结构如图2.5所示。NAND FLASH内部主要由命令接 口控制逻辑、编程/擦除控制逻辑、寄存器(地址、命令和数据寄存器)和存储阵 列等组成。 图2-5 NANI)Flash的内部结构示意图 12 山东大学硕士学位论文 在信号RE、WE、ALE、CLE、CE的控制下,控制逻辑将I/O端口输入的数 据锁存到相应的指令寄存器、地址寄存器或数据寄存器,或者通过I/O端口把状 态寄存器、数据寄存器中的数据发送出去。在控制逻辑控制下,把数据寄存器中 的数据写入存储阵列中(写页操作时),或把存储阵列中的数据写入数据寄存器中 (读页操作时)。在数据寄存器和存储阵列之间进行数据传输时,控制逻辑控制信号 R/B为低,外部主控制器可以根据R/B的高低来判断正在进行的读写操作是否 完成【36】。 2.3 NAND FLASH操作时序介绍 NAND FLASH主要有以下几种基本操作:块擦除操作;读页操作;写页操作; 读状态操作;读ID操作;复位操作。 NAND FLASH操作时,由ALE、CLE和CE三个信号配合来确定总线上的信 息是命令、地址还是数据。NAND FLASH的基本操作均是基于这三个信号的不同 电平组合控制。 通常情况下不同厂家的NAND FLASH有各自的命令集,但是其中的基本命令 大致相同,不同的厂家可能会设置一些特殊的操作命令。表2.2是现代的 HY27UF(08)2G2B的基本命令集。 功能 (命令) 块擦除 页读取 页编程 读ID 读STATUS 复位 表2-2 命令l NAND FLASH命令集 命令2 (commandl) (commanct2) 60h DOh 00h 30h 80h 10h 90h 70h FFh 器件忙时,能 否操作 NO No N0 No Yes Yes 从表2.2知,六个基本命令中,有三个单字节命令和三个双字节命令。单字节 命令只需要一个写周期而双字节命令需要两个写周期将命令字写入NAND FLASH。另外,NAND FLASH命令操作需要参考其当前状态,只有读STATUS和 复位两个操作命令可以在NAND FLASH为忙状态即R/B信号为低电平时进行操 作,其他命令均只能在NAND FLASH为空闲状态时执行。 山东大学硕士学位论文 NAND FALSH的操作主要由5个信号控制完成。对于各种操作,NAND FALSH 的数据手册中给出了详细的定义,具体的操作模式如表2.3所示【36J。 表2-3 NAND FLASH操作模式表 CF, CLE ALE 形E RE WP 模式 L H L t H L L H t H L H L t H L L H t H L L L t H L L L H t X X X H H X X X X X X X X X X X X X X X X 读模 命令输入 X 式 地址输入 H 写模 命令输入 H 式 地址输入 X 写入数据 X 读出数据 X 忙(读时) H 忙(写时) H 忙(擦除时) L 写保护 注;H表示高电平,L表示低电平,X表示为H或L,t表示为电平上升沿。 NAND FLASH操作都是基于上述模式进行的,最基本的主要有六种基本命令, 其中最常用的主要有读页、写页、块擦除和读状态字四个命令。NAND FLASH的 操作都是通过写入命令来进行控制的,有些命令需要写入地址,有些命令不需要, 但是操作流程大致相同。通过相应的控制信号,NAND FLASH内部的控制逻辑会 将输入输出总线上的命令或者地址存入其内部的命令或地址寄存器。根据命令完 成相应的操作。 一 基于所采用的现代的NAND FLASH,分析它的基本操作时序。具体时序参数 要求如表24所示。这些时序分析是本设计的基础,是控制器设计实现的重要组成 部分【3翻。 表2-4 Parameter CLE Setup Time CLE Hold Time NAND FLASH接口时序参数要求 Symbol 3.3V Min Max tCLS 12 tCLIt 5 Unit 璐 I峪 CE Setup Tune tcs 20 nS CE HoldTime tca 5 雎 WE PauSeWidm twl, 12 nS 14 山东大学硕士学位论文 ALE Setup Time tALS 12 nS ALE Hold Time tALH 5 I塔 Data Setup Time tDs 12 nS Data Setup Time tDH 5 nS Write Cycle Time two 25 nS WE High Hold Time twn 10 nS Data Transfer from Cell to Register tR 25 nS ALEto RE Delay tAR 10 nS RE CLE to Delay. to.a 10 rls RE ●●___。●_一 ReadytO Low tea 20 nS RE Pause Width tap 12 nS WE HightoBusy Ready Cycle Time RE Access Tune twa loo nS tRc 25 吣 taEA 20 眦 RE High to Output High Z tanz 伍HightoOutputHighZ 虹 100 nS 50 CE High to Output Hold tcou 15 鹏 RE High tO Output Hold tltHoH 15 脑 RE Low to output Hold tRLOH 5 他 RE High Hold Time 妇 10 璐 OutputHighZtO RE Low ta O 璐 RE CE Lowto Low tca 10 鹏 Address to Data Loading Time tADL 70 脑 WE Highto RE Low tw豫 60 撼 RE High tO WE Low tp,nw 100 nS 15 山东大学硕十学位论文 Device Resetting Time Write Protection Time 2.3.1块擦除操作 tRST tww 5/1 0/500 nS 100 nS NAND FLASH的特性决定了在写入之前必须进行擦除操作,擦除操作是以块 为单位进行的。块擦除操作需要3个地址周期,块擦除操作时序如图2.7所示。首 先,根据命令集,发送块擦除第一个命令字60H,然后发送3个周期的块地址, 最后,发送块擦除的第二个命令字DOH。NAND FLASH接受块擦除命令后,会执 行相应块的擦除操作,此时,NAND FLASH的状态信号R/B会拉低,操作完成 后,R/B信号重新拉高,表示存储器已经处于空闲状态,可以执行其他操作。此 时,可以通过读取NAND FALSH的状态,来确定之前的擦除操作是否成功,读状 态操作以及读出状态字的定义将在后面介绍13 61。 CL£ CE —w 一E 、~/★~ —/\一..“ /\/一\—L。州 矛 B叫 \‘i。/\—'一/ ‘_一馒£RS---m / \ , 。j \ / 从一R £一£ 一X 刚 —B n.二 尹耋耆哑Rowj A北re鹞 、_一 i/ 【 L暑。SV、 j U f_i雨丽 q-J...-, .。 C3mrr氆nC I,0e·:E玎ef in Ermt挺 图2.7 NAND FLASH块擦除操作接口时序 2.3.2读页操作 读操作是NAND FLASH的一个基本操作,以页为基本单位读出数据。NAND FLASH内部进行数据的读写操作均是基于其内部的2112字节的数据寄存器来进 行的,因此,读写操作是以页为单位进行的。存储器首先将所读页的数据读到数 据寄存器中,然后,根据读信号将相应数据放到IO总线上。因此,不论页内地址 为多少,实际操作时间均是读一页所需的时间。 读页的操作流程如图2—8所示。发送读页操作的第一个命令字00H,根据地址 山东大学硕士学位论文 定义,发送5个周期的地址,最后,发送读页操作的第二个命令字30H。存储器 接受到这些命令操作后,会执行页读取操作,将相应页的数据放入数据寄存器中。 此过程中,存储器状态信号R/B拉低,操作完成后,R/B回到空闲状态。此时表 明数据已经锁存到内部数据寄存器。在读信号的控制下,存储器顺序将数据寄存 器的内容放到IO总线_kt361。 :兰 一镰 一雌 :耄| 一怒 暾 一的 2.3.3写页操作 图2-8 NAND FLASH读一页操作接口时序 NAND FLASH的写操作也是以页为单位进行的,其操作实质是将编程为“0” 的存储单元由原来的“l”设置为“0”,从而完成写操作。首先,CLE为高电平,片选 信号CE和ALE为低电平时,存储器在写信号的上升沿将第一个写操作命令字80H 锁存到其内部寄存器中。随后,CLE和片选信号为低电平,ALE为高电平时,存 储器在写信号的上升沿将5个周期的地址数据顺序锁存到其内部的地址寄存器中。 在片选信号CE、ALE和CLE信号均为低电平时,存储器顺序将IO总线上21 12 字节的数据锁存到其内部的数据寄存器中。最后,完成写操作第二个命令字10H 的写入操作。此时,存储器将其状态信号R/B拉低,执行数据寄存器中数据写入 NAND FLASH存储单元的操作,在将一页的数据写入到相应地址的物理存储单元 ●一 后,存储器拉高状态指示信号R/B,如图2-9所示。操作完成后可以通过读取存 17 山东大学硕士学位论文 储器的状态字来判断页写入操作是否成功,具体见读状态操作阴。 雠 西 藏 眦 冠 驹 lI 2.3.4读状态操作 图2-9 NAND FLASH写一页操作接口时序 读状态字操作是NAND FLASH的一个基本操作,通过读取存储器的状态字, 能够判断相应操作是否成功,状态字的具体定义如表2.5所示: 表2.5 HAND FLASH状态字定义 位 Bit[0】 Bit[1-4】 Bit[5·6】 Bit[7】 写页和块擦除命 页读写和块擦除 写保护标志, 定义 令PASS(O) /FAIL(1)标志 无定义 命令ready(1) /busy(0)标志 protected(O)/not protected(1) 在执行NAND FLASH的基本操作时,可以通过存储器状态标志来判断操作是 否完成、是否成功。读状态字操作,只需要发送读状态操作命令字70H,在完成 读操作后,在读信号的上升沿读IO总线,即可得到HAND FLASH的状态字。读 状态操作可以在存储器为忙碌状态时进行,如图2.10所示【361。 ~ , 。。 、 £冲 秀 鬃? — t。■ I!r泔一 , lj 1 一黼一 … ∥…、臻 气酮 _把葡r 鼬. … 乒;毛—_、厂一 1 【 捉{强 y I lR’2 饩-0H 厂=●●__k 图2.10 HAND FLASH读状态操作接口时序 18 山东大学硕士学位论文 2.3.5读ID操作 NAND FLASH存储有5个字节的ID信息,包括制造商信息、设备码信息以及 其他技术规格信息。通过读ID值来获取存储器的有关信息,具体定义如表2-6所 示。读ID操作相对比较简单,只需要发送一个周期的命令和地址信息后就可以读 出5个字节的ID信息。首先,发送读ID命令字90H到存储器,再发送一个周期 的地址00H到存储器,在满足一定的时间参数要求后,即可读出5个字节的ID信 息,如图2.11所示136-1。 ID cycle l曩 2nd 3一 4血 5也 表2-6 NANDFLASHID定义 描述 制造商编号 设备编号 内部芯片编号、存储单元类型等信息 页大小、块大小以及组织结构等信息 片容量等信息 al一.厂_\ 涩i:i!’\、.弋......厂.......—.......弋......厂.......—......—.......—......—.......—.......—......—.......—......—.......—.......—......—.......—......—.......一.....一 A瞧 旺 lJ『o x 蝴IDCommanfl^幽拦1蝴 №瞻C。。l o|’穗幽捌C肚铀C曲5thc犯.1e 2.3.6复位操作 图2.11 NAND FLASH读ID操作接口时序 复位操作是NAND FLASH一个不经常使用的操作,比较复杂,会中断当前存 储器的任何动作。如果在存储器正在进行块擦除操作时进行复位操作,可能块擦 除操作尚未完成就被中断进行复位操作了,导致当前页状态不明。复位操作只需 要发送一个命令字FFH到存储器,存储器接受到命令后就进行复位操作。在复位 操作时,存储器的状态信号R/B拉低,操作完成后,状态信号拉高,如图2.12所 19 示【36】。 山东大学硕士学位论文 1刚l0l,7:ii—.=0——=—盎—压—二多—£—L二一一—.竺—. 兰——二—≥/—I 卜·——————————————一一 图2.12 NAND FLASH复位操作接El时序 2.4本章小结 本章基于本设计采用的NAND FLASH存储芯片,介绍了NAND FLASH的内 部存储结构、接口定义。在此基础上详细介绍了几种基本操作的流程和接口时序。 本章介绍的内容是NAND FLASH并行存储控制器设计的基础。 山东大学硕士学位论文 第3章 控制器控制逻辑设计 本章主要介绍控制器设计的总体框架,包括寄存器组和BUFFER、SRAM接口 控制逻辑模块、主状态机控制逻辑设计等核心控制。 3.1控制器设计总体框架 本节主要介绍基于FPGA的多片NAND FLASH并行存储控制器的总体实现框 架,以及方案的设计思路和实现技巧。 蠡渤缀糍鹈戮㈣㈣鬃i缴雳缀黪您溺怒翳翳浆㈣缀戮麟簇貔缀※翁 /£‘ 。…。一。=+,粕瑚_矗oH-“龇急事4‘on i二ij一一1、 Clk ’st in 磊 乏 100WtZ一20嘲z I 1n,nVnⅢ删 u 7l厂=l五 ‘^, 五”Ri%]I l ● t t o—nu删Wl7L.一 [ ≈丰状态机忙 z ' 耋 Ce n Oe n ■e n lddr in r4:01. j&ta io J[7:0】. -- 弓 < 斗寄存器组忙 蚕 hand 爿附f—er_dfo。忙 零< 叶 1_ J\ 、SPAI r 1/ 户接口 豢 托辔j逻攀孓 c删嘲d-/ ,1 卜 ,晶<=c achieve\ 、厂]/ 模块 星 接 曼 斗ffer.一for一卜八 模块 h/ [ —∥ ’write ’粤 dtroll; r rb 佳!哆£(={I享:捩≥模块拦 、r叫………’f、厂]7 / 图3.1 基于FPGA的多片NAND并行控制器总体框图 通过对NAND FLASH控制逻辑的分析及操作方便性的考虑,我们制定了控制 器的设计方案,实现了基于类SRAM接口的NAND FLASH控制器,如图3.1所 示。首先,控制器实现了接口的转换,将NAND FLASH的接口转换为SRAM接 口,通过接口转换,将复杂的NAND接口转换为简单易用的SRAM接口,处理器 可以直接通过SRAM接口完成对NAND FLASH的操作。控制器控制四片NAND FLASH的操作,当一片NAND处于忙碌状态时,控制器可以控制其他NAND片 的操作,提高并行控制的效率,扩大NAND总容量,便于SSD的实现。另外,控 山东大学硕士学位论文 制器对读写数据的准确性进行了控制,加入了ECC校验模块,通过硬件来实现对 数据的校验,不仅能够加快数据校验的速度,而且能够减少处理器对于数据校验 的操作,提高了读写数据的效率。 NAND FLASH控制器含有以下功能模块: 1)SRAM接口控制逻辑,实现对寄存器组、两个缓冲区的读写以及主状态机 的控制; 2)主状态机,控制器的核心控制逻辑,实现对命令操作的有序控制; 3)寄存器组,主要有命令寄存器、地址寄存器、NAND ID寄存器、状态 寄存器,以及缓冲数据寄存器; 4)buffer for write, 写页操作缓冲区, 2112字节,主要用来存储要写入 NAND FLASH的数据; 5)buffer for read,读页操作缓冲区,2112字节,主要用来存储从NAND FLASH读出的数据; 6)command achieve模块,NAND FLASH主要操作命令的整合模块,模块 中实现了基本NAND FLASH的操作命令,通过其中的多路选择器来实现 不同操作命令的选择; 7)hand io ctrl模块,根据NAND FLASH的数据手册,实现对NAND FLASH 的操作,是NAND FALSH命令的具体实现; 8)DCM模块,即数字时钟管理模块,实现对输入时钟的分频和倍频操作, 为其他模块提供时钟信号。 9)ECC校验模块,主要实现对写入数据校验码的生成以及对于读出数据进行 校验,能够识别两位错误,纠正一位错误。 本设计采用了模块化的设计方法,通过模块的划分,首先进行单独的实现和测 试,最后进行模块间的整合和测试。这样,可以单独对某些模块修改升级而不需 要对其他模块进行修改,能够缩短设计周期。采用这种设计方法,不仅易于实现 和测试,而且易于扩展和修改应用平台。在其中特定的部分采用了参数化的设计, 方面使用于不同厂家不同型号的NAND FLASH平台。 山东大学硕士学位论文 图3—2 软件综合后的控制器接口图 控制器实现的接口引脚如图3.2所示,具体引脚定义如表3.1所示。 信号 表3.1 类型 控制器接口引脚说明 描述 clk rst in Ce n 输入 输入 输入 控制器时钟输入信号,50MHZ 控制器复位信号,低电平有效,复位控制器逻辑 片选信号,低电平有效,低电平时控制器接受接口的信 号 Oe n we n 输入 输入 读信号,低电平有效,处理器执行读操作 写信号,低电平有效,处理器执行写操作 addrin[4:0】 dataio[7:0】 controller—.rb NFL ALE NFL CLE 输入 输入/输出 输出 输出 输出 地址信号,对应控制器内寄存器组地址,见表2 数据输入输出总线,oe n为低时为输入,其他为高阻态 控制器ready/busy信号,为高时,才可对控制器操作 地址锁存使能信号,高有效,表明输入数据为地址 命令锁存使能信号,高有效,表明输入数据为命令 NFL_nCE[3:0】 NFL nWE NFL nRE 输出 输出 输出 片选信号,低有效,分别对应4片NAND FLASH片选 写信号,低电平有效,写命令、地址、数据到NAND FLASH 读信号,低电平有效,从NAND FLASH读出数据 NFL_RB[3:0】 NFL_DATA[7:0】 输入 输入/输出 NAND FLASH ready/busy信号,分别表明4片NAND 的状态 数据输入输出总线,命令、地址、数据复用 山东大学硕士学位论文 3.2寄存器组和BUFFER实现 在控制器的设计中,通过增加寄存器组和缓冲区BUFFER更好的实现控制器 的设计。本章主要介绍控制器设计中所使用的寄存器、缓冲区(BUFFER)以及它 们的功能。 在设计之初,考虑到实际应用背景,为节省引脚,共使用5根地址线,处理器 能够直接访问32个寄存器。但是,对于页的读写操作而言,这样的实现方式不能 直接访问读页和写页操作缓冲区,因此,我们采取了读写两个数据寄存器的方式 来实现对缓冲区的操作。 ● NAND FLASH控制器将处理器对两个buffer(buffer for read和 buffer—for—write)的操作简化为对两个寄存器(page_in和page_out)的操作。这 样的实现方式,要求读页和写页操作必须顺序的写入或者读出2112字节数据。处 理器进行NAND读写操作时,需要连续进行写page in寄存器2112次或者读 page out寄存器2112次来完成页数据的写入读出操作,能够减少地址线的数目。 表3.2是25个寄存器的定义,主要有m、状态、命令、地址、数据和错误状 态信息等寄存器。5位的地址宽度,可以定义32个寄存器,因此,可以在此基础 上进行其他应用的扩展。 寄存器名称 idl id2 id3 id4 status eommandl command2 表3.2 控制器中寄存器组定义说明 寄存器地址 寄存器属性 描述 00000 00001 read NANDFLASH的ID值,4个字节,表示 read NAND FLASH的参数信息,不同的型号 00010 read ID值不同,本设计采用的NAND ID值为 00011 read ADh,DAb,lOh,95h Bit[0】 写一页和块擦除命令PASS(0) /FAIL(1)标志 00100 00101 read read/wrim Bit[4:l】 无定义 页读写和块擦除命令ready(1) Bit[6:5】 /busy(0)标志 Bit[7】 Write protect标志,protected ‘0’·not protected‘1’ 命令寄存器,单字节命令,写入 00llO read/write commandl;双字节命令,写入eommandl 和command2 addressl 00111 read/write 地址寄存器,页读写地址顺序写入 山东大学硕士学位论文 addresS2 address3 address4 address5 Page-ln 01000 0100l 01010 010ll 01100 page_out 0110l n._status 011lO ctrl rb Ollll err.—status 10000 err..10cation 1 1 err..10cation 1 2 err_location2 1 err.—location22 err_location3 1 err_location32 err_location4 1 err_location42 10001 10010 10011 10100 10101 10110 101ll 11000 read/write read/write read/write read/write write read read/write read read read read read read read read read read addressl-address5块擦除命令地址则顺 序写入addressl.address3:READ ID, READ STATUS,RESET命令不需要写入 地址 处理器写数据寄存器,处理器往buffer 写数据时,只需一直写page_in寄存器 2112次,控制器将相应数据写入buffer 处理器读数据寄存器,处理器读buffer 时,只需一直读page_out寄存器21 12次, 控制器会顺序将buffer内容写到寄存器 中 4片NAND的片选信号,处理 Bit[3:0】 器写入,只能有一位为l 4片NAND的ready/busy信 Bit[7:4】 号,可读,不可写 控制器状态标志寄存器,bit[0]为l, ready;bit[O]为0,busy:只有为l时才 能写入数据到寄存器,否则只能读相应寄 存器 Bit[1:O】 分别代表第l、2、3、4个 Bit[3:2】 Bit[5:4】 Bit[7:6】 512bytes字节的校验结果,如 图4所示:00.无错误;01.Ibit 可纠正错误;lO-2bit不可纠正 错误;11.无定义 第一个512bytes的纠错码的后八位 bit[3:0],第一个512bytes纠错码的前四 位 第二个5 12bytes的纠错码的后八位 bit[3:0],第二个5 12bytes纠错码的前四 位 第=个512bvtes的纠错码的后八位 bit[3:0],第三个512bytes纠错码的前四 位 第四个512bytes的纠错码的后八位 bit[3:0],第四个512bytes纠错码的前四 位 控制器设计时,采用FPGA内部的Block Ram来实现两个读、写缓冲区。通过 直接配置FPGA内部的口核,选用简单的双端口Ram,配置符合要求的两个缓冲 区buffer—for—read和buffer_for_write。两个缓冲区的位宽均为8位,地址宽度为 12位,才能满足(2K+64)bytes数据存储容量的要求。缓冲区实现模块接口定义 山东大学硕士学位论文 如图3.3所示。每个缓冲区有两个读写端口。 图3-3 缓冲区采用的Block Ram接口示意图 在设计时,读和写缓冲区采用的是Xilinx公司的简单双端口RAM的IP核, 其中PortA为写端口,PortB为读端口,地址线宽度为12位,保证能够存放一页 的数据。有两个时钟信号,一个读数据输出通道和一个写数据输入通道,位宽均 为8位。对于PortA,还有一个写使能信号,低电平有效。 在buffer for read中,控制器控制将读出的页数据写到缓冲区中,使能信号 wea是根据在控制读页操作时,根据NFL nRE信号以及其他信号来共同控制写使 能信号的有效,将数据写入的读缓冲区中。 在buffer—for—write中,控制器将处理器写入的页数据写到缓冲区中,使能信号 wea是根据接151控制逻辑,判断处理器进行写buffer操作数据寄存器page in时产 生的,控制将数据写到写缓冲区中。 3.3 SRAM接口控制逻辑 本节主要介绍SRAM接口的实现。SRAM接口控制逻辑实现NAND FLASH 接口到SRAM接口的转换,将复杂的不易使用的NAND FLASH转换为更加通用 山东大学硕士学位论文 I/O总线上的数据写入对应的寄存器。若为只读寄存器,则不能写入(寄存器属性 定义见2.3部分)。 3)写buffer使能信号: w_buffer_en, write_up信号有效并且地址信号为写 buffer数据寄存器地址时产生,控制将写buffer数据寄存器内容写入 buffer—for—write。 4)读buffer使能信号:r—buffer—en,read—down信号有效并且地址信号为读 buffer数据寄存器地址时产生,控制将数据从buffer for read读到读buffer数据 寄存器。 ~‘ 5)命令寄存器l写入使能信号:cmdl—in—cmp,writeup信号有效并且地址 信号为命令寄存器l的地址时产生,该信号为主状态机的控制信号。 6)命令寄存器2写入使能信号:cmd2 in cmp,writeup信号有效并且地址 信号为命令寄存器2的地址时产生,该信号为主状态机的控制信号。 3.4主状态机控制逻辑 主状态机控制逻辑是控制器设计的核心控制部分,主要根据处理器写入控制器 内部命令寄存器的命令字来完成相应操作并控制执行,主状态机控制流程如图3.5 所示。 主状态机流程如下: (1)主状态机处于start状态,等待处理器写命令到命令寄存器commandl; (2)判断commandl命令,若为单字节命令,进入相应命令执行状态;若为 双字节命令,等待处理器写命令到命令寄存器command2; (3)判断command2命令,若为第二个命令字,进入相应命令执行状态;否 则,返回start状态; (4)执行完相应命令后,主状态机返回start状态,等待下条命令的到来; 山东大学硕士学位论文 图3—5 主状态机控制流程示意图 主状态机控制信号controller rb的产生。当命令执行开始后,控制器状态信号 controller rb拉低,在命令执行完成后重新拉高。特别注意的是只有当控制器为 ready状态,即controller rb为高电平时,控制器才会接受处理器发送的命令、地 址或者数据,否则,不能对控制器进行控制操作。 控制器产生命令执行模块的使能信号cmd ctrl en,控制命令执行模块执行相 应的命令操作;通过命令执行模块返回的反馈信号cmd ctrl 态的转换,对控制器的状态信号进行切换。 29 来进行状态机状.cmp 山东大学硕士学位论文 第4章接口时序产生模块和命令实现模块设计 本章主要介绍NAND FLASH命令实现模块和接口时序产生模块的设计。命令 实现模块主要根据NAND FLASH的操作要求,产生相应控制信号,通过接口时序 产生模块产生NAND FLASH命令操作所需要的特定时序信号。 4.1 NAND FLASH接口时序产生模块 本节主要介绍NAND FLASH接口时序产生模块,产生符合要求的接口时序。 为方便扩展,并根据命令操作流程以及设计实现的需要,划分为以下几个模块: W.1l鲫d command模块写一个命令字时序产生模块;W hand address模块写一个地 址字时序产生模块;W hand data模块写2112字节数据时序产生模块; r_nand_bytedata模块读一个字节数据时序产生模块;rnand_pagedata模块读一页 字节数据时序产生模块。 接口时序产生模块框图如图4.1所示,主要有写命令、写地址、写数据和读数 据操作的时序。写命令和写地址操作一般不会超过5个周期,由两个子模块来产 生写一个命令字节和写一个地址字节的接口时序;写数据子模块,主要是完成一 页数据的写入,产生写2112字节数据的接口时序;对于读数据,有读ID信息、 读状态信息以及读一页数据等几种操作,因此,由读一个字节数据和读一页字节 数据两个子模块来产生满足要求的接口时序。 30 山东大学硕士学位论文 Nand io ctrl模块是NAND FLASH接口时序产生模块,负责产生符合NAND 要求的接口时序,对下的接口是与存储器直接相连。它要根据命令实现模块 command achieve的控制信号nⅣctrl in来控制产生各类不同的接口时序信号,并 且与命令实现模块有数据以及控制信号的交互。 4.1.1 W NAND COMMAND子模块 W hand command子模块,实现写一个命令字的NAND FLASH接口时序,采 用状态机的思想进行实现。为实现的简单,对输入时钟进行了分频处理,保证按 照时钟节拍进行操作能够满足NAND数据手册中关于接口时序的参数要求,而不 需要通过加入延时实现。 图4-2 写一个命令字状态机 写命令时序产生子模块主要完成对CLE、#CE和#WE信号的控制,如图4.2 所示。NFL—CMD—GEN的5位分别对应CLE、ALE、#CE、#WE和撑RE.write—cmd—en 为写命令字模块使能信号;write—cmd_cmp为写命令字完成标志信号; NFL—DATA—OUT为10总线数据输出对应的寄存器。 山东大学硕士学位论文 状态 OPC——IDLE OPC——START OPC CLE OPC——CLE——LATCH OPC—.END OPC—.END——WAIT 表4—2 写一个命令字状态机状态定义 定义描述 初始化状态,等待写命令字使能信号有效进入下一个状态 开始状态,拉低片选信号,将命令字赋值给寄存器 写命令字状态,拉高CLE信号,拉低#WE信号 写命令字锁存状态,拉高#WE信号,实现命令字锁存到NAND 结束状态,拉高片选信号,拉低CLE信号,并置写命令完成状态标志位 结束延迟状态,清除写命令完成状态标志位 加入结束延迟状态,为了保证写命令完成信号能够被命令实现模块准确的接 收,并保证命令接收模块不会重复发送同一个命令。 4.1.2 W nand address子模块 w—nand—address子模块,实现写一个地址字的接口时序,采用与写命令字相同 的实现方式,主要实现对ALE、#CE和flWE三个控制信号的操作,如图4.3所示。 NFL CMD GEN的5位分别对应CLE、ALE、#CE、#WE和#RE:write addr en 为地址字模块使能信号;write addr cmp为写地址字完成标志信号; NFL DATA OUT为IO总线数据输出对应的寄存器。 图4.3 写一个地址字状态机 山东人学硕+!学位论文 状态 OPA——IDLE OPA——START OPA——ADDR OPA——ADDR——LATCH 0PA END OPA~END—WAIT 表4.3 写一个地址字状态机状态定义 定义描述 初始化状态,等待写地址字使能信号有效进入下~个状态 开始状态,拉低片选信号,将地址字赋值给寄存器 写地址字状态,拉高ALE信号,拉低}}wE信号 写地址字锁存状态,拉高#WE信号,锁存地址宁到NAND 结束状态,拉高片选信号,拉低ALE信号,并簧写地址字完成状态标 志位 结束延迟状态,清除写地址字完成状态标志位 4~1 3 W—NAND—DATA子模块 w nand data子模块,实现写一页数据的接口时序,采用与写命令字相同的实 现方式,主要实现对ALE、CLE、#CE矛u#wE四个控制信号的操作,如下图所示。 NFL CMD GEN的5位分别对应CLE、ALE、#CE、#WE和#RE;write data en 为写数据模块使能信号;write data cmp为写数据操作完成标志信号;data count 为写一页数据(2112字节)的计数器;NFL DAl队OUT为IO总线数据输出对应 的寄存器。 在w—nand—data子模块中,只需要顺序产生写2112字节数据的接口时序信号, 并且缓冲区会根据写信号,顺序将buffer for write缓冲区的数据放到data in数据 接口,该子模块只是将相应数据锁存到NAND内部的数据寄存器内。 图4.4 写一页数据接口时序状态机 山东大学硕士学位论文 表4-4 写一页数据接口时序状态机状态定义 状态 定义描述 OPWD——IDLE OPWD——START OPWD——DATA OPWD——DATA——LATCH 初始化状态,等待写数据使能信号有效进入下一个状态 开始状态,拉低片选信号 写数据状态,拉低#WE信号,将data in赋值给寄存器 写数据锁存状态,拉高#WE信号,计数器加l,如果计数器等于2ll l, 进入结束状态,否则回到写数据状态 OPWD——END 结束状态,拉高片选信号,并置写数据完成状态标志位,计数器清 零 OPWD——END——WAIT 结束延迟状态,清除写数据完成状态标志位 4.1.4 r hand bytedata子模块 r nand bytedata子模块实现读一个字节数据的接口时序,同样是采用状态机的 思想进行设计实现,主要实现对#CE和#RE信号的控制,如图4.5所示。 NFL CMD GEN的5位分别对应CLE、ALE、#CE、#WE和#RE;read byte en 为读一个字节模块使能有效信号;read 为读一个字节数据完成状态标志.byte 信号; DATA IN 的输入;byte data out为与 为10三态总线..对cm应pNFL command achieve模块之间数据接口对应的寄存器。 图4.5 读一个字节数据接口时序状态机 山东大学硕士学位论文 表4.5 读一个字节数据接口时序状态机状态定义 状态 定义描述 OPRDB——IDLE 初始化状态,等待读一个字节数据使能有效进入下一个状态 OPRDB—.START 开始状态,拉低片选信号 OPRDB—.DATA 读一个字节数据状态,拉低#RE信号 读一个字节数据锁存状态,拉高#RE信号,同时将IO总线上的数据 OPRDB—DA7缱朋TCH 读入到寄存器中 OPRDB—.END 结束状态,拉高片选信号,置读一个字节数据完成状态标志位 OPRDB—.END—.WAIT 结束延迟状态,清除读一个字节数据完成状态标志位 4.1.5 R NAND PAGEDATA子模块 rnand_pagedata子模块实现读一页字节数据的接121时序,采用与读一个字节数 据类似的实现方式,主要是对#CE和#RE信号的控制,如图4-6所示。 NFL CMD GEN的5位分别对应CLE、ALE、#CE、#WE和#RE;read page ell 为读一页字节模块使能有效信号;read__page_cmp为读一页字节数据完成状态标志 信号;read—data—count为读一页数据的计数器;NFL—DATA—IN为IO三态总线对 应的输入:page_data_out为与command—achieve模块之间数据接口对应的寄存器。 在rnand_pagedata子模块中,只需要顺序产生读21 12字节数据的接口时序信号, 并且缓冲区会根据读信号,顺序将读出的数据写入到buffer for read缓冲区中,该子 模块只是将NAND内部数据寄存器中的内容顺序读出到page data out寄存器中。 山东大学硕士学位论文 图4-6 读一页数据接口时序状态机 表4-6 读一页数据接口时序状态机状态定义 状态 定义描述 OPRDP——IDLE OPRDP——START 初始化状态,等待读一页数据使能信号有效进入下一个状态 开始状态,拉低片选信号 OPRDP——DATA 读一页数据状态,拉低jfi}RE信号,计数器加l,如果计数器等于 21 12,进入结束状态,否则进入读一页数据锁存状态 OPRDP—DA丝LATCH 读一页数据锁存状态,拉高#RE信号,同时将IO总线上数据读入 到寄存器中,返回读一页数据状态 OPRDP—END 结束状态,拉高片选信号,置读一页数据完成状态标志位,计数器 清零 OPRDP——END——WAIT 结束延迟状态,清除读一页数据完成状态标志位 4.1.6本节小结 本节主要介绍了NAND FLASH接口时序产生模块,详细介绍了几个子模块产 生时序的流程以及实现思想。在Verilog实现中,主要采用了状态机的思想,通过 对系统输入时钟的分频,不需要加入延时周期,就能够保证产生的接口时序信号 能够满足NAND FLASH的接口参数要求。采用状态机以及时钟分频的方式实现接 山东大学硕士学位论文 口时序,采用模块化的设计,在实现上更加简单有效,易于扩展和发现可能存在 的问题。 4.2 NAND FLASH命令实现模块 NAND FLASH命令实现模块主要根据NAND FLASH的六个基本操作命令, 产生相应的控制信号,通过接口时序产生模块nand—io—ctrl产生NAND FLASH命 令操作所需要的特定时序信号。主要有六个基本命令实现模块:块擦除命令模块 (erase模块)、读页命令模块(pageread模块)、写页命令模块(pageprogram模块)、 读ID命令模块(read id模块)、读状态命令模块(read status模块)和复位命令 模块(nand reset模块)。 /厂 --4Pelk ●对 resCt—n j-ll:01 doutb ;7:01. ve8 ’0X10t‘a ·[!!;垒: dina .F7:01 cmcI'n。j on F5:们 一 c∞d。ctrl~c喃 .砖:01 nfind_id—reg] . f7一n1 j矗nd—jtre刮 可 f々.nf nand status reg;7.U 孑 l∥ 乏 ≯ , 雾 罂. 2 盘 们 /1 誊< A N 要 ‘ cad ctrl addr】 1 一inl7:0j 一 7 2 .cad—ctrl—addr,S , inf7:01. \ Commnd一邳hieve模块 L1 erase I H 100 000 —a呻 OIOO∞ 卜\ 澎潞遮狂嚣 沙 /1 l r pageprogra《 001000 、| i oIoolo崎 /1 read—id< q ∞OOl0 I 000 一 . read—statu( 、J 啪mse戏 图4—7 命令实现模块框图 、 卜 > p :> 卜 L, 卜 p 蚕邑 卜 > L/ :> / command—achieve模块是命令实现模块,实现框图如图4.7所示。根据主状态 机控制逻辑产生的控制信号cmd—ctrl—en,通过多路选择器来控制相应的命令执行 模块,执行相应的命令流程,实现相应的操作。 除了NAND接口时序产生模块的接口引脚外,表4.7是命令实现模块与其他 模块的接口引脚定义: 山东大学硕士学位论文 名称 clk reset n addrb doubt wea addra dina cmd——ctrl——en cmd——c仃!——crop hand_idreg[1-4】 hand stams__reg cmd ctrl addr[1-4】 NFL RB 表4.7 位宽 方向 l m l m 12 out 8 m● l Om 12 out 8 out 6 ● in 6 out 8 0ut 8 out 8 ● 111 l m 命令实现模块部分引脚定义 定义描述 时钟信号输入,100/1.5MHZ 全局复位信号,低电平有效 写缓冲区地址信号,写一页操作产生的地址信号 写缓冲区数据信号,写一页操作数据输入通道 读一页缓冲区使能信号,读一页操作产生,高有效 读一页缓冲区地址信号,读一页操作产生的地址信号 读一页缓冲区数据信号,读一页操作数据输出通道 主状态机控制逻辑产生的控制信号,控制命令执行 命令执行完成标志信号,分别对应六个基本命令 读ID操作的数据输出通道,共4个ID值输出 读状态操作的数据输出通道,一个status输出 命令操作地址输入,最多5个地址数据输入 NAND状态信号输入,有ready/buys状态之分 4.2.1块擦除命令执行模块 块擦除命令执行模块主要就是根据第二章中介绍的块擦除操作流程,通过状态 机来实现整个操作流程,即完成指定块的擦除操作。具体的状态机实现如图4.8 所示。erase.rw ctrl是状态机产生的控制信号输出,控制接口时序产生模块 (hand io ctrl模块)产生相应的接口时序;emSe cmP为块擦除操作完成状态标志 信号;erase en为块擦除操作使能信号;write cmd 和 为接口 时序产生模块 io ctrl 模块)产生的子模块完.成cm状p态标w志rite信a息dd。r cmp(nand 39 山东大学硕士学位论文 图4-8 块擦除命令执行模块状态机 状态 ERASE——IDLE ERASE——CMD I ERASE——ADDRl ERASE——ADDR2 ERASE——ADDR3 ERASE——CMD2 ERASE——END ERASE——END——WAIT 表4—8 块擦除命令执行模块状态机状态定义 定义描述 初始化状态,等待块擦除使能信号有效进入下一个状态 写第一个命令字状态,产生写一个命令字的使能控制信号 写第一个地址字状态,产生写一个地址字的使能控制信号 写第二个地址字状态,产生写一个地址字的使能控制信号 写第三个地址字状态,产生写一个地址字的使能控制信号 写第二个命令字状态,产生写一个命令字的使能控制信号 结束状态,置块擦除命令完成状态标志位 结束延迟状态,清除块擦除命令完成状态标志位 4.2.2读页命令执行模块 读页命令执行模块主要是根据第二章中介绍的NAND FLASH读页操作流程, 通过状态机来实现整个操作流程,即完成读页数据到读缓冲区buffer for read的操 作。具体的状态机实现如图4-9所示。pageread nⅣctrl是状态机产生的控制信号 输出,控制接口时序产生模块(nand io ctrl模块)产生相应的接口时序; pageread_cmp为读页操作完成状态标志信号;pageread_en为读页操作使能信号; write_cmd_cmp、write_addrcmp和read_nand_page是接口时序产生模块 (nand io ctrl模块)产生的子模块完成状态标志信息。 40 蓼Ls£ 山东大学硕士学位论文 季L旺 图4-9 读一页命令执行模块状态机 表4-9 读一页命令执行模块状态机状态定义 状态 定义描述 PAGEREAD——IDLE 初始化状态,等待读一页使能信号有效进入下一状态 PAGEREAD——CMDI 写第一个命令字状态,产生写一个命令字的使能控制信号 PAGEREAD——ADDRI PAGEREAD——ADDR2 写第一个地址字状态,产生写一个地址字的使能控制信号 写第二个地址字状态,产生写一个地址字的使能控制信号 PAGEREAD——ADDR3 写第三个地址字状态,产生写一个地址字的使能控制信号 PAGEREAD——ADDR4 写第四个地址字状态,产生写一个地址字的使能控制信号 PAGEREAD——ADDR5 PAGEREAD—.CMD2 写第五个地址字状态,产生写一个地址字的使能控制信号 写第二个命令字状态,产生写一个命令字的使能控制信号 PAGEREAD——BUSY NAND忙碌状态,等待NFL_RB拉低后进入下一个状态 PAGEREAD——READY NAND空闲状态,等待NFL_RB重新拉高后进入下一个状态 PAGEREAD——READ 读一页状态,产生读一页接口时序模块的使能控制信号 PAGEREAD——END 结束状态,置读一页命令完成状态标志位 PAGEREAD——END——WAIT 结束延迟状态,清除读一页命令完成状态标志位 4l 山东人学硕士学位论文 4.2.3写页命令执行模块 写页命令执行模块主要根据第二章中介绍的NAND FLASH写页操作流程,通 过状态机来实现整个操作流程,即把写缓冲区buffer for write中的数据写到NAND 中。具体的状态机实现如图4。10所示。program nⅣctrl是状态机产生的控制信号 输出,控制接口时序产生模块(nand io ctrl模块)产生相应的接口时序; program_cmp为写一页操作完成状态标志信号;program en为写一页操作使能信 号;write cmd cmp和write addr cmp是接口时序产生模块(nand io ctrl模块) 产生的子模块完成状态标志信息。 錾.LSE 图4.10写一页命令执行模块状态机 山东大学硕士学位论文 表4一lo写一页命令执行模块状态机状态定义 状态 定义描述 PROGRAM——IDLE PROGRAM——CMD I 初始化状态,等待写一页使能信号有效进入下一个状态 写第一个命令字状态,产生写一个命令字的使能控制信号 PROGRAM——ADDR 1 PROGRAM——ADDR2 PROGRAM——ADDR3 PROGRAM——ADDR4 PROGRAM——ADDR5 PROGRAM——DATA PROGRAM——CMD2 PROGRAM——END PROGRAM——END——WAIT 写第一个地址字状态,产生写一个地址字的使能控制信号 写第二个地址字状态,产生写一个地址字的使能控制信号 写第三个地址宁状态,产生写一个地址字的使能控制信号 写第四个地址字状态,产生写一个地址字的使能控制信号 写第五个地址字状态,产生写一个地址字的使能控制信号 写一页数据状态,产生写一页接口时序模块的使能控制信号 写第二个命令字状态,产生写一个命令字的使能控制信号 结束状态,置写一页命令完成状态标志位 结束延迟状态,清除写一页命令完成状态标志位 4.2.4读ID命令执行模块 读ID命令执行模块主要根据第二章中介绍的NAND FLASH读ID操作流程, 通过状态机来实现整个操作流程,即把NAND内部ID寄存器中的四个ID值读出 到控制器内部的寄存器中。具体的状态机实现如图4.1 1所示。readid I'W ctrl是状 态机产生的控制信号输出,控制接口时序产生模块(nand io ctrl模块)产生相应 的接口时序;readid cmp为读ID操作完成状态标志信号;readid en为读ID操作 使能信号;write cmd cmp、write addr cmp和read byte 块(nand io ctrl模块)产生的子模块完成状态标志信息。 是接口时序产生模.cmp 图4.11读ID命令执行模块状态机 山东大学硕士学位论文 表4—1 1 读ID命令执行模块状态机状态定义 状态 定义描述 READID——IDLE READID——CMD READID—.ADDR READID——READI READID——READ2 READID——READ3 READID—,READ4 READID——END READID——END——WAIT 初始化状态,等待读lD命令使能信号有效进入下一个状态 写命令宁状态,产生写一个命令字的使能控制信号 写地址字状态,产生写一个地址字的使能控制信号 读第一个ID值状态,产生读一个字节数据的使能控制信号 读第二个ID值状态,产生读一个字节数据的使能控制信号 读第三个ID值状态,产生读一个字节数据的使能控制信号 读第四个ID值状态,产生读一个字节数据的使能控制信号 结束状态,置读ID命令完成状态标志位 结束延迟状态,清除读ID命令完成状态标志位 4.2.5读状态命令执行模块 读状态命令执行模块主要根据第二章中介绍的NAND FLASH读状态操作的流 程,通过状态机来实现整个操作流程,即把NAND的状态值读出到控制器内部的 寄存器中。具体的状态机实现如图4.12所示。status nⅣctrl是状态机产生的控制 信号输出,控制接口时序产生模块(nand io ctrl模块)产生相应的接口时序; status_cmp为读状态操作完成状态标志信号;status—en为读状态操作使能信号; write_cmd_cmp、write—addr_cmp和read_blyte_cmp是接口时序产生模块 (nand io ctrl模块)产生的子模块完成状态标志信息。 图4.1 2读状态命令执行模块状态机 山东人学硕士学位论文 表4.1 2读状态命令执行模块状态机状态定义 状态 定义描述 STATUS——IDLE 初始化状态,等待读状态命令使能信号有效进入下一个状态 STATUS——CMD STATUS——READ 写命令字状态,产生写一个命令字的使能控制信号,写入命令字 读NAND状态字状态,产生读一个字节数据的使能控制信号 STATUS——END 结束状态,置读状态命令完成状态标志位 STATUS——END——WAIT 结束延迟状态,清除读状态命令完成状态标志位 4.2.6复位命令执行模块 复位命令执行模块主要根据第二章中介绍的NAND FLASH复位操作流程,通 过状态机来实现整个操作流程,即通过命令实现NAND的复位操作。具体的状态 机实现如下图4.13所示。reset n】 ̄,ctrl是状态机产生的控制信号输出,控制接口时 序产生模块(nand io ctrl模块)产生相应的接口时序;nand reset cmp为复位操 作完成状态标志信号;nand reset en为复位操作使能信号;write cmd cmp是接E1 时序产生模块(nand io ctrl模块)产生的子模块完成状态标志信息。 @ELSE 图4.13复位命令执行模块状态机 山东大学硕士学位论文 表4.13复位命令执行模块状态机状态定义 状态 定义描述 RESET—.IDLE RESET—.CMD 初始化状态,等待复位命令使能信号有效进入下一个状态 写命令字状态,产生写一个命令字的使能控制信号,写入命令字 RESET—.END 结束状态,置复位命令完成状态标志位 RESET—.END—.WAIT 结束延迟状态,清除复位命令完成状态标志位 4.2.7本节小结 本节主要介绍了NAND FLASH的命令实现模块command achieve,详细介绍 了六个基本命令的实现方式。在本设计中,六个基本的操作命令以状态机的方式 实现,更好的符合了NAND FLASH数据手册中对操作命令流程的要求。通过多路 选择器,根据主状态机控制逻辑产生的控制信号,来选择相应的命令执行模块。 执行过程中产生相应的控制信号控制接口时序产生模块(hand io ctrl模块)来产 生相应的接口时序,完成符合要求的命令操作流程。 山东大学硕士学位论文 第5章ECC校验模块 ECC校验模块主要介绍ECC校验算法及其硬件实现,还包括在读写操作过程 中是如何实现对数据校验的。 ECC校验算法是在传统奇偶校验算法的基础上发展演变而来的,主要利用数 据块的行、列奇偶校验信息生成ECC校验码,能够检验出给定数据块是否存在错 误,并且能够纠正一位错误。与传统的奇偶校验相比,ECC校验算法具有校验码 精简、不仅能够检验出错误还能纠正一位错误的优点,因此,广泛应用在内存、 NAND等存储的数据校验中。 在ECC校验中,以每512字节数据为单位,生成24bit的检验码,分别为6bit 的列奇偶校验码和18bit的行奇偶校验码。如图5.1所示,24bit的ECC校验码组 成,低6位为列奇偶校验码,高18位为行奇偶校验码。对于本文中采用的NAND FLASH存储芯片,页的大小为2K,因此,需要12bytes的ECC校验码【371。 图5-1 24位的ECC校验码组成 ECC校验码的计算方式如图5.2和图5.3所示: 47 山东大学硕士学位论文 字节(2100.2111),并且对SPARE区的其他数据不作任何处理,只计算DATA区 数据的校验码,如图5.4所示。 L、√L、厂—九一。—JL~。—√ ECCfor,5t 512 byt韩 ECCfor2rid EC(_for 3td ECCfor 4th 512 bytes 512 b”供 512 bytes 图5.4 One NAND FIash pa9e=2,”2 b—e‘ NAND FLASH中一页数据的存储位置示意图 ECC校验是根据写入时的数据块校验码与读出该数据块时重新计算的校验码 按位异或,根据异或计算的结果来判断该数据块是否存在错误。若异或结果为: (1)24位全为0,表示数据没有错误 (2)有12位数据为1,12位数据为0,表示有一位错误,并且p1和pl’肯定一 个为0,一个为1。此时,可以利用异或的结果得到错误位的位置。 (3)仅有一位为1,表示该数据块的ECC校验码有错误。 (4)除以上三种情况外,其他结果表示数据块有错误,并且错误位数大于1, 不能进行纠错。 ECC校验模块设计实现流程如下: ECC校验模块对于写页的操作流程,如图5.5(左图)所示。 (1)处理器写页操作时,写2112字节数据到bu廊r for write; (2)控制器控制ECC校验码产生模块计算出前2048字节数据的校验码 (12b”es); (3)控制器执行写页操作,将buffer for write的前2100字节以及12字节的 校验码写入NAND FLASH,完成处理器写页命令。 ECC校验模块对于读页的操作流程,如图5.5(右图)所示: (1)控制器接受处理器读页命令后,执行读页操作; 49 山东大学硕士学位论文 (2)控制器将读出的2112字节数据写入buffer—for—read,并且控制ECC校验 码产生模块计算前2048字节数据的校验码(12bytes); (3)控制器控制ECC校验模块对读出的校验码和计算出的校验码进行校验处 理,返回错误状态(表3)以及错误位置信息。 控制器滨一页 掇作 I rll2宇节 2。鹋21 buffe:j。r re 读一夏校验毋 产生模块 L1■r节J 校验、纠锖码 产生模块 图5-5 ECC校验模块实现流程图 纠错码定义:每512字节数据返回14bit的纠错码,高两位为状态信息:00. 表示无错误;01.表示1位可纠正错误;10一表示2位不可纠正的错误;11.未定义。 剩下的低12位为1位可纠正错误的位置,其中的高9位为行号,低3位为列号, 如图5-6所示。 匿鬻l ————、厂 13 12 ll lO 9 876 543 2 lO 图5-6 ECC校验模块纠错码定义 50 山东大学硕士学位论文 第6章 控制器设计与实现的验证 在控制器设计及实现后,需要通过验证来判断控制器是否能够完成预期的设计 目标,是否达到设计的要求,以及实现后应用在具体项目中的效率、稳定性等指 标是否达到预期设想。在FPGA的开发设计中,验证是必不可少的部分,好的验 证方法不仅能够帮助设计者完成正确的设计和实现,也能帮助设计者解决设计中 遇到的问题,缩短设计周期。 在FPGA设计中,主要包括以下的步骤:系统电路方案设计、设计方案的代码 实现、功能仿真(前仿真)、综合优化、实现与布局布线、时序仿真(后仿真)、 板级仿真与验证、加载配置在线调试,如图6.1所示。根据以上的开发步骤,完整 的实现整个设计流程的每个步骤,能够最大限度的保证设计的正确性以及缩短开 发周期【381。 ,’ 图6-l FPGA开发流程示意图 山东大学硕士学位论文 在基于FPGA的多片NAND并行存储控制器设计中,主要介绍运用的功能验 证和FPGA板级验证。在本章中,将详细介绍验证的方法和验证的结果分析。 6.1功能仿真 功能仿真是一种软件模拟的过程,在仿真环境下,分析验证电路工作状态与设 计的要求是否一致,从而验证设计电路的正确性。功能仿真是在RTL级(寄存器 传输级)进行的电路仿真,仿真是在理想状态下进行的,没有考虑逻辑器件的延 时,也没有器件之间连线的延时,只是考虑在理想状态下,电路能否完成预期的 功能,而不考虑电路的具体实现、器件选择和加工工艺。因此,功能仿真用来检 查电路结构,原理和算法是否正确,同时也能够找出代码中的语法错误139]。 在设计实现的过程中,首先,用Verilog语言编写测试激励,对各个子模块进 行功能测试,发现、修正发现的问题,保证各个子模块达到预计的功能设计需求; 然后,对整合之后的模块进行功能测试,确保子模块整合之后,各子模块不会相 互干扰,能够完成整合之后预期的功能需求。 在本设计中,使用的Xilinx的FPGA芯片,因此,设计采用的软件的Xilinx 公司的ISE开发套件,仿真也是使用开发套件中的仿真软件进行的,下面分析功 能仿真的结果。 对于子模块的功能仿真,我们不作详细介绍,只介绍六个基本命令的功能仿真。 六个命令的执行是本设计的基础。注意,在进行功能仿真时,没有加入片选信号, 只是针对一片NAND FLASH进行的功能仿真,地址线尚未进行扩展,仍然是4根 地址线。 (1)读ID操作 52 山东人学硕士学位论文 圜㈦川川■同川二三叫一 图6-2 读ID操作功能仿真 如图6.2所示,首先,处理器写读ID命令90H到控制器的命令寄存器;然后, 控制器产生写读ID命令90H和地址00H到NAND FLASH的接口时序,将命令和 地址写入到其内部寄存器中;最后,控制器产生4个读字节数据的接口时序,顺 序读出4个ID值。 (2)读状态操作 图6.3 读状态操作功能仿真 如图6.3所示,首先,处理器发送读状态命令70H到控制器的命令寄存器;控 制器产生写读状态命令70H到NAND FLASH的接口时序,将命令写入到其内部 的命令寄存器中;控制器产生读一个字节数据的接口时序,读出状态字信息。 (3)复位操作 山东大学硕十学位论文 墨囵圆 肝L pB 图6—4 复位操作功能仿真 如图6.4所示,处理器写复位操作命令FFH到控制器的命令寄存器;控制器产 生写命令字FFH到NAND FLASH的接口时序;之后,NAND FLASH将执行复位 操作。 (4)块擦除操作 图6-5 块擦除操作功能仿真 如图6.5所示,首先,处理器将块擦除操作命令和块地址写入到控制器的命令 和地址寄存器中;控制器产生写命令和地址到NAND FLASH的接口时序,顺序将 第一个命令字、3个块地址和第二个命令写入到存储器内部的寄存器;存储器执行 相应块得擦除操作。 (5)写页操作 I torsoJet_Co 0∞nd rb 0帆JLE I NFL_CLE I NFL_nC.e I NFL_r恻E l NFL r矗,E _NFL_叫TA[7:0] I reset.n I出 誊rst.如 I∞』 l oe_n 1 we_n Ul a曲—H3:0】 一dabH7:0】 l帆瑚 山东大学硕士学位论文 图6-6(1) 写页操作功能仿真 I。帅oh—Ib 墨州巾 鬈Net.Ale l NPL(3.E Itft』旺 0 Net_nwE 誊NeL一芷 I^R阿喊7由l 譬re-.et..n l dk il r盘JI l∞』 I oe_n I'eJI _·曲Jo:田 l d妇媾7啊 图6-6(2) 写页操作功能仿真 如图6.6(1)所示,处理器顺序将写页操作命令字80H、5个页地址、一页字 节的数据以及第二个命令字10H到控制器的命令寄存器、地址寄存器和写缓冲区; 如图6-6(2)所示,控制器依次产生写命令、地址和数据到NAND FLASH的接口 时序,将数据写入相应的页内。 (6)读页操作 山东大学硕士学位论文 *“ ≥≤蘩蒸 :秦萋豢 囊 鞭 图6.7 读~页操作功能仿真 如图6.7所示,首先,处理器写读页命令和5个页地址到控制器的命令和地址 寄存器;控制器产生写命令和地址到NAND FLASH的接口时序,顺序将第一个命 令字00H、5个字节的页地址和第二个命令字30H写到存储器;在读页操作完成 后,控制器产生读2112字节数据的接口时序,将页数据读到读缓冲区。 6.2 FPGA板级验证 在完成之前的设计流程后,最后一步是进行FPGA的板级验证和调试,通 过将设计的电路映射到芯片中,在具体的芯片中实现设计电路的功能,验证在具 体环境中存在门延时和连线延时的情况下,电路设计能否完成预计的设计构想。 根据FPGA可编程的特点,将生成的电路设计下载到其内部后,自动配置成设 计的电路。在发现错误或者漏洞后,可以通过对原设计的修改,将新的电路设计 重新下载到FPGA内部,这样,能够方便的进行调试,尽快的解决所有问题,实 现最终的设计版本,缩短设计的周期【40】。 图6.8为设计采用的开发平台,所使用的硬件软件环境有: (1)NAND FLASH控制器开发板(图6.8),包括: FPGA芯片:Xilinx Spartan-3E XC3 S500E(VQ 1 oo)宰1 NAND FLASH:Hynix(现代)HY27UF(08)2G2B木4 FPGA配置电路,JTAG接口,MCU接口 (2)Xilinx ISE】2.4(nt) IJ东大学硕士学位论文 代码实现采用的软件环境套件,包括功能仿真等软件环境 (3)Xilinx Platfornl Studio 利用FPGA构造片上系统(SOC)使用的软件环境 (4)Xilinx Chipscope 片上逻辑分析仪,在线调试软件 图6.8 控制器开发平台 图6-9是为进行控制器测试搭建的测试平台板,通过MCU来控制NAND控 制器执行相应的操作,STM32板主要是为了进行测试而搭建的。主要有一片STM32 ARM处理器,一片SRAM和3组与开发板相连的接口。这三组接口有不同的片选 信号,可以接3个控制器,通过一个MCU来控制器3个控制器的操作,不仅能够 提高整体的NAND FLASH的容量,还能够提高并行操作效率。 山东大学硕士学位论文 图6-9 控制器开发验证设计的验证平台 NAND FLASH控制器通过SRAM接口与ARM STM32相连,ARM处理器可 以通过内部的FSMC(灵活的静态存储控制器)模块来实现对SRAM接口的操作, 即通过FSMC模块来实现对控制器的操作,而控制器控制相应命令的执行,从而 实现ARM控制NAND FLASH操作的目标。 首先介绍ARM芯片对于控制器的操作流程。处理器通过FSMC模块进行读写 等操作的控制,在编写好底层的驱动函数后,只需要简单的调用就可完成读写操 作。 写操作函数void MemWrite(u8 CS,u32 addr,u8 data),读操作函数:u8 MemRead(u8 CS,u32 addr),其中CS为片选信号,是3组控制器接151的片选使能, 可取0、1、2;addr为地址信号,是要写入寄存器的地址,见寄存器定义表;data 为数据信号,是要写入寄存器的数据信息:读操作函数返回一个字节的数据。 处理器芯片是通过这两个读、写操作来控制NAND FLASH控制器实现对 NAND FLASH的读写操作。 6.2.1处理器控制执行读状态操作 山东大学硕士学位论文 帅二](j叵](二叵][×![汇二二二二二二二二二二 —帅二X玉巫■二五][](三三[二二二二二二二二二二 图6-10处理器控制之下读状态操作时序 如图6.10,首先发送4片NAND的片选信号到片选寄存器;然后发送读状态 命令字到命令寄存器commandl;在执行完成后,执行读状态寄存器操作,读出状 态字。 , MemWrite(1,0xoe,0x0D;//写片选信号到片选寄存器 MemWrite(1,Ox05,0xT0);//写读状态命令字到命令寄存器 等待控制器controller—rb重新拉高; Status=MemRead(1,0x04);//i卖出状态寄存器内容 读出状态字之后,可以根据状态字的定义,判断操作是否成功。 6.2.2处理器控制执行块擦除操作 帅二X二叵][巫二)[亘二XjE]二互二Kj正]c二二二二 d嘲.go 图6.11处理器控制之下块擦除操作时序 如图6.11,首先,发送4片NAND的片选信号到片选寄存器,然后顺序发送 命令字和地址字到各自对应的寄存器。 山东大学硕士学位论文 MemWrite(1.0xoe。0x0D;//写片选信号到片选寄存器 MemWdte(1,0x05,Ox60);11写读状态第一个命令字到命令寄存器commandl MemWrite(1,0x07,0x40);,/写第一个块地址字到地址寄存器addrcssl MemWrite(1,0x08,0x00);,/写第二个块地址字到地址寄存器address2 MemWrite(1,0x09。0x00)J/写第三个块地址字到地址寄存器address3 MemWrite(1,0x06,0xD0);//写读状态第二个命令字到命令寄存器command2 等待控制器将命令执行完成之后,可以通过读取状态字来判断之前进行的块擦 除操作是否成功。 6.2.3处理器控制执行页读取操作 肭妇,———————————————_、厂——————一 图6.12处理器控制之下页读取操作时序 如图6.12,首先,发送4片NAND FLASH的片选信号到片选寄存器,在顺序 发送命令和地址到相应寄存器后,等待控制器执行读一页操作后,读数据寄存器 2112次,即可读出控制器读缓存区中的内容。 MemWrite(1,0xoe,0x0D;//写片选信号到片选寄存器. MemWrite(1,0x05,OxOO);,/写读一页第一个命令字到命令寄存器commandl MemWrite(1,0x07,0x40)J/写第一个地址字到地址寄存器addressl MemWdte(1.0x08。OxOO);#写第二个地址字到地址寄存器address2 MemWrite(1,0x09,0)‘00);//写第三个地址字到地址寄存器address3 MemWrite(1,0xoa,OxOO);,/写第四个地址字到地址寄存器address4 MemWrite(1,0xob,Ox00);/,写第五个地址字到地址寄存器address5 MemWrite(1,0x06,0xD0);,/写读一页第二个命令字到命令寄存器command2 等待控制器完成读页操作,将数据读出到控制器内部缓冲区中: Data=MemRead(1,0xod);触行读page 寄存器2112次,读出一页数据 山东大学硕士学位论文 6.2.4处理器控制执行页编程操作 ~]巫ⅪE匝Ⅸ匝Ⅺ弓匝D互Ⅸ至Ⅺ叵烂三匝D匝丑二二二二 tlata_lo 哪由f—————————————————————一、厂 图6-13处理器控制执行页编程操作时序 如图6.13,首先,发送4片NAND FLASH的片选信号到片选寄存器,在顺序 发送第一个命令字和地址到相应寄存器后,写数据寄存器2112次,即将页数据写 入到控制器内部的写缓冲区中,最后,发送第二个命令字到命令寄存器。 MemWrite(1,0xoe,Ox00;//写片选信号到片选寄存器 MemWrite(1,0x05,0x00);//写写一页第一个命令字到命令寄存器commandl MemWrite(1,0x07,0x40);//写第一个地址字到地址寄存器addressl MemWrite(1,0x08,OxOO);/:/写第二个地址字到地址寄存器address2 MemWrite(1,0x09,Ox00);//写第三个地址字到地址寄存器address3 MemWrite(1,0xoa,0x00);//写第四个地址字到地址寄存器address4 MemWrite(1,0xob,0x00)J/写第五个地址字到地址寄存器address5 MemWrite(1,0xoc,data);∥执行写数据寄存器page 21 12 MemWrite(1,0x06,0xD0);//写写一页第二个命令字到命令寄存器command2 等待控制器将命令执行完成之后,可以通过读取状态字来判断之前进行的写一 页操作是否成功。 6.2.5处理器控制执行读ID操作 61 次,写入一页数据.in 山东大学硕士学位论文 " ”]—————]几几几厂厂 邺嘶—二弋X厂j-[、X厂j—[X—二—二——[—叵—]—[—叵—]—=叵——]—(j—正~ a帅二X玉巫X三正X二二K至二[三][互]工Ex二 一f——————]厂———————————~ 图6.14处理器控制执行读ID操作时序 如图6-14,首先发送4片NAND的片选信号到片选寄存器;然后发送读ID命 令字到命令寄存器commandl;在执行完成后,执行读ID寄存器操作,读出状态 字。 MemWrite(1,0xoe,Oxm);//写片选信号到片选寄存器 MemWrite(1,0x05,0x00);//写读ID操作命令字到命令寄存器commandl 在控制器执行完读ID操作,将4个ID信息读入到其内部寄存器后 Idl=MemRead(1,0x00);I//读出第一个ID字节 Id2=MemRead(1,Ox01);//读出第二个ID字节 Id3=MemRead(1,0x02);//读出第三个ID字节 ld4=MemRead(1,0x03);//读出第四个ID字节 6.2.6处理器控制执行复位操作 ·d帅帅二二XX玉j[三X玉Xj二[工K二二二二二二二二二二二二二二二二二二二二二二二二二二 —o广—————]厂————————————一 图6-15控制器控制执行复位操作时序 山东大学硕士学位论文 如图6.15,首先发送4片NAND的片选信号到片选寄存器;然后发送复位命 令字到命令寄存器commandl。 I MemWrite(1,0xoe,0x01);//写片选信号到片选寄存器 I I MemWrite(1,0x05,0xFF);//写复位操作命令字到命令寄存器commandl I 6.3 FPGA验证以及结果分析 实际的验证都是基于六种基本操作进行的,分别对每个命令的执行进行测试, 在此基础上对命令进行组合测试,分析测试结果。 (1)处理器发送复位命令,完成之后再执行读ID命令操作,通过对比读出的 4个D值和NAND FLASH数据手册中的定义值是否一致来判断读ID命令操作是 否正确。 执行10、2、5中的读ID操作; 读出的ID值分别是ADH、DAH、10H和95H; 通过与数据手册中的对比,读ID命令执行正确。 (2)处理器写页数据到NAND FLASH中,在控制器执行完写页数据操作后, 处理器发送读状态操作,根据状态字判断写页操作是否成功。 执行10、2、4中的写一页操作,将指定的一页数据写入到NAND中; 等待写操作执行完成,发送读状态命令; 通过判断读出状态字的最低位为l,表示写页操作成功。 (3)处理器从NAND FLASH中读出一页数据,读取之前写入的页数据,读 出完成后,与之前写入的数据进行一一对比,并且通过读出错误校验状态字节, 来判断读出的数据是否与写入的数据一致。 执行lO、2、3中的读一页操作,将指定页得数据读出; 读校验状态寄存器,判断是否存在位翻转的现象; 通过与之前写入该页的数据进行一一对比,判断读一页命令操作成功。 (4)处理器发送块擦除命令和地址,控制器执行擦除指定块的操作,执行完 成后,通过发送读状态命令读取状态字来判断擦除操作是否成功。 执行10、2、2中块擦除操作,将指定块进行擦除; 等待擦除操作完成,发送读状态命令; 山东大学硕士学位论文 通过判断读出状态字的最低位为l,表示块擦除操作成功。 , (5)处理器进行命令组合测试,首先读D操作,然后进行写页操作、读状态 操作和读页操作,验证处理器的连续命令操作执行情况。 执行读ID操作,与数据手册中的定义进行对比,正确; 执行写页操作,记录写入的数据; 执行读状态操作,根据读出的状态字判断写页操作成功; 执行读之前写入的页数据操作,与之前写入的数据进行对比,确认正确; 组合命令操作能够成功执行。 (6)处理器在进行块擦除操作之后,连续写入64页(one block)字节的数据, 在写入完成之后,再连续读出这64页的数据。 执行块擦除操作,执行完成后进行读状态操作,判断擦除操作成功; 连续写入64页字节的数据到之前擦除的块中; 连续读出之前写入的块内的64页字节的数据,判断与写入的一致。 在以上测试的基础上,对控制器的读写等操作的效率进行了初步的测试,结果 如下表6.1所示: l 操作 l 表6-1 控制器操作效率表 读一页操作 I 写一页操作 l 块擦除操作 l 以上只是测试了对于单片NAND FLASH的操作,而每个控制器可以控制4片 NAND FLASH,因此,在当前NAND进行其内部操作时,控制器可以控制操作其 他片的NAND,能够在一定程度上实现并行性,提高控制器的效率。另外,每个 MCU可以挂载多个控制器,因此,可以并行控制多个控制器,实现并行操作多片 NAND FLASH,因此,实际的操作效率远高于表中的简单测试结果。 山东大学硕士学位论文 第7章 总结与展望 随着嵌入式系统的发展,对数据存储量的要求正在快速增长。FLASH具有速 度快、密度大、非易失性及可擦除性等特点,正在得到越来越广泛的应用。FLASH 主要有NOR和NAND两种,而NAND FLASH具有更小的体积、更快的写入和 擦除速度、更多的可擦写次数以及更低廉的每比特价格,成为了大量数据存储的 理想器件。 基于闪存的固态硬盘(SSD),采用FLASH芯片作为存储介质,这也是我们通 常所说的SSD。与传统的硬盘相比,它采用固态电子存储芯片阵列制成,内部没 有机械装置。因此,SSD具有更快的读取速度,没有噪音,发热量低,不会发生 机械故障,工作温度范围更大,体积小重量轻,抗震动的优点。虽然有容量小, 成本高,数据难以恢复等缺点,但是,随着技术的不断发展进步,固态硬盘的技 ”。 术发展也将更加完善,固态硬盘也将得到更加广泛的应用。 . 7.1工作总结 在本文中,首先讨论了FLASH的应用背景和发展趋势,详细介绍了FLASH 的实现原理以及NAND、NOR这两种主流的FLASH的各自特点、区别以及应用 场所。对NAND FLASH的规格信息和操作流程进行了详细的阐述。针对NAND FLASH的特殊接口,在详细介绍其接口时序的基础上,针对特殊的应用背景,提 出了适合的控制器设计方案。 与NOR FLASH采用直接地址寻址方式相比,NAND FLASH的控制逻辑更加 复杂,数据、地址采用同一总线,实现串行读取,随机读取速度慢且不能按字节 随机编程。因此,探讨了基于Xilinx Spartan-3E的多片NAND FLASH并行存储控 制器的设计方案,实现了类SRAM接口,处理器能够通过SRAM接口对NAND FLASH进行操作而不需要考虑NAND FLASH的接口实现,并且方便其他对于 NAND FLASH应用的扩展。 基于FPGA的多片NAND FLASH并行存储控制器,实现了接口的转换,将复 山东大学硕士学位论文 杂不通用的NAND接口转化为了简单通用的SRAM接口;实现ECC校验功能, 对写入和读出的数据进行校验操作,提高处理效率;控制多片NAND FLASH芯片, 扩大了容量,提高了并行处理能力,便于实现SSD。 论文最后讨论了控制器设计的验证,包括功能仿真和FPGA板级验证。在功能 仿真中,对各个模块的功能进行了详尽的功能测试,在所有模块功能验证正确后, 又在Xilinx的FPGA平台上进行了验证,结果表明,控制器能够正确的实现对 NAND的各种操作,工作完全正常。 7.2工作展望 针对当今市场NAND类型多样的特点,准备能加配置寄存器,通过配置不同 类型的NAND FLASH参数,来提高控制器的灵活性,扩大应用范围;考虑进一步 降低功耗,加入时钟控制模块,通过时钟的时能来中断控制器在空闲状态时空转, 实现功耗的降低;在ECC校验中,现在只是返回错误状态和错误位置信息,在以 后可以考虑实现根据错误位置信息,实现一位纠错。 综上所述,基于FPGA的多片NAND FLASH并行存储控制器的设计实现,不 仅具有理论研究的价值,并且,在SSD设计实现方面有实际的利用价值。 山东大学硕士学位论文 参考文献 【1】维库电子市场网,浅谈嵌入式系统中Nand.Flash的原理及应用 http://www.dzsc.com/data/html/20 1 1-9-2/96892.html 【2】中国供应商网,Nand Flash进军NB/PC应用领域,借以扩大市占率 http://cn.china.cn/article/d1 90422,6edb9ed2240_9587.html 【3】OPEN NAND FLASH INTERFACE,Open NAND Flash Interface Specification 【4】维普资讯,集成电路应用,产业新闻,NAND FLASH存储芯片潜力巨大:6 ̄7 【5】电子产品世界网,FPGA应用指南 http://www.eepw.com.cn/event/topic/FPGA/ 【6】6杨孝光,ECC校验的算法分析和程序实现,实验科学与技术,2004,9(03): 1-2 【7】郭御风,李琼,刘光明,张磊,基于NAND闪存的固态硬盘研究,计算机研究 与发展,328.332,2009:1--2 【8】华强电子网,EPROM工作原理介绍 http://www.hqew.com/teeh/wiki/1 966.html 【9】华强电子网,产业剖析:NAND Flash产品应用发展趋势 http://www.hqew.com/tech/news/326994.html 【10]Francois Kaplan.高容量移动应用的NOR闪存和NAND闪存。今日电子,2006, 3:60-61 【11】余一娇,Flash Memory技术和应用趋势 http://hums.ccnu.edu.cn/teachers/yyjcai/TRfrR-2004-0 1.pd£2004-1 2 【1 2]Kadowaki T,Yamakawa Y,Nakamura H,Kinlura Y,Niwano M,Masuoka E A New Ariticurture for High-Density High-Performance SGT nor Flash Memory.IEEE Transactions on Circuits and Systems.2008,55(6):55 1-555 【13】赵飞,王炎,付瑜。并行NOR Flash在SOPC开发中的应用。单片机与嵌入 式系统应用,2008,(9):2--4 【1 4】Sirota R.Test and repair of non-volatile commodity and embedded memories 67 山东大学硕士学位论文 (NAND flash memory).Proceedings of 2002 International Conference on Te瓯 2002 【1 5】Park C,Seo J,Seo D,Kim S,Kim B.Cost-efficient memory architecture design of NAND flash memory embedded systems.Proceddings of 2 1 st International Conference on Computer Design,2003:474,480 【1 6】Ying—Wen Bai,Fu-En Tsai.Design and Implementation of a Table-based GUI for MP3 Players.2006 IEEE Tenth International Symposium on Consumer Electronics, 2006:1--6 【1 7】Jung—Dal Choi,Seong—Soon Cho,Yong-Sik Yim,Kyung-Joong Joo.Hi曲ly manufacturable 1 Gb NAND Flash using 0.12 unl process technology.2001 IEDM International Electron Devices Meeting,200 1:2-5 【18】Shibata N,Maejima H,Isobe K,1wasa K.A 70 ni/l 16Gb 16-Level-Cell NAND flash Memory.IEEE Journal of Solid-State Circuits,2008,43(4):929-937 【1 9】赵效民,存储技术的对决。http://article.pchome.neVcontent-69566.html,2006—0 1 【20】马丰玺,杨斌,卫洪春。非易失性存储器NAND Flash及其在嵌入式系统中的 应用,计算机技术与发展,2007,17(1):203-205 【21】肖鹏,刘新宁,杜洪华。基于AMBA总线的NAND Flash控制器软硬件划分 设计,现代电子技术,2008,2:1~3 【22】王崇剑,李玉山。基于FPGA的K9F2G08UOM NAND FLASH控制器设计, 电子元器件应用,2008,10(3):4 ̄7 【23】文皴,谢凯年。超大容量NAND FLASH坏块管理方法的设计与实现,现代电 子技术,2007,30(16):55~57 [24】胡金霞。NAND Flash在嵌入式系统中的应用研究:【硕士论文】,广东工业大 学,2008 【25]SUPER TALENT.SLC VS MLC:An Analysis of FLASH Memory. 【26】Sang L)nul MiIl,Eyee Hyun Nam.Current trends in flash memory technology.Asia and South Pacific Conference on Design Automation,2006:45-46 [27]Simon.闪存的一些基本概念及其技术融合趋势。 山东大学硕士学位论文 http:llwww.ccvx.com/blog/userl/638/archives/2007/2007121 134939.html,2007-l 【28】Micron,Technical Note.NAND Flash 1 01:An Introduction to NAND Flash and How to Design It In Your Next Product:1--2 【29】高挺挺。适用于DDR SDRM和DDR2 SDRM的控制器的设计:【硕士论文】, 合肥工业大学,2009:1-2 【30]硬件学堂。SATAVS PATA硬盘规格的对决。玩电脑,2006,07:111—113 【31】Rachelle Trent,PMC.Sierra公司产品营销工程师。串行连接的SCSI(SAS), 世界电子元器件,2004,6:45-46 【32】畅享网,IDC:SSD出货量迅速增长行业应用成亮点 http://www.vsharing.corn/k/storage/20 1 0—8/A636 1 1 0.html 【33]杨宇光,联想(北京)有限公司。SSD技术及应用,信息技术与标准化,2010,4 【34]林宗辉,Digitimes。2011年SSD应用起飞,2011,11,24 [35】Micron,Technical Note.NAND Flash 101:An Introduction to NAND Flash and How to Design It In Your Next Product:2-3 【36]Hynix,datasheet。2Gbit(256M掌8bit)NAND FLASH Memory HY27UF(08)2G2B 【37】Micron,Technical Note。Micron ECC Module for NAND Flash via Xilinx Spartan一3 FPGA:1 5-20 【38]文U睿强编著,北京理工大学出版社。FPGA应用技术与实践,2011:5~10 【39]马建国,孟宪元编著,清华大学出版社。FPGA现代数字系统设计,2010:30--34 DO]PeterWilson著,杜生海等译,人民邮电出版社。FPGA设计实践,2009:18--23 山东大学硕士学位论文 致谢 在论文即将完成之际,回想在控制器的设计以及论文写作过程中的点点滴滴, 心中感慨颇多,在这里,要感谢所有给我帮助和支持的人,谢谢你们。 感谢我的导师,张瑞华副教授,在将近两年的时间里,张老师在生活和学习 上了给我了很大的帮助,在老师的帮助下,我顺利完成了自己两年的研究生生活, 并且,最后顺利完成了毕业设计的全部工作,感谢老师的悉心指导。在这里,衷 心的祝愿老师身体健康、工作顺利。 另外,要感谢我的师兄陈仁海、陈健和刘珂,感谢他们在我的实习过程中给 我的帮助,在我的毕业设计工作过程中,他们给了我莫大的鼓励和悉心的指导, 我将永远铭记这段快乐的时光。 最后,感谢所有曾经给我帮助的人,谢谢你们! 学位论文评阅及答辩情况表 姓名 专业技术 是否博导 职 务 (硕导) 论 匿名评阅人1 文 匿名评阅人2 评 阅 人 所在单位 总体评价 ※ K A 姓名 专业技术 职务 主席 ,及宦灰 ,岁N‘誊 瓠撞 答 辩 委 员委 会 成 员 饔乞真 叛畸千 I 猷汁 别捌浚 、剐积箍 翻狲趋 是否博导 (硕导) 匙 是 是 是 员 所在单位 ’ , 靖南尺吾 山裔、犬嘻 山氖夫辱 J1 lji:欠学 答辩委员会对论 文的总体评价※ 备注 忿 答辩秘书 冰也欠 答辩 y肌j-,哆 日期 ※优秀为。A_;良好为“B”;合格为“C”;不合格为。D”.

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。