一种大容量flash固存控制器的制作方法

文档序号:6782729阅读:215来源:国知局

专利名称::一种大容量flash固存控制器的制作方法
技术领域
:本发明属于FLASH存储器领域,涉及一种大容量FLASH固态存储器的控制器。
背景技术
:快速擦写存储器FLASH是目前性能价格比和可靠性最高的可擦写、非易失存储器。大容量FLASH固存是一类非常复杂的存储器件,其复杂性体现在存储体结构复杂和功能时序复杂。常用的大容量FLASH固存,其存储体往往由数据字节、信息字节、半页、页、块等不同层次的存储结构构成;其功能一般包括全片擦除、块擦除、页编程、读状态、读ID、读数据、读信息等;其时序基本上由命令操作、地址操作、数据操作、等待操作、查询操作等步骤组成。更特殊的是,由于存储容量大,FLASH供应商不保证出厂的芯片没有缺陷,而需要使用者在应用过程中自行识别有缺陷的存储区,并做出相应的处理。由于大容量FLASH是以块为最高的存储区单位(整个存储体由若干存储块组成,每个存储块包括若干个存储页,每个存储页含有如干存储字节),所以一般对有缺陷的存储区也是按块来处理。因此,坏块管理是大容量FLASH应用中的一个重点和难点。现有的FLASH固存控制器主要由主机接口(包括命令寄存器、地址緩存等)、CPU、数据存储器(包括ROM和RAM)以及FLASH接口组成,这些FLASH固存控制器往往都只注重兼容多种主机通信协议、支持多种FLASH接口,却忽视了数据传输中产生的错误以及FLASH本身出现的缺陷,如专利号为US2008086631,名称为FLASHMEMORYCONTROLLERCONTROLLINGVARIOUSFLASHMEMORYCELLS的美国专利公开的一种FLASH固存控制器,该种固存控制器数据纠错能力差,且对FLASH固存本身存在的缺陷无法处理,容易发生数据错误,不能满足航天军工的高可靠性要求。
发明内容本发明的技术解决问题是克服现有技术的不足,提供了一种纠错能力强、且能够自动处理FLASH坏块的高可靠性大容量FLASH固存控制器。本发明的技术解决方案是一种大容量FLASH固存控制器,包括微控制器接口、FLASH接口、数据緩存单元、校验码緩存单元、校验码产生与纠检错单元,还包括坏块自动处理单元和双緩存控制单元,其中微控制器接口与微控制器进行数据通信;FLASH接口与FLASH进行数据通信;数据緩存单元存储需要传输的数据;校验码緩存单元存储与数据緩存单元存储的数据相对应的校验码;校验码产生与纠检错单元经微控制器接口接收外部微控制器传来的数据,根据传来的数据产生校验码,并将所述数据和校验码送至双緩存控制单元;对双緩存控制单元传来的数据进行纠检错后经微控制器接口送至外部微控制器;坏块自动处理单元自动识别片外FLASH存储器出现的坏存储块并为其分配替换块,保证对片外FLASH存储器的正常读写才喿作,无需用户方进行任何操作;双緩存控制单元与微控制器接口、FLASH接口或坏块自动处理单元通信,实现对数据緩存单元和校验码緩存单元的数据写入或读取操作。所述的双緩存控制单元的工作方式为当面向微控制器进行数据操作时,该单元同时对数据緩存和校验码緩存进行操作;当面向片夕卜FLASH存储器进行正常数据操作时,该单元对数据緩存和校验码緩存依次顺序操作;当面向片外FLASH存储器进行坏块处理时,该单元只对数据緩存和校验码緩存中的一个进行操作。所述的坏块自动处理单元对外部FLASH存储器出现的坏块进行处理的方法为(1)建立坏块信息表,用于记录坏块和替换块的地址映射关系;(2)设置坏块信息记录指针,用于指示当前遇到的坏块记录位置,起始指向为坏块信息表的首记录;设置坏块信息操作指针,用于指示当前正在使用的坏块及与其对应的替换块,起始指向与坏块信息记录指针的起始指向相同;设置最新替换块寄存器,用于保存最新分配的替换块的地址;(3)当存储器出现坏块时,记录该坏块的地址,同时为该坏块指定替换块,将坏块及其替换块的地址添加至坏块信息表中,最新替换块寄存器指示所述替换块的地址;替换块的分配从存储器的最高的块地址开始向最低的块地址依次递减;(4)若所述替换块也为坏块,则跳过所述替换块重新分配新的替换块,替换块为坏块的不再添加至坏块信息表中,最新替换块寄存器指示所述新替换块的地址并用其替换坏块信息表中的相应记录;(5)坏块信息记录指针指向下一记录位置,坏块信息操作指针指向当前遇到的坏块及其替换块的记录位置,若当前操作块未出现在坏块信息表的记录中,则坏块信息操作指针保留当前指示位置。(6)当坏块的数量达到了所能容忍的最大坏块个数或替换块的地址达到了坏块处理能力上限地址时,提示坏块数量溢出,无法继续处理。所述的最低的块地址为坏块处理能力上限地址。所述的坏块处理能力上限地址的确定方法为坏块处理能力上限地址-存储器最高位地址-所能容忍的最大坏块个数+1,其中所能容忍的最大坏块个数由用户设定。所述的FLASH接口具有扩展功能,可以携带256个备份FLASH。本发明与现有技术相比的优点在于(1)本发明控制器通过双緩存控制单元将数据和EDAC才交验码存入片外的FLASH,或者通过双緩存控制单元将FLASH内的数据和校验码取出,存入緩存寄存器堆后进行数据纠检错,可以自动完成与片外FLASH存储器的数据高可靠性存储和读取;(2)本发明控制器可以对FLASH的坏块进^f亍自动处理,识别FLASH中的坏存储块,并为坏块分配合适的替换存储块,根据坏块信息指导FLASH的操作,有效的克服了由于FLASH固存本身固有的缺陷造成的数据存储错误,进一步提高了可靠性;(3)本发明控制器对FLASH坏块进行管理时,通过建立坏块信息表,用于记录坏块和替换块的地址映射关系,并且替换块的分配从存储器的最高块地址开始向最低块地址依次递减,与正常数据操作的地址完全独立开,使得某个坏块的替换操作不会影响到后续其他存储块的地址映射,从而简化了坏块处理的操作,减少了硬件资源的占用,提高了坏块处理的速度;(4)本发明控制器对FLASH坏块的处理能力可由用户4艮据实际情况确定,操作灵活、简便;(5)本发明控制器可以携带多达256个备份FLASH,具有很强的扩展性。图1为本发明大容量FLASH固存控制器结构原理框图;图2为本发明大容量FLASH固存控制器的实际应用示意图;图3为本发明大容量FLASH固存控制器的坏块管理流程框图;图4为本发明大容量FLASH固存控制器坏块管理示意图一;图5为本发明大容量FLASH固存控制器坏块管理示意图二;图6为本发明大容量FLASH固存控制器坏块管理示意图三;图7为本发明大容量FLASH固存控制器编程操作的流程图;图8为本发明大容量FLASH固存控制器坏块数据转移操作示意图;图9为本发明大容量FLASH固存控制器读操作的流程图。具体实施例方式如图1所示,为本发明大容量FLASH固存控制器的原理框图,包括微控制器接口、FLASH接口、数据緩存单元、校验码緩存单元、校验码产生与纠检错单元、坏块自动处理单元和双緩存控制单元,其中微控制器接口与微控制器进行数据通信;FLASH接口与FLASH进行数据通信;数据緩存单元存储需要传输的数据;校验码緩存单元存储与数据緩存单元存储的数据相对应的校验码;校验码产生与纠检错单元经微控制器接口接收外部微控制器传来的数据,根据传来的数据产生校验码,并将所述数据和校验码送至双緩存控制单元;对双緩存控制单元传来的数据进行纠才企错后经孩t控制器接口送至外部耀:控制器。坏块自动处理单元自动识别片外FLASH存储器出现的坏存储块并为其分配替换块,保证对片外FLASH存储器的正常读写操作,无需用户方进行任何操作。双緩存控制单元与微控制器接口、FLASH接口或坏块自动处理单元通信,实现对数据緩存单元和校验码緩存单元的数据写入或读取操作。当面向微控制器进行数据操作时,双緩存控制单元同时对数据緩存和校验码緩存进行操作;当面向片外FLASH存储器进行正常数据操作时,双緩存控制单元对数据緩存和校验码緩存依次顺序操作;当面向片外FLASH存储器进行坏块处理时,双緩存控制单元只对数据緩存和校验码緩存中的一个进行操作。图2为本发明为控制器实际应用的示意图,由微控制器对大容量FLASH固存控制器进行控制,实现对后一级的FLASH芯片进行读、写和擦除操作。当后一级所接的FLASH芯片个数大于8块而小于256块时可以接一个译码器以实现对FLASH的控制。微控制器可以选择MCS51系列或与其兼容的控制芯片。(一)数据保存大容量FLASH固存控制器的核心功能是数据的保存,而数据的保存则是由双緩存控制单元进行管理。数据的保存功能包括片内的凄t据緩存和FLASH数据存储两个方面。下面以一个128Kx8bit存储容量、8192个存储块的FLASH为例说明本发明控制器的工作过程。本发明采用512x8比特容量的数据緩存寄存器堆,用于暂时保存来自片外微控制器的字节数据。在双緩存控制单元把数据保存到数据緩存的同时,校验码产生与纠检错单元产生的相应校验码则被双緩存控制单元暂时保存到校验码緩存寄存器堆,其容量也是512x8比特。数据緩存寄存器堆是本控制器的特殊功能寄存器,可以被片外的微控制器直接寻址访问。另外相对于FLASH而言,数据緩存寄存器堆和校验码緩存寄存器堆的功能又相当于FIFO。来自微控制器的数据存满了512字节的数据之后,通过双緩存控制单元将被转存到FLASH中的某奇数存储页;与之相应的512字节校验码则通过双緩存控制单元被转存到随后的偶数页。(二)纠检错本发明大容量FLASH固存控制器能够进行数据的纠检错处理。纠检错电路采用汉明码,该编码具有纠一检二的能力。对于8位的数据,一般的汉明码纠检错需要4位的校验码,其功能是如果总共12位的数据和校验码中只有一位数据错误,则纠检错电路能够输出正确的数据;如果有两位数据错误,纠检错电路能够检查该数据存在错误,但无法纠正。为了进一步提高本控制器的纠检错能力,也为了便于校验码的存储操作,本电路采用双8,4,4的改进型汉明码纠检错方式,即将8位数据分成高4位和低4位两组;每组分别进行汉明码的编解码,每组各自需要4位校验码。本电路的纠检错方案总共需要8位校-睑码,其功能是如果总共16位的数据和校验码中只有一位数据错误,则纠检错电路能够输出正确的数据;如果高4位数据及其相应的4位校验码中有一位数据错误,而且低4位数据及其相应的4位校验码中也有一位数据错误,则纠检错电路还能够输出正确的数据;如果总共16位的数据和校验码中有三位及以上数据错误,纠检错电路能够冲全查该数据存在错误,但无法纠正。如果错误数据无法纠正,本电路会产生一个中断请求信号。微控制器在进入中断服务程序后,需要对本电路的命令寄存器(属于FLASH接口中的特殊功能寄存器,具体见下文)清零,以撤除中断请求。一旦出现数据错误无法纠正,微控制器将整批数据(即整个存储块的数据)都舍弃不用。(三)坏块自动管理大容量FLASH固存在出厂时不保证没有坏的存储块。对坏块的管理是本发明控制器设计中的一大难点。如图3所示,为本发明坏块处理方法的原理框图。首先建立坏块信息表,用于记录坏块和替换块的地址映射关系,并在信息表中设置坏块信息记录指针,用于指示当前遇到的坏块记录位置,起始指向为坏块信息表的首记录;设置坏块信息操作指针,用于指示当前正在使用的坏块及与其对应的替换块,起始指向与坏块信息记录指针的起始指向相同;设置最新替换块寄存器,用于保存最新分配的替换块的地址;当存储器出现坏块时,记录该坏块的地址,同时为该坏块指定替换块,将坏块及其替换块的地址添加至坏块信息表中,最新替换块寄存器指示所述替换块的地址;替换块的分配乂人存储器的最高的块地址开始向最低的块地址(坏块处理能力上限地址)依次递减;若所述替换块也为坏块,则跳过所述替换块重新分配新的替换块,替换块为坏块的不再添加至坏块信息表中,最新替换块寄存器指示所述新替换块的地址并用其替换坏块信息表中的相应记录;随后坏块信息记录指针指向下一记录位置,坏块信息操作指针指向当前遇到的坏块及其替换块的记录位置,若当前操作块未出现在坏块信息表的记录中,则坏块信息操作指针保留当前指示位置。当坏块的数量达到了所能容忍的最大坏块个数或替换块的地址达到了坏块处理能力上限地址时,提示坏块数量溢出,无法继续处理。坏块处理能力上限地址的确定方法为坏块处理能力上限地址-存储器最高位地址-所能容忍的最大坏块个数+1,其中所能容忍的最大坏块个数由用户设定。通过研究发现,该128Mx8比特FLASH产品出厂时的坏块数量一般在80块到130块之间。结合FLASH的备份方案和存储量的需求,本电路设计方案将可接受的坏块总数设定为255块,即如果某片FLASH的坏块数达到255,则微控制器指示本电路启用另一片名"除的FLASH。大容量FLASH固存出厂时,在每个存储块中固定页的固定信息位保留有坏块的标志。但一旦该FLASH经过块擦除或者页编程操作,原有的坏块标志就会被破坏。出于整体质量的考虑,在装机或者系统正式使用之前,用户会对购买来的FLASH进行验收测试或者系统验证。因此,本控制器不对FLASH的初始坏块信息进行查询。本控制器对坏块的管理采用坏块信息表,包括坏块地址列表和替换块地址列表,总容量为255x26比特(坏块地址和替换块地址各13位)。坏块管理的重点是替换块的分配。本控制器坏块自动处理单元分配替换块的原则是替换块地址从8191开始(最低的地址是0)依次递减;如果某备选替换块也损坏,则跳过该地址继续分配;损坏了的替换块不列入坏块地址列表;如果最新的替换块地址等于7937(即8191-255+1),则表示坏块数量溢出。坏块的管理需要一个8位的坏块信息表记录指针,用于指示坏块信息表当前可以使用的坏块记录位置;需要一个8位的坏块信息表操作指针,表示当前正在使用的坏块及其替换块;需要一个块分类标志信号,表示当前进行编程/读操作的是正常的存储块还是替换块;需要设计一个13位的最新替换块寄存器,用于保存最新分配的替换块地址。图4、图5和图6是坏块自动管理的处理过程示意图。图4已经记录了3个坏块的地址(用十进制表示)10、125和462。按照替换块分配的方案,第一个坏块的替换块地址为8191,其后依次为8190和8189。记录指针指到坏块信息表第4个存储位置,表明下一个新的坏块地址保存到该位置。操作指针指到第2个存储位置,如果此时块分类标志信号表示当前进行编程/读操作的是替换块,那么当前操作的存储块的地址为8190。最新替换块寄存器记录了最后一个被分配了的替换块是8189。在图4的基础上,如果8190存储块在才喿作中出现损坏,那么需要为125存储块重新分配替换块按照最新替换块寄存器记录的地址递减即可。而最新替换块寄存器也需要相应地更新。但是替换块是坏块则不需要记录到坏块地址列表中。如图5所示。在图5的基础上,如果出现新的坏块(如500),那么需要为其分配替换块(如8187):按照最新替换块寄存器记录的地址递减即可。而最新替换块寄存器也需要相应地更新。坏块地址和替换块地址都记录到坏块信息表中的第4个存储位置,记录指针则指向第5个存储位置(表明该位置还没有记录信息,是下一个可用的记录位置)。如图6所示。如果坏块数量达到255,则由微控制器决定是否启用备份。当微控制器发出坏块数量查询时,用8192减去最新替换块的地址就可以得到当前的坏块数量。而判断坏块数量是否溢出,则只需要看最新替换块寄存器保存的数值是否等于7937。坏块信息表存储的数据在上电复位后为全0。(四)微控制器接口1.特殊功能寄存器本控制器的特殊功能寄存器是片外微控制器可以直接寻址访问的,包括命令寄存器、状态寄存器、坏块数量寄存器、备份选择寄存器、块地址寄存器、数据緩存寄存器堆等。表1为这些寄存器的地址表1特殊功能寄存器的地址列表<table>tableseeoriginaldocumentpage12</column></row><table>本发明控制器中所有特殊功能寄存器位宽均为8位,下面将对每个寄存器数据位的功能加以说明。(1)状态寄存器SR初始态为OOH,如果某一位为"1",则表示该状态有效。(MSB)(LSB)<table>tableseeoriginaldocumentpage13</column></row><table>BNF(SR.7):坏块数量达到255时的溢出标志,更换备份FLASH之后将归0。ERR(SR.6):校验码产生与纠检错单元无法纠正错误数据标志,回到闲置工作状态后将归0。ERC(SR.5):输入命令寄存器的命令无法识别,输入正确的命令后将归0。EF(SR.2):FLASH擦除操作完成标志,回到闲置工作状态后将归0。RF(SR.1):FLASH读操作完成标志,回到闲置工作状态后将归0。WF(SR.O):FLASH编程完成标志,回到闲置工作状态后将归0。(2)块地址高位寄存器MAR初始态为OOH。(MSB)(LSB)XXXA12A11A10A9A8FLASH块地址的12~8位地址寄存器<(3)块地址低位寄存器LAR初始态为OOH。(MSB)(LSB)<table>tableseeoriginaldocumentpage13</column></row><table>FLASH块地址的7~0位地址寄存器。(4)命令寄存器CR初始态为OOH,如果某一位为"1",则表示该命令有效c(MSB)(l_SB)<table>tableseeoriginaldocumentpage14</column></row><table>ERS(CR.2):启动FLASH擦除操作命令。RD(CR.1):启动FLASH读操作命令。PRG(CR.O):启动FLASH编程操作命令。(5)备份选择寄存器BR初始态为OOH。如果不多于8片^f分FLASH,可以用FCEN直接控制FLASH的片选;由于FLASH的片选是低电平有效,所以BR与FCEN为互补逻辑,若BR某一位为"1",则FCEN的对应位为"0"。如果多于8片备份FLASH,需要外接译码电路;由于BR与FCEN为互补逻辑,若微控制器的备份选择采用正逻辑编码,则片外译码电路需要进行反逻辑的译码。(MSB)(LSB)<table>tableseeoriginaldocumentpage14</column></row><table>(6)坏块数量寄存器BNR初始态为00H,每次新启用一片FLASH时将该寄存器清零。(7)数据緩存寄存器堆200H为数据緩存寄存器堆的首地址,3FFH为其尾地址。对于FLASH而言,该寄存器堆的功能则相当于FIFO。2.备份选择操作本FLASH控制器可以根据要求选择256只备份FLASH芯片中的任一只进行操作。对于本电路的备份选择寄存器(其地址编码为004H),如果备份FLASH不多于8片,则该寄存器的每一位对应一只FLASH芯片,高电平表示选择有效。如果备f分FLASH超过8片,用户可以采用8位编码加以区别,该8位编码可以通过片外微控制器直接写入备份选择寄存器;并且需要对FCEN信号进行相应的i奪码,以产生FLASH的片选信号。在三种情况下微控制器需要对备份选择寄存器进行写操作。第一种情况是在上电之后,微控制器必须通过本FLASH控制器选择一个FLASH。第二种情况是微控制器可以通过查询状态寄存器的最高位来获知当前的FLASH坏块数量已经达到255,必须要选择另一个FLASH。第三种情况是微控制器通过查询坏块数量来提前预判需要选择另一个FLASH。微控制器可以通过对FLASH备份选择寄存器的读操作来查询当前的^f分选择情况。3.编程操作本FLASH控制器电路所对应的FLASH容量为128Mx8位,共分为8192个存储块,每块分为32个存储页,每页能存储512字节数据(另外还可以存储16字节信息)。为了便于进行页编程操作,本控制器的数据緩存寄存器堆容量设计为512字节。另外还设计了512字节的校验码寄存器堆。本方案定义数据存在奇数页,校验码存在偶数页。所以FLASH每个存储块可以存储16x512字节的数据。由于孩i控制器需要批处理的数据量太大,需要按照块的方式来存储。所以每批数据的存储需要进行16次页编程才能完成。编程操作算法如下(1)分两次往FLASH块地址寄存器中写入需要编程的块地址(先写高5位,后写低8位);(2)往数据緩存寄存器堆中写数据;(3)往命令寄存器中写"01H",发出编程命令;(4)读状态寄存器,查询FLASH页编程的结果,如果编程过程中发现坏块数量溢出,则状态寄存器最高位变为"1",如果页编程结束(包括数据页和校验码页),则状态寄存器最低位变为"1";(5)查询到页编程结束后,微控制器将命令寄存器改写为"00H",使本控制器和FLASH进入闲置状态,状态寄存器除了最高位保持当前电平外,其余位均置为低电平;(6)重复第2步到第5步,直到存储完16页数据。4.读操作微控制器每次批处理读数据需要分16次才能完成每次从FLASH中读取1页数据和1页校验码。读FLASH操作算法如下(1)分两次往FLASH块地址寄存器中写入需要读的块地址(先写高5位,后写低8位);(2)往命令寄存器中写"02H",发出读FLASH命令;(3)读状态寄存器,查询FLASH页读操作的结果,如果读操作过程中发现坏块数量溢出,则状态寄存器最高位变为"1",如果页读操作结束(包括数据页和4吏验码页),则状态寄存器次〗氐位变为"1";(4)查询到页读操作结束后,微控制器可以直接从数据緩存寄存器堆中读取数据,校验码产生与纠检错单元在每次读取数据时都会进行校验和纠正,如果数据无法纠正,校验码产生与纠检错单元会产生一个独立的中断信号,微处理器监测到该中断后会进入中断服务程序,然后将命令寄存器改写为"00H",放弃该存储块的数据,并且校验码产生与纠检错单元中断恢复正常;(5)512字节的数据读完后,微控制器将命令寄存器改写为"00H",使本控制器和FLASH进入闲置状态,状态寄存器除了最高位保持当前电平外,其余位均置为低电平;(6)重复第2步到第5步,直到读完16页数据。5.擦除操作本电路配套的FLASH只支持块擦除。微控制器每次对存储块进行编程操作前,需要对该块进行擦除操作。擦除FLASH操作算法如下(1)分两次往FLASH块地址寄存器中写入需要读的块地址(先写高5位,后写低8位);(2)往命令寄存器中写"04H",发出擦除FLASH命令;(3)读状态寄存器,查询FLASH页读操作的结果,如果擦除操:作过程中发现坏块数量溢出,则状态寄存器最高位变为"1",如果擦除操作结束,则状态寄存器最低的第3位变为"1";(4)查询到擦除操作结束后,微控制器将命令寄存器改写为"00H";使本控制器和FLASH进入闲置状态,状态寄存器除了最高位保持当前电平外,其余位均置为低电平。6.读坏块数量操作微控制器直接从坏块数量寄存器中读出数据。(五)FLASH接口大容量FLASH固存控制器可以对FLASH的才喿作包括页编程、片选控制的页读、块擦除三种。(六)主要工作状态1.编程梯:作本发明控制器采用页编程的方式存储数据和校验码数据存到奇数页,校验码存到随后的偶数页。微控制器发出的起始地址是存储块的地址,本电路根据微控制器对同一存储块连续进行编程的次数来产生存储页的地址。一次编程包括两个阶段首先对数据进行页编程,数据编程正确后再进行校验码编程。编程操作的流程如图7所示。对FLASH的编程有4种情况。第一种情况M始地址是好块,并且在编程过程中没有出现错误。第二种情况M始地址是好块,但在编程过程中出现错误,则需要更新坏块列表(增加坏块并更新记录指针)、更新替换块列表(增加替换块并更新操作指针),在坏块数量不溢出的情况下,然后对操作指针所指的替换块进行编程操作。第三种情况是起始地址是坏块,在对其替换块的编程过程中没有出现错误。第四种情况是起始地址是坏块,但对其替换块的编程过程中出现错误,则需要更新替换块列表(用最新替换块地址减去1得到的地址来替换当前操作的替换块地址),在坏块数量不溢出的情况下,然后对操作指针所指的替换块进行编程操作。当编程出现错误时,表明该存储块已经损坏,需要将已经存储的内容转移到替换的存储块里去。数据转移包括两部分首先是将当前页的存储内容转存到替换块对应的页,其过程如图7所示;其次是逐页将坏块上其他页的存储内容先读回到緩存寄存器堆并转存到替换块对应的页,其过程如图8所示。2.擦除操作本发明控制器采用块擦除的方式进行FLASH的擦除操作。擦除的流程如图3所示。如果微处理器要求擦除的是坏块,则实际对该坏块的替换块进行擦除操作。当原来的好块擦除出现错误时,表示该存储块已经损坏,需要将其地址增加到坏块列表,并分配替换块,然后对替换块进行擦除操作。当替换块擦除出现错误时,需要重新分配该坏块的替换块,然后对新的替换块进行擦除操作。3.读操作本发明控制器对FLASH的读操作釆用片选控制的页读取方式读出512字节数据后,利用片选信号中断读操作。读操作的流程如图9所示。微控制器发出的起始地址是存储块的地址,本电路根据微控制器对同一存储块连续进行读操作的次数来产生存储页的地址。一次读操作包括两个阶段首先读数据页,然后再读校验码页。数据和校验码分布存到各自的緩存寄存器堆中。本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。权利要求1、一种大容量FLASH固存控制器,包括微控制器接口、FLASH接口、数据缓存单元、校验码缓存单元、校验码产生与纠检错单元,其特征在于还包括坏块自动处理单元和双缓存控制单元,其中微控制器接口与微控制器进行数据通信;FLASH接口与FLASH进行数据通信;数据缓存单元存储需要传输的数据;校验码缓存单元存储与数据缓存单元存储的数据相对应的校验码;校验码产生与纠检错单元经微控制器接口接收外部微控制器传来的数据,根据传来的数据产生校验码,并将所述数据和校验码送至双缓存控制单元;对双缓存控制单元传来的数据进行纠检错后经微控制器接口送至外部微控制器;坏块自动处理单元自动识别片外FLASH存储器出现的坏存储块并为其分配替换块,保证对片外FLASH存储器的正常读写操作,无需用户方进行任何操作;双缓存控制单元与微控制器接口、FLASH接口或坏块自动处理单元通信,实现对数据缓存单元和校验码缓存单元的数据写入或读取操作。2、根据权利要求1所述的一种大容量FLASH固存控制器,其特征在于所述的双緩存控制单元的工作方式为当面向微控制器进行数据操作时,该单元同时对数据緩存和校验码緩存进行操作;当面向片外FLASH存储器进行正常数据操作时,该单元对数据緩存和校验码緩存依次顺序操作;当面向片外FLASH存储器进行坏块处理时,该单元只对数据緩存和校验码緩存中的一个进行操作。3、根据权利要求1所述的一种大容量FLASH固存控制器,其特征在于(1)建立坏块信息表,用于记录坏块和替换块的地址映射关系;(2)设置坏块信息记录指针,用于指示当前遇到的坏块记录位置,起始指向为坏块信息表的首记录;设置坏块信息操作指针,用于指示当前正在使用的坏块及与其对应的替换块,起始指向与坏块信息记录指针的起始指向相同;设置最新替换块寄存器,用于保存最新分配的替换块的地址;(3)当存储器出现坏块时,记录该坏块的地址,同时为该坏块指定替换块,将坏块及其替换块的地址添加至坏块信息表中,最新替换块寄存器指示所述替换块的地址;替换块的分配从存储器的最高的块地址开始向最低的块地址依次递减;(4)若所述替换块也为坏块,则跳过所述替换块重新分配新的替换块,替换块为坏块的不再添加至坏块信息表中,最新替换块寄存器指示所述新替换块的地址并用其替换坏块信息表中的相应记录;(5)坏块信息记录指针指向下一记录位置,坏块信息操作指针指向当前遇到的坏块及其替换块的记录位置,若当前操作块未出现在坏块信息表的记录中,则坏块信息操作指针保留当前指示位置。(6)当坏块的数量达到了所能容忍的最大坏块个数或替换块的地址达到了坏块处理能力上限地址时,提示坏块数量溢出,无法继续处理。4、根据权利要求3所述的一种面向大容量FLASH固存的坏块处理方法,其特征在于所述的最低的块地址为坏块处理能力上限地址。5、根据权利要求3所述的一种面向大容量FLASH固存的坏块处理方法,其特征在于所述的坏块处理能力上限地址的确定方法为坏块处理能力上限地址=存储器最高位地址-所能容忍的最大坏块个数+1,其中所能容忍的最大坏块个数由用户设定。6、根据权利要求1所述的一种大容量FLASH固存控制器,其特征在于所述的FLASH接口具有扩展功能,可以携带256个备份FLASH。全文摘要一种大容量FLASH固存控制器,包括数据缓存单元、校验码缓存单元、校验码产生与纠检错单元、坏块自动处理单元和双缓存控制单元。校验码产生与纠检错单元经微控制器接口接收外部微控制器传来的数据,根据传来的数据产生校验码,并将数据和校验码送至双缓存控制单元;对双缓存控制单元传来的数据进行纠检错后经微控制器接口送至外部微控制器。坏块自动处理单元自动识别片外FLASH存储器出现的坏存储块并为其分配替换块,保证对片外FLASH存储器的正常读写操作,无需用户方进行任何操作。双缓存控制单元与微控制器接口、FLASH接口或坏块自动处理单元通信,实现对数据缓存单元和校验码缓存单元的数据写入或读取操作。文档编号G11C7/10GK101320592SQ20081011629公开日2008年12月10日申请日期2008年7月8日优先权日2008年7月8日发明者爽姜,俊杜,苏昌明,袁大威,赵可成,芳鲍申请人:北京时代民芯科技有限公司;中国航天时代电子公司第七七二研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1