在SOC 中实现Nand Flash 控制器的一种方法
2009-12-23 10:09
267 查看
在当今数字技术飞速发展的时代, Flash 因其非易失性及可擦除性而在数码相机、手机、个人数字助理(PDA )、掌上电脑、MP3 播放器等手持设备中得到广泛的使用。Nor 和Nand 是两种主要的非易失闪存技术。自1989 年东芝公司发表了Nand Flash 结构以来,Nand Flash 以其具有更小的体积, 更快的写入和擦除速度, 更多次的可擦除次数, 及更低廉的每bit 价格得到了迅速发展。大容量的Nand Flash 特别适合现在数码设备中大数据量的存储携带, 可以降低成本、提高性能。 ARM7TDMI 是国际上广泛使用的32 位嵌入式RISC 低端处理器, 若在基于ARM 7TDM I 内核的SOC 芯片中集成Nand Flash 控制器, 必将大大扩宽芯片应用范围、降低芯片成本、提升产品性能。但是,Nand 型闪存的使用相对于Nor 型闪存在硬件设计和软件控制上都有相当的难度, 值得从技术上做进一步探索和研究。
2 [b]Nand Flash 控制器的组成和时序[/b]
图2 是Nand Flash 控制器和DMA 模块的组成框图, 控制器(DMAC) 都是AMBA (ARM 总线标准) 高速总线AHB 上的m aster 模块, 都包含符合 AMBA 标准的总线接口模块与之交互工作。 Nand Flash 控制器包含总线接口模块, 控制状态机转换的状态控制模块, 用以缓冲数据、收发命令和状态字的寄存器组, 提供ECC 校验纠错码的 ECC 算法编程ö解码器模块和直接控制“裸”Nand Flash 体的接口模块。总线接口模块负责接受ARM CORE (CPU 核) 发送的指令, 将收发数据送至相应数据寄存器和指令寄存器, 并将状态寄存器内容返回给CORE。寄存器组负责整个Flash 控制器的控制工作, 包含指令、状态、数据、错误地址寄存器等等, 是控制器的核心。 ECC 算法编程ö解码器模块提供校验功能, 提供纠错信息。状态控制模块提供包括命令字发送状态组, 地址发送状态组, 读状态组, 写状态组共21 种Nand Flash 状态的翻转, 用以发出对Nand flash 读写控制信号。与Nand Flash 直接连接的接口模块提供 Nand Flash 体工作电压、使能和动作时所需的相应电平状态, 例如图3 所示的读时序要求, 该模块受到状态机控制模块的控制。该控制器对电平的控制简化了软件工作, 驱动软件不必再按照读写时序来配置繁琐的控制电平。
4 结束语
本文提出了在一款片上系统(SOC) 芯片设计中的Nand Flash 控制器实现方案, 并介绍了在 Uclinux 下的驱动移植和应用。该设计方案已在成品芯片的演示样机的应用中得到证实, 具有相当的应用价值, 达到了预期设计效果。
2 [b]Nand Flash 控制器的组成和时序[/b]
图2 是Nand Flash 控制器和DMA 模块的组成框图, 控制器(DMAC) 都是AMBA (ARM 总线标准) 高速总线AHB 上的m aster 模块, 都包含符合 AMBA 标准的总线接口模块与之交互工作。 Nand Flash 控制器包含总线接口模块, 控制状态机转换的状态控制模块, 用以缓冲数据、收发命令和状态字的寄存器组, 提供ECC 校验纠错码的 ECC 算法编程ö解码器模块和直接控制“裸”Nand Flash 体的接口模块。总线接口模块负责接受ARM CORE (CPU 核) 发送的指令, 将收发数据送至相应数据寄存器和指令寄存器, 并将状态寄存器内容返回给CORE。寄存器组负责整个Flash 控制器的控制工作, 包含指令、状态、数据、错误地址寄存器等等, 是控制器的核心。 ECC 算法编程ö解码器模块提供校验功能, 提供纠错信息。状态控制模块提供包括命令字发送状态组, 地址发送状态组, 读状态组, 写状态组共21 种Nand Flash 状态的翻转, 用以发出对Nand flash 读写控制信号。与Nand Flash 直接连接的接口模块提供 Nand Flash 体工作电压、使能和动作时所需的相应电平状态, 例如图3 所示的读时序要求, 该模块受到状态机控制模块的控制。该控制器对电平的控制简化了软件工作, 驱动软件不必再按照读写时序来配置繁琐的控制电平。
4 结束语
本文提出了在一款片上系统(SOC) 芯片设计中的Nand Flash 控制器实现方案, 并介绍了在 Uclinux 下的驱动移植和应用。该设计方案已在成品芯片的演示样机的应用中得到证实, 具有相当的应用价值, 达到了预期设计效果。
相关文章推荐
- 一种在片上系统中实现Nand Flash控制器的方法
- C++ SOCKET中实现超时的一种方法
- Zend Framework2 - 在 Module.php中检查管理是否登录,而不是到控制器中检查 (实现方法示例)
- jsp转html,工具类,网站静态化的一种简单实现方法!
- 【原创】一种实现IBM MQ通道传输能力垂直扩展的方法 - An Approach for Scaling Up/Down IBM MQ Channel Throughput
- C++类成员属性的一种简洁实现方法
- 单片机c语言下lcd多级菜单的一种实现方法
- 对象语义的一种实现方法
- 实现垂直居中的一种好用的方法
- ASP.NET2.0实现页面无刷新CallBack的一种方法
- SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
- AngularJS2中一种button切换效果的实现方法(二)
- iOS中类单例方法的一种实现
- 状态机的一种实现方法
- 利用servlet规范,一种实现动态路径的方法
- ThinkPHP控制器间实现相互调用的方法||ThinkPHP实现跨模块调用操作方法概述
- 一种实现嵌入式Linux的新方法-ramdisk(2007年发表)
- 一种分布式系统下的自增主键实现方法
- WEB-INF中的jsp跳转方法(一种实现)
- 一种快速的未登陆词识别方法(原理和实现)