ddr3

DDR3(3):IP核写

非 Y 不嫁゛ 提交于 2019-12-04 07:02:16
  调取的 DDR3 控制器给用户端预留了接口,用于实现对该 IP 核的控制,本篇介绍一下 DDR3 IP核写。   在生成 DDR3 IP 核的界面中,可以找到 User Guide 手册,DDR3 的使用将围绕这个手册来展开。 一、接口框图   打开 User Guide 第 90 页,可以看到 DDR3 IP 核的接口框图如下所示。可以看到,中间部分就是我们调取的 DDR3 IP 核,它预留了两组总线,右边一组直接绑定在 DDR3 芯片端口,其总线信号名称均以 ddr 开头,这部分总线只需要在 top 层设为端口即可,无需自己写代码控制。而左边一组则是留给用户端逻辑,其总线信号名称多以 app 开头,这些信号则需我们自己来编写实现。 二、总线详解   对于 User Interface用户端逻辑信号, User Guide 第92页里有个汇总表,我们简单翻译一下。 1、命令总线(表格红色部分),其时序图如下所示。 2、写总线(表格黄色部分),其时序图如下所示。共有 3 种传输模式。模式 1 指的是命令和数据同时发送到 IP 核,模式 2 指的是数据提前于命令发送到 IP 核,模式 3 指的是数据落后于命令发送到 IP 核。模式 1 和 2 均可稳定传输,而模式 3 必须满足一个条件,即数据落后命令的时间不能超过两个时钟周期。一般来说,模式 2 比较常用,时序设计相对容易。  

SDRAM/DDR是怎么寻址的?

99封情书 提交于 2019-12-04 01:54:20
SDRAM/DDR是怎么寻址的? 为了读取特定单元格的数据,在寻址时要首先确定是哪一个bank,然后在这个选定的bank中进行行列的寻址。在实际工作中,bank的地址与相应的行地址是同时发出的,此时这个命令称之为"行有效"或者“行激活”。在此之后,发送列地址寻址命令和具体的操作命令(读或写),这两个命令也是同时发送的。行列地址是可以复用的,一般来说DDR芯片的地址线为A0~A15,低地址线会被行列复用。以K4B4G1646B 4Gbit 256MB x 16bit内存芯片为例,A0~A14用做行地址,A0~A9用做列地址,这款芯片同时含有B0~B2用来选择bank。 在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间

DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)

匿名 (未验证) 提交于 2019-12-03 00:40:02
DDR3 N X N 目前 DDR3 8 8 DDR 3 3 - 8 3 30 3 - 8 1 10 2 =1 Rank 时 在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿 Column 1.结构框图: 2.管脚功能描述 3.状态图: ZQ ZQCL DRAM DRAM IO ODT 0.5% RON RTT Al ddr3 AL DDR3 DDR3 FLY_BY FLY_BY stub strobe FPGA CPU ,tdss tdsh ddr3 DDR3 DQS CK DQS DQS 0 1 DQS tDQSS DDR3 MR MR DDR MR MR0 MR1 MR2 MR4 MR0 DDR3 CAS DLL MR1 DLL Rtt_Nom MR2 Rtt_WR CAS MR3 MPR MPR MPR MRS MR3 A2 位写 1 ddr3 bank idle MPR RD RDA MPR MPR MPR MR3 A2=0 RD RDA MPR RESET in-progress in-progress Idle bank DRAM ODT RTT WL AL +CWL MRS MR2 A9 A10 Rtt_WR D dr3 RTT RTT_Nom, RTT_WR;Rtt_Nom ODT Rtt_wr Rtt

MIG(ddr3)工程报错解决:IO constraint DQS_BIAS\\Multiple Driver Net

匿名 (未验证) 提交于 2019-12-03 00:11:01
现象 在布线自己写的ddr3压力测试代码时,报如下错误。 [Constraints 18-586]IO constraint DQS_BIAS with a setting of TRUE for cell. [DRC MDRV-1] Multiple Driver Net:Net <const0> has multiple drives:GND/G 解决流程 (1)前期原理图就已经检查了DDR3芯片与FPGA引脚的连接正确性,排除猜测。 (2)是不是ddr3电压问题,MIG核中设置的是低电压1.35V,直接使用自带的example design编译布线,没有问题。 (3)检查上层使用的参数是否一致,发现不一致。以前的参数是对单ddr芯片而言的,而这次测试工程,使用了两个ddr3芯片,数据位分开,其他脚一起。 错误参数如下: 正确参数如下: 这个bug还不好发现,完全是手残忘记更改parameter导致的,也是醉了。 以上。 来源:博客园 作者: 小翁同学 链接:https://www.cnblogs.com/kingstacker/p/11563201.html

MIG(ddr3)工程报错解决:IO constraint DQS_BIAS\\Multiple Driver Net

戏子无情 提交于 2019-11-30 05:42:20
现象 在布线自己写的ddr3压力测试代码时,报如下错误。 [Constraints 18-586]IO constraint DQS_BIAS with a setting of TRUE for cell. [DRC MDRV-1] Multiple Driver Net:Net <const0> has multiple drives:GND/G 解决流程 (1)前期原理图就已经检查了DDR3芯片与FPGA引脚的连接正确性,排除猜测。 (2)是不是ddr3电压问题,MIG核中设置的是低电压1.35V,直接使用自带的example design编译布线,没有问题。 (3)检查上层使用的参数是否一致,发现不一致。以前的参数是对单ddr芯片而言的,而这次测试工程,使用了两个ddr3芯片,数据位分开,其他脚一起。 错误参数如下: 正确参数如下: 这个bug还不好发现,完全是手残忘记更改parameter导致的,也是醉了。 以上。 来源: https://www.cnblogs.com/kingstacker/p/11563201.html

AXI-DMA

心已入冬 提交于 2019-11-30 03:08:47
---恢复内容开始--- AXI DMA:为内存与AXI4-Stream外设之间提供高宽带的直接存储访问,scatter/gather功能可将CPU从数据搬移任务中解放出来。 在ZYNQ中,AXI DMA就是FPGA访问DDR3的桥梁,受ARM监管。 AXI-DMA IP核有6个接口 : S_AXI_LITE是ARM配置dma寄存器的接口; M_AXI_SG是从(往)存储器加载(上传)buffer descriptor的接口; 剩下4个构成两对接口:MM2S表示PS向PL传送,S2MM表示PL向PS端(M表示主机代表PS,S表示从机代表PL)            AXI是存储器一侧的接口,AXIS是FPGA一侧的接口。 AXI DMA工作模式分为两种,分别是Direct Register Mode和Scatter/Gather Mode。 Direct Register Mode模式: 具备DMA的基本功能,除了控制寄存器和状态寄存器之外,给出源(目的)地址和传输长度之后就可以开启一次传输了。Direct Register Mode的特点(也是缺点)是配置完一次寄存器之后只能完成存储器连续地址空间的读写,如果有需求往不同地址空间搬运数据的话,那就需要重新配置寄存器开启一次新的传输。S2MM和MM2S不支持多个通道。 scatter gather模式: 把关于传输的基本参数

内存系列二:深入理解硬件原理

淺唱寂寞╮ 提交于 2019-11-28 22:10:20
内存系列二:深入理解硬件原理 https://www.cnblogs.com/tcicy/p/10087457.html忘记转这一篇了 内存相关的东西 其实理解了挺好的..cache还有main memory 本篇文章承接上文继续介绍DDR内存的硬件原理,包括如何寻址,时序和时延以及可以为提高内存的效能可以有哪些方法。 上次虽然解决了小张的问题,却引发了他对内存原理的兴趣。这不他又来找我了,说我还欠他一个解释。这次我们约在一个咖啡馆见面,这次内容有点深入,我带了些图片,小张也点了一大杯美式,计划大干一场。看着他认真的样子,我也决定毁人不倦,把他也带入IT工程师的不归路。。。 寻址(addressing) 为了了解前几天说的几个延迟参数,不得不介绍下DIMM的寻址方式。也许你发现了上次介绍Rank和chip的关系时,有个Bank/Column/row我们没有讲到,它们和如何寻址密切相关。还记得上次的图片吗? 这次我们来看看rank和Chip里面有什么,如下图: 这是个DDR3一个Rank的示意图。2GB的内存共有16个chip,每个chip容量为128MB。我们把左边128MB Chip拆开来看,它是由8个Bank组成,每个Bank核心是个一个存储矩阵,就像一个大方格子阵。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了

【转】DDR3和eMMC区别

偶尔善良 提交于 2019-11-28 05:13:14
转自:https://www.cnblogs.com/debruyne/p/9186619.html DDR3内存条和eMMC存储器区别: 1. 存储性质不同; 2. 存储容量不同; 3. 运行速度不同; 4. 用途不同。 具体区别如下: 1、存储性质不同:eMMC是非易失性存储器,不论在通电或断电状态下,数据都是可以存储的,而DDR3内存是易失性存储器,断电同时,数据即丢失。 2、存储容量不同:eMMC的存储容量要比DDR3内存大3-4倍,常见有32G,而DDR3内存容量相对较小,常见有2-8G。 3、运行速度不同:DDR3内存运行速度要比eMMC快得多。 4、用途不同:eMMC主要用于数据存储,而DDR3内存主要用于数据运算。eMMC 主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。用来提供标准接口并管理闪存。在手机或平板电脑中,DDR3内存可称之为运行内存,而eMMC可称之为存储内存。 ADD eMMC: eMMC(Embedded Multi Media Card)也是一种使用兼容MMC协议的芯片,和MMC的区别如其名,eMMC经常被用于嵌入式环境中,而MMC一般用作外接设备的标准。eMMC = NAND flash + 控制器 + 标准封装接口。 很多卡内部的存储设备用的都是NAND flash, 单纯nand flash和这些卡的区别,就是nand