新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA的K9F4G08 Flash控制器设计

基于FPGA的K9F4G08 Flash控制器设计

作者: 时间:2010-06-23 来源:网络 收藏

  2.1 匹配表

出厂后可能存在坏块,使用中也有可能会再出现新的坏块。制造商保证每个芯片中的坏块不多于80个,同时保证第0个块肯定是好的,且保证擦写1 000次不坏[1]。当进行连续地址的数据读写时有可能遇到坏块,坏块无法进行操作,会导致数据的丢失。因此必须建立一个匹配表,当遇到坏块时,将其匹配到好块的地址上。

  实际的数据读写中只使用4 000个块,根据这些要求设计了这样的匹配表:长度512 B,存放在第0个块的第0个页(B0P0)。具体内容见表2。

基于FPGA的K9F4G08 Flash控制器设计

  一个块的地址用2 B的16进制数表示。256 B可以存储128个块地址。0~255与256~512中存储的块地址是一一对应的,当使用到0~255中的块地址时,需要从256~511中寻找对应的块地址进行替换。

  在中生成一个512 B的ram:ram_512,专门用于存放匹配表,当系统上电复位后,状态机会自动将B0P0的数据读出,并将前512 B的数据存入该ram_512中,以便后面匹配时使用[4]。

  2.2 全擦与部分擦指令

  该指令用于擦除所有的块,建立新的匹配表。由于坏块会导致擦除不成功,状态机在擦除过程中会记录下1~4 000个块中擦除失败的坏块的地址、4 000~4 095个块中好块的地址,先按照匹配表规定的顺序写入ram_512,全部擦除完成后将ram_512中的数据写入B0P0。由于数据量不足2 KB,因此后面补零。其流程图如图2所示。

基于FPGA的K9F4G08 Flash控制器设计

  部分擦除与全擦类似,执行这条指令需要给定起始与结尾的块地址,controller_4G08可以完成对2个块地址之间所有块的擦除。当擦除过程中擦到坏块时,状态机会从匹配表中寻找该坏块对应的好块,并擦除。若没有寻找到该坏块的匹配块,则出现了新的坏块,会产生一个报错的标志位,提示主状态机需要进行全擦,以便建立新的匹配表。



关键词:FPGAFlashK9F4G08

评论


相关推荐

技术专区

关闭