微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CPLD的SDRAM控制器的设计

基于CPLD的SDRAM控制器的设计

时间:06-05 来源:互联网 点击:

数据采集处理技术是现代信号处理的基础,广泛应用于雷达、声纳、软件无线电、瞬态信号测试等领域。随着信息科学的飞速发展,人们面临的信号处理任务越来越繁重,对数据采集处理系统的要求也越来越高。近年来复杂可编程逻辑器件(Complex Programable Logic Dev ice,CPLD)由于其设计灵活性、更强的适应性及可重构性,结合同步动态随机访问存储器(Synchronous Dynamic Random Access Memory,SDRAM)的高速、大容量、价格优势,在设计高速实时数据采集系统时受到了广泛的关注。SDRAM(同步动态随机访问存储器)具有价格低廉、密度高、数据读写速度快的优点,从而成为数据缓存的首选存储介质。

1 SDRAM的基本操作

SDRAM称为同步动态随机存储器,同步是指其时钟频率与CPU前端总线的系统时钟频率相同,SDRAM可以使所有的输入输出信号保持与系统时钟同步,并且内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。由于SDRAM为了提高存储容量,采用硅片电容来存储信息,随着时间的推移,必须给电容重新充电和刷新来保持电容里的数据信息。

在对SDRAM进行存取数据操作之前,首先要对其初始化,即设置SDRAM的普通模式寄存器和扩展模式寄存器,确定SDRAM的工作方式,这些设置包括突发长度、突发类型、CAS潜伏期和工作模式的设置。在SDRAM芯片内部有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次开机时SDRAM都要先对这个控制逻辑核心进行初始化。初始化过程如图1所示。


1.1 模式寄存器的设置

Mode Register Set:模式寄存器设置,是指对SDRAM的工作方式做一定义,对寄存器的设置,可以在每次系统启动时,也可以在每次存取之间进行,当SDRAM掉电时,系统重新启动后必须重写模式寄存器。其空间安排如下表1所示:

Burst Length:决定当接受到一个读写信号时可以读取的最大的列数目,对于连续读取模式,其值可以为1,2,4,8或整页(full page),当为隔行读取模式是,其值为1,2,4,8。

Burst Type:决定读取模式为连续方式还是隔行方式。

CAS Latency:决定当一个读信号有效到第一个数值在数据线上有效时之间的间隔延迟时间,延迟时间可以设定为1,2或3个时钟周期。例如:如果延迟时间为m,读信号在n时刻有效,那么数据将在第m+n个时钟信号有效,如果相应的读取时间适合的话,而在m+n-1时刻数据线传送数据。

Operation Mode:A7-A8表示操作的模式。

Write Burst Mode:当A9=0时,有A0-A2决定的Burst Length适合于读和写两种操作。而当A9=1时,Write只能读取单一的单元,而不能支持块操作。

Reserved:A10,A11是保留位,为以后的扩展使用。

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)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top