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

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

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

      • 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4
      • 一、引言
      • 二、DDR4 SDRAM设备中模式寄存器
        • 重要的模式寄存器之MR1
          • (1) 延迟锁定环(DLL)的启用
          • (2)输出驱动器阻抗的控制方式
          • (3)片上终止电阻(ODT, On-Die Termination)
          • (4)加法延迟(ADDITIVE LATENCY, AL)
          • (5)写均衡(Write Leveling)
          • (5)输出使能
          • (6)终止数据选通(Termination Data Strobe, TDQS)

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

一、引言

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

二、DDR4 SDRAM设备中模式寄存器

重要的模式寄存器之MR1

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

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

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

在这里插入图片描述

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

(1) 延迟锁定环(DLL)的启用

这三个参数是控制内存访问行为的关键参数
1、DLL的启用
DLL必须在正常操作中启用,并且在上电初始化以及在禁用DLL后返回正常操作时都需要启用。

2、DLL在自刷新操作中的行为

在正常操作期间(MR1[0]置为1以启用DLL),当进入自刷新(SELF REFRESH)操作时,DLL会自动禁用,并在退出自刷新操作时自动重新启用。

3、DLL复位后的同步
每次DLL被启用并在之后被复位,必须等待tDCLK个时钟周期后才能发出读(READ)或同步ODT(On-Die Termination)命令,以允许内部时钟与外部时钟同步。

tDCLK 期间CKE(时钟使能)必须连续置为为高电平。

1、DLL与写操作的关系

设备在任何写操作中不需要DLL,除非启用了RTT(WR)(写终止电阻),并且DLL需要正确进行ODT操作。

2、DLL关闭模式下的ODT支持
在DLL关闭模式下,不支持直接ODT特性。必须通过持续注册ODT引脚为低电平,或者通过MRS命令将MR1寄存器的RTT(NOM)位[9,6,2]编程为000来禁用ODT电阻。

3、DLL关闭模式下的动态ODT
在DLL关闭模式下不支持动态ODT特性;要在外部禁用动态ODT,使用MRS命令将MR2寄存器的RTT(WR)位[10:9]设置为00。

(2)输出驱动器阻抗的控制方式

1、输出驱动器阻抗选择
DDR4 SDRAM设备的输出驱动器阻抗可以通过模式寄存器1(MR1)中的第2位和第1位(MR1[2,1])来选择。
2、寄存器定义表
具体的阻抗设置选项和对应的值会在MR1寄存器定义表中展示。

(3)片上终止电阻(ODT, On-Die Termination)

关于片上终止电阻(ODT, On-Die Termination)的不同终止值(RTT, Resistor Termination Type)的设置。

1、ODT终止值

设备能够提供三种不同的终止电阻值:

RTT(Park):当ODT信号为低电平时的终止值。
RTT(NOM):标称终止值,用于正常的操作条件。
RTT(WR):写操作期间的终止值,当ODT在写操作期间被启用时使用

ODT是一种用于减少信号反射和提高信号完整性的特性,特别是在高速内存接口中。通过编程不同的RTT值,系统设计者可以根据不同的操作条件和性能要求来优化内存设备的性能。

(4)加法延迟(ADDITIVE LATENCY, AL)

1、加法延迟(AL)的目的
AL操作被支持以提高设备在可持续性带宽方面的命令和数据总线的效率。

2、AL操作的工作原理
设备允许在读命令(READ)或写命令(WRITE)后立即发出激活命令(ACTIVATE)。
该命令会在设备内部保持AL时间长度,然后才被实际执行。

3、读延迟(RL)的控制
读延迟(RL)由加法延迟(AL)和CAS延迟(CL)寄存器设置的总和控制。
即:RL=AL+CLRL=AL+CL
**
4、写延迟(WL)的控制**
写延迟(WL)由加法延迟(AL)和CAS写延迟(CWL)寄存器设置的总和控制。
即:WL=AL+CWLWL=AL+CWL

5、AL操作的优势
通过使用AL,可以在不牺牲性能的情况下,减少对时钟周期的需求,从而提高内存子系统的效率。

6、AL操作的灵活性
由于AL允许命令在激活命令后立即发出,它为系统设计者提供了更大的灵活性来优化内存访问模式。
在这里插入图片描述

(5)写均衡(Write Leveling)

1、信号拓扑

设备使用飞线(fly-by)拓扑结构来传输命令、地址、控制信号和时钟。飞线拓扑的优点在于减少了stub的数量及其长度,有助于降低信号反射和交叉干扰。

2、信号问题
尽管飞线拓扑有其优势,但它也会导致在DIMM上每个DRAM之间的时钟和行选信号(strobe)的飞行时间(flight-time)不一致,即存在飞行时间偏斜(skew)。

3、写均衡功能
为了解决这个问题,设备支持写均衡特性。写均衡允许控制器对飞行时间偏斜进行补偿,确保数据在内存中正确写入。

4、控制器的作用
写均衡过程中,控制器会调整写操作的时序,以适应由于飞线拓扑引起的信号偏斜,从而确保数据信号的准确性和可靠性。

5、性能优化
通过写均衡,可以提高信号完整性,减少时序违规的风险,优化内存的性能和稳定性。

写均衡是DDR4内存技术中的一个重要特性,特别是在高频率高容量的内存系统中,它对于确保数据传输的准确性和系统的稳定性至关重要。控制器需要通过复杂的算法来实现写均衡,这通常涉及到对内存系统的深入理解和精确的时序控制。

(5)输出使能

通过模式寄存器1(MR1)的第12位(MR1[12])来控制输出使能:
1、输出使能/禁用控制
通过MR1[12]的设置,可以启用或禁用设备的所有输出引脚。这些输出引脚包括数据引脚(DQ)和数据选通信号(DQS)等。
2、输出禁用
当MR1[12]被设置为1时,所有输出引脚将与设备断开连接,这将消除输出驱动器的任何负载。这种设置对于某些特定的操作是有用的,比如在测量模块功耗时,可能需要禁用输出以避免影响测量结果。
3、输出使能

为了正常操作,应将MR1[12]设置为0。这样,输出引脚将正常工作,输出驱动器将加载并驱动信号到系统。
输出使能/禁用功能可以用于多种目的,比如在进行系统调试、功耗测量或在某些特定的低功耗状态下,可能需要暂时禁用输出。然而,在大多数正常操作中,输出应该是使能的,以确保数据可以正确地在内存设备和系统之间传输。

(6)终止数据选通(Termination Data Strobe, TDQS)

1、TDQS功能
TDQS是x8设备的一个特性,它提供了额外的终止电阻输出,这在某些系统配置中可能有用。

2、配置依赖性
由于TDQS功能仅在x8配置中可用,因此在x4和x16配置中必须禁用此功能。

3、TDQS与DQS的关系
在x4或x16配置中不支持TDQS时,当通过模式寄存器启用时,应用于TDQS引脚的相同终止电阻功能将应用于DQS引脚。

TDQS功能的主要目的是提供额外的信号完整性,通过在数据选通信号上增加终止电阻来减少反射和提高信号质量。然而,由于物理引脚的限制,TDQS功能与DM和DBI功能不能同时使用。系统设计者需要根据具体的系统配置和性能要求来决定是否启用TDQS功能,以及如何配置DM和DBI功能。在设计过程中,需要仔细考虑这些特性的兼容性和对系统性能的影响。

三、总结

本文详细介绍了FPGA对DDR4 SDRAM(MT40A256M16型号)的读写控制方法,重点探讨了DDR4的模式寄存器,尤其是MR1寄存器的不同配置选项及其对内存性能的影响。文章讨论了延迟锁定环(DLL)的启用、输出驱动器阻抗的控制、片上终止电阻(ODT)的设置、加法延迟(AL)以及写均衡等关键参数,解释了它们如何影响内存访问行为和性能。此外,还提到了输出使能和终止数据选通(TDQS)等特性,强调了正确配置这些参数以最大化FPGA与DDR4内存之间的读写效率和信号完整性的重要性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arduino - LED 矩阵

Arduino - LED 矩阵 Arduino - LED Matrix LED matrix display, also known as LED display, or dot matrix display, are wide-used. In this tutorial, we are going to learn: LED矩阵显示器,也称为LED显示器,或点阵显示器,应用广泛。在…

“Hello, World!“ 历史由来

布莱恩W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人 布莱恩W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。 1973 年&#…

C++ | Leetcode C++题解之第203题移除链表元素

题目: 题解: class Solution { public:ListNode* removeElements(ListNode* head, int val) {struct ListNode* dummyHead new ListNode(0, head);struct ListNode* temp dummyHead;while (temp->next ! NULL) {if (temp->next->val val) {…

小柴冲刺软考中级嵌入式系统设计师系列一、计算机系统基础知识(1)嵌入式计算机系统概述

flechazohttps://www.zhihu.com/people/jiu_sheng 小柴冲刺嵌入式系统设计师系列总目录https://blog.csdn.net/qianshang52013/article/details/139975720?spm1001.2014.3001.5501 根据IEEE(国际电气电子工程师协会)的定义,嵌入式系统是&q…

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性(了解)8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…

哪吒汽车,正在等待“太乙真人”的拯救

文丨刘俊宏 在360创始人、哪吒汽车股东周鸿祎近日连续且着急的“督战”中,哪吒汽车(下简称哪吒)终究还是顶不住了。 6月26日,哪吒通过母公司合众新能源在港交所提交了IPO文件,急迫地希望成为第五家登陆港股的造车新势力…

uniapp中实现瀑布流 短视频页面展示

直接上干货 第一部分为结构 <swiper class"list" :currentindex change"swiperchange" scrolltolower"onReachBottom"><swiper-item style"overflow: scroll;" v-for"(item,index) in 2" :key"index"&g…

DataV大屏组件库

DataV官方文档 DataV组件库基于Vue &#xff08;React版 (opens new window)&#xff09; &#xff0c;主要用于构建大屏&#xff08;全屏&#xff09;数据展示页面即数据可视化&#xff0c;具有多种类型组件可供使用&#xff1a; 源码下载

Golang | Leetcode Golang题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; func countPrimes(n int) int {primes : []int{}isPrime : make([]bool, n)for i : range isPrime {isPrime[i] true}for i : 2; i < n; i {if isPrime[i] {primes append(primes, i)}for _, p : range primes {if i*p > n {break}…

智能交通(1)——杭州交通数据集

赛题简介 在本地赛题中&#xff0c;参赛团队需要在平台提供的仿真交通场景下&#xff0c;通过算法模型驱动交通信号灯&#xff0c;以在各种交通状况&#xff08;高峰期、雨天等&#xff09;下都能最大程度地服务车辆&#xff0c;使其在模拟环境中获得综合最大得分。 数据集 …

Docker 部署 MariaDB 数据库 与 Adminer 数据库管理工具

文章目录 MariaDBmariadb.cnf开启 binlog Adminerdocker-compose.ymlAdminer 连接 MariaDB MariaDB MariaDB是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是MySQL的一个分支和替代品。 官网&#xff1a;https://mariadb.com/镜像&#xff…

GPU算力是什么,哪些行业需要用到GPU算力?

近两年&#xff0c;计算能力已成为推动各行各业发展的关键因素。而GPU&#xff08;图形处理器&#xff09;算力&#xff0c;作为现代计算技术的重要分支&#xff0c;正逐渐在多个领域展现出其强大的潜力和价值。尚云将简要介绍GPU算力的定义和基本原理&#xff0c;并探讨其在哪…

对于CDA一级考试该咋准备??!

一、了解考试内容和结构 CDA一级考试主要涉及的内容包括&#xff1a;数据分析概述与职业操守、数据结构、数据库基础与数据模型、数据可视化分析与报表制作、Power BI应用、业务数据分析与报告编写等。 CDA Level Ⅰ 认证考试大纲:https://edu.cda.cn/group/4/thread/174335 …

从架构设计的角度分析ios自带网络库和AFNetworking

总结&#xff08;先说明文章分析出的一些‘认知’&#xff09; 从本文中&#xff0c;我们可以总结出一些框架设计上的“认知”&#xff1a; 对于通用的常规配置信息方面的设计&#xff0c;我们可以通过定义一个“类似于NSURLSessionConfiguration、NSURLRequest”的类来完成设…

Python | Leetcode Python题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def removeElements(self, head: ListNode, val: int) -> Li…

ArkTS自定义组件

一、自定义组件基本结构 // 定义自定义组件 ButtonCom.ets Component export struct BtnCom{State msg: string "按钮";build() {Row(){Text(this.msg).onClick(() > {this.msg "测试"})}} } // 引入自定义组件 import {BtnCom} from "./Butto…

[Go Web] Kratos 使用的简单总结

文章目录 1.Kratos 简介2.传输协议3.日志4.错误处理5.配置管理6.wire 1.Kratos 简介 Kratos并不绑定于特定的基础设施&#xff0c;不限定于某种注册中心&#xff0c;或数据库ORM等&#xff0c;所以您可以十分轻松地将任意库集成进项目里&#xff0c;与Kratos共同运作。 API -&…

正版软件 | R-Drive Image:数据安全守护者,您的智能备份专家

在数字化时代&#xff0c;数据安全的重要性不言而喻。R-Drive Image 是一款功能强大的备份和恢复软件&#xff0c;为您提供了全面的解决方案&#xff0c;确保您的数据安全无忧。 精确备份&#xff0c;全面保护 R-Drive Image 能够创建硬盘驱动器的逐字节副本&#xff0c;无论是…

RabbitMQ 的经典问题

文章目录 前言一、防止消息丢失1.1 ConfirmCallback/ReturnCallback1.2 持久化1.3 消费者确认消息 二、防止重复消费三、处理消息堆积四、有序消费消息五、实现延时队列六、小结推荐阅读 前言 当设计和运维消息队列系统时&#xff0c;如 RabbitMQ&#xff0c;有几个关键问题需…

机器人控制系列教程之控制理论概述

经典控制理论 经典控制理论主要研究线性定常系统。所谓线性控制系统是指系统中各组成环节或元件的状态由线性微分方程描述的控制系统。如果描述该线性系统的微分方程系数是常数,则称为线性定常系统。描述自动控制系统输入量、输出量和内部量之间关系的数学表达式称为系统的数学…