AT91RM9200---SMC简介
1.前言
SMC(Static Memory Controller)Atmel 9200静态存储控制器的简称,它可以产生信号来控制外部静态存储和外设。SMC可通过编程寄存器来进行配置。
它有8路片选和23位地址总线。16位数据总线可以配置成8位或16位与外部设备进行交互。独立的读写控制信号可以与外设或外部存储器进行直接连接。
SMC支持不同的访问协议,这些访问协议允许单时钟访问。它也提供外部等待请求的能力。
2.系统框图
图 SMC系统框图
3.功能描述
3.1 外部存储接口
//TODO
3.2 写访问
- 写访问类型
//TODO
- 写数据保持时间
写周期期间,数据输出有效是从MCK的上升沿开始到NWE的上升沿结束。
写访问期间,数据在总线上会保持到NWE上升沿的1/2个MCK周期
图 0等待状态写访问
图 1等待状态写访问
3.3 读访问
- 读协议
对外部存储设备有两种可选的协议:标准读协议和预读协议。这两种协议的不同在于NRD信号的行为;对于两种读协议,NWE具有相同的行为,在MCK的后半周期,NWE总是低电平。
协议类型是通过SMC_CSR的DRP进行选择。重置后默认是标准读协议。
- 标准读协议
在MCK周期的后半周期,NRD和NWD是有效的。前半个周期用来保证有足够的时间完成读循环开始前的读地址和NCS的访问。
在标准读访问期间,在开始外部存储访问的时候,NCS被拉低,并且地址线是有效的,而为避免总线冲突,NRD只有在MCK的后半个周期才有效。
图 标准读协议
预读协议
预读协议通过在MCK周期一开始就插入NRD型号,这样为读取存储提供了更多的时间。。在对相同的存储器成功完成了读访问周期后,NRD 继续保持有效。
由于读周期通常会限制外部存储器系统速度,预读协议允许使用一个更快的时钟频率。但为避免出现外部总线竞争,有时需要一个额外的等待状态。
图 预读协议
3.4 等待状态管理
- 标准等待状态
在访问相应的存储空间时,可以对片选编程插入一个或多个等待状态,这通过设置SMC_CSR的WSEN 来实现,插入的等待状态数目由NWS决定
下面是相应的标准等待状态数与NWE脉冲为低时时钟周期数:
0: 等待状态1/2时钟周期
1:等待状态1时钟周期
每附加一个等待状态,将增加一个额外的周期,如下图可见NRD会多出一个clock的时间
图 一个标准等待状态访问
- 外部等待状态
//TODO
- Data Float等待状态
某些存储器会慢速释放外部总线。对于这些器件,在读访问后并开始对其它外部存储器进行读访问或写操作前需要加入等待状态(数据流动等待状态)。
每个外部存储器数据流动输出时间(tDF) 是由相应的片选SMC_CSR 寄存器中的TDF 编程得到的。TDF 中值表示插入的数据流动等待周期数(0 ~15 ) 及在存储器禁用后允许数据输出到高阻的时间。
时间流动等待状态不会延迟内部存储器访问。因此含长tDF的对外部存储器的单访问不会延迟内部存储器程序的执行。为保证内部存储器系统忙时不被访问,内部访问时SMC跟踪编程的内部数据流动时间。
内部存储器访问及对同一个内部存储器的连续读访问不会增加数据流动等待时间。
图 Data Float等待时间
- 片选改变等待状态
当连续访问两个不同的外部存储器时自动插入片选等待状态( 若没有插入其它类型等待状态)。
若已经插入等待状态( 例如时间流动等待状态),则不再增加等待状态。
图 片选等待状态
- 预读等待状态
在预读协议中,当外部写周期后是读周期,将自动插入一个预读等待状态以确保写周期在读周期开始前结束。该等待状态在其它等待状态外产生( 即,数据流动等待状态)。
读周期后紧跟一个写周期、相同类型的连续访问或内部与外部存储器间的访问将不会增加等待状态。
图 预读等待状态
3.5 setup和hold周期
SMC 允许与不同的setup、hold及脉冲延迟的某些存储器连接。这些参数可编程且定义每部分读写周期的时间。
注:在预读协议中该特性不能使用。
若 WSEN = 0 (0 标准等待状态),编程的setup时间不为零而hold参数等于零,SMC 无法正确工作。
若连续访问两个不同的外部存储器且第二个存储器setup周期已编程,则不会插入片选改变等待状态。
当第一个存储器数据流动等待状态(tDF)已编程而第二个存储器setup周期已编程,SMC运行如下:
• 若 tDF 大于或等于setup周期数,插入的setup周期数为0
• 若 tDF 小于setup周期数,插入的 tDF 数为0
- 读访问
读周期可分为setup、脉冲长及hold。setup时间为1.5 ~ 7.5个时钟周期间,hold时间为0 ~ 7 时钟周期间,而 脉冲长为1.5 ~ 128.5个时钟周期间,周期以1递增。
图 含setup和hold的读访问
图 含setup的读访问
- 写访问
写周期可分为setup、脉冲长与hold。setup时间为1.5 ~ 7.5个时钟周期间,hold时间为0.5 ~ 7时钟周期间,而 脉冲长为1 ~ 128个时钟周期 ,周期以1递增。
图 含setup和hold的写访问
图 含setup的写访问
- 带setup的数据流动等待状态
图 第二次访问带有setup的连续访问
图 第一次访问有数据流动等待状态(TDF = 2) 第二次访问有启动(NRDSETUP = 1)
图 第一次访问有数据流动等待状态(TDF = 2) 第二次访问有启动(NRDSETUP = 3)
AT91RM9200---SMC简介的更多相关文章
- 【转】Bootloader之uBoot简介(转)
原文网址:http://blog.csdn.net/sadamoo/article/details/8139946 来自http://blog.ednchina.com/hhuwxf/1915416/ ...
- Bootloader之uBoot简介
本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- Bootloader之uBoot简介(转)
来自http://blog.ednchina.com/hhuwxf/1915416/message.aspx,感谢作者 一.Bootloader的引入从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
随机推荐
- [luogu1447][bzoj2005][NOI2010]能量采集
题目大意 求出\(\sum_{i=1}^{n} \sum_{i=1}^{m} gcd(i,j)\times 2 -1\). 题解 解法还是非常的巧妙的,我们考虑容斥原理.我们定义\(f[i]\)表示\ ...
- 洛谷 [HNOI2014]道路堵塞 解题报告
[HNOI2014]道路堵塞 题意 给一个有向图并给出一个这个图的一个\(1\sim n\)最短路,求删去这条最短路上任何一条边后的最短路. 又事SPFA玄学... 有个结论,新的最短路一定是\(1\ ...
- bzoj3672/luogu2305 购票 (运用点分治思想的树上cdq分治+斜率优化dp)
我们都做过一道题(?)货币兑换,是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程,$f[i]=min\{f[j]+(dis[i]-dis[j])*p[i]+q[i]\} ...
- Linux 系统缓存机制学习
前言:本文为参考他人的文章,是一篇学习记录型博客.理解linux的系统缓存机制有助于理解elasticsearch实时更新的原理. 一.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲 ...
- DIVCNT2&&3 - Counting Divisors
DIVCNT2 - Counting Divisors (square) DIVCNT3 - Counting Divisors (cube) 杜教筛 [学习笔记]杜教筛 (其实不算是杜教筛,类似杜教 ...
- CodeChef题目选讲
https://wenku.baidu.com/view/2445a0322f60ddccda38a023.html 关键点:不超过7条 根据咕咕原理,所以答案最少是N/7;(N小于49就暴力) 随机 ...
- P1274 魔术数字游戏 naive搜索+剪枝
真的naive...... 我把所有能剪的枝都剪了才过的.否则就是TTT 还有个很神奇的事:数组作为参数传进递归函数时会造成上一层函数里的数组的改变.这个我TM调了一天. 下面奉上代码 #includ ...
- mfc editline 变为大框框
属性:
- python---web框架本质(2)
目录 controllers //存放控制方法 models //存放模型方法 views //存放视图模板 index.html new.html show.html index.py //用户访问 ...
- golang struct tag
golang可以在struct中的每个字段,写上一个tag.这个tag可以通过反射的机制获取到,最常用的场景就是json序列化和反序列化 package main import ( "enc ...