基于AHB bus的eflash控制器设计

eflash是一个非易失性的存储器

  • Flash工艺
  • 设计需求
  • flash
  • 文档体系
  • 代码编写
  • 仿真验证

1.什么是Flash

  • Logic是在数字设计中写的代码经过综合之后生成standcell
  • Flash并不是由代码直接得到的,通过固核的方式直接调用,可以将Flash当成一个黑盒子,其中的布局布线已经做好
  • 电源撤掉之后,数据会丢失,易失性存储,比如SRAM和DRAM,上电的时候,SRAM中是没有数据的,通过CPU或者DMA对SRAM进行初始化,才会有数据,掉电之后,数据会丢失
  • DRAM -- 内存,掉电后会导致数据丢失,会进行动态刷新
  • SRAM和DRAM区别,单位面积的容量DRAM比较大,常用在内存中;SRAM经常用在CPU中缓存
  • 数据掉电之后,数据不会丢失,比如U盘,移动硬盘,机械磁盘,Nor Flash,Nand Flash
  • 想要把非易失性的存储器件做在SoC中,embeded flash,可以存储一些固件,上电之后的引导程序可以存储在eflash中

1.1 在架构中的位置

  • 上电之后CPU拿到PFlash中的引导程序,对SoC进行初始化,达到可工作状态

1.2 eFlash控制器特点

  • 系统程序,boot程序和实际运行中的程序
  • Flash通常是由代工厂进行提供,因为与工艺有关
  • Flash存储体已经集成在SoC中,需要Flash的存储体做一个控制器,提供一些读写操作和擦除操作
  • eFlash控制器和SRAMC的区别就是支持多周期的读,写,擦除操作
  • 通过配置寄存器的方式对于时序进行调整
  • 支持eFlash中的boot区空间的擦鞋保护,boot区空间中的代码是稳定的,需要进行擦除保护,当boot_enable信号拉高的时候,不允许对于boot区的读写
  • Flash由代工厂提供,提供各种文件(仿真,时序),不可综合,一般不提供GDS,需要在工厂做merge

1.3 相关知识

  • AMBA总线
  • 阅读Flash datasheet控制器的能力
  • 如何利用行为级模型进行仿真
  • 关于Boot的概念
  • DFT概念
  • 文档体系(设计文档体系,验证文档体系)
  • 底层驱动的概念

2.Flash

  • 需求256kbyte的Flash,使用两个32kx32bit(128Kbytes)
  • Flash的位宽是要匹配AHB总线的读写位宽,AHB读写位宽为32bit
  • 256Page 512Bytes/Page(0.5Kbyte/Page) -- 分页管理,在擦除数据的时候以页为单位进行擦除

基于AHB bus的eflash控制器设计-小白菜博客
基于AHB bus的eflash控制器设计-小白菜博客

  • 可编程eFlash,分为两个部分,数据和程序存储在main memory中,一些器件的信息存储在information memory block中,information block的容量是非常小
  • page -- 512Bytes/Page -- 4 rows/Page --> 128Bytes/row
    基于AHB bus的eflash控制器设计-小白菜博客