基于EPM1240的SDRAM控制器的设计
1.2 预充电
由于SDRAM的寻址具有独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放S-AMP(重新加入比较电压,一般是电容电压的1/2,以帮助判断读取数据的逻辑电平,因为S-AMP是通过一个参考电压与存储体位线电压的比较来判断逻辑值的),以准备新行的工作。具体而言,就是将S-AMP中的数据回写,即使是没有工作过的存储体也会因行选通而使存储电容受到干扰,所以也需要S-AMP进行读后重写。此时,电容的电量(或者说其产生的电压)将是判断逻辑状态的依据(读取时也需要),为此要设定一个临界值,一般为电容电量的1/2,超过它的为逻辑1,进行重写,否则为逻辑0,不进行重写(等于放电)。为此,现在基本都将电容的另一端接入一个指定的电压(即1/2电容电压),而不是接地,以帮助重写时的比较与判断。
1.3 刷新
SDRAM之所以称为同步动态随机存储器,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是SDRAM最重要的操作。刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。进行预充电操作还要进行刷新的原因:因为预充电是对一个或所有L-Bank中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充电中各L-Bank中的工作行地址并不是一定是相同的。
目前公认的标准是,存储体中电容的数据有效保存期上限是64 ms,也就是说每一行刷新的循环周期是64 ms,这样刷新速度就是:行数量/64 ms。内存规格有4096Refresh Cyeles/64 ms或8192 Refresh Cycles/64 ms的标识,这里的4096与8192就代表这个芯片中每个L-Bank的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096行时为0.625 ps,8192行时就为7.812 5 ps。刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。
2 系统硬件设计
移动SDRAM接口设计包括四个主要模块,如图2所示,即控制接口模块、CAS延迟、突发长度以及地址生成器。下面对这些模块进行简要介绍。本文引用地址:https://www.eepw.com.cn/article/161059.htm
2.1 控制接口模块
控制接口模块内部是有限状态机(Finite-State Machine,FSM),有限状态机解释来自微处理器的输入,把相应的命令和符合时序要求的地址发送给移动SDRAM设备,然后,移动SDRAM设备进入相应的状态,执行命令。
有限状态机会综合考虑存储器的时序要求,以正确的顺序产生各种操作指令,在发出操作指令之前,控制器首先会给出一个读取使能信号,从数据输入输出缓存模块的地址指令中读取地址指令。控制接口模块解码并寄存主机发送的命令,把解码后的空闲、写、读、刷新、充电和模式设置命令和地址信号送给命令模块。状态机的状态转换如图3所示。
2.2 CAS延迟模块
CAS延迟通过模式寄存器配置,CAS延迟模块的实质是2位递增计数器,这一计数器监视CAS延时时钟周期数。它表示读命令和第一个输出数据之间延迟的时钟周期数,延时时钟周期数可以是二或三个时钟周期。图4分别给出CAS=3时的数据输出时序。
2位递增计数器的输入输出如下:
clk是输入的时钟信号来自微控制器,reset输入的异步复位信号,count_en输入的计数使能信号,count输出的CAS延迟数。系统不复位的情况下在计数使能有效时当时钟上升沿到来CAS延迟增加。
评论