基于FPGA的DDR3 SDRAM控制器用户接口设计

网友投稿 341 2022-10-30

基于FPGA的DDR3 SDRAM控制器用户接口设计

随着现代科学技术的高速发展,在工业生产和科学研究上,如卫星通信、高速图像处理等领域,普遍存在对数据进行高速大容量、实时性强和高带宽的处理要求[1,2]。高速数据采集系统作为各个系统中比较核心的部分,对数据处理的速度、实时性、稳定性以及功耗等要求都越来越高。

1 DDR3-SDRAM 的技术特点 本文采用的DDR3-SDRAM 为Micron 公司的MT8JTF12864HZ-1G6G1 内存条。该DDR3 内存条的存储空间为1 GB,由8 片容量为128 MB 的内存芯片构成。每个芯片的数据位宽为8 位,行地址线复用14 根,列地址线复用10 根,Bank 数量为8 个,因此每个内存芯片的容量为16 384 × 1 024 × 8 × 8,即128 MB。8 片组成在一起就构成了MT8JTF12864HZ-1G6G1 的64 位数据位宽,容量为1 GB。

DDR3 的控制命令信号主要有芯片选择信号CS、行地址选择信号RAS、列地址选择信号CAS 和WE 写使能信号,DDR3 的各种操作指令实质上都是通过这四个信号的组合决定的,如表1 所示。其中H 表示高电平,L 表示低电平。

表1 DDR3-SDRAM 的操作指令

2 DDR3-SDRAM控制器用户接口的设计 DDR3 控制器的设计采用了Xilinx 推出的IP 核MIG_v1. 7 + 用户接口模块的设计方法,其中本次设计主要是对用户接口模块进行阐述。图1 为DDR3控制器的总体实现方案。

图1 DDR3 控制器的总体实现方案

2. 1 用户接口模块的设计 用户接口模块为整个DDR3 控制器系统的核心模块,其中主要包括写数据通路和读数据通路两个部分,图2 为DDR3 控制器的用户接口设计的实现方案。

图2 DDR3 控制器的用户接口设计

在用户接口的设计中采用back_to_back 的读写设计模式,将addr_rdy、cmd_en、cmd 和addr 作为地址总线,将wr_rdy、wr_en、wr_end 和wr_data 作为数据总线,两条总线是相互独立的,两个反馈信号addr_rdy 和wr_rdy 也是相对独立的。在写数据开始的时候,要保证地址总线提前数据总线一个周期使能,在addr_rdy 和wr_rdy 没有反压的理想情况下,写数据要比写地址和写命令推迟一个周期发出,当addr_rdy 和wr_rdy 有反压时,写数据和写地址可以不满足相差一个周期被发出的。

读数据通路与写数据通路的设计原理相似,其中rd_valid 为读数据有效信号, rd_data 为读数据信号。在读数据通路中将addr_rdy、cmd_en、cmd 和addr 作为地址总线,rd_valid 和rd_data 作为读数据总线。

2. 2 用户接口的时钟模块设计 从外界输入200 MHz 的延迟参考时钟、200MHz 的差分输入时钟,这些输入信号经过时钟和系统复位模块后能够生成整个DDR3 控制器和DDR3工作的全部时钟,包括用户接口的工作时钟、DDR3 IP 核的工作时钟和DDR3 读写数据的时钟等。这种设计方法,具有简化控制器的设计结构,便于对时钟进行管理的优点[5]。图3 为时钟模块的实现模型。

图3 时钟和系统复位模块

3 DDR3-SDRAM控制器用户接口的仿真 DDR3-SDRAM 的工作必须按照一定的规则进行,必须符合相应的状态机转换要求,图4 给出了DDR3 存储器工作的状态机,该状态机描述了DDR3各个状态的转换以及转换时所涉及的一些命令。DDR3 控制器的设计实质上是围绕着该状态机的进行设计的,以确保内存模块上的每个DDR3 都能正常的进行工作。

图4 DDR3 存储器的状态机

3. 2 用户接口设计模块的Modelsim 仿真结果分析 在本次设计中,软件仿真采用ISE 14. 3 与Modelsim10.0a 相结合的方法。

图5 为在理想情况下,用户接口的输入信号addr_rdy 和wr_rdy 在无反压时候的内部信号观测图,在此状态下,cmd_en 比wr_en 和wr_end 提前一个周期被拉高,有效地址与相应的有效数据之间一直保持着一个周期的时间延迟。图6 为用户接口在addr_rdy 和wr_rdy 信号有反压情况下的内部信号观测图,在此状态下,初始时刻cmd_en 比wr_en 和wr_end 提前一个周期被拉高,有效地址与相应的有效数据之间相差一个周期的时间延迟,但是随着addr_rdy 和wr_rdy 被拉低之后,有效地址与相应的有效数据之间不再满足相差一个周期的时间延迟。因为在本次设计中采用的是back-to-back 模式,地址总线与数据总线相互独立,所以即使有效地址与相应的有效数据之间不再满足相差一个周期的时间延迟,也不会影响数据的传输。在此模式下,数据与地址的传输比较灵活,控制起来比较方便,也有效的避免了数据的丢失。

图5 addr_rdy 信号和wr_rdy 信号无反压的内部信号观测图

图6 addr_rdy 信号和wr_rdy 信号有反压的内部信号观测图

图7 写数据的Modelsim 仿真图

由于DDR3 采用的突发传输长度BL = 8,读写地址值以8 为单位连续增加,这样addr 的低3 位将一直为0,所以在利用Chipscope 对地址进行观测时,是从addr 的第4 位开始观测的,即出现图5。

由于此次设计采用的内存核心频率为200MHz,又因为采用的DDR3 的内存总线位数为64位,DDR3 一次可以预读取8 位,根据内存带宽= 内存核心频率× 内存总线位数× 倍增系数,所以在不考虑刷新和激活等操作所占用的带宽下,DDR3 的内存带宽可以达到12. 5 GB,传输速率可达到1 600MB /s。在如此快的传输速率下,利用Chipscope 难以观测由DDR3 控制器写入到DDR3 内部的数据。所以在本次设计中,采用在ISE14. 3 里面对DDR3控制器的工程添加DDR3 模型,利用Modelsim 对DDR3 控制器和DDR3 模型进行联合仿真的方法对由控制器写入到DDR3 内部的数据进行观测。

从图7 中可以看出,在一个时钟周期内dq 的同步信号qds_n 和dqs_p 变化了8 次,也就是说,在一个时钟周期内写数据以64 bit 为单位被写入了8次。由用户接口传输过来的数据经过DDR3 IP 核之后,能够准确的被写入到DDR3 里面。当进行读数据的时候,也是以64 bit 为单位,在一个时钟周期内读8 个64 bit 的数据。

3. 3 DDR3 控制器用户接口在高速图像数据采集系统中的应用 含有该用户接口的DDR3 控制器已经成功的被应用到某高速图像数据采集系统中,图8 为该高速图像数据采集系统采集到的图片。

图8 高速图像数据采集结果图

该内存控制器的用户接口设计能够对DDR3 内存模块进行很好的管理,同时完成用户发送的各种请求,并且最大限度的提高了访问内存的速度和带宽,避免了数据的丢失,并成功的应用到某高速图像采集系统中。在此用户接口的基础上设计的内存控制器能够与市场上大多数主流内存进行兼容,可移植性强,大大降低了开发成本。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:你知道怎么从Python角度学习Java基础
下一篇:函数计算支持应用中心功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~