DDR3接口

news2024/11/17 14:50:09

mig IP核的配置

  首先添加mig IP核
在这里插入图片描述
  然后确认以下工程信息,主要是芯片型号以及编译环境,没什么问题后点击next.
  如下图所示,这一页选择"Create Design",在"Component Name"一栏设置该IP元件的名称,这里取默认软件的名称,再往下选择控制器的数量,控制器的数量是指由多少片独立的DDR3,如果DDR3采用并联的方式则只需要一个控制器。我们采用的是两片DDR3并联的方式,因此只需要选择一个控制器就可以。最后是AXI4的接口,这里也勾选上。然后点击next。
在这里插入图片描述
  如下图所示,这一页主要是让用户选择可以兼容的芯片,本工程默认不勾选,即不需要兼容其他的芯片。然后继续点击next。
在这里插入图片描述
  如下图所示,这一页选择的是mig控制器控制的芯片,勾选DDR3即可,点击next。接下来正式配置mig IP核的参数。
在这里插入图片描述
  如下图所示,接下来介绍这些可配置参数的意义。
    (1)Clock Period:DDR3芯片的运行时钟周期,这个参数的范围和FPGA芯片的类型以及具体类型的速度等级有关。本试验选择2500ps,对应400M,这是本次试验所采用芯片可选的最大频率。注意这个时钟是MIG IP核产生,并输出给DDR3物理芯片使用的,它关系到DDR3的运行带宽。比如本次试验的开发板板载两颗DDR3芯片,数据位宽32位,且双边沿触发,带宽达到了 400 M ∗ 2 ∗ 32 b i t = 25.6 G b / s 400M*2*32bit=25.6Gb/s 400M232bit=25.6Gb/s
    (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时钟选择了350MHz到400MHz,比例只能默认的4:1,低于350MHz才有4:1和2:1两个选项。
    (3)VCCAUX_IO:这是FPGA高性能bank的供电电压,Vccaux_io必须设置为2.0以实现最高数据速率。
在FPGA高范围bank中无法使用Vccaux_io。因为本试验使用的是高范围bank,所以未使用Vccaux_io。
    (4)Memory Type:DDR3存储器类型选择。本试验选择Component。
    (5)Memory Part:DDR芯片的具体型号。本实验选择MT41J128M16XX-125,这个型号其实和实际的硬件原理图上的型号NT5CB128M16FP-DI是不同的,但是也可以使用,只要用户的DDR芯片容量和位宽一致,大部分是可以兼容的。如果没有兼容的的器件,也可以点击"Create Custom Part(创建自定义器件)"按钮创建一个自定义器件。
    (6)Memory Voltage:是DDR3芯片的电压选择,本试验选1.5V。
    (7)Data Width:数据位宽选择,这里选择32,是因为两块DDR3拼接而成。数据宽度值可以根据之前选择的存储器类型选择。列表中显示了所选部件的所有支持的数据宽度。可以选择其中一个数据宽度。这些值通常是各个器件数据宽度的倍数。在某些情况下,宽度可能不是一个精确的倍数。例如16位是x16元件的默认数据宽度,但是8也是一个有效的值。
    (8)ECC:ECC校验使能,数据位宽为72位的时候才能使用。本试验不使用它。
    (9)Data Mask:数据屏蔽管脚使能。勾选它才会产生屏蔽信号,本试验没有用到数据屏蔽,但是还是把它勾选上。
    (10)Number of Bank Machines:Bank Machine的数量原本用来对具体的某个或者几个来单独控制的,选择多了效率就会高,相应的占用的资源也多,本试验选择4个,平均一个Bank Machine控制两个Bank(本次试验的DDR3是八个Bank)。
    (11)ORDERING:该信号用来决定MIG控制器是否可以对它接收到的指令进行重排序,选择Normal则允许,Strict则禁止。本试验选择Normal,从而获得更高的效率。
    (12)Create Custom Part:用于自定义DDR3的型号参数。
  配置完成后点击next。
在这里插入图片描述
  接下来配置AXI接口:
在这里插入图片描述

  接下来内存的操作方式:
    (1)Input Clock Period:MIG IP核的系统输入时钟,该输入时钟由FPGA内部产生,本次试验选择的时钟频率为5000ps(200MHz)。在Vivado软件20.2版本中存在一个软件BUG。生成IP后重新打开,会变成2500ps(400MHz),后续修改IP时注意此处。
    (2)Read Burst Type and Length:突发类型选择,突发类型有顺序突发和交叉突发两种,本试验选择顺序突发,其突发长度固定为8。
    (3)Output Driver Impdance Control:输出阻抗控制。本试验选择RZQ/7。
    (4)RTT:终结电阻,可进行动态控制,本次试验选择RZQ/4。
    (5)Controller Chip Select Pin:片选管脚输出使能。本试验选择enable,表示把片选信号cs#引出来,由外部控制。
    (6)BANK_ROW_COLUMN:寻址方式选择。本试验选择第二种,即BANK-ROW-COLUMN的形式,这是一种常见的DDR3寻址方式,即要指定某个地址,先指定Bank,再指定行,最后指定列,这样就确定了一个具体地址。一般来说这样寻址有利于降低功耗,但是读写性能上不如ROW_BANK_COLUMN。配置完成点击NEXT。
在这里插入图片描述
  接下来配置FPGA的操作模式:
    (1)System Clock:MIG IP核输入时钟。本试验选择NO Buffer,因为IP核的输入时钟是单端时钟,是由内部MMCM产生的,MMCM所产生的时钟默认添加了buffer。
    (2)Reference Clock:MIG IP核的参考时钟,同样选择NO Buffer,将有时钟模块生成。感兴趣的用户也可以选择Use System Clock这个选项。这时候的MIG IP系统时钟同时做了参考时钟,IP核的参考时钟要求是200MHz,而MIG IP核的系统时钟刚好也使用了200MHz的系统时钟。
    (3)System Reset Polarity:复位有效电平选择。本试验选择ACTIVE LOW低电平有效。
    (4)Debug Signals Control:该选项用于控制MIG IP核是否把一些调试信号引出来,他会自动添加到ILA,这些信号也包括一些DDR3芯片的校准状态信息。本试验选择OFF,不需要让IP核产生各种调试信息。
    (5)Sample Data Depth:采样深度选择。当Debug Signals Control选择OFF时,所有的采样深度时不可选的。
    (6)Internal Vref:内部参考管脚,表示某些参考管脚当成普通的输入管脚使用。由于开发板的IO资源较为紧张,因此这里要选择ON,把参考管脚当作普通的输入管脚来使用。
    (7)IO Power Reduction:IO管脚节省功耗设置。本试验选择ON,开启。
    (8)XADC Instantiation:XADC模块的例化。使用MIG IP核运行的时候需要进行温度补偿,可以直接选择XADC模块的温度数据引到MIG IP核来使用,否则需要额外提供温度数据,所以本试验选择Enable。配置完成点击NEXT。

在这里插入图片描述
  接下来配置内部高性能bank端接匹配阻抗的设置,这里不去改它,默认50欧姆即可。接下来点击NEXT。
在这里插入图片描述
  接下来开始绑定管脚,这里我们选用预先设置好的管脚,选择Fixed Pin选项,点击NEXT。
在这里插入图片描述
  进入下图界面后,选择Read XDC/UCF选项。选择预先设置好的DDR3配置文件,然后点击Validate。弹出对话框后点击Ok。管脚配置完成,点击NEXT。
在这里插入图片描述
  配置基本设置完成,后面都是一些查看和接受,直接点击NEXT即可。
  DDR3的仿真配置文件在生成IP核的同时也会生成,文件位置如下图所示:
在这里插入图片描述

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

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

相关文章

Redis数据库——群集(主从、哨兵)

目录 前言 一、主从复制 1.基本原理 2.作用 3.流程 4.搭建主动复制 4.1环境准备 4.2修改主服务器配置 4.3从服务器配置(Slave1和Slave2) 4.4查看主从复制信息 4.5验证主从复制 二、哨兵模式——Sentinel 1.定义 2.原理 3.作用 4.组成 5.…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

代码随想录-算法训练营day02【滑动窗口、螺旋矩阵】

专栏笔记&#xff1a;https://blog.csdn.net/weixin_44949135/category_10335122.html https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG?uc71ed002e4554fee8c262b2a4a4935d8977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II &#xff0c;总结 建议…

[中级]软考_软件设计_计算机组成与体系结构_08_输入输出技术

输入输出技术 前言控制方式考点往年真题 前言 输入输出技术就是IO技术 控制方式 程序控制(查询)方式&#xff1a;分为无条件传送和程序查询方式两种。 方法简单&#xff0c;硬件开销小&#xff0c;但I/O能力不高&#xff0c;严重影响CPU的利用率。 程序中断方式&#xff1…

LeetCode---127双周赛

题目列表 3095. 或值至少 K 的最短子数组 I 3096. 得到更多分数的最少关卡数目 3097. 或值至少为 K 的最短子数组 II 3098. 求出所有子序列的能量和 一、或值至少k的最短子数组I&II 暴力的做法大家都会&#xff0c;这里就不说了&#xff0c;下面我们来看看如何进行优化…

Python云计算技术库之libcloud使用详解

概要 随着云计算技术的发展,越来越多的应用和服务迁移到了云端。然而,不同云服务商的API和接口千差万别,给开发者带来了不小的挑战。Python的libcloud库应运而生,它提供了一个统一的接口,让开发者可以轻松地管理不同云服务商的资源。本文将深入探讨libcloud库的特性、安装…

SecureCRT通过私钥连接跳板机,再连接到目标服务器

文章目录 1. 配置第一个session&#xff08;跳板机&#xff09;2. 设置本地端口3. 设置全局firewall4. 配置第二个session&#xff08;目标服务器&#xff09; 服务器那边给了一个私钥&#xff0c;现在需要通过私钥连接跳板机&#xff0c;再连接到目标服务器上 &#x1f349; …

vue3和vue2项目中如何根据不同的环境配置基地址?

在不同环境下取出的变量的值是不同的, 像这样的变量称为环境变量 为什么要使用环境变量呢? 开发环境生产环境下的接口地址有可能是不一样的&#xff0c;所以我们需要根据环境去配置不同的接口基地址 1、vue2环境变量配置 在根目录创建&#xff1a;.env.development和.env.p…

getc(),putc(),getchar(),putchar()之间的区别

getc&#xff08;&#xff09; putc() 与函数 getchar() putchar()类似&#xff0c;但是不同点在于&#xff1a;你要告诉getc和putc函数使用哪一个文件 1.从标准输入中获取一个字符&#xff1a; ch getchar(); //在处理器上输入字符 2.//从fp指定的文件中获取以一个字符 ch …

全面解析找不到msvcr110.dll,无法继续执行代码的解决方法

MSVCR110.dll的丢失可能导致某些应用程序无法启动。当用户试图打开依赖于该特定版本DLL文件的软件时&#xff0c;可能会遭遇“找不到指定模块”的错误提示&#xff0c;使得程序启动进程戛然而止。这种突如其来的故障不仅打断了用户的正常工作流程&#xff0c;也可能导致重要数据…

分库分表 ——12 种分片算法

目录 前言 分片策略 标准分片策略 行表达式分片策略 复合分片策略 Hint分片策略 不分片策略 分片算法 准备工作 自动分片算法 1、MOD 2、HASH_MOD 3、VOLUME_RANGE 4、BOUNDARY_RANGE 5、AUTO_INTERVAL 标准分片算法 6、INLINE 7、INTERVAL COSID 类型算法 …

004 CSS介绍2

文章目录 css最常用属性link元素进制css颜色表示浏览器的渲染流程(不含js) css最常用属性 font-size 文字大小 color:前景色(文字颜色) background-color:背景色 width:宽度 height:高度 link元素 也可以用来创建站点图标 link元素常见属性 href:指定被链接资源的URL rel:指…

【Linux篇】认识冯诺依曼体系结构

文章目录 一、冯诺依曼体系结构是什么二、冯诺依曼为什么要这么设计&#xff1f;三、内存是怎么提高效率的呢&#xff1f;解释&#xff1a;程序要运行&#xff0c;必须加载到内存四、和QQ好友聊天的时候&#xff0c;数据是怎么流向的&#xff1f; 一、冯诺依曼体系结构是什么 冯…

抖音运营技巧

1、视频时长 抖音的作品是否能够继续被推荐&#xff0c;取决于综合数据&#xff0c;包括完播率、点赞率、评论率、转发率和收藏率等。其中&#xff0c;完播率是最容易控制的因素。对于新号来说&#xff0c;在没有粉丝的初期&#xff0c;发布过长的视频可能会导致无人观看。因此…

vue 打包 插槽 inject reactive draggable 动画 foreach pinia状态管理

在Vue项目中&#xff0c;当涉及到打包、插槽&#xff08;Slots&#xff09;、inject/reactive、draggable、transition、foreach以及pinia时&#xff0c;这些都是Vue框架的不同特性和库&#xff0c;它们各自在Vue应用中有不同的用途。下面我将逐一解释这些概念&#xff0c;并说…

vue给input密码框设置眼睛睁开闭合对于密码显示与隐藏

<template><div class"login-container"><el-inputv-model"pwd":type"type"class"pwd-input"placeholder"请输入密码"><islot"suffix"class"icon-style":class"elIcon"…

springboot项目引入swagger

1.引入依赖 创建项目后&#xff0c;在 pom.xml 文件中引入 Swagger3 的相关依赖。回忆一下&#xff0c;我们集成 Swagger2 时&#xff0c;引入的依赖如下&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2&…

泛型(Generic)

文章目录 1. 泛型概述1.1 生活中的例子1.2 泛型的引入 2. 使用泛型举例2.1 集合中使用泛型2.1.1 举例2.1.2 练习 2.2 比较器中使用泛型2.2.1 举例2.2.2 练习 2.3 相关使用说明 3. 自定义泛型结构3.1 泛型的基础说明3.2 自定义泛型类或泛型接口3.2.1 说明3.2.2 举例3.2.3 练习 3…

HTML1:html基础

HTML 冯诺依曼体系结构 运算器 控制器 存储器 输入设备 输出设备 c/s(client客户端) 客户端架构软件 需要安装,更新麻烦,不跨平台 b/s(browser浏览器) 网页架构软件 无需安装,无需更新,可跨平台 浏览器 浏览器内核: 处理浏览器得到的各种资源 网页: 结构 HTML(超…

【Python的第三方库】flask

1. Flask是什么&#xff1f; 基于python的web后端开发轻量级框架&#xff1b; 基于MVT设计模式即Models,Views,Templates(html模板语言) 2.中文文档&#xff1a; https://dormousehole.readthedocs.io/en/2.1.2/index.html 3.依赖3个库&#xff1a; Jinja2 模版&#xff1…