首页 > 其他分享 >基于AHB_BUS的eFlash控制器的Datasheet

基于AHB_BUS的eFlash控制器的Datasheet

时间:2023-04-08 15:12:50浏览次数:40  
标签:AHB 控制器 en BUS pe Datasheet eFlash 寄存器 timing

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 -- 时间比较短,放在一个寄存器中,就是一个寄存器分为几个域段

标签:AHB,控制器,en,BUS,pe,Datasheet,eFlash,寄存器,timing
From: https://www.cnblogs.com/Icer-newer/p/17298347.html

相关文章

  • 内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
    原文:https://blog.csdn.net/yyzsyx/article/details/129576582文章目录一、篇头二、内核部分2.1源码下载2.1.1官网2.1.2镜像站点2.1.3代码下载2.2编译2.2.1设置工具链2.2.2配置2.2.3make2.2.4编译成功三、busybox部分3.1源码下载3.2编译3.2.1配置3.2.3编译3.2.4查......
  • EasyARM i.MX283A 完整系统制作指南(Linux 4.13.2+U-Boot 2017.09+BusyBox 1.27.2+Qt5
    原文:https://www.taterli.com/3213/标题老长呢.反正什么都是新的,所有都是开源的,除了下载工具以外,所有源码都有(据说下载工具也有,我懒得找了.),编译器源码自己也能做,但是没必要了.代码下载地址:https://github.com/nickfox-taterli/imx283a-new/releases/tag/v0.1首先有一个U......
  • vue中 ref、$refs、$emit、$on、$bus、$off 详解和使用
    1.ref和 $refsref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象上,如果是在普通的DOM元素上使用,引用指向的就是DOM元素,如果是在子组件上,引用就指向组件的实例。$refs是一个对象,持有已注册过ref的所有的子组件。ref用法:ref加在普通的元素......
  • Modbus功能码的学习与实验 01 读取线圈状态
    01读取线圈状态    查询帧  应答帧 ......
  • 迁移学习《Efficient and Robust Pseudo-Labeling for Unsupervised Domain Adaptatio
    论文信息论文标题:EfficientandRobustPseudo-LabelingforUnsupervisedDomainAdaptation论文作者:HochangRhee、NamIkCho论文来源:2019——ICML论文地址:download 论文代码:download视屏讲解:click1摘要问题:无监督域适应传统方法将超过一定置信度阈值的数据视为目标域......
  • glibc gdbus 网络管理
    NetworkManager/ModemManager·GitLab (141条消息)Dbus学习笔记_org.freedesktop.dbus.properties_hanhandan的博客-CSDN博客......
  • AHB总线讲解
    AHB总线-叻亚-博客园(cnblogs.com)......
  • 基于AHB_BUS的eFlash控制器的微架构设计
    eFlash微架构设计1.回顾架构设计2.Flash时序仿真2.1ahb_flashc项目目录docsrtlsimtbmodel2.2docs架构设计文档微架构设计文档集成需求文档DataSheet2.3modelmodel文件夹下放的是一些仿真模型(Flash的rtl代码)和一些文档,这里存放的模型是不可综合的,只用于仿真......
  • Modbus协议
    概念Modbus属于应用层协议,主要用于设备之间的网络通信存储区、存储区代号、范围制定不同的存储区的目的是存储不同类型的数据存储区:输入布尔(布尔也叫线圈)输出布尔输入寄存器输出寄存器存储区代号:输入布尔:1区输出布尔:0区输入寄存器:3区输出寄存器:4区存储区范围:......
  • 基于AHB_BUS的eFlash控制器的架构设计
    eFlash控制器的架构设计1.架构设计思路分析1.1含有的模块分析eFlash控制器是一个基于AHB的slave,所以需要一个AHB_slave_if处理AHB的信号。AHB_slave_if与AHB总线进行交互,对主设备的请求进行处理,还可以设置一些内部的寄存器,对AHB发送过来的信号进行解析。AHB_slave_if除了处......