一种在片上系统中实现Nand Flash控制器的方法
发布时间:2008/5/28 0:00:00 访问次数:708
摘要:nand flash以其优越的特性和更高的性价比,在现代数码产品中得到了广泛的应用。在片上系统芯片中集成nand flash控制器成为一种趋势。本文提出了在一款基于arm7tdmi cpu core的片上系统( soc)芯片中的nand flash控制器实现方案。通过直接内存存取(dma)的数据传输方式,使nand flash的数据传输速率得到了一定提高,满足了实际应用的设计要求。该设计方法已通过了rtl级验证、fgpa验证,并在实际芯片的演示样机上得到了具体实现。
关键词:片上系统;nand flash;直接内存存取
1 引 言
flash因为具有非易失性及可擦除性在数码相机、手机、个人数字助理( pda)、掌上电脑、mp3播放器等手持设备中得到广泛的应用。自1989年东芝公司发表了nand flash结构以来, nand flash以其相对于nor flash具有更小的体积,更快的写入和擦除速度,更多次的可擦除次数,以及更低廉的每bit价格得到了迅速发展。大容量的nand flash特别适合现在数码设备中大数据量的存储携带,可以降低成本,提高性能。
arm7tdmi是世界上广泛使用的32位嵌入式risc低端处理器内核,在基于arm7tdmi内核的soc( system on chip )芯片中集成nand flash控制器将大大扩宽芯片应用范围、降低芯片成本、提升产品性能。但是,nand型闪存的使用相对于nor型闪存在硬件设计和软件控制上都有相当的难度,值得在技术上进一步探索和研究。
2 nand flash的结构特点对其读写的限制
笔者选用的nand flash是东芝tc58512ft(见图1) ,该款的nand flash 以528个byte 组成一个页(page) , 32个页组成一个块( block) ,由4096个块组成整个flash存储器。在每页中前512bytes是用于存储数据,而后16bytes则用于存放ecc数据校验码,称为oob(out of bank)区。对nand flash读出和写入是以页为单位,而对其擦除则是以块为单位,在存储组织上和硬盘采用的方式类似。在读出和写入时数据量都必须是页大小的整数倍,这一点上和norflash可以随机读写的方式完全不同,但对于大数据量的读写而言这正是nand flash其优点的体现。
基于nand flash特殊的组织结构,在设计时考虑了一种适合其读写按单位大小特点的传输方式,即利用dma(directmemory access)方式,每次读写配置dma通道,使传输一整页的数据量。在传输过程中, dma 模块占用总线,传输完成后,释放总线。因为dma地数据传输效率要高于cpu core通过直接向flash发送指令然后读写nand flash i/o口数据,所以这样的设计有利于提高读写速度,从而提高nand flash控制器性能。
图1 tc58512ft 512m-bit nand fla sh组织结构图
3 nand flash控制器的结构和工作流程
如图2所示,nand flash控制器和dma控制器(dmac) 都是amba (arm 总线标准) 高速总线ahb上的master模块,都包含符合amba标准的总线接口模块与之交互工作。
图2 nand flash控制器和dma模块组织结构图
nand flash控制器包含总线接口模块,控制状态机转换的状态控制模块,用以缓冲数据、收发命令和状态字的寄存器组,提供ecc校验纠错码的ecc算法编程/解码器模块和直接控制“裸”nand flash体的接口模块。
总线接口模块负责接受arm core(cpu核)发送的指令,将收发数据送至相应数据寄存器和指令寄存器,并将状态寄存器内容返回给core。寄存器组负责整个flash控制器的控制工作,包含指令、状态、数据、错误地址寄存器等等,是控制器的核心。ecc算法编程/解码器模块提供校验功能,提供纠错信息。
状态控制模块提供包括命令字发送状态组、地址发送状态组、读状态组、写状态组共21种nand flash状态的翻转,用以发出对nand flash读写控制信号。与nand flash直接连接的接口模块提供nand flash体工作电压、使能和动作时所需的相应的电平状态,例如图3所示读时序要求。该模块受到状态机控制模块的控制。该控制器对电平的控制 简化了软件工作,驱动软件不必再按照读写时序配置繁琐的控制电平。
图3 nand flash读时序图
以从nand flash中读取一页数据块到内存首地址0x30000000为例,分析该控制器的工作过程。首先,由arm core发出配置dma某一通道的指令,配置dma源地址寄存器为nand flash数据寄存器地址,目标地址寄存器为0x30000000,配置dma _control、dma _ config 寄存器, 设定dma传输的burst传输大小、数据宽度、总数据量(应为页大小512bytes)等等并使能该通道,等待其他master模块发送的请求信号;其次,配置nand flash控制器的地址寄存器(指定从flash 中哪一页读取数据) 和nand _ config 寄存器; 最后, 发送读命令字0x80000000,向dmac发出传输请求信号。一旦请求被接受,dmac占用ahb总线,开始高速块传输。
关键词:片上系统;nand flash;直接内存存取
1 引 言
flash因为具有非易失性及可擦除性在数码相机、手机、个人数字助理( pda)、掌上电脑、mp3播放器等手持设备中得到广泛的应用。自1989年东芝公司发表了nand flash结构以来, nand flash以其相对于nor flash具有更小的体积,更快的写入和擦除速度,更多次的可擦除次数,以及更低廉的每bit价格得到了迅速发展。大容量的nand flash特别适合现在数码设备中大数据量的存储携带,可以降低成本,提高性能。
arm7tdmi是世界上广泛使用的32位嵌入式risc低端处理器内核,在基于arm7tdmi内核的soc( system on chip )芯片中集成nand flash控制器将大大扩宽芯片应用范围、降低芯片成本、提升产品性能。但是,nand型闪存的使用相对于nor型闪存在硬件设计和软件控制上都有相当的难度,值得在技术上进一步探索和研究。
2 nand flash的结构特点对其读写的限制
笔者选用的nand flash是东芝tc58512ft(见图1) ,该款的nand flash 以528个byte 组成一个页(page) , 32个页组成一个块( block) ,由4096个块组成整个flash存储器。在每页中前512bytes是用于存储数据,而后16bytes则用于存放ecc数据校验码,称为oob(out of bank)区。对nand flash读出和写入是以页为单位,而对其擦除则是以块为单位,在存储组织上和硬盘采用的方式类似。在读出和写入时数据量都必须是页大小的整数倍,这一点上和norflash可以随机读写的方式完全不同,但对于大数据量的读写而言这正是nand flash其优点的体现。
基于nand flash特殊的组织结构,在设计时考虑了一种适合其读写按单位大小特点的传输方式,即利用dma(directmemory access)方式,每次读写配置dma通道,使传输一整页的数据量。在传输过程中, dma 模块占用总线,传输完成后,释放总线。因为dma地数据传输效率要高于cpu core通过直接向flash发送指令然后读写nand flash i/o口数据,所以这样的设计有利于提高读写速度,从而提高nand flash控制器性能。
图1 tc58512ft 512m-bit nand fla sh组织结构图
3 nand flash控制器的结构和工作流程
如图2所示,nand flash控制器和dma控制器(dmac) 都是amba (arm 总线标准) 高速总线ahb上的master模块,都包含符合amba标准的总线接口模块与之交互工作。
图2 nand flash控制器和dma模块组织结构图
nand flash控制器包含总线接口模块,控制状态机转换的状态控制模块,用以缓冲数据、收发命令和状态字的寄存器组,提供ecc校验纠错码的ecc算法编程/解码器模块和直接控制“裸”nand flash体的接口模块。
总线接口模块负责接受arm core(cpu核)发送的指令,将收发数据送至相应数据寄存器和指令寄存器,并将状态寄存器内容返回给core。寄存器组负责整个flash控制器的控制工作,包含指令、状态、数据、错误地址寄存器等等,是控制器的核心。ecc算法编程/解码器模块提供校验功能,提供纠错信息。
状态控制模块提供包括命令字发送状态组、地址发送状态组、读状态组、写状态组共21种nand flash状态的翻转,用以发出对nand flash读写控制信号。与nand flash直接连接的接口模块提供nand flash体工作电压、使能和动作时所需的相应的电平状态,例如图3所示读时序要求。该模块受到状态机控制模块的控制。该控制器对电平的控制 简化了软件工作,驱动软件不必再按照读写时序配置繁琐的控制电平。
图3 nand flash读时序图
以从nand flash中读取一页数据块到内存首地址0x30000000为例,分析该控制器的工作过程。首先,由arm core发出配置dma某一通道的指令,配置dma源地址寄存器为nand flash数据寄存器地址,目标地址寄存器为0x30000000,配置dma _control、dma _ config 寄存器, 设定dma传输的burst传输大小、数据宽度、总数据量(应为页大小512bytes)等等并使能该通道,等待其他master模块发送的请求信号;其次,配置nand flash控制器的地址寄存器(指定从flash 中哪一页读取数据) 和nand _ config 寄存器; 最后, 发送读命令字0x80000000,向dmac发出传输请求信号。一旦请求被接受,dmac占用ahb总线,开始高速块传输。
摘要:nand flash以其优越的特性和更高的性价比,在现代数码产品中得到了广泛的应用。在片上系统芯片中集成nand flash控制器成为一种趋势。本文提出了在一款基于arm7tdmi cpu core的片上系统( soc)芯片中的nand flash控制器实现方案。通过直接内存存取(dma)的数据传输方式,使nand flash的数据传输速率得到了一定提高,满足了实际应用的设计要求。该设计方法已通过了rtl级验证、fgpa验证,并在实际芯片的演示样机上得到了具体实现。
关键词:片上系统;nand flash;直接内存存取
1 引 言
flash因为具有非易失性及可擦除性在数码相机、手机、个人数字助理( pda)、掌上电脑、mp3播放器等手持设备中得到广泛的应用。自1989年东芝公司发表了nand flash结构以来, nand flash以其相对于nor flash具有更小的体积,更快的写入和擦除速度,更多次的可擦除次数,以及更低廉的每bit价格得到了迅速发展。大容量的nand flash特别适合现在数码设备中大数据量的存储携带,可以降低成本,提高性能。
arm7tdmi是世界上广泛使用的32位嵌入式risc低端处理器内核,在基于arm7tdmi内核的soc( system on chip )芯片中集成nand flash控制器将大大扩宽芯片应用范围、降低芯片成本、提升产品性能。但是,nand型闪存的使用相对于nor型闪存在硬件设计和软件控制上都有相当的难度,值得在技术上进一步探索和研究。
2 nand flash的结构特点对其读写的限制
笔者选用的nand flash是东芝tc58512ft(见图1) ,该款的nand flash 以528个byte 组成一个页(page) , 32个页组成一个块( block) ,由4096个块组成整个flash存储器。在每页中前512bytes是用于存储数据,而后16bytes则用于存放ecc数据校验码,称为oob(out of bank)区。对nand flash读出和写入是以页为单位,而对其擦除则是以块为单位,在存储组织上和硬盘采用的方式类似。在读出和写入时数据量都必须是页大小的整数倍,这一点上和norflash可以随机读写的方式完全不同,但对于大数据量的读写而言这正是nand flash其优点的体现。
基于nand flash特殊的组织结构,在设计时考虑了一种适合其读写按单位大小特点的传输方式,即利用dma(directmemory access)方式,每次读写配置dma通道,使传输一整页的数据量。在传输过程中, dma 模块占用总线,传输完成后,释放总线。因为dma地数据传输效率要高于cpu core通过直接向flash发送指令然后读写nand flash i/o口数据,所以这样的设计有利于提高读写速度,从而提高nand flash控制器性能。
图1 tc58512ft 512m-bit nand fla sh组织结构图
3 nand flash控制器的结构和工作流程
如图2所示,nand flash控制器和dma控制器(dmac) 都是amba (arm 总线标准) 高速总线ahb上的master模块,都包含符合amba标准的总线接口模块与之交互工作。
图2 nand flash控制器和dma模块组织结构图
nand flash控制器包含总线接口模块,控制状态机转换的状态控制模块,用以缓冲数据、收发命令和状态字的寄存器组,提供ecc校验纠错码的ecc算法编程/解码器模块和直接控制“裸”nand flash体的接口模块。
总线接口模块负责接受arm core(cpu核)发送的指令,将收发数据送至相应数据寄存器和指令寄存器,并将状态寄存器内容返回给core。寄存器组负责整个flash控制器的控制工作,包含指令、状态、数据、错误地址寄存器等等,是控制器的核心。ecc算法编程/解码器模块提供校验功能,提供纠错信息。
状态控制模块提供包括命令字发送状态组、地址发送状态组、读状态组、写状态组共21种nand flash状态的翻转,用以发出对nand flash读写控制信号。与nand flash直接连接的接口模块提供nand flash体工作电压、使能和动作时所需的相应的电平状态,例如图3所示读时序要求。该模块受到状态机控制模块的控制。该控制器对电平的控制 简化了软件工作,驱动软件不必再按照读写时序配置繁琐的控制电平。
图3 nand flash读时序图
以从nand flash中读取一页数据块到内存首地址0x30000000为例,分析该控制器的工作过程。首先,由arm core发出配置dma某一通道的指令,配置dma源地址寄存器为nand flash数据寄存器地址,目标地址寄存器为0x30000000,配置dma _control、dma _ config 寄存器, 设定dma传输的burst传输大小、数据宽度、总数据量(应为页大小512bytes)等等并使能该通道,等待其他master模块发送的请求信号;其次,配置nand flash控制器的地址寄存器(指定从flash 中哪一页读取数据) 和nand _ config 寄存器; 最后, 发送读命令字0x80000000,向dmac发出传输请求信号。一旦请求被接受,dmac占用ahb总线,开始高速块传输。
关键词:片上系统;nand flash;直接内存存取
1 引 言
flash因为具有非易失性及可擦除性在数码相机、手机、个人数字助理( pda)、掌上电脑、mp3播放器等手持设备中得到广泛的应用。自1989年东芝公司发表了nand flash结构以来, nand flash以其相对于nor flash具有更小的体积,更快的写入和擦除速度,更多次的可擦除次数,以及更低廉的每bit价格得到了迅速发展。大容量的nand flash特别适合现在数码设备中大数据量的存储携带,可以降低成本,提高性能。
arm7tdmi是世界上广泛使用的32位嵌入式risc低端处理器内核,在基于arm7tdmi内核的soc( system on chip )芯片中集成nand flash控制器将大大扩宽芯片应用范围、降低芯片成本、提升产品性能。但是,nand型闪存的使用相对于nor型闪存在硬件设计和软件控制上都有相当的难度,值得在技术上进一步探索和研究。
2 nand flash的结构特点对其读写的限制
笔者选用的nand flash是东芝tc58512ft(见图1) ,该款的nand flash 以528个byte 组成一个页(page) , 32个页组成一个块( block) ,由4096个块组成整个flash存储器。在每页中前512bytes是用于存储数据,而后16bytes则用于存放ecc数据校验码,称为oob(out of bank)区。对nand flash读出和写入是以页为单位,而对其擦除则是以块为单位,在存储组织上和硬盘采用的方式类似。在读出和写入时数据量都必须是页大小的整数倍,这一点上和norflash可以随机读写的方式完全不同,但对于大数据量的读写而言这正是nand flash其优点的体现。
基于nand flash特殊的组织结构,在设计时考虑了一种适合其读写按单位大小特点的传输方式,即利用dma(directmemory access)方式,每次读写配置dma通道,使传输一整页的数据量。在传输过程中, dma 模块占用总线,传输完成后,释放总线。因为dma地数据传输效率要高于cpu core通过直接向flash发送指令然后读写nand flash i/o口数据,所以这样的设计有利于提高读写速度,从而提高nand flash控制器性能。
图1 tc58512ft 512m-bit nand fla sh组织结构图
3 nand flash控制器的结构和工作流程
如图2所示,nand flash控制器和dma控制器(dmac) 都是amba (arm 总线标准) 高速总线ahb上的master模块,都包含符合amba标准的总线接口模块与之交互工作。
图2 nand flash控制器和dma模块组织结构图
nand flash控制器包含总线接口模块,控制状态机转换的状态控制模块,用以缓冲数据、收发命令和状态字的寄存器组,提供ecc校验纠错码的ecc算法编程/解码器模块和直接控制“裸”nand flash体的接口模块。
总线接口模块负责接受arm core(cpu核)发送的指令,将收发数据送至相应数据寄存器和指令寄存器,并将状态寄存器内容返回给core。寄存器组负责整个flash控制器的控制工作,包含指令、状态、数据、错误地址寄存器等等,是控制器的核心。ecc算法编程/解码器模块提供校验功能,提供纠错信息。
状态控制模块提供包括命令字发送状态组、地址发送状态组、读状态组、写状态组共21种nand flash状态的翻转,用以发出对nand flash读写控制信号。与nand flash直接连接的接口模块提供nand flash体工作电压、使能和动作时所需的相应的电平状态,例如图3所示读时序要求。该模块受到状态机控制模块的控制。该控制器对电平的控制 简化了软件工作,驱动软件不必再按照读写时序配置繁琐的控制电平。
图3 nand flash读时序图
以从nand flash中读取一页数据块到内存首地址0x30000000为例,分析该控制器的工作过程。首先,由arm core发出配置dma某一通道的指令,配置dma源地址寄存器为nand flash数据寄存器地址,目标地址寄存器为0x30000000,配置dma _control、dma _ config 寄存器, 设定dma传输的burst传输大小、数据宽度、总数据量(应为页大小512bytes)等等并使能该通道,等待其他master模块发送的请求信号;其次,配置nand flash控制器的地址寄存器(指定从flash 中哪一页读取数据) 和nand _ config 寄存器; 最后, 发送读命令字0x80000000,向dmac发出传输请求信号。一旦请求被接受,dmac占用ahb总线,开始高速块传输。
版权所有:51dzw.COM
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式