发明内容
本发明所要解决的技术问题是提供一种NAND FLASH控制器,该NAND FLASH控制器能够提高数据传输效率,并能够灵活兼容各种NAND FLASH芯片。
本发明的又一个目的是提供一种NAND FLASH控制器向NAND FLASH芯片写入数据的方法,该方法可降低向NAND FLASH芯片写入数据的复杂程度,提高数据传输效率。
本发明的再一个目的是提供一种NAND FLASH控制器在NAND FLASH芯片读取数据的方法,该方法可降低从读取数据的复杂程度,提高数据传输效率。
本发明涉及一种NAND FLASH控制器,包括总线时序接口、FLASH时序发生器、DMA数据传输通道,还包括:命令和地址数据传输通道、通道选择器、数据缓冲区、及逻辑控制器:所述DMA数据传输通道,连接所述逻辑控制器和所述通道选择器,用于传输信息数据;所述命令和地址数据传输通道,连接所述总线时序接口和所述通道选择器,用于传输命令和地址数据;所述数据缓冲区,用于接收系统总线通过总线时序接口传送的信息数据;所述控制寄存器,用于接收系统总线通过总线时序接口配置的工作参数;所述逻辑控制器,用于依据所述工作参数在所述数据缓冲区写入或读取上述信息数据;生产逻辑控制信号,发送到通道选择器;所述通道选择器,用于依据上述逻辑控制信号,接通DMA数据传输通道或命令和地址数据传输通道,传送数据。
优选的,还包括BCH编码/解码器和BCH结果寄存器:
所述BCH编码/解码器,用于对所述DMA数据传输通道传输的信息数据进行编码、解码,并将编码、解码结果发送到所述BCH结果寄存器;
所述BCH结果寄存器,用于寄存BCH结果数据。
所述逻辑控制器在所述BCH结果寄存器读取BCH结果数据。
优选的,,还包括:FLASH时序控制寄存器,用于调整所述FLASH时序发生器的时序。
优选的,所述数据缓冲区包括多片预设字节的静态随机存储器和预置字节的寄存器。
优选的,所述预设字节为512字节,所述预置字节为64字节。
本发明还涉及一种NAND FLASH控制器向NAND FLASH芯片写入数据的方法,将数据以BCH码字为单位,写入每BCH码字数据的步骤包括:传送命令和地址数据到NAND FLASH芯片;传送信息数据到NAND FLASH芯片的相应地址,同时对该信息数据进行编码;传送上述信息数据对应的文件系统信息到上述地址的下一相邻地址,同时对该文件系统信息进行编码;将上述编码得到的结果数据存储到上述下一相邻地址的下一相邻地址。
优选的,在传送信息数据到NAND FLASH芯片存储页的相应地址之前,还包括:系统总线将信息数据和文件系统信息写入所述NAND FLASH控制器的数据缓冲区;在所述数据缓冲区顺序读取该信息数据和文件系统信息。
优选的,系统总线将信息数据和文件系统信息写入所述NAND FLASH控制器的数据缓冲区具体为:系统总线将信息数据以512字节为单位,循环写入到所述NAND FLASH控制器的数据缓冲区的各静态随机存储器中;系统总线将上述信息数据对应的文件系统信息循环写入所述数据缓冲区的冗余寄存器。
优选的,所述NAND FLASH控制器采用命令和地址传输通道传输命令和地址数据。
优选的,所述NAND FLASH控制器采用DMA数据传输通道传输信息数据、文件系统信息、与校验位。
本发明又涉及一种NAND FLASH控制器在NAND FLASH芯片读取数据的方法,将数据以BCH码字为单位,读取每BCH码字数据的步骤包括:
传送命令和地址数据到NAND FLASH芯片;
读取NAND FLASH芯片存储页相应地址的信息数据到所述NAND FLASH控制器的数据缓冲区,同时对该信息数据进行解码;
读取上述地址的下一相邻地址内的文件系统信息至所述数据缓冲区,同时对该文件系统信息进行解码;
读取上述下一相邻地址的下一相邻地址内的校验位至所述数据缓冲区,同时对该校验位进行解码;
获取上述解码得到的结果数据,并根据该结果数据校正所述数据缓冲区中上述信息数据、文件系统信息、及校验位。
优选的,该方法还包括:如上述信息数据、文件系统信息、及校验位中出现的错误个数大于可校正的个数,生成错误信息。
优选的,所述NAND FLASH控制器采用命令和地址传输通道传输命令和地址数据。
优选的,所述NAND FLASH控制器采用DMA数据传输通道传输信息数据、文件系统信息、与校验位。
与现有技术相比,本发明具有以下优点:
本发明NAND FLASH控制器选用DMA数据传输通道传输信息数据,选用命令和地址数据传输通道传输命令和地址数据,将信息数据、命令和地址数据分开传输,避免在传输时对命令和地址数据进行转换操作,延误数据的传输,提高传输效率。同时,选取专用的数据传输通道传输命令和地址数据,不需在数据传输过程中对命令和地址数据进行转换,避免现有技术中将命令数据做成硬解析的方式,而无法兼容以后不断推出的命令数据的缺陷,使NAND FLASH控制器能够灵活地适应各种NAND FLASH芯片。
本发明将NAND FLASH芯片存储页格式设置为存储信息数据及其对应的文件系统信息、校验位的地址顺序排列。在NAND FLASH芯片写入或读取数据时,不需要发送特别的操作命令和地址用于改变地址指针,即可顺序地写入或读取信息数据、文件系统信息、校验位,便于BCH编/解码器进行编码、解码,极大的简化了在NAND FLASH芯片写入或读取数据的复杂程度,进一步提高数据传输效率。
具体实施方式
本发明NAND FLASH控制器选用DMA数据传输通道传输信息数据,选用命令和地址数据传输通道传输命令和地址数据,将信息数据、命令和地址数据分开传输。同时,本发明将NAND FLASH芯片存储页格式设置为存储信息数据及其对应的文件系统信息、校验位的地址顺序排列。NAND FLASH控制器在与NANDFLASH芯片进行数据交互时,不需发送特别的操作命令和地址用于改变地址指针,即可顺序地写入或读取信息数据、文件系统信息、校验位。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图2,为本发明第一实施例提供的NAND FLASH控制器示意图,该NANDFLASH控制器包括总线时序接口11、FLASH时序发生器14、DMA数据传输通道15、命令和地址数据传输通道16、通道选择器17、数据缓冲区18、逻辑控制器19、及控制寄存器23。
总线时序接口11与系统总线相连接,进行数据交互。交互的数据主要包括信息数据、命令和地址数据。总线时序接口11将系统总线传输的命令和地址数据通过命令和地址数据传输通道16、通道选择器17、FLASH时序发生器14写入NAND FLASH芯片。系统总线通过总线时序接口11将信息数据写入数据缓冲区18。
命令和地址数据传输通道16连接总线时序接口11和通道选择器17,专用于传输命令和地址数据。
数据缓冲区18存储总线时序接口11传送的信息数据。逻辑控制器19在数据缓冲区18读取上述信息数据,经DMA数据传输通道15、通道选择器17、FLASH时序发生器14写入NAND FLASH芯片。
数据缓冲区18可以528字节的码字为单位,用多片512字节的静态随机存储器(SRAM)来存储对应每个码字的信息数据,用64字节的寄存器来存储文件系统信息和BCH检验位。其组成如下表2所示:
512字节SRAM0 |
512字节SRAM1 |
512字节SRAM2 |
512字节SRAM3 |
64字节冗余寄存器 |
表2
逻辑控制器19生成逻辑控制信号,发送到通道选择器17。通道选择器17根据上述逻辑控制信号,接通DMA数据传输通道15或命令和地址数据传输通道16,将所选传输通道的数据传送至FLASH时序发生器14。
FLASH时序发生器14将接收到的数据写入NAND FLASH芯片。数据寄存器接收系统总线通过总线时序接口11配置的工作参数。
本发明选用DMA数据传输通道15传输信息数据,选用命令和地址数据传输通道16传输命令和地址数据,将信息数据、命令和地址数据分开传输,避免在传输时对命令数据进行转换操作,延误数据的传输,提高传输效率。同时,选取专用的数据传输通道传输命令和地址数据,不需对命令数据进行转换,使NAND FLASH控制器能够灵活地适应各种NAND FLASH芯片。
本发明NAND FLASH控制器还可包括BCH编码/解码器和BCH结果寄存器,用于对DMA数据传输通道15传送的信息数据进行编码、解码。
参照图3,为本发明第二实施例提供的NAND FLASH控制器示意图,该NANDFLASH控制器包括总线时序接口11、FLASH时序发生器14、DMA数据传输通道15、命令和地址数据传输通道16、通道选择器17、数据缓冲区18、逻辑控制器19、BCH编码/解码器20、BCH结果寄存器21、及控制寄存器23。
在往NAND FLASH芯片写入信息数据时,BCH编码/解码器20对该信息数据进行编码,将编码结果存储到BCH结果寄存器21。逻辑控制器19在BCH结果寄存器21读取该编码结果,通过DMA数据传输通道15写入到NAND FLASH芯片的相应的校验位。
从NAND FLASH芯片读取数据时,BCH编码/解码器20对该信息数据进行解码,将解码的结果保存在BCH结果寄存器21。逻辑控制器19在BCH结果寄存器21读取BCH结果数据,并根据BCH结果数据自动纠正错误。
在编码时,需要将每个码字的信息数据和其对应的文件系统信息依次送入BCH编码/解码器20,才能得到编码结果;在解码时,需要将每个码字的信息数据、文件系统信息和检验位依次送入BCH编码/解码器20才能得到解码结果。
BCH结果寄存器21可保存4个码字的编码/解码结果。4个码字的编码结果结构如下表3所示:
码字0编码结果 |
码字1编码结果 |
码字2编码结果 |
码字3编码结果 |
表3
4个码字的解码码结果也同样保存4组值。每组解码结果包含错误个数、错误地址、及错误值。如下表4所示;
错误个数 |
错误地址0 |
错误值0 |
错误地址1 |
错误值1 |
表4
BCH编码解码在BCH编码/解码器20的GF(213)域上进行,每组编码结果包含13*t位的冗余位。t为可纠正的错误个数。错误个数为BCH编码/解码器20通过解码找到的对应码字中包含的错误比特数,每个码字最多只能有t个错误。
参照图4,为本发明第三实施例提供的NAND FLASH控制器示意图,该NANDFLASH控制器包括总线时序接口11、FLASH时序发生器14、DMA数据传输通道15、命令和地址数据传输通道16、通道选择器17、数据缓冲区18、逻辑控制器19、BCH编码/解码器20、BCH结果寄存器21、FLASH时序控制寄存器22、及控制寄存器23。
FLASH时序控制寄存器22以系统总线时钟HCLK的周期为最小时间单位,保存片选使能信号的建立时间、写/读信号的有效宽度、片选使能信号的保持时间、命令/地址信号的建立时间、命令/地址信号的保持时间等时间值。
不同的NAND FLASH芯片的上述时间值各不相同,为了兼容所有的NANDFLASH芯片,NAND FLASH控制器灵活地配置上述时间值,以更好的兼容不同的NAND FLASH芯片。应用时,根据各NAND FLASH芯片的具体要求,配置FLASH时序控制寄存器22,FLASH时序控制寄存器22根据上述时间值调整FLASH时序发生器14的时序。
NAND FLASH控制器在传输数据时,系统总线首先通过总线时序接口11配置控制寄存器23设定各种工作参数,逻辑控制器19根据设定的工作参数控制各模块间协同工作,发出控制信号。通道选择器17根据控制信号接通命令和地址数据传输通道17,传送命令和地址数据到NAND FLASH芯片。在往NANDFLASH芯片写入数据时,系统总线过总线时序接口11将信息数据写入数据缓冲区18,逻辑控制器19从数据缓冲区18读出数据通过DMA数据传输通道15写入到NAND FLASH芯片,当传输完预设字节数据后,逻辑控制器19生成中断信息通知系统数据传输已经结束;从NAND FLASH芯片读取时,逻辑控制器19发出控制信号通过DMA数据传输通道15从NAND FLASH芯片中读取数据存储至数据缓冲区18,当传输完预设字节数据后,逻辑控制器19生成中断信息通知系统数据传输已经结束,系统总线再通过总线时序接口11从数据缓冲区18中读取数据。
因数据缓冲区18的多片SRAM和冗余积存器都是系统总线可寻址的,并且在地址上是连续的。多片SRAM的结构使对数据缓冲区18的写入或读取数据操作可以以码字为单位,进行乒乓方式的操作。参阅图5,为本发明向数据缓冲区18写入信息数据流程图,具体步骤如下:
步骤S501、系统总线通过总线时序接口11将信息数据写入数据缓冲区18的某一部分存储地址。如,系统总线将信息数据写入表2中SRAM0和SRAM1存储地址,并把相应的文件系统信息写入表2中的冗余寄存器的对应地址。
步骤S502、系统总线通过配置控制寄存器23启动逻辑控制器19将数据缓冲区18的上述部分存储地址存储的信息数据、文件系统信息和BCH结果寄存器21中编码得到的检验位写入NAND FLASH芯片,完成写入后,生成传输完成的中断。如,将表2中SRAM0和SRAM1存储地址存储的信息数据和对应的文件系统信息、检验位写入NAND FLASH芯片。
步骤S503、系统总线通过总线时序接口11将信息数据写入数据缓冲区18的另一部分存储地址。如,系统总线将信息数据写入表2中SRAM2和SRAM3存储地址。因为系统总线数据传输速率比较快,步骤S503要先于步骤S502完成。
步骤S504、在S502传输完成后,系统总线通过配置控制寄存器23启动将数据缓冲区18的上述另一部分存储地址存储的信息数据、文件系统信息和BCH结果寄存器21中编码得到的检验位写入NAND FLASH芯片,完成写入后,生成传输完成的中断,并转到步骤S501。如,将表2中SRAM2和SRAM3存储地址存储的信息数据和对应的文件系统信息、检验位写入NAND FLASH芯片。
此种乒乓操作的方式以BCH码字为单位进行数据传输,通过循环多次的配置控制寄存器23,加快数据的传输效率。并且乒乓操作的方式可较小对数据缓冲区18存储容量的要求,减小NAND FLASH控制器的面积,降低芯片成本。
以上为本发明NAND FLASH控制器的各实施例,下面详细介绍本发明NANDFLASH芯片数据存储格式。
为方便数据的写入和读取,本发明将NAND FLASH芯片存储页格式设置为存储信息数据及其对应的文件系统信息、校验位的地址顺序排列。如下表5,为本发明NAND FLASH芯片2K存储页的格式表:
表5
在表5中,每BCH码字的信息数据、文件系统信息、校验位顺序排列。在NAND FLASH芯片写入或读取数据时,不需要发送特别的操作命令和地址用于改变地址指针,只需顺序地写入或读取信息数据、文件系统信息、校验位,便于BCH编/解码器20进行编码、解码,极大的简化了在NAND FLASH芯片写入或读取数据的复杂程度,进一步提高数据传输效率。
基于上述NAND FLASH芯片存储页格式,本发明提供NAND FLASH控制器与NAND FLASH芯片的数据交互方法,该方法可降低从写入、读取数据的复杂程度,提高数据传输效率。下面以NAND FLASH控制器向NAND FLASH芯片写入1BCH码字数据,在NAND FLASH芯片读取1BCH码字数据为例,进行说明。
参阅图6,为本发明提供的NAND FLASH控制器向NAND FLASH芯片写入数据的方法流程图,具体步骤如下。
步骤S601、传送命令和地址数据到NAND FLASH芯片。
系统总线通过命令和地址数据传输通道16传送命令和地址数据至NANDFLASH芯片。
步骤S602、传送信息数据到NAND FLASH芯片存储页的相应地址,对该信息数据进行编码。
系统总线配置控制寄存器21的各项参数,逻辑控制器20通过DMA数据传输通道15读取数据缓冲区的信息数据,存储至NAND FLASH芯片存储页相应地址,同时BCH编码/解码器20对该信息数据进行编码。
参阅图7,图7为本发明NAND FLASH芯片写入数据示意图。包括数据缓冲区寄存器71、NAND FLASH芯片存储页72、BCH结果寄存器21。将数据缓冲区寄存器71内的信息数据0地址内的信息数据传送到NAND FLASH芯片存储页72中信息数据0地址内。同时将该信息数据发送到BCH编码/解码器20进行编码。
步骤S603、将上述信息数据对应的文件系统信息传送到NAND FLASH芯片中上述地址的下一相临地址,同时对该文件系统信息进行编码;
参见图7,传送数据缓冲区中冗余寄存器71内的文件系统信息0地址内的数据到NAND FLASH芯片存储页72内文件系统信息0地址内。由图7可见,NAND FLASH芯片存储页72中,信息数据0地址与文件系统信息0地址相邻,无需改变NAND FLASH芯片中的存储地址,自动将文件系统信息存储到该地址。同时,将该文件系统信息发送到BCH编码/解码器20进行编码,将编码结果存储到BCH结果寄存器21的码字0编码结果地址中。
步骤S604、将上述编码得到的结果数据继续存储到NAND FLASH芯片中上述下一相临地址的下一相临地址,完成一个BCH码字存储至NAND FLASH芯片过程。循环重复上述步骤,将数据顺序写入NAND FLASH芯片。
参见图7,将BCH结果寄存器21内码字0编码结果中的结果数据直接传送至NAND FLASH芯片存储页72的校验位0地址内。由图7可见,校验位0地址为文件系统信息0地址的下一相邻地址,无需改变NAND FLASH芯片中的存储地址,自动将该编码结果存储到该地址。
由上述步骤可知,在NAND FLASH芯片写入数据时,无需改变NAND FLASH芯片中的存储地址,即可顺序地写入信息数据、文件系统信息、及校验位,极大的简化了在NAND FLASH芯片写入数据的复杂程度,进一步提高数据传输效率。
参阅图8,为本发明提供的在NAND FLASH控制器在NAND FLASH芯片读取数据的方法流程图,具体步骤如下。
步骤S801、传送命令和地址数据到NAND FLASH芯片。
系统总线过命令和地址数据传输通道16传送命令和地址数据至NANDFLASH芯片。
步骤S802、系统总线配置控制寄存器21的各项参数,启动逻辑控制器19,通过DMA数据传输通道15读取NAND FLASH芯片存储页相应地址的信息数据,存储至数据缓冲区18,同时BCH解码器对该信息数据进行解码。
图9为本发明AND FLASH芯片读取数据示意图。包括数据缓冲区寄存器71、NAND FLASH芯片存储页72、BCH结果寄存器21。在NAND FLASH芯片存储页72的信息数据0地址内读取信息数据,并发送到数据缓冲区寄存器71的信息数据0地址内。同时将该信息数据发送到BCH编码/解码器20进行解码。
步骤S803、在NAND FLASH芯片存储页上述地址的下一相临地址读取文件系统信息,存储至数据缓冲区18,同时BCH编码/解码器20对该文件系统信息进行解码。
参见图9,NAND FLASH芯片的地址指针顺序移动到下一相邻位置,接着读取文件系统信息0地址的数据,传送至数据缓冲区寄存器71的文件系统信息0地址内。同时,将该文件系统信息发送到BCH编码/解码器20进行解码。
步骤S804、在NAND FLASH芯片存储页上述下一相临地址的下一相临地址读取校验位信息,存储至数据缓冲区18,同时BCH编码/解码器20对该校验位进行解码。
参见图9,NAND FLASH芯片的地址指针再顺序移动到下一相邻位置,读取校验位0地址的数据,传送至数据缓冲区寄存器71的校验位0地址内。同时,将该校验位发送到BCH编码/解码器20进行解码。
步骤S805、逻辑控制器19获取上述解码得到的结果数据,并根据该结果数据纠正数据缓冲区18中上述信息数据、文件系统信息、及校验位中的数据错误。循环重复上述步骤,在NAND FLASH芯片内顺序读取数据。
参见图9,在BCH结果寄存器21的码字0解码结果地址中读取结果数据,根据该结果数据,自动纠正码字中出现的错误。如上述信息数据、文件系统信息、及校验位信息中出现的错误个数大于可纠正个数,生成错误信息。
在NAND FLASH芯片读取数据时,无需改变NAND FLASH芯片中的存储地址,即可顺序地读取信息数据、文件系统信息、校验位,极大的简化了在NAND FLASH芯片读取数据的复杂程度,进一步提高数据传输效率。
以上是对本发明所提供的一种NAND FLASH控制器及其与NAND FLASH芯片数据交互方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。