引言
很多嵌入式系统,特别是应用于图像处理与高速数据采集等场合的嵌入式系统,都需要高速缓存大量的数据。DDR(Double Data Rate,双数据速率)SDRAM由于其速度快、容量大,而且价格便宜,因此能够很好地满足上述场合对大量数据缓存的需求。但DDR SDRAM的接口不能直接与现今的微处理器和DSP的存储器接口相连,需要在其间插入控制器实现微处理器或DSP对存储器的控制。
随着密度与性能的不断提升,现场可编程门阵列(FPGA)已被广泛应用于各种嵌入式系统中。而且,现在很多的FPGAs都提供了针对DDR SDRAM的接口特性:其输入输出引脚都与SSTL-Ⅱ电气特性兼容,内部提供了DDR触发器、锁相环等硬件资源。使用这些特性,可以更加容易地设计性能可靠的高速DDR SDRAM存储器控制器。
图1是DDR SDRAM在高速信号源系统中的应用实例。
在该系统中,由FPGA的完成各模块之间的接口控制。FPGA接收从前端传送过来的高速数字信号,并将其存储在DDR SDRAM中;DSP通过FPGA读取DDR中的数据,处理后再送回到DDR SDRAM,最后由FPGA负责将数据分两路输出。
该系统对存储器的要求是能够高速地存储大量的数据,DDR SDRAM正好能满足这一要求,此时,FPGA是否能对DDR SDRAM进行有效控制就成为影响系统性能的关键。最后的试验结果表明,FPGA是能够胜任这一任务的。
2 DDR SDRAM的工作方式
在DDR SDRAM能够被存取数据之前,需要先对其初始化。该初始化流程是预先定义好的。不正确的操作将导致无法预料的结果。初始化的过程中将设置DDR SDRAM的普通模式寄存器和扩展模式寄存器,用来制定DDR SDRAM的工作方式,这些设置包括突发长度、突发类型、CAS潜伏期和工作模式以及扩展模式寄存器中的对DDR SDRAM内部DLL的使能与输出驱动能力的的设置。模式寄存器可以被再编程,这时需要DDR SDRAM的各个区(bank)处于空闲状态,从而改变存储器的工作模式。如果操作正确CONTROL ENGINEERING China版权所有,对模式寄存器的再编程不会改变存储器内存储的数据。
初始化完全之后www.cechina.cn,DDR SDRAM便进入正常的工作状态,此时便可对存储器进行读写和刷新。DDR SDRAM在一对差分时钟(CLK与CLKn;CLK的上升沿与CLKn的下降沿的交点被认为是CLK的上升沿)的控制下工作。命令(地址和控制信号)在每个时钟(CLK)的上升沿被触发。随着数据一起传送的还包括一个双向的数据选通信号,接收方通过该信号来接收数据。DQS作为选通信号在读周期中由DDR SDRAM来产生,写周期中由存储器控制器来产生。该选通信号与数据相关,其作为类似于一个独立的时钟,因此也需要满足相应的时序要求。读周期中www.cechina.cn,DQS与数据是边沿对齐的;写周期中,DQS与数据是中心对齐的。存储器输入的数据在DQS的两个沿都触发,输出的数据也是以DQS的两个沿作为参考www.cechina.cn,同时还要以时钟CLK的两个沿作为参考。因此,由于接口在时钟的两个沿的触发下工作。其数据宽度(n)是存储器数据宽度(2n)的一半。图2描述了DDR SDRAM的工作方式。
对DDR SDRAM的读和写操作是基于突发的:从一个选定的地址单元开始CONTROL ENGINEERING China版权所有,连续存取设置好长度的地址单元。该长度就是所谓的突发长度。DDR SDRAM提供的可编程的读或写的突发长度为2,4或8。数据的存取以一个激活命令(ACTIVE command,RAS_n low)开始CONTROL ENGINEERING China版权所有,接着便是读(CAS_n low)或写(CAS_n low and WE_n low)命令。与激活命令一起被触发的地址位用来选择将要存取的区(bank)和页(或行);与读或写命令