基于AHB_BUS的eFlash控制器设计-01
基于AHB-BUS的eflash控制器设计
SRAMC是单周期的读写,控制比较简单,没有状态机也没有软硬件的协同
eflash是非易失性的存储器,可以进行读写擦除,它也是一个基于AHB_slave的模块
目录
SoC内部内嵌了一个embeded eFlash,是集成在SoC中的
- Flash工艺
- 设计需求
- flash
- 文档体系
- 代码编写
- 仿真验证
1.Flash工艺
1.1 Logic vs Flash
Logic:在RTL完成之后,进行逻辑综合生成的standcell,就是Logic,掉电之后数据消失
Flash:由固核的方式,进行设计的时候如果想要集成一个Flash,可以直接进行调用,后期代工厂会进行合并;可以将其认为是一个黑盒子,其中的逻辑和布局布线都是做好的
1.2 易失性数据和非易失性数据
- 易失性存储体:电源掉电之后,数据丢失。SRAM上电的时候其中是没有数据的,通过上电之后CPU或者DMA将数据搬移进去,进行SRAM的初始化。DRAM用于内存,也是易失性数据存储体,需要定时进行刷新和充电,只有这样数据才能不断的进行保存。(s-静态的,d-动态的)
DRAM经常用于内存,因为其存储容量大;SRAM经常用于缓存,访问速度比较快 - 非易失性存储:掉电之后,数据并不会进行丢失。比如NorFlash,NandFlash,SSD,u盘,移动硬盘,机械硬盘。
- 非易失性存储体很多都是可移动的,想要将非易失性的存储体集成到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的更多相关文章
- 基于ABP落地领域驱动设计-01.全景图
什么是领域驱动设计? 领域驱动设计(简称:DDD)是一种针对复杂需求的软件开发方法.将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节.DDD适用于复杂领域和大规模应用,而不是 ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
- 基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则
目录 系列文章 仓储 仓储的通用原则 仓储中不包含领域逻辑 规约 在实体中使用规约 在仓储中使用规约 组合规约 学习帮助 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实 ...
- 基于ABP落地领域驱动设计-00.目录和小结
<实现领域驱动设计> -- 基于 ABP Framework 实现领域驱动设计实用指南 翻译缘由 自 ABP vNext 1.0 开始学习和使用该框架,被其优雅的设计和实现吸引,适逢 AB ...
- 基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则
目录 系列文章 领域服务 应用服务 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践 ...
- 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践
目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...
- 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑
目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...
- 基于FPGA的SPI FLASH控制器设计
1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...
- 基于FPGA的XPT2046触摸控制器设计
基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com 发 ...
- 2014.04.28基于CPLD的LCOS场序彩色视频控制器设计
基于CPLD的LCOS场序彩色视频控制器设计 作者:宋丹娜,代永平,刘艳艳,商广辉 发表刊物:液晶与显示,2009 学习时间:2014.04.28 文章讲述了-- (和上一篇论文有些相似之处) 1. ...
随机推荐
- 数字孪生结合GIS会给矿业带来怎样的改变
数字孪生技术和GIS的结合为矿业带来了革命性的改变.矿业作为重要的经济支柱,其发展与资源的开采.生产过程的管理密切相关.通过数字孪生和GIS的融合,矿业行业可以实现更高效.可持续的运营和管理,带来许多 ...
- DEDECMS 后台系统用户授权目录更改为无限级(默认为二级授权)
在做一个学校的项目,分类有四级分类,总共一百多个分类,因为每个分类对应不同的老师,用于上传资料作为考核,但是添加系统用户的时候发现DEDECMS只有两级分类,所以修改啦一些代码,目前不知道是否修改完全 ...
- VSCode 中优雅地编写 Markdown
VSCode 中优雅地编写 Markdown 在 VSCode 中编写 Markdown 有几个无法拒绝的优势,首先是顺手方便,常写代码的同学打开 VSCode 各项功能和快捷键使用的都比较熟练,可以 ...
- 2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba
2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次. 需保证 返回结果的字典序最小. 要求不能打乱其他字符的相对位置). 输入:s = &quo ...
- 车机必备软件-小白点EasyTouch(类似苹果的悬浮球,返回,清理垃圾,杀进程)
简介 有些小伙伴升级车机后,由于部分软件打开后处于全屏状态无法返回,这里我教大家如何解决.解决办法就是:在车机上安装这款小白点软件,这款软件体积小巧,不占内存,操作也十分方便,它能帮助你快速回到主屏幕 ...
- Boost Your Strategy With The Content Marketing Tools
Boost Your Strategy With The Content Marketing Tools In today's digital landscape, content marketing ...
- C# 将Word转为PDF时,设置PDF文档保护
本文以C#代码示例展示如何将Word转为PDF时,设置PDF文档保护,可设置PDF文档打开密码保护以及权限密码保护.附VB.NET代码,有需要可供参考. 程序环境: 1.Word测试文档:.docx ...
- 华为云MetaStudio全新升级,盘古数字人大模型助力数字人自由
摘要:基于盘古大模型能力,华为云MetaStudio数字内容生产线全新升级,推出数字人模型生成服务和模型驱动服务. 近日,华为开发者大会2023 ( Cloud ) 在东莞拉开帷幕.基于盘古大模型能力 ...
- CodeArts TestPlan:一站式测试管理平台
摘要:华为云正式发布CodeArts TestPlan,这是一款自主研发的一站式测试管理平台,沉淀了华为30多年高质量的软件测试工程方法与实践,覆盖测试计划.测试设计.测试执行和测试评估等全流程. 本 ...
- 实战案例丨分布式系统中如何用python实现Paxos
摘要:提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代 名词,因为当前最常用的一批共识算法都是基于它改进的.比如,Fast Paxos 算法. Cheap Pax ...