基于AHB-BUS的eflash控制器设计

SRAMC是单周期的读写,控制比较简单,没有状态机也没有软硬件的协同

eflash是非易失性的存储器,可以进行读写擦除,它也是一个基于AHB_slave的模块

目录

SoC内部内嵌了一个embeded eFlash,是集成在SoC中的

  1. Flash工艺
  2. 设计需求
  3. flash
  4. 文档体系
  5. 代码编写
  6. 仿真验证

1.Flash工艺

1.1 Logic vs Flash

Logic:在RTL完成之后,进行逻辑综合生成的standcell,就是Logic,掉电之后数据消失

Flash:由固核的方式,进行设计的时候如果想要集成一个Flash,可以直接进行调用,后期代工厂会进行合并;可以将其认为是一个黑盒子,其中的逻辑和布局布线都是做好的

1.2 易失性数据和非易失性数据

  1. 易失性存储体:电源掉电之后,数据丢失。SRAM上电的时候其中是没有数据的,通过上电之后CPU或者DMA将数据搬移进去,进行SRAM的初始化。DRAM用于内存,也是易失性数据存储体,需要定时进行刷新和充电,只有这样数据才能不断的进行保存。(s-静态的,d-动态的)

    DRAM经常用于内存,因为其存储容量大;SRAM经常用于缓存,访问速度比较快
  2. 非易失性存储:掉电之后,数据并不会进行丢失。比如NorFlash,NandFlash,SSD,u盘,移动硬盘,机械硬盘。
  3. 非易失性存储体很多都是可移动的,想要将非易失性的存储体集成到SoC上就得到了embeded Flash-eFlash,eFlash集成在SoC中,其中可以存储一些上电之后的引导程序(这些程序几乎是不变的,出厂的时候由基台进行烧录在里面),boot程序。

2.位置

  • 给CPU进行服务的,CPU上电之后需要一些引导程序,让CSoC处于待工作状态进行工作
  • 黄色的是控制器,与AHB进行通信,从Flash读取数据

3.eFlash

  • 可以存储boot loader程序和实际运行的程序,上电之后CPU读取boot程序,初始化SoC
  • Flash由代工厂进行提供,可以提供RTL代码(软核),与工艺是深度绑定的
  • 项目完成eFlash控制器的设计,eFlash的存储体已经有了,需要控制器对与eFlash进行读写擦除操作,实现eFlash的应用
  • eFlash是以ahb_slave的形式存在的,设计一套控制器让CPU能够访问eFlash
  • eFlash多周期的读写和页擦,其中的读写逻辑和结构比较复杂;SRAMC支持单周期的读写访问
  • 支持两块eFlash的串联,如果当前需要eFlash的容量比较大,但是代工厂提供不了这么大的,需要将两块eFlash进行拼接起来
  • eFlash操作是可配置的,flash的异步操作
  • 支持eFlash中的boot区间的擦写保护,如果当前的eFlash正在进行boot操作,此时不能够进行写和擦除访问,否则如果在boot的时候更改了boot程序或者被覆盖了,会导致整个SoC的功能出错。所以在boot_en拉高的时候,进行屏蔽掉外部的读写擦信号。同时也可以防止代码的出错,误删,误擦等。

4.知识点

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

5.Flash

  • 由代工厂提供的
  • 提供各种文件(仿真,时序),一般不提供GDS,需要在工厂做merge(我们在GDS中预留空间)
  • 256k容量的eFlash--两块128kbyte的eFlash
  • eFlash读写位宽需要匹配AHB总线的读写位宽,都是32bit,所以128kbyte的eFlash深度要达到32k,
  • 128Kbyte = 32K * 32bit
  • 每页有512byte,32 * 1024 * 4(32bit) / 512byte = 256Page
  • 每页有4行,每行128byte
  • double word = 32bit = 4byte = 每行有32个dw

6. Flash Spec

  • 版本号很重要,不同版本的时序和接口可能会有区别

  • 面积大小,需要在版图中预留两块的空间

  • 每块eFlash分为main memory,存储主要程序;information memory,存储器件的信息(空间多大,是哪个厂家的)。
  • page的概念--一个page有4个row,每行128byte,擦除的时候是以page为单位的



  • 如果时钟频率是200M--时钟周期5ns,需要5个cycle读到数据
  • 进行读取操作的时间比进行写入程序的时间短得多,page擦除和mass擦除(整块擦除)时间慢;
  • 读的延迟小,写的延迟比较大的时候,不能用于CPU这种对于数据访问(读写)的模块,但是可以用于进行程序读取的模块(只进行读,不进行写)

基于AHB_BUS的eFlash控制器设计-01的更多相关文章

  1. 基于ABP落地领域驱动设计-01.全景图

    什么是领域驱动设计? 领域驱动设计(简称:DDD)是一种针对复杂需求的软件开发方法.将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节.DDD适用于复杂领域和大规模应用,而不是 ...

  2. 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...

  3. 基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则

    目录 系列文章 仓储 仓储的通用原则 仓储中不包含领域逻辑 规约 在实体中使用规约 在仓储中使用规约 组合规约 学习帮助 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实 ...

  4. 基于ABP落地领域驱动设计-00.目录和小结

    <实现领域驱动设计> -- 基于 ABP Framework 实现领域驱动设计实用指南 翻译缘由 自 ABP vNext 1.0 开始学习和使用该框架,被其优雅的设计和实现吸引,适逢 AB ...

  5. 基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则

    目录 系列文章 领域服务 应用服务 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践 ...

  6. 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践

    目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...

  7. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

    目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...

  8. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  9. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  10. 2014.04.28基于CPLD的LCOS场序彩色视频控制器设计

    基于CPLD的LCOS场序彩色视频控制器设计 作者:宋丹娜,代永平,刘艳艳,商广辉 发表刊物:液晶与显示,2009 学习时间:2014.04.28 文章讲述了-- (和上一篇论文有些相似之处) 1. ...

随机推荐

  1. 关于Secure Hash Algorithm加密算法

    一.概述 SHA(Secure Hash Algorithm)加密算法是一种广泛应用的密码散列函数,由美国国家安全局(NSA)设计,用于保障数据的安全性和完整性.SHA算法经历了多个版本的更新,目前主 ...

  2. MySQL运维16-双主双从读写分离

    一.双主双从架构介绍 在MySQL多主多从的架构配置中和双主双从是一样的,学会了双主双从的架构部署,多主多从的配置也同样就回了.下面以双主双从作为示例演示.其中一个主机maste1用于处理所有写请求, ...

  3. 扩展中国剩余定理(Excrt)笔记

    扩展中国剩余定理(excrt) 本来应该先学中国剩余定理的.但是有了扩展中国剩余定理,朴素的 CRT 就没用了. 扩展中国剩余定理用来求解如下形式的同余方程组: \[\begin{cases} x \ ...

  4. 【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍

    前言:   在之前的项目中,我们已经使用 OpenVINOTM CSharp API 部署 PaddleOCR 全系列模型,但随着PaddleOCRv4版本发布以及OpenVINO CSharp AP ...

  5. select/poll/epoll 优缺点比较

    校招应届生简历中,有一个 C++ 项目出现的频率非常高... select 1024 fd 限制(可修改,麻烦) 需要遍历才知道哪些 fd ready 副作用:修改传入 fd_set,每次需要重新赋值 ...

  6. JAVAEE基础知识

    JAVAEE基础知识 2018年3月,开源组织Eclipse基金会宣布,JavaEE(Enterprise Edition)被更名为JakartaEE,也就是9版本后改名Jakarta EE,也就是J ...

  7. osgEarth使用笔记2——推荐两个底图数据

    目录 1. 概述 2. 详论 2.1. Blue Marble 2.2. Bright Earth eAtlas Basemap 3. 分享 1. 概述 可以通过osgEarth自带的world.ti ...

  8. 云小课|HSS教您如何应对LockBit勒索事件

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:勒索病毒是一种极具 ...

  9. DWS轻量化更新黑科技:宽表加工优化

    本文分享自华为云社区<GaussDB(DWS)性能调优:宽表加工优化方案>,作者:譡里个檔 . 1. 业务背景 宽表加工性能慢,在Gauss(DWS)中可以使用DWS的轻量化更新的黑科技实 ...

  10. 云图说|图解制品仓库CodeArts Artifact

    摘要:制品仓库用于存放由源码编译生成的.可运行的二进制文件,重要作用是实现制品文件的可信存储,支撑软件开发活动. 本文分享自华为云社区<[云图说]第277期 图解制品仓库CodeArts Art ...