PL端DDR4读写测试实验(未完成)

文章目录

  • DDR4介绍
  • 实验过程
    • 编写XDC
    • 使用IP核
    • 上板验证
    • TODO
  • 参考


DDR4介绍

开发板PL有一颗16bit的DDR4。
在这里插入图片描述
先说明硬件信号(按该芯片):

信号名说明
DQData input/output,双向数据线(这个芯片是x16的,使用DQ[15:0] ),可以看到这里芯片和ZYNQ的定义并不是一对一的,把数据线交换了,但是不会影响最终的使用
DQS_t,DQS_c,UDQS_t,UDQS_c,LDQS_t,LDQS_cData strobe,读数据时输出,写数据时输入,x16时,LDQS对应DQ[15:8],UDQS对应DQ[7:0]。差分数据选通信号:差分信号对,作输入时与写数据同时有效,作输出时与读数据同时有效
DM_n,UDM_n,LDM_nInput data mask,写数据时的掩码信号,也是分别对应DQ的低8位和高8位,DM:Data Mask,DBI:Data Bus Inversion数据总线反转
VSSGround,地
VSSQDQ ground,数据线的地
VDDPower supply: 1.2V ±0.060V,供电
VDDQDQ power supply: 1.2V ±0.060V,数据线供电
VPPDRAM activating power supply: 2.5V –0.125V/+0.250V,激活电压
VREFCAReference voltage for control, command, and address pins,参考电压
ZQReference ball for ZQ calibration,ZQ校准,接一个240欧姆的参考电阻,下拉到地
A[17:0]Address inputs,地址线,A17只用到16Gb上面,A14、A15、A16还复用其他功能
ACT_nCommand input
CS_nChip select
RAS_n/A16,CAS_n/A15,WE_n/A14Command inputs,一些命令设置,包含行地址、列地址有效什么的
BABank address inputs
BGBank group address inputs
CK_t,CK_cClock, Differential clock inputs,差分时钟输入
CKEClock enable,时钟使能信号
PARParity for command and address
ALERT_nAlert output
TENConnectivity test mode
ODTOn-die termination,片上终端电阻,把电阻做到了芯片内部
RESET_nActive LOW asynchronous reset,复位信号

芯片信号为为MT40A512M16LY-062E,是镁光(Micron)的。从手册上看,这个型号的容量是8Gb(1GB),命名含义如下:
在这里插入图片描述

这里面的Meg和Gig都是一个单位,512M16表示容量是512Megx16,后面的16bit是位宽度。

然后是一些参数,DDR4引入了bank group的概念,一个bank group包含多个bank。MT40A512M16LY有两个bank group,使用1根地址线BG0(BG:bank group)即可进行寻址,每个bank group包含4个bank,使用两根地址线BA[1:0](BA:bank address)即可进行寻址。除了bank的地址,DDR4还用有17根地址线A[16:0],设计时选择分两次使用定位一个地址的方案,行列公用这些地址线,第一次是行地址,第二次是列地址。MT40A512M16LY使用行寻址使用了A[15:0]的16根地址线,列寻址使用了A[9:0]的10根地址线。

在这里插入图片描述
下面是芯片的内部结构图,也要配合前面管脚定义去理解。左下角是地址寄存器,包含A[16:0],BA,BG,BA和BG用于控制选择到具体的哪一个bank,A[16:0]同时被连接到行地址和列地址选择寄存器,是复用,因为读取的时候是分两次的,一次行地址,一次列地址。
在这里插入图片描述

实验过程

编写XDC

对着原理图,使用图形界面或者代码的方式进行设置即可。要一个管脚一个管家的去设置。
DDR4的管脚。
系统时钟的管脚。

使用IP核

Vivado提供了操作了DDR的IP核,主要是创建工程和IP和的添加和使用。

  1. 在“IP Catalog”的搜索框搜索“mig”,快速找到“Memory Interface Generator”,选择DDR4 SDRAM。
  2. 设置DDR参考时钟、内存类型、位宽,主要是硬件决定的一些信息。Component Name 可以修改,Controller/PHY Mode 选择“Controller and physical layer”,参考时钟选择 200MHz,即 5003ps,Momory Part 选择”MT40A512M16HA-083E”,Data Width 选择 16,其他设置保持默认,点击 OK。

这个IP和相当于一个DDR4的控制器,经过设置之后的IP和接口如下。
在这里插入图片描述
官方文档的结构描述,右边是物理的接口,直接连接到DDR,左边接口是用户接口即读写ddr需要操作的接口:

在这里插入图片描述
wdf 是 write data fifo?写数据的时候,ip核内部先把数据放到FIFO里?

信号描述
app_addr[APP_ADDR_WIDTH – 1:0]当前请求的地址
app_cmd[2:0]当前请求的命令
app_en使能信号,地址和命令有效
app_autoprechargeset the A10 autoprecharge bit on the DRAM
app_wdf_data[APP_DATA_WIDTH – 1:0]写命令的数据
app_wdf_end表示写入数据的结束
app_wdf_mask[APP_MASK_WIDTH – 1:0]app_wdf_data的掩码
app_wdf_wren写数据有效
app_rdy表示用户可口可以接收命令
app_rd_data[APP_DATA_WIDTH – 1:0]读命令读取数据
app_rd_data_end读出数据的结束
app_rd_data_validapp_rd_data有效
app_wdf_rdy写数据FIFO准备好接收数据,当使能信号和该信号一起有效时,数据被接收
app_ref_req用户刷新请求
app_ref_ack用户刷新请求完成
app_zq_reqUser ZQCS command request
app_zq_ackUser ZQCS command request completed
app_hi_prThis input is reserved and should be tied to 0 保留,下拉到0
ui_clkThis user interface clock must be one quarter of the DRAM clock
init_calib_completePHY asserts init_calib_complete when calibration is finished,校准完成后输出
ui_clk_sync_rstThis is the active-High user interface reset,复位
addn_ui_clkoutAdditional clock outputs provided based on user requirement
dbg_clkDebug Clock. Do not connect any signals to dbg_clk and keep the port open during instantiation,调试时钟

在这里插入图片描述

上板验证

代码的ila没设置成功,弹出来一个这个窗口。
在这里插入图片描述

TODO

看不下去了,等提升下能力后再来看。

  1. 读写时序没进行分析。
  2. ila为什么没设置成功。
  3. 再分析下代码。

参考

  1. DDR的型号问题
  2. DDR4 SDRAM基础介绍
  3. DDR4实战教学(一):DDR4寻址原理
  4. 地址\数据总线在走线时互换
  5. DDR4读写测试(一):MIG IP核配置
  6. DDR4读写测试(二):基本读写测试
  7. DDR一些引脚说明
  8. DR4读写测试实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

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

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

相关文章

Gradle 如何配置全局 mavenCentral()

我们都知道 Gradle 会使用 Maven 的中央仓库。 在 Gradle 的配置文件中,通常有一个 mavenCentral() 如果我们想把 mavenCentral() 的仓库地址全局替换掉别的仓库地址的话。 我们可以在 C:\Users\yhu\.gradle 目录下创建一个 init.gradle 文件。 文件中的代码为&a…

原生小程序 wxs 语法(详细)

WXS WXS(WeiXin Script)是内联在 WXML 中的脚本段。通过 WXS 可以在模版中内联少量处理脚本,丰富模板的数据预处理能力。另外, WXS 还可以用来编写简单的 WXS 事件响应函数。 从语法上看, WXS 类似于有少量限制的 Java…

JAVA类和对象

如何创建类 ⚠Java当中一切皆对象 ⚠如何描述对象?用类。 我们可以类当成一个模板,用来描述对象特征,行为等等 //自定义的类型 -> 你定义的一个 Java当中 没有的类型 class PetDog {public String name;//名字public String color;//颜…

数学建模:主成分分析法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 主成分分析法 算法流程 构建原始数据矩阵 X X X ,其中矩阵的形状为 x ∗ n x * n x∗n ,有 m m m 个对象, n n n 个评价指标。然后进行矩阵的归一化处理。首先计算矩…

vue3 组合式api中 ref 和$parent 的使用

ref 的使用 vue3中, 在 组件中添加一个 component ref“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vue3中ref 的特点 以上…

删除、移动、复制文件时总是要卡在99%一段时间解决方法

Win10文件夹重命名、移动、删除等操作卡顿3-5秒。 原因分析: 查看发现,卡顿期间资源管理器无响应,并且其高度占用CPU资源,但是对于非文件夹文件操作没有问题。 解决方案: 1、双击“此电脑”,选择“查看”,再选择“选…

三、mycat分库分表

第五章 分库分表 一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业 务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同 的库上面,如下图: 系统被切分成了&…

常静相伴:深度解析C++中的const与static关键字

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

java八股文面试[多线程]——并发三大特性 原子 可见 顺序

AutomicInteger : volatile CAS 总线LOCK MESI 两个协议 TODO volatile的可见性和禁止重排序是怎么实现的: DCL场景: new操作会在字节码层面生成两个步骤: 分配内存、调用构造器 然后把引用赋值给singleton 不加volatile则会发生指令重…

Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

ssm+vue乐购游戏商城系统源码和论文

ssmvue乐购游戏商城系统源码和论文115 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着社会的发展,游戏品种越来越多,计算机的优势和普及使得乐购游戏商城系统的开发成为必需…

Databricks 入门之sql(二)常用函数

1.类型转换函数 使用CAST函数转换数据类型(可以起别名) SELECTrating,CAST(timeRecorded as timestamp) FROMmovieRatings; 支持的数据类型有: BIGINT、BINARY、BOOLEAN、DATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL interva…

android studio git没有显示Local Changes界面

设置android studio git没有显示Local Changes界面 Setting -> Version Control-> commit -> 把use non-modal commit interface 的勾勾去掉,如下图所示 然后点击apply,回到git界面就看到了,亲测有效

2023年7月京东护发市场数据分析(京东数据产品)

如今,与面部护肤相比,多数消费者认为头皮也需要认真对待,这在年轻消费群体中体现的较为明显。 随着消费者对护发理念的认同感不断加深,人们日常居家洗护的步骤也更加精细、使用产品品类也愈加多样化。除传统的护发素、发膜等护发…

Web3 社交平台如何脱颖而出?我们和 PoPP 聊了聊

能够颠覆 Web2 传统模式的社交产品有着怎样的特征?PoPP 作为专注于 Web3 的私域流量变现平台,为开发者和用户提供了社交产品发展的新路径,让社区用户充分实现互动交流,着力于创作内容的激励与变现。事实上,面对 Web3 社…

电脑可以上网,微信都可以用,但浏览器打不开网页

可以试试设置DNS(其他windows版本步骤): 1.打开控制面板 2.网络和Internet 3.查看网络计算机和设备 4.按照下图步骤: 5.按下图进行

WorkPlus Meet支持企业局域网内部使用的视频会议系统

在当今飞速发展的数字时代,企业内部协作和沟通变得愈发多元化和重要。与此同时,随着数据泄露和信息安全风险的威胁不断升级,企业音视频沟通在各个业务场景中的广泛应用。为了提高工作效率,实现信息共享与协同办公,保证…

CSP的理解与绕过

文章目录 前言CSP简介CSP如何工作CSP指令CSP指令值 例题[AFCTF 2021]BABY_CSP 前言 刚学习完xss,把xsss-labs靶场都通了打算试试水,遇到此题[AFCTF 2021]BABY_CSP,借此机会学习下CSP CSP简介 Content Security Policy (CSP)内容安全策略&am…

Spring与Mybatis整合aop整合pageHelper分页插件

前言 Spring与MyBatis整合的意义在于提供了一种结合优势的方式,以便更好地开发和管理持久层(数据库访问)代码。 这里也是总结了几点主要意义 简化配置:Spring与MyBatis整合后,可以通过Spring的配置文件来管理和配置M…

行业追踪,2023-08-31

自动复盘 2023-08-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…