当前位置: 首页 > news >正文

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I

语言 :Verilg HDL
EDA工具:ISE、Vivado

      • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 I
        • 一、引言
        • 二、DDR4的特性(MT40A256M16)
          • (1) 电压和电源管理
          • (2)内部参考电压生成
          • (3) 命令/地址延迟(CAL)
          • (4)写入均衡 (Write Leveling)
          • (5)自刷新模式 (Self Refresh Mode)
          • (6)命令/地址奇偶校验 (Command/Address Parity)
          • (7)数据总线写入循环冗余校验 (Databus Write Cyclic Redundancy Check, CRC)
          • (8)低功耗自刷新 (Low-Power Auto Self Refresh, LPASR)
          • (9)温度控制刷新 (Temperature-Controlled Refresh, TCR):
          • (9)数据总线反转 (Data Bus Inversion, DBI)
        • 三、DDD4关键时序参数和地址

  • 关键词: 调用,Verilog HDL,ifdef 和 endif ,generate语句
一、引言

博主将会写一个系列的文章 关于FPGA对DDR4(MT40A256M16)的有效读写控制,最大化FPGA对DDR4的读写控制。首先将对DDR4的技术文档进行研读,注重DDR4的读写操作、刷新时间等。

二、DDR4的特性(MT40A256M16)

DDR4 SDRAM即双倍数据速率第四代同步动态随机存取存储器,比DDR3强在速率上,可以跑到2000M到3000M MT/s(百万次每秒)的速度,具体因芯片型号为准。

(1) 电压和电源管理

VDD = VDDQ = 1.2V ±60mV
VPP = 2.5V, –125mV/+250mV

(2)内部参考电压生成
片上、内部、可调节的VREFDQ生成
(3) 命令/地址延迟(CAL)

CAL是DDR4内存中的一个特性,用于减少内存控制器在发送读或写命令到内存时的等待时间。通过使用CAL,内存控制器可以在内存接收到命令和地址信息之前,提前发送这些信息,从而减少内存操作的整体延迟。
CAL功能可以被配置为不同的延迟级别,这通常以时钟周期的数量来表示。例如,如果CAL被设置为1,则表示内存控制器可以在命令有效前一个时钟周期发送命令和地址信息。这种预加载机制有助于提高内存的效率和性能,尤其是在高频率操作时。
CAL功能可以被启用或禁用,并且其值(即延迟的时钟周期数)需要根据特定的内存操作和内存控制器的要求进行编程到模式寄存器中。

(4)写入均衡 (Write Leveling)

一个补偿信号完整性问题的特性,允许内存控制器调整数据存取时序,以确保数据在内存中正确写入。

(5)自刷新模式 (Self Refresh Mode)

允许内存在不活跃时自动进入低功耗状态,同时保持数据的完整性。

(6)命令/地址奇偶校验 (Command/Address Parity)

提供了一种错误检测机制,确保命令和地址信息的准确性

(7)数据总线写入循环冗余校验 (Databus Write Cyclic Redundancy Check, CRC)

增加了数据写入时的错误检测和校正能力,提高了数据的完整性

(8)低功耗自刷新 (Low-Power Auto Self Refresh, LPASR)

根据系统需求和温度条件,自动调整自刷新频率以降低功耗。

(9)温度控制刷新 (Temperature-Controlled Refresh, TCR):

根据环境温度调整刷新周期,以优化性能和可靠性。。

(9)数据总线反转 (Data Bus Inversion, DBI)

一种提高信号完整性的特性,允许内存控制器反转数据总线的极性。

三、DDD4关键时序参数和地址

(1)不同DDR4速度等级 代表不同的速率, 关键时序参数如下所示
在这里插入图片描述

tRCD (ns): 行地址到列地址的延迟时间,即从发出行选择命令到列地址稳定的延迟,以纳秒为单位。

tRP (ns): 行预充电时间,即从发出预充电命令到行可以再次被激活的时间。

CL (ns): CAS延迟,这是从发出读或写命令到数据可以被访问的时间
DDR4-2666速度等级的内存,其tRCD、tRP和CL的值为13.50纳秒。

这些参数对于内存控制器的设计和内存系统的性能至关重要。内存控制器必须根据这些参数来设计其操作时序,以确保数据可以正确地在内存和处理器之间传输,同时避免数据损坏或系统不稳定。
(2) 地址在这里插入图片描述

Bank Groups: DDR4 SDRAM被组织成多个“bank groups” 。每个bank group包含一定数量的“banks”

Bank Addressing: 每个bank group内部的banks通过“bank address”( BA[1:0])来寻址

Row and Column Addressing: 内存阵列中的行和列通过行地址和列地址来选择。行地址由A[15:0](或更少,取决于配置)提供,而列地址由A[9:0]提供。

Page Size: 每个bank的页面大小是固定的,并且根据组织方式(ORG)和列地址位(COLBITS)计算得出。页面大小影响着内存的突发传输能力

例如:512 Meg x 8配置:4个bank groups,每组4个banks,行地址为32K(A[14:0]),列地址为1K(A[9:0]),页面大小为1KB。

相关文章:

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I

关于FPGA对 DDR4 (MT40A256M16)的读写控制 I 语言 :Verilg HDL EDA工具:ISE、Vivado 关于FPGA对 DDR4 (MT40A256M16)的读写控制 I一、引言二、DDR4的特性(MT40A256M16)(1…...

JavaWeb_SpringBootWeb案例

环境搭建: 开发规范 接口风格-Restful: 统一响应结果-Result: 开发流程: 第一步应该根据需求定义表结构和定义接口文档 注意: 本文代码从上往下一直添加功能,后面的模块下的代码包括前面的模块&#xff0c…...

Linux中FTP安装

文章目录 一、FTP介绍1.1、FTP是什么1.2、FTP的工作原理1.3、FTP的传输模式1.4、FTP用户类别1.5、FTP的优点与缺点1.6、FTP数据传输格式 二、FTP客户端与服务端2.1、服务端2.2、客户端 三、FTP服务器软件介绍3.1、WU-FTPD3.2、ProFtpD3.3、vsftpd3.4、Pure-FTP3.5、FileZilla S…...

【Spring EL<二>✈️✈️ 】SL 表达式结合 AOP 注解实现鉴权

目录 🍻前言 🍸一、鉴权(Authorization) 🍺二、功能实现 2.1 环境准备 2.2 代码实现 2.3 测试接口 🍹三、测试功能 3.1 传递 admin 请求 ​ 3.2 传递普通 user 请求 🍻四、章末 &a…...

冯喜运:6.13美盘外汇黄金原油趋势分析及操作策略

【黄金消息面分析】:美国5月生产者价格指数(PPI)的意外下降,为市场带来了通胀可能见顶的积极信号。与此同时,初请失业金人数的上升,为劳动力市场的现状增添了一层不确定性。美国劳工统计局公布的数据显示&a…...

Lecture2——最优化问题建模

一,建模 1,重要性 实际上,我们并没有得到一个数学公式——通常问题是由某个领域的专家口头描述的。能够将问题转换成数学公式非常重要。建模并不是一件容易的事:有时,我们不仅想找到一个公式,还想找到一个…...

unidbg讲解V1

前言 unidbg是什么? unidbg是一个Java项目,可以帮助我们去模拟一个安卓或IOS设备,用于去执行so文件中的算法,从而不需要再去逆向他内部的算法。最终会产出一个jar包,可以被python进行调用。 如何使用unidbg? 下载github上开源的项目:https://github.com/zhkl0228/un…...

软设之敏捷方法

敏捷方法的总体目标是通过尽可能早地,持续地对有价值的软黏的交付,使客户满意 适用于:小步快跑的思想,适合小项目小团队 极限编程XP 4大价值观: 沟通 简单 反馈 勇气 5大原则 快速反馈 简单性假设 逐步修改…...

【设计模式深度剖析】【7】【行为型】【观察者模式】

👈️上一篇:中介者模式 设计模式-专栏👈️ 文章目录 观察者模式英文原文直译如何理解? 观察者模式的角色类图代码示例 观察者模式的应用观察者模式的优点观察者模式的缺点观察者模式的使用场景 观察者模式 观察者模式(Observer…...

列表的C++实

自动扩容 List item 扩容基数为2 可以设置扩容因子&#xff08;这里我没有设置&#xff09; 代码实现如下: // // Created by shaoxinHe on 2024/6/4. //#ifndef CPRIMER_MYLIST_H #define CPRIMER_MYLIST_H#include <stdexcept> #include <vector>namespace st…...

Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验

Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验 一、chisel简介二、vscode搭建scala开发环境2.1 安装Scala官方插件2.2 java版本&#xff08;本人用的是jdk18&#xff09;2.3 下载Scala Windows版本的二进制文件2.4 配置环境变量2.5 scala测试2.6 vscode运行…...

Python和C++赋值共享内存、Python函数传址传值、一些其他的遇到的bug

1、Numpy共享内存的情况&#xff1a; array1 np.array([1, 2, 3]) array2 array1 array2[0] 0 # array1也会跟着改变&#xff0c;就地操作 array2 array2 * 2 # array2不会跟着改变&#xff0c;属于非就地操作&#xff0c;会创建一个新的地址给array2array2 array1…...

深度解析ONLYOFFICE协作空间2.5版本新功能

深度解析ONLYOFFICE协作空间2.5版本新功能 上个月&#xff0c;4月份&#xff0c;ONLYOFFICE协作空间推出了V2.5版本&#xff0c;丰富了一些很实用的新功能&#xff0c;之前已经有文章介绍过了&#xff1a; ONLYOFFICE 协作空间 2.5 现已发布https://blog.csdn.net/m0_6827469…...

Java I/O模型

引言 根据冯.诺依曼结构&#xff0c;计算机结构分为5个部分&#xff1a;运算器、控制器、存储器、输入设备、输出设备。 输入设备和输出设备都属于外部设备。网卡、硬盘这种既可以属于输入设备&#xff0c;也可以属于输出设备。 从计算机结构的视角来看&#xff0c;I/O描述了…...

【简单介绍下Sass,什么是Sass?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

bat脚本—快速修改网络配置

一、bat编写前注意事项 windows桌面用文本文件打开把批命令输入在文本框中&#xff0c;保存采用ANSI编码&#xff0c;后缀用.bat 可参考博客——bat脚本简介学习原理以及具体创建方式 &#xff08;文件扩展名位置&#xff09; 语法准确性&#xff1a;严格遵循 BAT 脚本的语…...

node.js漏洞——

一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基于 Google 的 V8 引擎&#xff0c;V8 引擎执行 Javascript 的速度非常…...

Qt多线程之moveToThread()函数

文章目录 一、moveToThread()执行后&#xff0c;当前代码线程没有改变。二、对象执行moveToThread()后&#xff0c;哪些成员加入了子线程1、创建对象时不指定父对象2、对属性对象使用moveToThread加入子线程作用域3、将属性对象的创建放到子线程中执行 三、C内存模型 在使用“继…...

【WEB前端2024】智体OS:poplang编程控制成本小千元的长续航robot机器人底盘(开源)

【WEB前端2024】智体OS&#xff1a;poplang编程控制成本小千元的长续航robot机器人底盘&#xff08;开源&#xff09; 前言&#xff1a;dtns.network是一款主要由JavaScript编写的智体世界引擎&#xff08;内嵌了three.js编辑器的定制版-支持以第一视角游览3D场馆&#xff09;…...

动态规划法学习

当然&#xff0c;让我们用更生活化的语言和一个实际的例子来解释动态规划&#xff0c;以及如何在实践中应用它。 动态规划通俗理解 想象一下&#xff0c;你是个水果摊老板&#xff0c;每天要决定订购多少苹果&#xff0c;目标是最大化利润。但苹果的价格每天波动&#xff0c;…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...