利用Xilinx FPGA进行DDR3读写控制总结(一)

3 篇文章 2 订阅
3 篇文章 0 订阅

最近做项目需要利用的DDR3存储芯片先缓存一级数据,然后再读入FPGA中进行处理,所以先在这里记录一下学习使用Xilinx开发的MIG控制核来完成对DDR3读写的过程。

DDR3芯片知识

  在使用FPGA对DDR3读写之前,需要先了解一下DDR3芯片的一些基本概念,然后才能去配置相应的MIG IP核。
  DDR3是第三代动态随机存储器SDRAM(Synchronous DRAM)的简称,DDR(double data rate)是双数据速率的意思,指的是在时钟上升沿与下降沿各传输一次数据.下面我主要以镁光的MT41K256M16为例来介绍DDR3内存芯片.

DDR3命名介绍

在这里插入图片描述
在这里插入图片描述
  由上面两图可以知道某一型号的DDR3芯片的芯片位宽,bank数目,一个bank内的行数和列数等信息.以MT41K256M16为例,该芯片的芯片位宽为16bits,也就是说每次输出16bits位宽的数据,一个芯片内有8个banks,一个banks内有32K行,1K列,所以该芯片的存储容量为521MB.

芯片的接口

在这里插入图片描述
在这里插入图片描述

DDR3的各种频率介绍

  主要概念有三个:核心频率,工作频率和传输频率.核心频率指的是DDR3芯片内部进行逻辑处理的时钟频率,工作频率指的是DDR3芯片时钟引脚上接的时钟频率.传输频率又叫传输速率,是指数据引脚上数据的传输速率.三种频率关系在下图中有个直观的表示:
在这里插入图片描述
对于DDR3而言,工作频率=传输速率/2 . 核心频率=工作频率/4.

DDR3的预读取和突发长度

1.预读取
  预读取(prefetch)是进入DDR时代有的技术,在SDRAM中并没有此技术.DDR是两位预取(2-bit Prefetch),有的公司则贴切的称之为2-n Prefetch(n代表芯片位宽)。DDR2是四位预取(4-bit Prefetch),DDR3和DDR4都是八位预取(8-bit Prefetch)。而8-bit Prefetch可以使得内核时钟是DDR时钟的四分之一,这也是Prefetch的根本意义所在。
在这里插入图片描述
  上图展示了8位预读取的过程,在一个核心时钟周期内从一个存储单元内并行的读取8个n bits的数据,然后在引脚时钟的驱动下,将这8个数据在引脚时钟的上下沿将数据传输出去,因为引脚时钟频率:核心时钟频率=4:1,所以在一个核心时钟周期内可以将这8个数据通过数据引脚传输出去.
  同时因为DDR3是8位预读取,所以在一个存储单元内可以存储8n bits的数据,也就是说,给DDR3指定一个地址,可以往这个地址里读或写8n bits的数据.
2.突发长度
  突发长度(Burst Length)在SDRAM中指的是在同一行中相邻存储单元连续传输的列数,在DDR SDRAM中不再指连续传输的列数,而是指连续传输的周期数.在DDR3中因为是8位预读取,所以DDR3的突发长度为8.

DDR3读写的地址偏移

   介绍完预读取和突发长度的概念后,终于可以介绍一些深入的问题,也就是刚开始做读写测试时一直困扰我的问题.上面说给DDR3指定一个地址,可以往这个地址里读或写8*n bits的数据.按理说我要读写下一地址,只要地址加1就可以.但仿真时地址加1得到的数据都是乱的.要想正常读写数据,需要每次地址加8,这是为什么呢?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们可以看一下这个DDR3的内部结构图,从这个图中我们可以看出10bit的Column Address的寻址能力只有128,只有7bits用于列地址译码!列地址0,1,2并没有用,而这列地址的低三位被用于确定Burst Length 与Burst Order了.见下图:
在这里插入图片描述
所以列地址的低三位并没有用于寻址,所以如果我们想要访问下一存储单元的话,地址需要加8而不是加1.

总结

   好了.以上就是需要掌握关于DDR3的全部基础知识了,至于其他的像预充电(Precharge),数据掩码(DQM),数据选通信号(DQS),ODT(On-Die Termination)技术我认为不是必须要掌握的,需要用的时候可以再看看.至于芯片引脚上的时序,会由MIG控制核来帮助我们把引脚时序调整好,感兴趣的可以看看JEDEC官方文档,这里也不做介绍了.下面我将介绍如何配置MIG IP核.

  • 12
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Xilinx FPGADDR3读写是指使用FPGA芯片控制DDR3存储器进行读写操作。DDR3是一种高速存储器,具有较高的带宽和容量,适用于需要大量数据处理的应用场景。在使用Xilinx FPGA控制DDR3存储器时,需要进行时序设计和控制信号的生成,以确保数据的正确读写和传输。同时,还需要考虑存储器的时序参数和信号电平等因素,以保证系统的稳定性和可靠性。 ### 回答2: DDR3双倍数据速率(Double Data Rate 3)是一种常用的动态随机存取存储器,用于存储大量数据。在Xilinx FPGA中,使用DDR3存储器可以提高数据存储和读写速度,从而提高FPGA的性能表现。 首先,使用DDR3存储器需要进行初始化设置,包括设置读取延迟、写入延迟、数据宽度、读取优先级、写入优先级等参数。在初始化设置完成后,就可以开始进行DDR3读写操作。 对于DDR3的写操作,需要将要写入的数据存储到FPGA的内部缓存器中,然后通过写入请求延迟周期,将缓存器中的数据写入到DDR3存储器中。另外,写入数据时需要注意写入地址的对齐和写入数据的宽度限制。 对于DDR3的读操作,需要先发送读取请求延迟周期,然后等待存储器返回数据,将返回的数据存储到FPGA的内部缓存器中,最后进行下一步操作。在进行读操作时,需要注意读取地址的对齐和读取数据的宽度限制。 需要注意的是,DDR3存储器操作的速度与时序非常重要,对于每个DDR3存储器,都有自己的特定时序,需要按照特定时序进行读写操作。此外,为了保证DDR3存储器的正常工作,需要进行信号干扰和噪声等方面的优化,并进行时序的校准。 总之,Xilinx FPGADDR3读写操作是一项复杂的任务,需要仔细的设置时序和参数,并进行干扰和噪声的优化,才能保证存储器的稳定性和可靠性。 ### 回答3: Xilinx FPGADDR3读写是指通过FPGA控制器实现FPGADDR3内存交互的过程。DDR3内存是一种高速存储器,比之前的DDR2和DDR1速度更快,容量更大,增强了系统的稳定性和响应速度。在FPGA应用中,使用DDR3内存可以提高系统的数据处理速度,同时,实现高性能和低延迟操作。 在Xilinx FPGADDR3读写过程中,需要几个关键的元素来实现这个过程。其中,主要包括控制器,时钟和DDR PHY。控制器负责与DDR3内存通信,时钟用于同步在通信过程中产生的信号,DDR PHY负责处理数据在FPGADDR3之间的传输。此外,还需要使用IP核来设置DDR3控制器中的时序参数和其他必要的参数。 在实现DDR3读写时,需要注意几个关键的过程。首先,需要在设计时对时序进行精确的计算。其次,需要合理使用DDR3的时序,来优化数据传输。然后,需要使用FPGA内部的PHY来配置芯片和DDR3设备之间的数据传输通道。最后,需要使用IP核来调整DDR3控制器的电路参数,以确保数据在FPGADDR3内存之间的传输被优化。 综上所述,Xilinx FPGADDR3读写是一项基于FPGA的高速数据传输技术,通过控制器、时钟和DDR PHY与DDR3内存进行交互。控制DDR3读写的关键是准确计算时序、优化传输通道,以及调整相关参数。它可以大大提高系统的数据处理能力,由于速度快、容量大等优点而被广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值