ddr

DDR基础知识

非 Y 不嫁゛ 提交于 2019-12-06 06:25:35
1、前言 DDR的全称为Double Data Rate SDRAM,也就是双倍速率的SDRAM,SDRAM在一个CLK周期传输一次数据,而DDR在一个CLK周期传输两次数据,分别在上升沿和下降沿各传输一次数据,该概念称为预取,在描述DDR速度的时候一般使用MT/s单位,也就是每秒多少兆次数据传输。 2、DDR结构框图 接下来将以Micro的DDR3L芯片MT41K256M16进行结构框图的介绍,该芯片是一款512MB的DDR3L内存芯片,框图如下所示: 接下来对上面给出的框架图各个标号进行简单介绍: (1)控制线 (2)地址线 (3)Bank选择线 (4)Bank区域 (5)数据线 (6)数据选通引脚 (7)数据输入屏蔽引脚 来源: https://www.cnblogs.com/Cqlismy/p/11965334.html

DDR,GDDR,HBM的进化和区别

女生的网名这么多〃 提交于 2019-12-06 01:39:38
DDR 就是双倍速率。 以 1600MHz 的内存条为例, X64 的位宽,带宽就是: 1600MHz*2 倍速率 *64bit/8/1000=3.2*8=25.6GB/s; 以 8Channel 的 Intel ICX 处理器为例,带宽可以达到 8*25.6GB/s=204.8GB/s 以 8Channel 的 AMD ROME 处理器为例,带宽可以达到 8*25.6GB/s=204.8GB/s 以 1333MHz 的内存条为例, X64 的位宽,带宽就是: 1333*2 倍速率 *64bit/8/1000=2.666*8=21.328GB/s; 以 6Channel 的 Intel SKL 处理器为例,带宽可以达到 6*21.328GB/s=127.968GB/s ; GDDR 可以做到四倍速率。 以 1750MHz 的内存为例,单个颗粒 X64 的位宽,带宽就是: 1750MHz*4 倍速率 *64bit/8/1000=7*8=56GB/s ; 以 Nvidia Geforce GTX 1080 Ti 为例,使用了 11GB 的 GDDR5X ,内存时钟是 2750MHz , 4 倍频,内存频率是 11GHz ,内存位宽是 X352bit ,那么内存带宽为: 2750MHz*4 倍速率 *352bit/8/1000=484GB/s ; 以 Nvidia Geforce RTX

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,就代表延迟周期为两个时钟周期,具体到确切的时间

Altera DDR2控制器学习笔记

匿名 (未验证) 提交于 2019-12-03 00:03:02
Altera DDR2控制器使用IP的方式实现,一般很少自己写控制器代码。 ddr22 ddr22_inst ( .aux_full_rate_clk (mem_aux_full_rate_clk), .aux_half_rate_clk (mem_aux_half_rate_clk), .global_reset_n (global_reset_n), .local_address (mem_local_addr), .local_be (mem_local_be), .local_burstbegin (local_burstbegin_sig), .local_init_done (), .local_rdata (mem_local_rdata), .local_rdata_valid (mem_local_rdata_valid), .local_read_req (mem_local_read_req), .local_ready (mem_local_ready), .local_refresh_ack (), .local_size (mem_local_size), .local_wdata (mem_local_wdata), .local_write_req (mem_local_write_req), .mem_addr (mem_addr[12 : 0])

FPGA 基于ised的USB芯片写入DDR的数据处理方法

假装没事ソ 提交于 2019-12-02 22:46:47
上一节已经成功地测试了DDR的各个链路以及各个地址的读写操作,这一节就来完成模拟从PC端发出数据经过USB最终给到DDR端口,之前已经实现了DDR的各个链路的验证,同时也实现了数据的读写。先看一下本次实验要实现的链路结构。 框图: 在之前的文章中已经指出,我们所做的实验USB的写入和读出的数据宽度为16bit,但是我们所i设计的DDR的突发长度为64,,两者的数据宽度不一致,如果是直接这样使用的话会导致DDR的高48bit的浪费,所以要先把usb端输出的16bit的数据宽度,通过拼接的方法拼接城64bit 的宽度再发送到DDR中。 USB端数据拼接的时序设计: USB端数据拼接的代码: 1 // ********************************************************************************* 2 // Project Name : OSXXXX 3 // Author : 李国勇 4 // weixin : li15226499835 5 // Website : https://www.cnblogs.com/lgy-gdeu/ 6 // Create Time : 2019-10-30 7 // File Name : .v 8 // Module Name : 9 // Called By : 10 //

为什么要有uboot?

[亡魂溺海] 提交于 2019-12-02 10:36:46
一、为什么要有uboot 1.1、计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM) 1.2、PC机的启动过程 (1)部署:典型的PC机的BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了) 1.3、典型嵌入式linux系统启动过程 (1)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:嵌入式系统 上电后先执行uboot 、然后uboot负责初始化DDR

Altera DDR2控制器学习笔记

早过忘川 提交于 2019-11-29 11:29:39
Altera DDR2控制器使用IP的方式实现,一般很少自己写控制器代码。 ddr22 ddr22_inst ( .aux_full_rate_clk (mem_aux_full_rate_clk), .aux_half_rate_clk (mem_aux_half_rate_clk), .global_reset_n (global_reset_n), .local_address (mem_local_addr), .local_be (mem_local_be), .local_burstbegin (local_burstbegin_sig), .local_init_done (), .local_rdata (mem_local_rdata), .local_rdata_valid (mem_local_rdata_valid), .local_read_req (mem_local_read_req), .local_ready (mem_local_ready), .local_refresh_ack (), .local_size (mem_local_size), .local_wdata (mem_local_wdata), .local_write_req (mem_local_write_req), .mem_addr (mem_addr[12 : 0])

米联客 ZYNQ/SOC 精品教程 S02-CH20 利用EMIF进行PS与PL间数据交互

蹲街弑〆低调 提交于 2019-11-29 04:10:38
软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛: www.osrc.cn 答疑解惑专栏开通,欢迎大家给我提问!! 20.1 概述 AXI-EMC IP是一个可以可以支持各种内存型号的控制器,利用这个IP可以非常方便地模拟各种类型的内存或者FLASH接口实现数据的交互和通信。以下是AXI-EMC IP的功能特性: 1、支持AXI4 Slave Memory Map接口,数据宽度为32位和64位 2、支持写入/读取寄存器的可选AXI4-Lite Slave数据宽度为32位 3、支持AXI4增量和包传输 4、支持AXI4窄带和非对齐传输 5、最多支持四个外部存储器组 6、支持具有可配置字节奇偶校验和流水线级的同步SRAM 7、支持的内存类型 ° 同步SRAM ° 异步SRAM ° 线性闪存(或并行NOR闪存) ° PSRAM(或蜂窝RAM) 8、提供配置寄存器,动态更改PSRAM和Micron®闪存的访问机制 9、为同步SRAM存储器提供奇偶校验错误状态寄存器 本课程中,利用EMC实现异步SRAM的功能,实现数据的读写操作。 20.2 FPGA BD工程 以下是搭建好的FPGA BD工程,搭建工程如果不熟悉的用户请参考“CH01 HelloWold/DDR/网口测试及固化”这一节课。

内存系列一:快速读懂内存条标签

牧云@^-^@ 提交于 2019-11-28 19:15:26
内存系列一:快速读懂内存条标签 https://www.cnblogs.com/tcicy/p/10087457.html 内存是我们平常接触最频繁的计算机硬件之一,内存的大小、多寡和型号和我们计算机、手机等性能密切相关。内存系列计划通过三篇文章由浅入深介绍内存的软硬件特性以及与固件的关系。这是第一篇,以一个生活情景给读者介绍内存的背景知识,为后面打下基础。 情景 小张有一定的计算机背景知识,最近他在京东上买了两条DDR3的内存,打算把笔记本升级成8G。可是一拆开包装到就傻眼了: 4GB看起来很好,两根刚好8GB。2Rx8是啥,PC3又是啥,10600似乎和他想买的1333的差好远,后面那串数字又代表什么呢? 小张找到了我,让我帮忙给他说说这些字母和数字都代表什么。我最是好为人师,于是开始了我们今天的介绍。 什么是DIMM? 在80286时代,内存颗粒(Chip)是直接插在主板上的,叫做DIP(Dual In-line Package)。到了80386时代,换成1片焊有内存颗粒的电路板,叫做SIMM(Single-Inline Memory Module)。由阵脚形态变化成电路板带来了很多好处:模块化,安装便利等等,由此DIY市场才有可能产生。当时SIMM的位宽是32bit,即一个周期读取4个字节,到了奔腾时,位宽变为64bit,即8个字节,于是SIMM就顺势变为DIMM

ddr相关的配置经验

匆匆过客 提交于 2019-11-26 12:57:22
1、在cpu这边配置mode寄存器,需要看颗粒端的mr0,mr1,mr2,mr3 2、在cpu这边配置cfg_val,cfg_val2,需要考虑颗粒端的全驱和半驱 其他的参数不需要动 来源: https://www.cnblogs.com/wangdgy/p/11321271.html