一种nandflash控制器及其应用的制作方法

文档序号:6773241阅读:222来源:国知局
专利名称:一种nand flash控制器及其应用的制作方法
技术领域
本发明涉及存储控制器领域,特别涉及一种NAND FLASH控制器及其应用。
背景技术
闪存(FLASH)是一种电可擦除的非易失性半导体存储器。由于闪存的存储密度 大、功耗低、掉电数据不丢失以及抗震性好,在嵌入式设备领域已经非常普及。近年来,随着 闪存的存储密度进一步增加,单片存储容量达到8G字节以上,所以在很多场合已经开始逐 步取代传统磁盘。这也对闪存控制器的性能提出了更高的要求,为了更好的满足计算机系 统对存储性能的要求,迫切需要设计更高速的闪存控制器。常见的闪存有两种或非型(NOR)、与非型(NAND)。与非型闪存(NANDFLASH)的容 量更大,价格更低,多用于大容量数据存储,比如U盘、数码相机存储卡等。NAND FLASH芯 片的外部接口与NOR FLASH不同,本发明所述的NAND FLASH控制器仅可用于NAND FLASH。 后文中“闪存”一词也仅指NAND FLASH。NAND FLASH的基本操作有读、写、擦除。写操作也被称为编程操作。读和写操作 的基本单位是页,擦除操作的基本单位是块。目前市面常见的NAND FLASH的页大小为2K 字节或4K字节,每个块包含64个页或128个页。NAND FLASH的外部接口的地址线和数据 线是复用的,不能直接寻址。对NAND FLASH的读、写和擦除操作是通过发送命令的方式完 成的,一条命令包含多个步骤,以读操作为例,包括如下步骤发送页读命令字一,发送地址 信息,发送页读命令字二,等待NAND FLASH芯片将数据准备好,数据读出。NAND FLASH的这 种接口方式在一定程度上限制了系统的性能。另外,不同厂家生产的NAND FLASH芯片的命 令集不完全相同,即使同一厂家的不同型号的NAND FLASH的命令集也不完全相同,这就要 求NAND FLASH控制器具有兼容各种命令的能力。传统的NAND FLASH控制器的实现方式有两种,即软件方式和硬件方式。软件方式 通过微处理器上运行的驱动程序来发送命令,优点在于灵活性高、兼容性好,但是性能会受 到一定影响。硬件方式通过硬件逻辑来完成命令的发送,性能较好,但是由于各个厂家的闪 存芯片命令集的不兼容,并且NAND FLASH控制器很难在硬件上实现所有的命令,所以其兼 容性受限。

发明内容
本发明目的在于提供一种NAND FLASH控制器,该NAND FLASH控制器能够将NAND FLASH芯片与微处理器系统连接,使得微处理器系统可以对NAND FLASH芯片进行访问。该 NAND FLASH控制器还可以减少微处理器被中断的次数,在一定程度上提高系统性能。另外, 该 NANDFLASH控制器还提供对各种NAND FLASH芯片的兼容性。本发明涉及一种NAND FLASH控制器,包括总线接口逻辑、功能寄存器组、主控逻 辑、多用通路、闪存接口逻辑。
所述总线接口逻辑用于与系统总线连接。所述功能寄存器组用于接收系统总线发送来的控制参数。所述主控逻辑用于根据所述功能寄存器组所存放的控制参数来控制所述闪存接 口逻辑产生闪存芯片所需的操作时序。所述多用通路用于连接所述总线接口逻辑和所述闪存接口逻辑,以使微处理器能 够与所述闪存芯片进行命令字、地址和数据的传送;所述闪存接口逻辑在主控逻辑和/或多用通路的控制下,产生对闪存芯片的操作 时序,包括产生片选信号。其中,所述的功能寄存器组包括片选寄存器、潜伏命令寄存器、数据计数寄存器, 所述片选寄存器用于存放当前片选值,片选值指示了哪个闪存芯片当前被选中,所述潜伏 命令寄存器用于存放下一条将要发送到闪存的命令字,该命令字由所述主控逻辑在本次写 操作的数据传送步骤之后发送给闪存,不需要系统总线经由所述多用通路来传送,所述数 据计数寄存器用来预设本次操作预计将传入到闪存的数据量,一旦数据传送数量达到预 设的字节数,所述的主控逻辑将向闪存芯片发送潜伏命令寄存器中的命令字。所述的主控逻辑包括中断生成器。所述中断生成器根据闪存的忙闲信号来产生中 断信号,该中断信号用来通知系统总线上的微处理器进行后续操作。本发明所述NAND FLASH控制器不使用硬件产生对闪存芯片的各种操作命令,而是 由上层的驱动软件来控制命令的组织和发送,这样只需要简单修改驱动软件即可方便地与 各种不同的闪存芯片的命令集保持兼容。所述NAND FLASH控制器通过所述潜伏命令寄存 器和数据计数寄存器,减少了对微处理器的中断,并且同时支持非整页的数据读写操作。应用本发明所述NAND FLASH控制器对闪存芯片进行读写操作时,数据的传输既可 以由微处理器来执行,也可以由直接内存访问控制器(DMAC)来执行。使用DMAC来执行数 据传输的方式称为DMA方式。在非DMA方式下,命令、地址和数据都由微处理器来发送或接收,微处理器通过总 线接口逻辑,经由多用通路和闪存接口逻辑与闪存芯片进行交互。在DMA方式下,命令、地址由微处理器发送,数据由DMAC来传送。在DMA方式下, 执行闪存芯片写入操作时,为了能够减少微处理器被中断的次数,可以通过使用所述潜伏 命令寄存器和数据计数寄存器来让NANDFLASH控制器自动执行紧随数据之后的命令字。由 于闪存的页读操作过程的数据阶段之后没有后续命令字,所以页读操作不需要使用所述潜 伏命令寄存器。当闪存芯片由忙碌状态转到空闲状态时,所述中断发生器可以产生中断信号。该 中断信号可以通知微处理器进行后续操作。本发明的技术效果体现在本发明利用硬件功能部件,采用微处理器运行的驱动软件来组织和发送所需命 令,弥补了软件带来的性能损失,兼顾了硬件性能。使系统灵活性高、兼容性好。通过所述 的潜伏命令寄存器和数据计数寄存器来实现后续命令的自动执行,不需要微处理器干预, 减少了处理器开销,提高了性能;


图1为本发明的NAND FLASH控制器的一种实施实例的结构示意图;图2为本发明的功能寄存器组的构成;图3为本发明的应用实例;图4为本发明的实施实例提供的通过NAND FLASH控制器从闪存读取数据的流程图;图5为本发明的实施实例提供的通过NAND FLASH控制器采用DMA方式向闪存写 入数据的流程图。
具体实施例方式图1所示为本发明的NAND FLASH控制器的一种具体实施实例的结构示意图,该 NAND FLASH控制器101的具体实施由硬件来完成。如图1所示,NAND FLASH控制器101包括总线接口逻辑102、功能寄存器组103、 主控逻辑104、多用通路105、闪存接口逻辑106。所述总线接口逻辑102用于与系统总线109连接。所述功能寄存器组103用于接收并存储系统总线109发送来的信息。所述主控逻辑104用于根据所述功能寄存器组103所存放的信息来控制所述闪存 接口逻辑106的工作。所述多用通路105连接所述总线接口逻辑102和所述闪存接口逻辑106,用来传送 闪存107读写所需的命令字、地址和数据。所述闪存接口逻辑106在主控逻辑104和/或多用通路105的控制下,产生对闪 存芯片107的操作时序,包括产生片选信号108。所述的功能寄存器组103包括片选寄存器201、潜伏命令寄存器202、数据计数寄 存器203。如图2所示,本实例中的寄存器位宽都为32位。所述片选寄存器201用于存放当前片选值,片选值决定了哪个片选信号108有效, 即哪个闪存芯片107当前被选中。本实例中,利用片选寄存器201的低8位存放片选值。每 一位对应一个片选信号,一共可以控制8个片选信号。本实例中,片选值为“1”有效。例如, 如果片选值为“00000001”,则对应于第0位的片选信号有效;如果片选值为“00010000”,则 对应于第4位的片选信号有效。不允许多个片选信号同时有效。所述潜伏命令寄存器202用于存放下一条需要发送到闪存107的命令字,该命令 字由所述主控逻辑104在本次读写操作的数据传送步骤之后发送给闪存,不需要系统总线 109经由所述多用通路105来传送。本实例中,利用潜伏命令寄存器202中的低8位(第0 位到第7位)来存放命令字。利用潜伏命令寄存器202中的第8位来存放使能值,该使能 值决定了潜伏命令寄存器202当前是否启用。如果该使能值为“0”,则表示潜伏命令寄存器 202当前被禁用。如果该使能值为“1”,则表示潜伏命令寄存器202当前启用。所述数据计数寄存器203用来存放一个计数值,该计数值对写入到闪存的数据进 行递减计数,每写入一个字节的数据该计数值减一。该计数值在写操作之前应被设置为本 次写操作预计将写入到闪存的数据的字节数,一旦数据传送字节数达到预设的字节数,也 即计数值减为0时,所述的主控逻辑104将向闪存芯片107发送潜伏命令寄存器202中的命 令字。本实例中,利用数据计数寄存器的低16位(第0位到第15位)来存放计数值。本
6实施实例中,该计数值仅用于对写入操作进行计数。所述的主控逻辑104包括中断生成器1041。所述中断生成器1041根据闪存107 的忙闲信号来产生中断信号,该中断信号用来通知系统总线109上的微处理器执行后续相 关操作。本发明所述NAND FLASH控制器101不通过硬件产生对闪存芯片的各种操作命令, 而是由上层的驱动软件来控制命令的组织和发送,这样只需要简单修改驱动软件即可方便 地与各种不同的闪存芯片的命令集保持兼容。所述NAND FLASH控制器101通过所述潜伏 命令寄存器202和数据计数寄存器203,减少了对微处理器的中断,并且同时支持非整页的 数据读写操作。图3所示为本发明的NAND FLASH控制器101的一种应用实例,用以说明NAND FLASH控制器101的使用方法。如图3所示,所述NAND FLASH控制器101通过系统总线109 与一个包含微处理器302和直接内存访问控制器(DMAC) 303的微处理器系统301连接。该 微处理器系统301至少还包括RAM 302。NAND FLASH控制器101通过系统总线109接收 微处理器302发来的相关命令和配置,并转换为对闪存107的相应操作。数据的传输在RAM 和NAND FLASH控制器之间进行。数据的传输既可以由微处理器302来执行,也可以由直接 内存访问控制303来执行。使用直接内存访问控制器303来执行数据传输的方式称为DMA 方式。在不使用DMA方式时,命令、地址和数据都由微处理器302来执行发送或接收,微 处理器302通过总线接口逻辑109,经由多用通路105和闪存接口逻辑106与闪存芯片107 进行交互。在DMA方式下,命令、地址由微处理器发送,而数据由DMAC来传送。在DMA方式 下,执行闪存芯片写入操作时,为了能够减少微处理器被中断的次数,可以通过使用所述潜 伏命令寄存器202和数据计数寄存器203来让NAND FLASH控制器101自动执行紧随数据 之后的命令字。由于闪存的页读操作过程的数据阶段之后没有后续命令字,所以页读操作不需要 使用所述潜伏命令寄存器202。当闪存芯片由忙碌状态转到空闲状态时,所述中断发生器可以产生中断信号。该 中断信号可以通知微处理器进行后续操作,通常为查询闪存状态或者读取数据。图4所示为本发明的实施实例提供的通过NAND FLASH控制器从闪存读取数据的 流程图,具体步骤如下步骤401,微处理器通过总线接口逻辑,向片选寄存器写入片选值,选中对应的闪 存芯片;步骤402,微处理器通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存芯片 发送页读命令字一;步骤403,微处理器通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存芯片 发送地址信息;步骤404,微处理器通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存芯片 发送页读命令字二;步骤405,闪存芯片进入忙碌状态,将相应页地址处的页数据从存储介质读到内部
7页面寄存器;步骤406,一页数据读出到内部页面寄存器后,闪存芯片转入空闲状态,闪存接口 逻辑捕获这一状态变化,传递到主控逻辑,由主控逻辑中的中断发生器产生中断信号;步骤407,微处理器捕获到中断信号后通过总线接口逻辑,经由多用通路和闪存接 口逻辑从闪存读取所需数量的数据到RAM中。在该步骤中,微处理器也可以启动DMAC来读 取数据到RAM中;步骤408,微处理器通过总线接口逻辑,向片选寄存器写入0,取消对闪存芯片的 选中。另外,在步骤405至步骤406期间,以及在DMAC传输数据期间微处理器不需要参 与,从而可以使有限的微处理器资源可以用于处理其他事务。图5所示为本发明的实施实例提供的通过NAND FLASH控制器通过DMA方式向闪 存写入数据的流程图,具体步骤如下步骤501,微处理器通过总线接口逻辑,向片选寄存器写入片选值,选中对应的闪 存芯片;步骤502,微处理器通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存芯片 发送页编程命令字一;步骤503,微处理器通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存芯片 发送地址信息;步骤504,微处理器通过总线接口逻辑,向潜伏命令寄存器中写入页编程命令字 二,并向数据计数寄存器中写入即将要传输的数据字节数;步骤505,微处理器启动DMAC向闪存传送数据;步骤506,DMAC通过总线接口逻辑,经由多用通路和闪存接口逻辑向闪存写入一 定数量的数据,数据量应等于数据计数寄存器的值。每写入一个字节,数据计数寄存器的值 减一,直到减为零;步骤507,数据写入完成后,即数据计数寄存器的值减为零时,由主控逻辑将已经 存放在潜伏命令寄存器中的页编程命令字二发送给闪存;步骤508,闪存芯片转入忙碌状态,将数据从内部页寄存器写入到存储介质;步骤509,数据从内部页寄存器写入到存储介质完成后,闪存芯片转入空闲状态, 闪存接口逻辑捕获这一状态变化,传递到主控逻辑,由主控逻辑中的中断发生器产生中断 信号;步骤510,微处理器捕获到中断信号后通过总线接口逻辑,经由多用通路和闪存接 口逻辑读取闪存状态,用以判断写入是否成功;步骤511,微处理器通过总线接口逻辑,向片选寄存器写入0,取消对闪存芯片的 选中。另外,在步骤506至步骤509期间,微处理器不需要参与,从而可以使有限的微处 理器资源可以用于处理其他事务。以上通过优选的具体实施例对本发明做了说明性描述,本发明提出的NAND FLASH 控制器可以通过ASIC、FPGA或CPLD等来实现。本领域的技术人员可以根据需要增加读写 缓冲区等,并且可以根据需要设置寄存器各字段的位置和位宽。另外,针对不同的闪存芯片
8及不同的命令集,其流程也可能有所不同。所以,本发明可以有多种变化,这些变化都不能 认为是脱离本发明的设计思想,都应包含在本发明的范围内。
权利要求
一种NAND FLASH控制器,包括总线接口逻辑(102)、功能寄存器组(103)、主控逻辑(104)、多用通路(105)和闪存接口逻辑(106),其特征在于,所述总线接口逻辑(102)用于将NAND FLASH控制器通过系统总线(109)连接到微处理器系统(301),使NAND FLASH控制器能够与微处理器系统(301)进行通讯;所述功能寄存器组(103)通过总线接口逻辑(102)接收并存储微处理器系统(301)发送来的控制参数,用于提供给主控逻辑(104)来控制闪存芯片的工作;所述多用通路(105)用于连接所述总线接口逻辑(102)和所述闪存接口逻辑(106),以使微处理器系统(301)能够与所述闪存芯片直接进行命令字、地址和数据的传送;所述闪存接口逻辑(106)与闪存芯片连接,根据主控逻辑(104)和/或多用通路(105)发送的信息产生对闪存芯片的操作时序,实现对闪存芯片的操作。
2.根据权利要求1所述的一种NANDFLASH控制器,其特征在于,所述控制参数包括片 选值,用于指示当前被选中的闪存芯片,主控逻辑(104)根据该片选值,通过闪存接口逻辑 (106)选中相应的闪存芯片(107),其中,该片选值存储于所述功能寄存器组(103)的片选 寄存器中。
3.根据权利要求1或2所述的一种NANDFLASH控制器,其特征在于,所述控制参数还 包括发送到闪存芯片的命令字二和用于记录传入到闪存的数据量的计数值,其中,该命令 字二由所述主控逻辑(104)在本次写操作的数据传送完成之后发送给闪存,用于启动所述 闪存芯片开始工作;该计数值用于预设将传入到闪存的数据量,每传输一个字节,该计数值 自动减一,直到减为零即数据传送数量达到预设的字节数,其中,所述命令字二和计数值分 别存储于所述功能寄存器组(103)的潜伏命令寄存器和数据计数寄存器中。
4.根据权利要求1-3之一所述的一种NANDFLASH控制器,其特征在于,所述的主控逻 辑(104)包括中断生成器(1041),该中断生成器(1041)根据闪存(107)的忙闲信号来产生 中断信号,用于通知微处理器系统(301)闪存芯片已进入就绪状态,可以进行后续操作。
5.根据权利要求1-4之一所述的一种NANDFLASH控制器,其特征在于,所述的微处理 器系统(301)包括微处理器(302)、RAM(304)和直接内存访问控制器(303)。
6.根据权利要求5所述的一种NANDFLASH控制器,其特征在于,所述的命令、地址和数 据均由微处理器(302)来执行发送或接收,微处理器(302)通过总线接口逻辑(109),经由 多用通路(105)和闪存接口逻辑(106)与闪存芯片(107)进行交互。
7.根据权利要求5所述的一种NANDFLASH控制器,其特征在于,所述的命令、地址由微 处理器(302)发送,而数据由直接内存访问控制器(303)来传送。
8.根据权利要求1-7之一所述的一种NANDFLASH控制器,其特征在于,执行闪存芯片 写入操作时,通过使用所述潜伏命令寄存器和数据计数寄存器让NAND FLASH控制器自动执 行紧随数据之后的命令字,以减少微处理器被中断的次数。
9.应用上述权利要求1-8之一所述的NANDFLASH控制器进行闪存读取数据的方法,具 体步骤如下(1)微处理器系统(301)通过总线接口逻辑(102),向片选寄存器写入片选值,选中对 应的闪存芯片(107),并经由多用通路(105)和闪存接口逻辑(106)向所述闪存芯片(107) 分别发送页读命令字一、地址信息和页读命令字二 ;(2)所述闪存芯片(107)进入忙碌状态,将相应页地址处的页数据从存储介质读到内部页面寄存器;(3)一页数据读出到内部页面寄存器后,所述闪存芯片(107)转入空闲状态,所述主控 逻辑(104)中的中断发生器产生中断信号;(4)微处理器系统(301)捕获到中断信号后通过总线接口逻辑(102),经由多用通路 (105)和闪存接口逻辑(106)从闪存读取所需数量的数据到微处理器系统(301)的RAM中, 或者通过微处理器系统(301)中的直接内存访问控制器(303)来读取数据到RAM中;(5)微处理器系统(301)通过总线接口逻辑(102),向片选寄存器写入0,取消对闪存芯 片(107)的选中,完成对闪存数据的读取。
10.应用上述权利要求1-8之一所述的NAND FLASH控制器向闪存写入数据的方法,包 括如下具体步骤(1)微处理器系统(301)通过总线接口逻辑(102),向片选寄存器写入片选值,选中对 应的闪存芯片(107),经由多用通路(105)和闪存接口逻辑(106)向所述闪存芯片(107)分 别发送页编程命令字一、地址信息,并向潜伏命令寄存器中写入页编程命令字二,向数据计 数寄存器中写入即将要传输的数据字节数;(2)微处理器启动微处理器系统(301)的直接内存访问控制器(303)向闪存传送数据;(3)直接内存访问控制器(303)通过总线接口逻辑(102),经由多用通路(105)和闪存 接口逻辑(107)向闪存芯片(107)写入一定数量的数据,数据量应等于数据计数寄存器的 值,每写入一个字节,数据计数寄存器中的计数值自动减一,直到减为零;(4)数据写入完成后,即数据计数寄存器的值减为零时,由主控逻辑(104)将潜伏命令 寄存器中的页编程命令字二发送给闪存芯片(107);(5)闪存芯片(107)转入忙碌状态,将已暂存于内部页寄存器的数据写入到存储介质;(6)数据从内部页寄存器写入到存储介质完成后,闪存芯片(107)转入空闲状态,闪存 接口逻辑捕(106)获这一状态变化,传递到主控逻辑(104),由主控逻辑(104)中的中断发 生器(1041)产生中断信号;(7)微处理器系统(301)捕获到中断信号后通过总线接口逻辑(104),经由多用通路 (105)和闪存接口逻辑(106)读取闪存状态,用以判断写入是否成功。(8)微处理器系统(301)通过总线接口逻辑(104),向片选寄存器写入0,取消对闪存芯 片(107)的选中,完成向闪存芯片(107)写入数据。
全文摘要
本发明公开了一种NAND FLASH控制器,包括总线接口逻辑、功能寄存器组、主控逻辑、多用通路和闪存接口逻辑,所述总线接口逻辑用于将控制器通过系统总线连接到微处理器系统;所述功能寄存器组通过总线接口逻辑接收并存储微处理器系统发送来的控制参数;所述多用通路用于连接所述总线接口逻辑和所述闪存接口逻辑,以使微处理器系统能够与所述闪存芯片进行直接通讯;所述闪存接口逻辑与闪存芯片连接,根据主控逻辑和/或多用通路发送的信息产生对闪存芯片的操作时序,实现对闪存芯片的控制操作,本发明通过所述的潜伏命令寄存器和数据计数寄存器来实现后续命令的自动执行,不需要微处理器干预,减少了处理器开销,提高了性能。
文档编号G11C16/06GK101958152SQ201010513438
公开日2011年1月26日 申请日期2010年10月19日 优先权日2010年10月19日
发明者冯丹, 刘景宁, 王柳峥, 申风有, 秦亦, 童薇, 胡洋 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1