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 ...
随机推荐
- BZOJ 4754 [JSOI2016]独特的树叶 | 树哈希判同构
题目链接 这道题是一道判断无根树同构的模板题,判断同构主要的思路就是哈希. 一遇到哈希题,一百个人能有一百零一种哈希方式,这篇题解随便选用了一种--类似杨弋<Hash在信息学竞赛中的一类应用&g ...
- break、continue区别
break命令break命令允许跳出所有循环(终止执行后面的所有循环).下面的例子中,脚本进入死循环直至用户输入数字大于5.要跳出这个循环,返回到shell提示符下,就要使用break命令.1. #! ...
- MySql 主辅-一主多辅
MySql 主辅-一主多辅mysql tar源码包安装 骤及过程,以供参考 系统是centos6.x .注意:此安装是默认CentOS下已经安装了最新工具包,比如GNU make, GCC, Perl ...
- tf 常用函数 28原则
一个tensorflow图由以下几部分组成: 占位符变量(Placeholder)用来改变图的输入. 模型变量(Model)将会被优化,使得模型表现得更好. 模型本质上就是一些数学函数,它根据Plac ...
- Azure KeyVault设置策略和自动化添加secrets键值对
一. 关于Azure Key Vault Azure 密钥保管库可帮助保护云应用程序和服务使用的加密密钥和机密. 借助 Key Vault,可使用密钥来加密密钥和机密(例如身份验证密钥.存储帐户密钥. ...
- c c++ 混合编译
单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 1 2 3 4 5 6 7 8 9 /* helloworld.cpp */ # ...
- Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
Luogu 1525 [NOIP2010]关押罪犯 (贪心,并查集) Description S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨 ...
- 中南大学2018年ACM暑期集训前期训练题集(入门题) J : A Simple Problem
毒瘤哇!为什么要用long long 啊!!!这个题没有加法操作啊,为什么会爆int啊!!!! 思路: http://www.cnblogs.com/buerdepepeqi/p/9048130.ht ...
- html实现猜数字游戏
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- pyqt5 设置窗口按钮等可用与不可用
setEnabled(True) 设置窗口或者按钮可用,Flase不可用
