XIlinx提供的DDR3 IP与 UG586

news2024/9/22 19:33:41

     DDR系统需要关注的三样东西:控制器、PHY、SDRAM颗粒,但这是实现一个DDR3 IP所需要的,如果只希望调用IP的话,则只需要调用IP即可,目前时间紧急,我先学一学如何使用IP,解决卡脖子的问题,自研日后再说。

        使用的DDR3器件:MT41J128M16JT-093K

总览

DDR3 IP配置

第一部分


Create Design

        选择此选项可生成内存控制器。生成内存控制器将创建 RTL、XDC、implementation 和simulation 文件。
Verify Pin Changes and Update Design
        选择此功能可验证已通过 MIG 生成的设计的修改后的 XDC。此选项允许您更改引脚分配并立即验证它,它会更新输入 XDC 文件以与当前版本的 MG 兼容。更新 XDC 时,它会保留输入 XDC 的引脚分配。此选项还将使用您在此页面中选择的组件名称生成新设计。

多控制器

        通过 DDR3 SDRAM、QDR1+-SRAM 或 RLDRAM 的组合,最多可生成 8 个控制器。可容纳的控制器数量可能受到数据宽度和器件中可用存储体数量的限制。有关详细信息,请参阅用户指南 控制器数量 。

不使能则为APP接口:

        Xilinx DDR3 —— MIG IP核的原理(APP接口)_XPii的博客-CSDN博客

第二部分 选择可拓展器件

第三部分 选择内存接口类型。

        请参阅用户指南,了解每个 FPGA 系列支持的控制器的详细列表。下面的列表显示了特定 FPGA、速度等级和所选设计条目的当前可用接口。

4.

DDR的时钟速率

时序标准

        时钟周期:选择所需频率的时钟周期。允许的周期范围(2500 -3300)是所选 FPGA 部件和 FPGA 速度等级的函数。请参阅用户指南了解更多信息。

所以此处配置的实际上是时钟频率。

Clock Period

        ①Clock Period设置的参数就是 MIG 的PHY 接口对DDR3的时钟,也就是DDR3芯片实际跑的IO时钟频率,它由system clock(主时钟)倍频而来,最大频率不能超过DDR3 和MIG支持的最大频率中的最小值。

器件名称:MT41J128M16JT-125:K

        tCK = 1.25ns,就可以算出芯片支持的最大IO时钟频率:1/1.25ns = 800Mhz;此处的IO时钟频率也就是DDR3的频率。

        双边沿都发送,所以数据传输速率:1600M。

虽然DDR3器件最大支持800MHZ。

但是A7只支持800MHZ的PHY(数据传输速率)速率,所以工作时钟频率只能设置为400MHZ,但是K7可以支持1600MHZ的PHY所以可以设置为1250PS = 1.25NS。

PHY 与控制器时钟比率:(低于 350M 才可选

        选择 PHY 与内存控制器时钟比率。 PHY 以上面选择的内存时钟周期运行。控制器以 PHY 速率的 1/4 或 1/2 运行。所选的内存时钟周期将限制选择。

        PHY to Controller Clock Ratio:DDR3 物理芯片运行时钟和 MIG IP 核的用户端(FPGA)的时钟之比, 一般有 4:1 和 2:1 两个选项,本次实验选 4:1。由于 DDR 芯片的运行时钟是 400Mhz,因此 MIG IP 核的用户时钟(ui_clk)就是 100Mhz。一般来说高速传输的场合选择 4:1,要求低延时的场合选择 2:1。这里还要指 出,当 DDR3 时钟选择选择了 350M 到最高的 400M,比例默认只为 4:1,低于 350M 才有 4:1 和 2:1 两个选 项。

Vccaux_io

        在高性能组中,Vccaux_io 必须设置为 2.0V,以获得最高数据速率。Vccaux_io 在高范围组中不可用。请注意,Vccaux_io 对于Bank组来说是通用的。有关更多信息,请参阅 7 系列数据表和 FPGA SelectIlO 资源用户指南。

        这是 FPGA 高性能 bank(High Performance bank)的供电电压。它的设置取决于 MIG 控制器运行的周期/频率。当用户让控制器工作在最快频率的时候,系统会默认为 1.8V,当然在 1.8V 下用 户可以运行低一点的频率。本实验默认 1.8V。

 内存类型:

选择内存类型。标有警告符号的类型与上述频率选择不兼容。

内存部分:

        选择内存部分。标有警告符号的部分与上述频率选择不兼容。如果此处未列出所需的部件,请查找等效部件或使用“创建自定义部件”按钮创建部件。RLDRAM II 不支持“创建自定义部件”功能。

根据实际需求选择。

数据位宽

同样根据实际需求选择。

实在找不到自己翻手册配。

ECC:ECC 校验使能

        MIG 支持 72 位数据宽度配置的 ECC。为了能够选择 ECC,请选择支持 ECC 的数据宽度。

        数据位宽为 72 位的时候才能使用。

Data Mask:数据掩码

        使用此复选框启用或禁用数据掩码 (DM) 引脚的生成。仅当所选存储器部分具有 DM 引脚时才可选择此选项。取消选中此框可不使用数据掩码并保存用于 DM 信号的 FPGAIO。 ECC 设计(DDR3 SDRAM、DDR2 SDRAM)不会使用数据掩码。

        数据屏蔽管脚使能。勾选它才会产生屏蔽信号。

 Number of Bank Machines:

        Bank Machine 的数量是用来对具体的每个或某几个来单独控制的,选择多 了控制效率就会高,相应的占用的资源也多,本实验选择 4 个,平均一个 Bank Machine 控制两个 BANK

(本次实验的 DDR3 芯片是八个 bank)。

ORDERING:

        该信号用来决定 MIG 控制器是否可以对它收到的指令进行重新排序,选择 Normal 则允 许,Strict 则禁止。本实验选择 Normal,从而获得更高效率。

第四部分 Axi 参数配置

数据宽度

        AXI DATA WIDTH:AXl 读写通道的数据宽度。

        数据宽度小于或等于用户接口数据宽度,可能值为 32,64,128,256&512。

仲裁方案

        选择读写地址通道之间的仲裁方案

窄突发支持

        使逻辑能够支持 AXl4 从接口上的窄突发。如果系统中没有主机发出窄突发并且所有数据宽度都相等,则可以设置为零。 (1-启用,0-禁用)

地址宽度

        AXI4 读写地址通道的地址宽度。

ID 宽度

        AXI4 读写通道的 ID 宽度。 AX4 ID用作写入或读取信号组地址的识别标签

第五部分 存储器配置

输入时钟周期:(重要)

        选择 PLL 输入时钟 (CLKIN) 的周期。MIG 根据上面输入的内存时钟周期和用户指南中列出的时钟指南确定允许的输入时钟周期。生成的设计将使用选定的输入时钟和内存时钟周期来生成所需的 PLL 参数。如果所需的输入时钟周期不可用,则必须修改内存时钟周期。

        MIG内部有PLL用来完成从输入时钟频率到DDR3工作频率的倍频。

        推荐选择200Mhz,因为参考时钟也是200Mhz,配置的时候参考时钟可以直接使用系统时钟,减少端口信号。

Read Burst Type and Length:

        突发类型决定突发内的数据排序。有关详细信息,请参阅内存数据表。突发长度 8 是唯一受支持的值。(基本没人用交叉,到底是谁在用呢)

        突发类型选择,突发类型有顺序突发和交叉突发两种,本实验选择

顺序突发(Sequential),其突发长度固定为 8。

Output Driver Impdance Control:

        输出阻抗控制。本实验选择 RZQ/7。

RTT(标称) - 片上端接 (ODT)~终结电阻,可进行动态控制。

        选择组件或 DIMM 接口上 DQ、DQS/DQS# 和 DM 信号的 ODT 标称值。对于数据速率,必须将其设置为 RZQ/6 i(40 欧姆) 1333 Mbps 及以上。在 2 插槽 DIMM 配置中,该值将用于写入期间未写入的插槽,也将用于读取期间未选择的插槽。使用板级仿真来选择最佳值。

Controller Chip Select Pin:

        片选管脚引出使能。本实验选择 enable,

        当此选择设置为“禁用”时,片选 (CS#) 引脚可在外部连接为低电平,以在地址/命令组中保存一个引脚。禁用仅对单列配置有效。

        实际上DDR3或者说SDRAM的所有指令,包括NOP下,CS_N都设置为0,这里默认为0可以省略一个管脚。

寻址方式选择

BANK_ROW_COLUMN:

        寻址方式选择。本实验选择第二种,即 BANK-ROW-COLUMN 的形式,这是一种最常规的 DDR3 寻址方式,即要指定某个地址,先指定 bank,再指定行,最后指定列,这样就确定 了一个具体地址。

        一般来说这样寻址方式有利于降低功耗,但是读写性能(效率)上不如 “ROW_BANK_COLUMN”。

第六部分 FPGA配置

System Clock类型:

         MIG IP核输入给内部PLL的时钟类型,就是上一部分这个。/

        可选择“No Buffer”,直接选单端时钟是默认有buffer?

         因为IP核的输入系统时钟是单端时钟, 是由内部的MMCM产生的,MMCM所产生的时钟默认添加了buffer。

Reference Clock参考时钟类型:

        MIG IP 核参考时钟。同样可选择“No Buffer”,将由时钟模块生成,IP 核参考时钟要求是 200Mhz。如果之前在:

        使用了 200Mhz 的系统时钟,则参考时钟就可以直接使用系统时钟(use system clock)

System Reset Polarity:

        复位有效电平选择。

Sample Data Depth:采样深度选择。

        此功能允许在 ChipScope 工具上监视 IP 中存在的各种调试信号。

        调试信号包括各个 PHY 校准阶段的状态信号。启用此功能会将所有调试信号连接到 exampledesign 顶部模块中的 ChipScope ILA 和 VIO 内核。

        调试接口中每条总线都有部分接地,用户可以将接地信号替换为所需的信号。

当“Debug Signals Control”选择“OFF”时,所有采样深度是不可选的。

Internal Vref:

        内部参考管脚,表示将某些参考管脚当成普通的输入管脚来用。

        由于开发板的 IO 资源 较为紧张,这里需要选择“ON”,把参考管脚当做普通的输入管脚来用。

        内部 Vref 可用于允许将 Vref 引脚用作普通 IO 引脚。该选项只能在 800 Mbps 和更低的数据速率下使用。这可以为每个使用输入的组释放 2 个引脚。此设置对仅具有输出的组没有影响。

IO Power Reduction:管脚节能

        IO 管脚节省功耗设置。选择“ON”,即开启。

        通过在写入期间和不活动期间自动禁用 DQ/DQS IBUF 和内部终止,显着降低平均 IO 功率

XADC Instantiation:温度补偿

        XADC 模块例化。使用 MIG IP 核运行的时候需要进行温度补偿,可以直接选择 XADC 模块的温度数据引到 MIG IP 核来使用,否则需要额外提供温度数据,选择“Enable”。

        存储器接口使用 XADC 块的温度读数来执行温度补偿,并使读数在数据窗口中保持居中。每个设备有一个 XADC 块,如果 XADC 当前未在设计中的任何地方使用,请启用此选项以拥有该块实例化。

        如果已使用 XADC,请禁用此 MIG 选项。

        然后,用户需要向顶级 12 位 device_temp_i 输入端口提供温度值。有关详细信息,请参阅答复记录 51687 或 UG586。

第七部分 内部高性能 bank 端接匹配阻抗

        选择高范围 (HR) 组的内部终端 (N_TERM) 阻抗。

        此设置仅适用于界面中使用的 HR  BANK。内部终端阻抗 50 Ohms

第八部分 管脚模式选择

如果选择第二种则可以直接导入。

第九部分 BANK选择

        第八部分选择了第一种的情况下:

        在下面的架构视图中选择数据和地址控制的字节组。

        数据和地址控制必须在 3 个垂直组内选择。接口不能水平跨越。        

        “Bank/s) 14,15 包含配置引脚。MlG 尝试避免使用这些 Bank 进行默认配置。如果为内存控制器选择了 Bank(s) 14,15,则应验证 XDC 以确保与配置引脚不发生冲突。

        有关完整信息,请参阅 UG586 Bank 和 Pin 规则。

        Bank 选择可能仅限于高性能列,以满足所选的接口数据速率

第二种:

导入后则直接跳到倒数第二步。

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

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

相关文章

Linux系统管理:虚拟机Kylin OS安装

目录 一、理论 1.Kylin OS 二、实验 1.虚拟机Kylin OS安装准备阶段 2.安装Kylin OS 3.进入系统 一、理论 1.Kylin OS (1)简介 麒麟操作系统(Kylin OS)亦称银河麒麟,是由中国国防科技大学、中软公司、联想公司…

Go-Python-Java-C-LeetCode高分解法-第十一周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 我搜集到了50道精选题,适合速成概览大部分常用算法 突…

SpringBoot 入门 参数接收

接口声明 RestController //表示该类为请求处理类public class HttpDeal {RequestMapping("/login")//这个方法处理哪一个地址过来的请求public String hello(){return "返回给浏览器";}}接收参数 RequestMapping("/login")public String logi…

Spring框架(四)

1、Spring6整合JUnit 1、JUnit4 User类: package com.songzhishu.spring.bean;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;/*** BelongsProject: Spring6* BelongsPackage: com.songzhishu.spring.bean*…

文档的重要性及接口文档模板

随着工作年限的增长,我们逐渐意识到工作中文档的重要性不可忽视。优质的文档不仅能提高工作效率,还能有效降低沟通成本,因此我们必须注重文档的撰写和格式。最近,由于未能及时更新文档,导致在项目开发中出现了信息冲突…

[Golang]多返回值函数、defer关键字、内置函数、变参函数、类成员函数、匿名函数

函数 文章目录 函数多返回值函数按值传递、按引用传递类成员函数改变外部变量变参函数defer和追踪说明一些常见操作实现 使用defer实现代码追踪记录函数的参数和返回值 常见的内置函数将函数作为参数闭包实例闭包将函数作为返回值 计算函数执行时间使用内存缓存来提升性能 参考…

在Lichee RV Dock上的不成功的烧录尝试

最近在学基于risc-v的简单操作系统,刚好手里有块Lichee RV Dock 的板子,所以在学了基础的"hello, world"程序后,想着能不能把这个程序烧录到板子上,简单的做个实验。 要完成这个任务,需要将程序烧录到sd卡上…

文献阅读:The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A”

文献阅读:The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A” 1. 文章简介2. 实验 & 结果考察 1. finetune实验2. 真实知识问答 3. 结论 & 思考 文献链接:https://arxiv.org/abs/2309.12288 1. 文章简介 这篇文章是前…

FPGA设计FIR滤波器低通滤波器,代码及视频

名称:FIR滤波器低通滤波器 软件:Quartus 语言:Verilog/VHDL 本资源含有verilog及VHDL两种语言设计的工程,每个工程均可实现以下FIR滤波器的功能。 代码功能: 设计一个8阶FIR滤波器(低通滤波器&#xff…

使用AI编写测试用例——详细教程

随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具&#xff…

关于Git的入门教程(附GitHub和Gitee的使用方法)

一. Git 概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习、占地面积小、性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCas…

基于DF模式的协作通信技术matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、DF概述 4.2、DF基本原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2013b 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd))…

【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )

文章目录 一、继承中的对象模型分析1、继承代码示例2、基类与派生类内存模型3、问题引入 - 派生类对象构造函数和析构函数调用4、完整代码示例 - 派生类对象内存模型 二、继承中的构造函数和析构函数1、子类构造函数与析构函数调用顺序2、子类构造函数参数列表3、代码示例 - 继…

项目经理之如何组建跨部门项目团队

在跨组织、跨部门、跨专业的临时性合作项目中,如何组建一个高效的跨部门项目团队是确保项目成功实施的关键。本篇幅将介绍如何组建一个成功的跨部门项目团队,包括明确项目目标与范围、确定项目组织模型、明确角色与职责、合理划分团队结构、制定沟通机制…

app分发的一些流程

应用分发的流程通常包括以下步骤: 开发应用程序:首先,您需要开发您的应用程序。这包括编写代码、设计用户界面、测试应用程序等等。确保您的应用程序符合各个应用商店的规范和要求,以确保顺利通过审核。 准备应用材料&#xff1a…

操作系统——吸烟者问题(王道视频p34、课本ch6)

1.问题分析:这个问题可以看作是 可以生产多种产品的 单生产者-多消费者问题 2.代码——这里就是由于同步信号量的初值都是1,所以没有使用mutex互斥信号, 总共4个同步信号量,其中一个是 finish信号量

冲刺学习-MySQL-常见问题

MySQL索引的最左原则 联合索引的说明 建立三个字段的联合索引联合索引(a,b,c)相当于建立了索引:(a),(a,b),(a&#xff0…

【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 刷题篇 一、二叉树的中序遍历1.1 题目描述1…

分布式共识算法及落地

摘要 本文介绍常见的分布式共识算法,使用场景,以及相关已经落地了的程序或框架 1. 为什么要分布式共识算法 在分布式系统中,不同节点之间可能存在网络延迟、故障等原因导致彼此之间存在数据不一致的情况,为了保证分布式系统中的…

【Qt】消息机制和事件

文章目录 事件event()事件过滤器案例:检测鼠标事件案例:定时器 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事…