基于AHB_BUS的eFlash控制器的Datasheet

发布时间 2023-04-08 15:09:30作者: Icer_Newer

eFlash控制器的Datasheet

硬件和软件交互的文档,提供Datasheet

1.eFlash控制器功能列表

eFlash存储控制器一局软件要求完成写擦操作,其提供系统boot时的命令数据,并在main区(存储器分为Main和Infr area)存放各个IP模块工作所需要的命令数据.一般情况下,系统只对其进行读操作,除非系统进行版本更新,那么就需要进行擦写操作,在用户模式下,为了防止软件对关键的boot区数据误擦写,本控制器增加了boot区间的擦写保护功能,具体功能如下:

  • 支持32位的AHB slave interface(不支持该总线busy传输类型)
  • 支持eFlash的多周期读\写\页擦操作(2块独立的eFlash串联封装)
  • eFlash操作可配置(时序,功能)
  • 支持eflash中boot区空间的擦写保护
  • 支持DFT功能

2.Flash控制器架构图


3.eFlash工作时序图描述

3.1 读操作

3.2 写操作

3.3 页擦操作

3.4 eFlash操作需要用到的timing参考表

4.eFlash控制器功能验证描述

4.1 验证环境说明

验证环境简单说明如下:

  • 连线和信号初始化
TMR = 1'b1;
TM[2:0]  = 3'b0;
VPP = 1'b0;

上述三类信号是从eFlash核直接接入的,只有这样才能是eFlash处在正常的用户模式下面

  • 为了完善写和页擦功能测试,要将eflash_wp_n = 1'b1;在完成boot程序之后,boot_en拉低,使得系统从main区的零地址开始读取命令
  • 本控制器不支持AHB总线发出的BUSY数据传输类型功能
  • 另外为了加快仿真速度,对模型的时序参数做了改动

Trvc,Tnvs,Tnvh,Tpgs,Tprog,Tprog_min,Tprog_max,分别缩小10倍
Terase,Terase_min,Terase_max分别缩小1000倍,这样可以大大减少仿真时间

4.2 页擦和写操作说明

对eFlash操作时,特别是对其进行页擦和写操作时,也就是在配置寄存器让其工作时,需要注意配置寄存器的先后顺序:

  • 对于页擦操作:先配置pe_num_r和pe_main_infr_sel_r(两者无先后差异),然后载配置pe_en_r
  • 对于写操作,先配置prog_addr_r和prog_data_r寄存器(两者无先后差异),然后再配置wr_en_r寄存器

4.3 验证总体结构

5.eFlash控制器寄存器列表

base address:0x0006_0000

timing寄存器的复位值是按照最悲观的情况(120MHz,正常情况下跑到100MHz),设置一个最大值,保证默认情况下flash读写操作可以正常进行


  • 每个寄存器是32bit,占4byte地址,AHB读写都是32bit,每次读写只能访问一个寄存器
  • R/W -- 表示该寄存器可以进行读写
  • R -- 只读寄存器,CPU对其只有读的权限,没有写的权限,比如状态寄存器,它的值是由IP内部决定的,CPU只能读取不能写
  • 寄存器内部复位值,表示当前上电之后,初始化的值是多少
  • 寄存器中所包含的域段也需要进行描述
  • wr_en_r/pe_en_r -- 写使能和擦除使能
  • pe_num -- 擦除哪一页
  • pe_main_infr_sel_r -- 选择擦除哪一部分
  • int_en_r -- 中断使能寄存器是可以进行读写
  • flash_status_r -- 状态寄存器(是擦完成还是写完成)

6.eFlash寄存器详细描述

寄存器是硬件设计工程师提供给软件工程师的重要信息,从而实现软硬件交互,软件工程师根据这些寄存器描述,利用C语言编写驱动,也称为fireware
在寄存器详细描述中,描述了寄存器中的域段信息,寄存器是31bit的但是并不是全部都使用,一部分是reserved

  1. nvstr_setup_timing(Tnvs)寄存器

2.nvstr_hold_timing(Tnvh)

3.prog_setup_timing(Tpgs)

4.prog_sethold_timing(Tads/Tadh/Tpgh)

5.prog_proc_timing(Tprog)

6.read_aces_timing(Txa or Tya)

7.pe_timing(Terase)

8.rcv_timing(Trcv)

9.w_en_r

10.p_en_r

11.pe_num_r

12.pe_main_infr_sel_r

13.prog_addr_r

14.prog_data_r

15.int_en_r(中断使能寄存器)

16.flash_status_r(中断状态寄存器)

17.boot_pe_wr_error_r

7.eFlash控制器Program Guide





  • 根据不同域段进行使用,具体会给出default值
  • Tads/Tadh/Tpgh -- 时间比较短,放在一个寄存器中,就是一个寄存器分为几个域段