首页 > 代码库 > AT91RM9200---SMC简介

AT91RM9200---SMC简介

1.前言

SMC(Static Memory Controller)Atmel 9200静态存储控制器的简称,它可以产生信号来控制外部静态存储和外设。SMC可通过编程寄存器来进行配置。

它有8路片选和23位地址总线。16位数据总线可以配置成8位或16位与外部设备进行交互。独立的读写控制信号可以与外设或外部存储器进行直接连接。

SMC支持不同的访问协议,这些访问协议允许单时钟访问。它也提供外部等待请求的能力。

2.系统框图

技术分享

图 SMC系统框图

3.功能描述

3.1 外部存储接口

 

3.2 写访问

  • 写访问类型
  • 写数据保持时间

写周期期间,数据输出有效是从MCK的上升沿开始到NWE的上升沿结束。写访问期间,数据在总线上会保持到NWE上升沿的1/2个MCK周期。

技术分享

图 0等待状态写访问

 

 技术分享

图 1等待状态写访问

3.3 读访问

  • 读协议

对外部存储设备有两种可选的协议:标准读协议和预读协议。这两种协议的不同在于NRD信号的行为。

协议类型是通过SMC_CSR的DRP进行选择。重置后默认是标准读协议。

  • 标准读协议

在clock周期的后半部分,NRD和NWD是有效的。前半个周期用来保证有足够的时间完成读循环开始前的读地址和NCS的访问。

在标准读访问器件,在开始外部存储访问的时候,NCS被拉低,并且地址线是有效的,而为避免总线冲突,NRD只有在CLOCK的后半个周期才有效。

 

 

技术分享

图 标准读协议

  • 预读协议

3.4 等待状态管理

  • 标准等待状态

在访问相应的存储空间时,可以对片选编程插入一个或多个等待状态,这通过设置SMC_CSR的WSEN 来实现,插入的等待状态数目由NWS决定

下面是相应的标准等待状态数与NWE脉冲为低时时钟周期数:
0: 等待状态1/2时钟周期
1:等待状态1时钟周期
每附加一个等待状态,将增加一个额外的周期,如下图可见NRD会多出一个clock的时间

技术分享

图 一个标准等待状态访问

  • 外部等待状态
  • Data Float等待状态

某些存储器会慢速释放外部总线。对于这些器件,在读访问后并开始对其它外部存储器进行读访问或写操作时需要加入等待状态(数据流动等待状态)。

每个外部存储器数据流动输出时间(tDF) 是由相应的片选SMC_CSR 寄存器中的TDF 编程得到的。TDF 中值表示插入的数据流动等待周期数(0 ~15 ) 及在存储器禁用后允许数据输出到高阻的时间。

内部存储器访问及对同一个内部存储器的连续读访问不会增加数据流动等待时间。

技术分享

图 Data Float等待时间

  • 片选改变等待状态

当连续访问两个不同的外部存储器时自动插入片选等待状态( 若没有插入其它类型等待状态)。
若已经插入等待状态( 例如时间流动等待状态),则不再增加等待状态。

 技术分享

图 片选等待状态

 

  •  预读等待状态

 

 3.5 setup和hold周期

SMC 允许与不同的setup、hold及脉冲延迟的某些存储器连接。这些参数可编程且定义每部分读写周期的时间。但在预读协议中该特性不能使用。

若 WSEN = 0 (0 标准等待状态),编程的启动时间不为零而保持参数等于零,SMC 无法正确工作。

若连续访问两个不同的外部存储器且第二个存储器setup周期已编程,则不会插入片选改变等待状态。

当第一个存储器数据流动等待状态(tDF)已编程而第二个存储器setup周期已编程,SMC运行如下:
? 若 tDF 大于或等于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的写访问

技术分享

技术分享

 

AT91RM9200---SMC简介