外部存储器接口(EMIF)

news2024/11/15 13:38:41

1 接口信号与控制寄存器

  • EMIF(External Memory Interface)外部存储器接口
  • 为DSP芯片与众多外部设备之间提供一种连接方式,EMIF最常见的用途就是同时连接FLASH和SDRAM。
  • EMIF性能优良,跟外部SDRAM和异步器件连接时,具有很大的方便性和灵活性。
  • 根据DSP器件的不同,EMIF数据总线可以是32位、16位或8位。

1. 1EMIF接口信号

主要特点是:

  • 系统需要为C67x提供一个外部时钟。该外部时钟由ECLKIN输入后会产生EMIF接口的时钟信号ECLKOUT。
  • SBSRAM接口、SDRAM接口和异步接口的信号合并复用。由于不需要进行后台刷新,系统中允许同时具有这3种类型的存储器。
  • CE1空间支持所有的3种存储器接口。
  • 同步存储器接口提供4 字突发访问模式。
  • SDRAM接口更灵活,支持更广泛的SDRAM配置。
    在这里插入图片描述

 2. EMIF接口地址

虽然C6000提供32位地址寻址能力,但是经EMIF直接输出的地址信号只有EA[21:2]。一般情况下,EA2信号对应逻辑地址A2,但这并不意味着DSP访问外存时只能进行字(32 bit)或双字(64 bit)的存取。实际上内部32位地址的最低2~3位经译码后由BEx输出,是能够控制字节访问的。某些情况下,EA2还可能对应最低位逻辑地址A1或A0

在这里插入图片描述

 3. EMIF控制寄存器

  • EMIF接口由一组存储器映射的寄存器进行控制与维护,包括配置各个空间的存储器类型和设置读写时序等。
  • GBLCTL寄存器完成对整个片外存储空间的公共参数的设置,CExCTL寄存器分别控制相应存储空间的存储器类型和接口时序,另外3个SDRAM寄存器负责控制所有属于SDRAM空间的存储接口情况

GBLCTL寄存器
在这里插入图片描述

 在这里插入图片描述

 CExCTL寄存器
在这里插入图片描述

 在这里插入图片描述

 SDCTL寄存器
在这里插入图片描述

 在这里插入图片描述

SDTIM寄存器 

在这里插入图片描述

 在这里插入图片描述

 SDEXT寄存器
在这里插入图片描述

 在这里插入图片描述

 2、SDRAM同步接口设计

  • SRAM是Static Random Access Memory的缩写,中文含义为静态随机访问存储器,它是一种类型的半导体存储器。“静态”是指只要不掉电,存储在SRAM中的数据就不会丢失。这一点与DRAM不同,DRAM需要进行周期性的刷新操作。 同时,我们不应将SRAM与只读存储器(ROM)和Flash Memory相混淆,因为SRAM是一种易失性存储器,它只有在电源保持连续供应的情况下才能够保持数据。“随机访问”是指存储器的内容可以任意顺序访问,而不管前一次访问的是哪一个位置。
  • DRAM是Dynamic
    RAM的缩写,中文含义为动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。SDRAM:Synchronous
    DRAM,即数据的读写需要时钟来同步。 DDR(Double Data Rate)
    SDRAM:双倍速率同步动态随机存储器,一个时钟周期内传输两次数据。
  • 一个是静态的,一个是动态的,静态的是用的双稳态触发器来保存信息,而动态的是用电子,要不时的刷新来保持。
  • DRAM容量大,速度快;SRAM容量小,速度慢。

2.1、SDRAM的结构
在这里插入图片描述

 

2.2、 SDRAM的控制

EMIF所支持的SDRAM控制命令
在这里插入图片描述

 ACTV命令

        ACTV命令的作用是激活存储器中的相关页,以尽量降低后续访问的延迟。每次读/写SDRAM中新的一行之前,EMIF会自动发出ACTV命令。
在这里插入图片描述

READ 读命令

对SDRAM的突发访问,读取3个数据
在这里插入图片描述

 WRT 写命令

对SDRAM写3个数据
在这里插入图片描述

 

3. 接口时序的设计

        EMIF与SDRAM的接口时序由SDCTL、SDTIM和SDEXT寄存器控制,如何设置上述时间参数,需要用户去查看具体SDRAM芯片的器件手册
在这里插入图片描述

接口时序的设计
在这里插入图片描述 

4. SDRAM读写示例

程序类型:
汇编程序
直接寄存器操作的C语言程序
基于CSL的C语言程序
基于DSP/BIOS的C语言程序
在这里插入图片描述

5、异步接口设计

        EMIF异步接口提供了4个控制信号,这4个控制信号可以通过不同的组合实现与不同类型异步器件的无缝接口(glueless interface)。
在这里插入图片描述

 EMIF 异步读时序

  • 建立时间:从存储器访问周期开始(片选、地址有效)到读/写选通有效之前
  • 触发时间:读/写选通信号从有效到无效
  • 保持时间:从读/写信号无效到该访问周期结束

 在这里插入图片描述

 EMIF 异步写时序
在这里插入图片描述

 EMIF 异步读时序
在这里插入图片描述

         表中RS为读建立时间,RST为读触发时间,RH为读保持时间,WS为写建立时间,WST为写触发时间,WH为写保持时间,E为ECLKOUT周期

CE1CTL控制寄存器
在这里插入图片描述

 在这里插入图片描述

FLASH 的读时序 

 在这里插入图片描述

 在这里插入图片描述

FLASH 的读时序

        数据是在Strobe阶段结束,ARE信号变高之前的时钟上升沿处被DSP读取,因此可以得出读操作中CE1空间控制寄存器有关参数设定的3个限制条件,设EMIF时钟频率为100MHz,得时钟周期E为10ns,则计算如下:

  • Setup+Strobe≥(tacc(f)+tsu+tdmax)/E=(90+6.5+7)/10=10.3
  • Setup+Strobe+Hold≥trc(f)/E=90/10=9
  • Hold≥(th-toh(f))/E=(1-0)/10=0.1

        一般Setup可取1,这样由第1个条件便可以得出Strobe的值为10;再由第2和第3个条件得到Hold的值为1。

FLASH 的写时序

 在这里插入图片描述

 在这里插入图片描述

 

对于写操作,Setup、Strobe和Hold这3个参数可以依照下面的条件来确定:

  • Strobe≥twp(f)/E=35/10=3.5
  • Setup+Strobe≥twph(f)/E=30/10=3
  • Setup+Strobe+Hold≥twc(f)/E=90/10=9
  • Setup值和Hold值均取1,则Strobe的值为7

因此得到CE1CTL控制寄存器各字段的值,MTYPE设为2对应32位异步接口。

  • RDSETUP = 1 WRSETUP = 1
  • RDSTRB = 10 WRSTRB = 7
  • RDHLD = 1 WRHLD = 1

    Flash 编程命令字及顺序
    在这里插入图片描述

FLASH 读写流程

FLASH擦除流程

 FLASH擦除流程

 FLASH写入流程
在这里插入图片描述

 

FLASH 操作等待流程

        FLASH芯片提供了2种方法来检测是否完成擦除和写数据等编程操作:数据轮询位(DQ7)和数据切换位(DQ6)。当芯片处于内部编程操作时,读DQ7会返回’0’,读DQ6的返回值在’0’和’1’之间切换;当内部编程操作完成后,读DQ7就会返回’1’,DQ6停止切换。因此需要在编程操作的程序中插入2次读操作,如果2次读的结果都是有效数据,才说明器件完成了编程操作。
在这里插入图片描述

 

Flash 读写示例程序

        FLASH映射到CE1存储空间,地址范围0x9000 0000~0x9FFF FFFF。选择16位数据总线时, Flash的BYTE输入端被固定为高电平。在这个例子中,Flash的RY/BY端口的输出信号没有被用来决定Flash的状态,而是假定采用轮询法对Flash编程和擦除。
在这里插入图片描述

FLASH 读写流程 
在这里插入图片描述

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ModaHub魔搭社区:常用的相似性度量——浮点向量相似性度量和二进制向量相似性度量

目录 常用的相似性度量 浮点向量相似性度量 二进制向量相似性度量 总结 常用的相似性度量 如果没有相似性度量——计算两个向量之间距离的方法,再好的向量数据库也没有用。因为存在许多度量,我们在这里只讨论最常用的子集。 浮点向量相似性度量 最常见的浮点向量相似…

【数据分析 - 基础入门之pandas篇①】- pandas介绍

文章目录 前言一、pandas介绍二、pandas优势2.1 强大的数据结构支撑2.2 优点 三、pandas学习路线结语相关导读 前言 一、pandas介绍 pandas 是 Python 的 核心数据分析支持库 ,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据…

【JUC进阶】11. BlockingQueue

目录 1、前言 2、BlockingQueue 2.1、ArrayBlockingQueue 2.1.1、take() 2.1.2、put() 2.2、LinkedBlockingQueue 2.3、PriorityBlockingQueue 2.4、SynchronousQueue 3、简单使用 3.1、创建ArrayBlockingQueue 3.2、Demo 1、前言 对于并发程序而言,高性…

python: FileHelper

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/7/9 19:12 # User : geovindu # Product : PyCharm # Proj…

QT事件处理

设计一个闹钟&#xff0c;定时播报内容。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTimerEvent> #include <QDateTime> #include <QMessageBox> #include <QTextToSpeech> #include <QDebug> namespa…

校园闲置物品交易平台的设计与实现(论文+源码)_kaic

摘 要 伴随大数据时代的到来&#xff0c;计算机已成为人们步入个数化生活的必须品。由于计算机技术的成熟&#xff0c;互联网的强大功能也正在被人们以最大限度的开发。通过网络&#xff0c;人们能够足不出户完成校园闲置物品查阅&#xff0c;这在方便学生的同时也解决了在传统…

用于FPGA远程更新的QuickBoot方法

用于FPGA远程更新的QuickBoot方法 用于FPGA远程更新的QuickBoot方法 用于FPGA远程更新的QuickBoot方法1. 远程更新简介2 QuickBoot方案2.1 QuickBoot配置方法2.2 QuickBoot Flash 编程方法 3.QuickBoot实现3.1 Critical Switch World (key point)3.2 QuickBoot存储映射3.3 Bits…

Django ORM中QuerySet常用接口汇总记录

存在模型数据 学生表 课程表 支持链式操作的接口 all接口&#xff1a;用于查询所有数据&#xff0c;相当于&#xff1a;select * from xxx filter接口&#xff1a;根据条件过滤数据 values接口&#xff1a;指定返回的字段&#xff0c;结果是包含 dict 的 QuerySet 对象 valu…

zabbix----代理服务器,高可用集群

文章目录 一、部署 zabbix 代理服务器1.1 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy1.2 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.3修改 zabbix-proxy 配置文件1.4 启动 zabbix-proxy1.5 在所有主机上配置 hosts 解析1.6 在 Web 页面配置 …

Oracle批量生成供datax调用的json文件及可执行sh脚本

Oracle+DataX+存储过程实现异构库之间的数据同步资源-CSDN文库 背景: 项目需要做数据迁移(hive2oceanbase),两边的库有几百张表,人工生成json文件,工作量巨大,想来想去还是用Oracle存储过程的形式,批量生成json文件和shell脚本,及实现跑批的功能。 本次测试是Oracl…

免费插画网站

humaaans undraw iradesign fresh-folk delesign

MYSQL的体系结构

mysql体系结构可以分为四个层级&#xff1a;连接层&#xff0c;SQL层&#xff0c;插件存储引擎&#xff0c;物理文件层 补充&#xff1a; SQL层中&#xff1a; 管理服务和工具组件&#xff1a;从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面管理数据库。…

开发环境可运行,发包后报错(nginx代理出现了问题)

场景&#xff1a; vue项目首次发包... 后端服务发包完毕&#xff0c;apifox测试接口没问题、前端开发环境连服务也没问题... 前端项目打包,提前配置nginx&#xff0c;前端发包... 打开网页&#xff0c;登录接口正常&#xff0c;登录后其他接口报错... 查看报错信息&#xff1a;…

Unity 编辑器-查找所有未被使用的Prefab

需求 接到一个需求&#xff0c;将Res里所有特效相关的prefab检查一下&#xff0c;没有使用的移除。 分析 先拆解一下需求&#xff0c;如下 #mermaid-svg-YiTzyE1BvQ0ZTgLj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

docke安装elasticsearch(ES)

docke安装elasticsearch&#xff08;ES&#xff09; 1.安装一个不带数据卷映射的ES docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" elasticsearch:7.6.22.创建es数据卷映射目录 mkdir -p data/elasticsearch3.将…

瑞芯微 RK356x 基于Android11移植usb接口rtl8723du wifi和蓝牙一体化

开发环境 平台: 瑞芯微RK356x 操作系统&#xff1a;Android11 WiFi、蓝牙芯片:RTL8723DU 通讯类型&#xff1a;USB协议 RTL8723du介绍 Realtek RTL8723DU是一个高度集成的单片机802.11b/g/n 1T1R WLAN&#xff0c;和一个集成的蓝牙2.1/4.2单片机&#xff0c;USB 2.0多功能。…

谈谈电机的FOC控制算法的特点以及应用场景

电机的FOC&#xff08;Field-Oriented Control&#xff09;控制算法是一种常用的电机控制策略。它的特点是将电机的控制分为两个部分&#xff1a;电流控制和转速控制。 首先&#xff0c;电流控制是FOC算法的关键部分。它通过控制电机的电流来实现对电机的力矩控制。具体来说&am…

maven引入jar包报红

maven引入jar包报红 1、检查自己的maven配置有无问题 2、检查是否没有子项目使用到当前引入的jar包&#xff0c;在根目录下引入的jar包如果没有子项目使用会报红&#xff0c;原因是在根目录下只是声明式引用&#xff0c;并没有实际引用到。 解决办法&#xff1a;找到要使用的子…

Leetcode-每日一题【1721.交换链表中的节点】

题目 给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后&#xff0c;返回链表的头节点&#xff08;链表 从 1 开始索引&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2输出&#xff1a;[1,4,3,2,5] 示例 …

816. 数组翻转

链接&#xff1a; 链接 题目&#xff1a; 给定一个长度为 nn 的数组 aa 和一个整数 sizesize&#xff0c;请你编写一个函数&#xff0c;void reverse(int a[], int size)&#xff0c;实现将数组 aa 中的前 sizesize 个数翻转。 输出翻转后的数组 aa。 输入格式 第一行包含两个整…