基于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) -- 分页管理,在擦除数据的时候以页为单位进行擦除
- 可编程eFlash,分为两个部分,数据和程序存储在main memory中,一些器件的信息存储在information memory block中,information block的容量是非常小
- page -- 512Bytes/Page -- 4 rows/Page --> 128Bytes/row