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

news2025/1/10 20:47:17

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

语言 :Verilg HDL 、VHDL
EDA工具:ISE、Vivado、Quartus II

      • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 3
        • 一、引言
        • 二、DDR的功能性描述
        • 三、SDRAM设备中模式寄存器的可编程性
        • 四、重要的模式寄存器之MR0
          • (1) Burst Length、Type、Order
          • (2)CAS延迟
          • (3)Test Mode
          • (4)Write Recovery (WR)/READ-to-PRECHARGE

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

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

二、DDR的功能性描述

DDR4 SDRAM是一种高速动态随机存取存储器,其内部配置为16个存储体(对于x4/x8设备,是4个存储体组,每组4个存储体;对于x16设备,是2个存储体组,每组4个存储体)。该设备使用双数据速率(DDR)架构来实现高速操作。DDR4架构本质上是一种8n预取架构,其接口设计能够在I/O引脚上每个时钟周期传输两个数据字。
一个设备模块的单次读写访问实际上包括在内部DRAM核心的8n位宽、四个时钟周期的数据传输,以及在I/O引脚上的八个相应的n位宽、半个时钟周期的数据传输
对设备的读写访问是突发导向的。访问从选定的位置开始,并以八个或四个的突发长度继续,按照程序序列进行。操作始于ACTIVE命令,然后是READ或WRITE命令。与ACTIVE命令同时发出的地址位用于选择要访问的存储体组和行(对于x4/x8,BG[1:0]选择存储体组,对于x16,BG0选择存储体组;BA[1:0]选择存储体,A[17:0]选择行);与READ或WRITE命令同时发送的地址位用于选择突发操作的起始列位置,确定是否发出自动PRECHARGE命令(通过A10),以及在模式寄存器中启用时,即时选择BC4或BL8模式(通过A12)
在正常操作之前,设备必须以预定方式进行上电和初始化。

三、SDRAM设备中模式寄存器的可编程性

模式寄存器需要用户通过特定的命令进行初始化和编程,以确保设备按照预期的方式运行

1、为了应用的灵活性,设备提供了七个模式寄存器(MRn),这些寄存器可以被编程为用户定义的变量,必须通过一个模式寄存器设置(MRS)命令来编程。

2、模式寄存器的默认值是未定义的,因此必须在上电和/或复位后完全初始化或重新初始化模式寄存器的内容,以确保设备正常工作

3、在正常操作期间,可以通过重新执行MRS命令来改变模式寄存器的内容。

4、编程模式寄存器时,即使用户选择只修改MRS字段的一个子集,当发出MRS命令时,也必须重新定义被访问的模式寄存器中的所有地址字段。
5、MRS命令和DLL重置命令不会影响存储阵列的内容,这意味着这些命令可以在上电后的任何时间执行,而不会影响存储阵列的内容

MRS(Mode Register Set)的命令周期时间Tmrd, 是完成向模式寄存器写入操作所需的时间, 是两个MRS命令之间所需的最短时间,时间才能发送下一个MRS命令。这个时间间隔确保了第一个MRS命令能够完全执行,模式寄存器能够正确地接收并存储新的配置值。如果在这个时间间隔内发送了另一个MRS命令,可能会影响第一个命令的执行,导致设备配置不正确。

四、重要的模式寄存器之MR0

1、功能:MR0控制着设备的各种操作模式,具体的设置可以在随后提供的寄存器定义表中查看。并不是表中列出的所有设置在每个芯片上都可用;只有那些对于速度等级支持所必需的设置才是可用的。

2、写入方法:MR0是通过发出模式寄存器设置(MRS)命令来写入的。在发出MRS命令的同时,需要控制BGx、BAx和Ax地址引脚的状态。

3、地址引脚映射:在MRS命令期间,地址引脚的映射关系会在随后的MR0寄存器定义表中展示

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

(1) Burst Length、Type、Order

这三个参数是控制内存访问行为的关键参数
1、Burst Length(突发长度)
这指的是在一次突发访问中连续读取或写入的数据块的大小。常见的突发长度有

BC4:突发长度为4个字节
BL8:突发长度为8个字节

2、Type(类型)
这通常指的是突发访问的模式,主要有两种类型

Fixed:固定突发,意味着每次访问都使用相同的突发长度。 On-the-fly
(OTF):动态突发,允许在每次访问时根据需要选择BC4或BL8

3、Order(顺序)
这决定了在突发访问中数据是如何被读取或写入的。有两种主要的顺序:

Sequential:顺序突发,数据按照内存中的物理顺序被访问。
Interleaved:交错突发,数据访问不是按照物理顺序,而是可能跳过某些存储体,按照特定的模式进行。

突发访问的顺序可以被编程为顺序或交错顺序
顺序访问:在给定的突发中,访问可以按顺序进行,即按照存储体中数据的物理顺序。
交错访问:访问可以按交错顺序进行,这通常意味着数据访问不是按照物理顺序,而是按照特定的模式跳过某些存储体

突发访问的顺序由以下因素决定:

1、突发长度:可以是固定的BC4(4个字节的突发)或BL8(8个字节的突发)。
2、突发类型:这可能指的是访问模式,比如正常突发或交错突发。
3、起始列地址:访问开始的列地址也会影响访问的顺序。
4、OTF选项:“On-the-fly”(OTF)选项允许在寄存器读或写命令的同时通过A12/BC_n选择BC4或BL8。这意味着突发长度可以在每次读写命令时动态选择,而不是固定在设备初始化时。
在这里插入图片描述
对上表作如下注释:
1、CA[2:0]的值:0到7的位数字表示在突发访问期间,该位将成为第一个被读取的位。CA[2:0]是一个3位地址字段,它决定了突发访问的起始列地址。
2、突发长度对写入操作的影响
当在MR0(模式寄存器0)中将突发长度设置为BC4(固定)时,内部写入操作比BL8模式提前两个时钟周期开始。这意味着tWR(写入恢复时间)和tWTR(写入到读取时间)的起始点会提前两个时钟周期。

当在MR0中将突发长度设置为OTF(即动态突发长度)时,即使在列地址时间使用A12/BC4_n选择了BC4,内部写入操作的开始时间也与BL8相同。这意味着如果使用OTF MR0设置,tWR和tWTR的起始点不会像BC4(固定)情况那样提前两个时钟周期。
3、输出驱动器状态
T:表示输出驱动器为数据和存取信号处于高阻抗状态(High-Z),即不驱动信号。
V:表示有效的逻辑电平(0或1),但相应的缓冲区输入在输入引脚上忽略电平。
X:表示“不关心”,即在该上下文中,该位的值不影响操作或结果。

(2)CAS延迟

CAS延迟(CL)是DDR4 SDRAM内存性能的关键参数之一。
1、CAS延迟(CL)定义:CAS延迟在MR0寄存器定义表中给出,它指的是从内部读命令发出到第一个输出数据位可用之间的延迟,这个延迟以时钟周期来计量。
**2、不支持半时钟延迟:**设备不支持以半个时钟周期为单位的延迟设置,延迟必须以完整的时钟周期来定义。
3、整体读延迟(RL):整体读延迟是加法延迟(AL)与CAS延迟(CL)的总和,即: RL=AL+CLRL=AL+CL
**4、加法延迟(AL):**这是除了CAS延迟之外的其他延迟,可能包括命令发出到地址寄存器的延迟等。
**5、CAS延迟(CL):**如上所述,是读命令到数据可用的延迟。
这个公式说明了内存的读操作总延迟是如何由这两部分组成的。在系统设计中,了解和优化这些延迟对于确保内存性能满足应用需求至关重要。不同的应用可能对延迟有不同的容忍度,因此选择合适的CL和AL值对于实现最佳性能非常重要。

(3)Test Mode

DDR4 SDRAM设备中模式寄存器0(MR0)的第7位(MR0[7])的作用以及正常操作模式的设置方法:
1、正常操作模式的选择:正常操作模式是通过设置MR0的第7位以及将其他位设置为MR0寄存器定义表中所显示的期望值来选择的。
2、MR0[7]的设置:

当MR0[7]设置为0时,设备将进入正常操作模式。
当MR0[7]设置为1时,设备将进入由DRAM制造商定义的测试模式。这种模式仅供制造商使用,而不是最终用户。

3、制造商测试模式: 如果MR0[7]设置为1,设备将处于制造商测试模式,这种模式下的操作或功能对最终用户来说是未指定的。这意味着在这种模式下,设备的行为可能与正常操作模式不同,并且可能包括用于诊断或测试的特定功能。

(4)Write Recovery (WR)/READ-to-PRECHARGE

1、tDAL的确定:tDAL(数据访问时间)可以通过tRP(行预充电时间)来确定

2、自动预充电的最小写入延迟(WR (MIN))
写入延迟(tWR)以纳秒为单位,时钟周期(tCK)也以纳秒为单位
动预充电的最小写入延迟(WR (MIN))通过将tWR除以tCK,并向上取整到下一个整数来计算
WR (MIN) cycles = roundup (tWR[ns]/tCK[ns])

设备的写入延迟(WR)必须被编程为等于或大于最小写入延迟(WR (MIN))。

3、CRC对tWR的影响:
如果在模式寄存器中同时启用了DM(数据掩码)和写CRC(循环冗余校验),设备会在将写入数据发送到存储阵列之前计算CRC。
当启用CRC时,tWR值会改变。如果出现CRC错误,设备将阻止写入操作并丢弃数据

4、RTP值的用途: 编程后的RTP值与tRP一起用于确定对同一存储体的激活(ACT)时序

这些时序参数对于确保DDR4 SDRAM设备正确地执行读写操作至关重要。它们需要根据具体的时钟频率和设备要求进行精确计算,并在模式寄存器中进行适当编程。如果启用了额外的错误检测或校验功能,如CRC,还需要考虑它们对时序参数的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于IDEA的Maven简单工程创建及结构分析

目录 一、用 mvn 命令创建项目 二、用 IDEA 的方式来创建 Maven 项目。 (1)首先在 IDEA 下的 Maven 配置要已经确保完成。 (2)第二步去 new 一个 project (创建一个新工程) (3)…

【windows|003】计算机硬件基础及存储单位

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区&…

阿里云平台创建设备及连接

使用阿里云平台创建项目,利用MQTT.fx软件配置相关的连接,在软件上完成消息的订阅与推送,与手机APP进行同步数据。了解MQTT相关的协议。 1.注册阿里云平台账号,完成实名注册! 618创新加速季_新迁入云享5亿算力补贴-阿里…

005-OSPF基本配置

OSPF基本配置 OSPF (Open Shortest Path First) 是一种链路状态路由协议,它属于内部网关协议(IGP)类别,用于在自治系统(AS)内部路由 IP 数据包。OSPF 通过使用 Dijkstra 算法计算最短路径树来确定到达每个…

电影时间首页(HTML+css)

使用HTMLcss制作的一个简单的电影时间首页 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>电影时间首页</title></head><body><!--header begin--><div style"height: 63px;">&…

从0开始开发一个简单web界面的学习笔记(HTML类)

文章目录 什么是HTML页面vscode 开放工具搭建第一个HTML页面编写vscode 如何快速生成代码框架html标签——注释、标题、段落、换行标签格式化标签img 标签(src 属性01)img 属性02(alt、title、width/height、border)a标签href属性a标签target属性表格标签01 基本属性表格标签02…

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形 42. 接雨水 题目链接 42 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 第一次提交 class Solution { public:int trap(vector<int>…

买家用洗地机需要注意什么?全面评测热门洗地机品牌

对于忙碌的打工族来说&#xff0c;“做家务”是一件非常消费时间精力的事情&#xff0c;但它又是生活中的一部分&#xff0c;为了解决这些矛盾点&#xff0c;越来越多的清洁家电涌向市场&#xff0c;像集扫地、吸尘、洗地为一体的洗地机&#xff0c;在推拉之间便把脏污处理干净…

英码科技携手昇腾打造“三位一体”智慧化工解决方案,使能化工产业管理更高效、智能

我国是世界公认的化工大国。然而&#xff0c;大部分化工园区的日常管理方式较为传统&#xff0c;各园区、厂区的门禁、视频、停车场等子系统犹如一个个独立的“岛屿”&#xff0c;每个“岛屿”需要耗费大量人力及时间成本进行巡检、记录、上报&#xff0c;且不能做到全域、全时…

JavaFX DatePicker

JavaFX DatePicker允许从给定日历中选择一天。DatePicker控件包含一个带有日期字段和日期选择器的组合框。JavaFX DatePicker控件使用JDK8日期时间API。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.DatePicker; import j…

C语言之操作符

目录 一、二进制 原码、反码、补码 二、移位操作符 位操作符 三、 逗号表达式 四、下标访问[]、函数调用() 五. 操作符的属性 整型提升 算术转换 六、总结 一、二进制 其实2进制、8进制、10进制、16进制是数值的不同表示形式而已。 其实10进制是生活中经常使用的&am…

docker容器中连接宿主机mysql数据库

最近要在docker中使用mysql数据库&#xff0c;首先考虑在ubuntu的镜像中安装mysql&#xff0c;这样的脚本和数据库都在容器中&#xff0c;直接访问localhost&#xff1a;3306&#xff0c;脚本很简单&#xff0c;如下&#xff1a; import pymysql# 建立数据库连接 db pymysql.…

港硕上岸鹅厂算法岗,谈谈感受和心得!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

技术革新| 卓翼飞思受邀出席2024士兵智能装备与技术学术大会

6月14日&#xff0c;由中国兵器装备集团智元研究院/智元国家重点实验室、中国兵工学会主办的 “2024士兵智能装备与技术学术大会” 在杭州隆重召开。卓翼智能应邀出席本次大会&#xff0c;并发表了题为《新概念飞行器及多智能体集群仿真系统研究》的演讲报告。 本次大会以“智能…

常见的网络设备

引入 园区网络安全部署场景 1、路由器&#xff1a; 跨网段通信设备 。 2、交换机&#xff1a; 同网段或跨网段通信设备。 3、AntiDDoS &#xff1a; DDoS 防御系统&#xff0c;通常旁挂部署于网络出口处&#xff0c; 位于防火墙上游&#xff0c;用于减轻防火墙报文处理负担。 …

NocoBase调研

项目概述&#xff1a; nocobase是一个开源的无代码和低代码开发平台&#xff0c;允许用户快速部署私有、可控、易于扩展的系统。 NocoBase官网&#xff1a;NocoBase-开源、私有部署的轻量级无代码和低代码开发平台 核心特性&#xff1a; 强调NocoBase的数据模型驱动方法&am…

JVM 性能分析案列——使用 JProfiler 工具分析 dump.hprof 堆内存快照文件排查内存溢出问题

在 windows 环境下实现。 参考文档 一、配置 JVM 参数 配置两个 JVM 参数&#xff1a; -XX:HeapDumpOnOutOfMemoryError&#xff0c;配置这个参数&#xff0c;会在发生内存溢出时 dump 生成内存快照文件&#xff08;xxx.hprof&#xff09;-XX:HeapDumpPathF:\logs&#xff…

uniapp使用伪元素实现气泡

uniapp使用伪元素实现气泡 背景实现思路代码实现尾巴 背景 气泡效果在开发中使用是非常常见的&#xff0c;使用场景有提示框&#xff0c;对话框等等&#xff0c;今天我们使用css来实现气泡效果。老规矩&#xff0c;先看下效果图&#xff1a; 实现思路 其实实现这个气泡框的…

线代的学习(矩阵)

1.矩阵的乘法 矩阵实现满足&#xff1a;内标相等 矩阵相乘之后的结果&#xff1a;前行后列 需要注意&#xff1a;1.矩阵的乘法不具有交换律&#xff1a;AB!BA 2.矩阵的乘法满足分配律&#xff1a;A(BC) AB AC 抽象逆矩阵求逆矩阵 方法1.凑定义法、 方法2.长除法 数字型矩阵…

06文件和文件夹的操作

授课进程 一、文件操作 在操作的时候尽量选择Linux下面的/opt目录 使用ls -l 命令&#xff0c;相对简化的命令ll 在Linux中&#xff0c;ls -l是一个常用的命令&#xff0c;用于列出文件和目录的详细信息。下面是ls -l命令的一些常见选项和输出示例&#xff1a; ​ - 使用ls -…