基于FPGA的DDR控制器的设计

时间:2022-07-19 08:25:28

基于FPGA的DDR控制器的设计

摘要: DDR SDRAM使用双倍数据速率结构,凭借其大容量,高数据传输速率和低成本优势,正在被越来越多地应用于高速数据采集系统中[1]。使用Altera公司的Cyclone FPGA芯片设计实现了DDR控制器的功能,叙述了其设计思想,具有一定的实用价值。

关键词: DDR SDRAM; 控制器; FPGA; 数据采集

中图分类号: TP311

文献标志码: A

文章编号: 2095-2163(2016)06-0118-03

0引言

随着电子技术的快速发展,人们对DDR(全称DDR SDRAM)[2]的需求越来越紧迫。DDR(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率随机存储器)在设计上采用的是2.5 V的工作电压,而且允许在时钟的上升沿和下降沿进行数据的存取,整体速度已可达到同频率的2倍,同时还在容量方面也呈现了更佳性能。因而,在诸多对于数据量和带宽具有较高要求的重要系统中,DDR已然成为获得广泛应用的一种功能强大、可拓展的高端存储器。基于此,为了充分发挥DDR容量和速度的执行优势,本次研究主要针对DDR读写的特点,开发实现了一种基于FPGA读写的DDR控制器[3]。

[BT4]1DDR SDRAM控制器的工作解析

[BT5]1.1DDR SDRAM的工作原理

DDR SDRAM是由若干个基本的单管DRAM单元所构成的。内存控制器的主要功能是对DDR3 SDRAM的读写进行控制,在内存芯片完成初始化之后,DDR内存处于就绪状态。DRAM利用MOS管的栅电容上的电荷来实现信息储存,一个单元储存的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,由于栅极漏电,代表1的电容会放电,代表0的电容会吸收电荷,这样会造成数据流失。

在DDR SDRAM上电后,其内部以及所储存的数值都为未知状态,必须对其展开初始化操作,使其进入正常的工作状态。初始化过程为:系统上电后,保持CKE为低电平,等待电源电压和时钟的稳定。待电源电压和时钟电压数值恒稳后,保持复位信号有效。完成初始化步骤之后,DDR3储存器便进入就绪状态,等待控制器的访问命令,可以进行正常的工作,并可根据控制器发出的命令来执行相应的操作。DDR3的工作形式即是不同状态的转化的过程,也就是通过状态机的控制,在不同的状态间自由转化。

DDR SDRAM控制器的主要功能是完成对DDR SDRAM的初始化,将DDR SDRAM复杂的读写时序转化为用户简单的读写时序,以及将DDR SDRAM接口的双时钟沿转换为用户的单时钟沿数据,使用户如同操作普通RAM一样定制调控DDR SDRAM;同时,控制器要产生周期性的刷新命令来维持DDR SDRAM内的数据而不需要用户的干预[4]。

设计实现的工作原理则如图1所示。

由图1可知,主控制模块的处理功能是构建存储器的初始化,而后接受并解码用户信息,凭此来生成读、写或刷新等指令,逻辑设计则是由状态机提供全面管理及实现的。

[BT5]1.2DDR SDRAM的状态转换

DDR的状态转换如图2所示。

由图2可知,DDR SDRAM上电后,必须按照规定的程序启动初始化过程。在初始化过程中,需要注意普通模式寄存器与扩展模块寄存器的值是否正确。其中,普通寄存器主要用来设定DDR SDRAM的工作方式,包括突发长度、突发类型和工作模式[5]。

初始化进程结束后,将导入正常的工作状态,此时可对存储器进行读写和刷新操作。在读写操作现实发生前则需要执行激活(ACTIVE)命令,与该命令一起被触发的地址位用来选择突发起始列单元。在激活前还设有一项预充电操作,而只有在预充电操作关闭后,DDR SDRAM才能对新区或行设定读写操作。

DDR 控制器需要用自动刷新命令以保持其内部的数据不致丢失,但必须在所有区都空闲的状态下才能获得执行。写操作是由FPGA向DDR SDRAM写入数据,只需按照DDR SDRAM的工作要求发出相应的工作指令即可。

[BT4]2DDR的分类

DDR的频率可以用工作频率和等效频率2种方式给出描述和表示。具体来说,工作频率是内存颗粒实际的工作频率,但是由于DDR内存可以在脉冲的上升和下降沿都传输数据,因此传输数据的等效频率是工作频率的2倍。基于此,可得DDR的技术分类。分类结果则如表1所示。

3ISE软件介绍

现如今,Xilinx系统中FPGA系列芯片已然占据了超强市场份额,发展前景开放可观,种种的情状均使得ISE发展成为迄今为止使用广泛首选的FPGA工具软件。ISE是一种可高效率实现EDA设计的工具集合,又可通过与某些第三方软件的技能配合、优势互补,而使得ISE的软件功能日趋完善,同时更能贴切适应现如今的发展需求。ISE的突出特点是界面友好并且操作简单。ISE的主要功能包括设计输入、综合、仿真、实现和下载,其工作流程不需要任何软件的辅助支持。

[BT4]4主控制器中各模块的功能

DDR2控制器是由4个模块组成:时钟模块、控制模块、数据链路模块、用户接口模块。

在此,则针对各模块的实现功能给出如下阐释论述。

[BT5]4.1时钟模块

时钟模块是由Xilinx的DCM核集结设计并实现构成,主要用来接收FPGA外部时钟,再通过分频和倍频产生用户接口时钟、数据链路模块使用的时钟、控制模块使用的时钟和DDR2的时钟。不仅如此,该模块的另一定制功能就是用复位信号对整个模块进行全局复位。

[BT5]4.2控制模块

作为控制器的中枢,控制模块主要用于执行对DDR2的初始化和命令的操作,因此控制模块在基本设计上主要是由初始化和命令控制2部分架构形成。对其具体分析阐述如下。

1)初始化。在DDR2上电后经过20μs的稳定期,将时钟使能信号CKE置高,等待400 ns的时间后进行第一次的预充电,然后对外部寄存器和模式寄存器开启配置进程,紧接着执行第二次预充电和2次刷新,再判断DLL是否正确锁定,配置OCD,最后等待初始化完成。如果初始化结束,将信号initial_done置高表示此时用户可以对DDR2执行进一步操作。

2)命令控制。命令控制部分主要用作DDR2初始化后,产生控制信号和每个操作中的延r,并分析用户命令对DDR2设定自动刷新、读操作、写操作、预充电等操作。当用户写入读写命令的时候,状态机可以自行判断初始化是否完成、行激活、列寻址、预充电、自动刷新、读写命令等操作。

[BT5]4.3读/写数据链路模块

DDR2是一个时钟上、下沿均可执行数据采样的高速芯片,因此对于数据链路模块的时序将会提出精确严格要求。为了能够达到这一设计目的,采用了Xilinx的SPARTAN6的特殊原语模块IDDR和ODDR对数据进行处理。在数据链路模块中采用读数据链路和写数据链路彼此独立的方式,使用户更易于获得对数据的明晰控制。

[BT5]4.4用户接口模块

作为和用户直接连接的重点模块,用户接口模块的功能完备与否将直接影响用户对IP核控制的难易度。为了使用户很容易把控制器的IP核运用到工程项目中,整个模块中包含了READ FIFO、WRITE FIFO、COMMAND FIFO、命令子模块、用户数据链路子模块,用户控制子模块。其中,READ FIFO、WRITE FIFO、 COMMAND FIFO 使用户可以全面控制命令和数据连续的输入和输出。而命令子模块则可以翻译用户输入的命令,用户只需要发送读或写命令、命令要操作的首地址和总共读/写多少个数据,命令子模块就可以根据情况给用户控制子模块发送命令控制。用户控制子模块再以状态机的形式控制COMMAND FIFO、WRITE FIFO、READ FIFO,对与用户接口模块相连的主控制模块和数据链路模块提供功能控制,并对DDR2发出读/写等操作指示信息。

[BT4]5时序图及串口显示

DDR SDRAM在一对差分时钟的控制下展开工作,指令设定在每个时钟的上升沿触发,随着数据一起传送的还包括一个DQS(双向的数据选通信号),接收方可通过此选通信号来接收定制发送的一些数据。这个DQS选通信号与数据有一定关联,其功能相当于一个独立工作的时钟。DQS作为一种选通信号在读周期的过程中是由DDR SDRAM所构建生成。进行读操作时,DDR控制器捕获数据是通过直接获取时钟的方式来具体实现的。读命令在采集到时钟触发信号后,数据会在触发读写延迟之后在数据总线上获得展现。在写周期的过程中,DQS(双向的数据选通信号)的产生是由DDR控制器来设计实现的[6]。在写周期持续过程中,数据选通信号将与数据呈现出中心对齐的状态。读/写操作时序如图3所示。

在系统的硬件设计和仿真建立后,可将编译后的文件下载到系统的硬件中,对DDR SDRAM控制器的读信号进行实时的采集与显示。可以使用单步执行程序,再到memory窗口观察DDR SDRAM地址空间的当前内容[7]。展示效果如图4所示。

6结束语

DDR控制器设计总共利用了751个4输入LUT,该数值仅为总LUT资源的2%。另外,设计还使用了3个DCM。DDR控制器在Xilinx ISE编程环境下获得实现,结合chipscope进行实时观察。板上调试时最终选用的时钟为100 MHz,经测试可知,数据传输及捕获准确无误。该DDR控制器的工作切实可行、稳定可靠,占用的逻辑资源较少,不仅呈现较高的可移植性,而且具有简单方便的用户接口。也就是在使用时更趋方便快捷,同时也无需复杂的修改就可以控制其他型号的DDR SDRAM芯片,因此可以显著提升信号处理板的存储容量,能够高效优质地应用在高速信号处理系统中。

[HS1*2][HT5H]参考文献:[HT]

[WTBZ][ST6BZ][HT6SS][1] [ZK(#〗

[HJ*2]

刘云清,佟首峰,姜会林. 利用FPGA实现SDRAM控制器的设计[J]. 长春理工大学学报, 2005,28(4):47-50.

[2] 宋一鸣,谢煜,李春茂. 基于FPGA的SDRAM控制器设计[J]. 电子工程师, 2003,29(9):10-13.

[3] 马其琪,鲍爱达. 基于DDR3 SDRAM的高速大容量数据缓存设计[J]. 计算机测量与控制,2015,23(9):3112-3113,3118.

[4] 丁宁,马游春,秦丽,等. 基于FPGA的DDR3-SDRAM控制器用户接口设计[J]. 科学技术与工程,2014,14(17):225-229.

[5] 王小娇,张治中. 高速数据采集卡DDR 控制器的设计与实现[J]. 电视技术,2013,37(5):64-67.

[6] 姚清华. 基于测绘相机大面阵CCD压缩技术的研究[D]. 长春:中国科学院长春光学精密机械与物理研究所, 2009.

[7] 王维平,张正炳,贺东芹. 基于FPGA的DDR控制器的设计[J]. 长江大学学报(自然科学版),2011,8(2):90-93.

上一篇:幼儿教育“小学化”倾向与儿童知识观偏差 下一篇:腹股沟疝无张力修补术后复发原因及再次手术的...