0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对DDR3/4控制器进行探讨

FPGA之家 来源:CSDN技术社区 作者:meper 2021-09-22 10:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

参考资料

《pg150-ultrascale-memory-ip》

以该手册的脉络为主线,对DDR3/4控制器进行探讨。

1.IP核结构

69c40eea-15f8-11ec-8fb8-12bb97331649.png

根据官方提供的资料,IP核主要划分为三个部分,分别是用户接口,内存控制器以及物理层接口。对于用户来说,我们需要研究清楚的是用户接口部分内容,其余两部分只需了解即可,这里就不展开论述。

读写效率

69d65938-15f8-11ec-8fb8-12bb97331649.png

X8是表示,该内存颗粒的数据总线为8bit。常见的还有x4/x16。

2.读写时序userinterface操作

整个DDR的IP核应用,主要都是围绕这以下几个路径进行,开发者直接打交道的是IP_core的userinterface。其他物理底层的内容,由IP自行完成。主要指令路径包括:Command Path、write_Path、read_Path以及维护指令(Maintenance Commands)。

Command Path

顾名思义,就是读写操作指令写入的路径。当app_rdy与app_en都有效的时候,新的指令才能写入命令FIFO里,并被执行。

69e3d0ea-15f8-11ec-8fb8-12bb97331649.png

Write Path

数据内容写入IP核的路径。

69ef09ba-15f8-11ec-8fb8-12bb97331649.png

从上述的时序图看来,与写入路径相关的信号有app_adf_data、app_wdf_wren以及app_wdf_end。虽然说,写入的数据路径与指令路径可以不对齐,但实际应用过程中,建议还是对齐操作,要不然容易出问题(后续调试测试的内容有提到)。

6a141cd2-15f8-11ec-8fb8-12bb97331649.png

pp_wdf_end为高,表示该数据这次写入请求的最后一个数。以上图为例,4:1mode是指用户接口时钟与物理层驱动DDR的时钟之比为1:4。比如用户接口的数据总线为64bit,物理层驱动DDR芯片位宽为8bit ,BL=8, 在4:1mode下,那么正好一个用户clk可以执行完一次突发传输(DDR是在时钟上升沿和下降沿都传输数据)。所以在执行传输的过程中,app_wdf_end为高。

Read Path

数据从IP核中读出来的路径。

6a36983e-15f8-11ec-8fb8-12bb97331649.png

Maintenance Commands(维护指令)

6a4e6b1c-15f8-11ec-8fb8-12bb97331649.png

6a69369a-15f8-11ec-8fb8-12bb97331649.png

这里可以解析为什么读写效率不能够达到百分百,由于ddr需要刷新等导致。其中启动刷新有两种模式,一种是自动刷新,即IP核自己产生满足时序的刷新请求,另外一种是通过选中“启用用户刷新和ZQCS输入”选项来启用用户模式。在此模式下,当init_calib_complete有效之后,由用户负责发出Refresh和ZQCS命令以满足DRAM组件规范所要求的速率。ZQCS是用于ZQ 校准,这个与ODT相关。

扩展一下:

ODT(On-Die Termination),是从DDR2 SDRAM时代开始新增的功能。其允许用户通过读写MR1寄存器,来控制DDR3 SDRAM中内部的终端电阻的连接或者断开。

为什么要用ODT?一个DDR通道,通常会挂接多个Rank,这些Rank的数据线、地址线等等都是共用;数据信号也就依次传递到每个Rank,到达线路末端的时候,波形会有反射,从而影响到原始信号;因此需要加上终端电阻,吸收余波。之前的DDR,终端电阻做在板子上,但是因为种种原因,效果不是太好,到了DDR2,把终端电阻做到了DDR颗粒内部,也就称为On Die Termination,Die上的终端电阻,Die是硅片的意思,这里也就是DDR颗粒。

所以,使用ODT的目的很简单,是为了让DQS、RDQS、DQ和DM信号在终结电阻处消耗完,防止这些信号在电路上形成反射,进而增强信号完整性。

3.对IP核进行二次封装

建议对IP核的User_interface再封装一层,对外只需预留例如wr_en/wr_data以及rd_en/rd_data等信号,类似于读写FIFO的端口,提高模块的后期复用。

6a7c62ce-15f8-11ec-8fb8-12bb97331649.png

4.调试与测试记录

手册梳理得差不多了,写个简单的程序仿真测试。期间碰到了些问题,分享出来记录一下。

cmd_path与write_path没对齐。

6a9364e2-15f8-11ec-8fb8-12bb97331649.png

图中所示,app_rdy为低,但是wdf_wren仍然为高,短期的话应该没有什么问题,但是如果持续一段时间,必然会导致IP核中fifo被写满,导致异常。

解决办法:

令指令与数据路径命令对齐。在写入的时候,当app_rdy与app_wdf_rdy都有效的时候,才触发相应的动作。

数据没有写入,导致回读出来的数据不对。

6a9fee92-15f8-11ec-8fb8-12bb97331649.png

从时序上来看,写入没有问题。但是我当初忽略了app_wdf_mask,这个没有赋值(正常应该赋0),导致仿真的时候,该信号一致显示高阻态。然后发现ddr4_dm_dbi_n(双向信号)信号异常。

6aabe008-15f8-11ec-8fb8-12bb97331649.png

读出来的数据一直是0.

6ab813c8-15f8-11ec-8fb8-12bb97331649.png

修改过来后,问题解决。

6acce384-15f8-11ec-8fb8-12bb97331649.png

读写效率测试

6ae0ebfe-15f8-11ec-8fb8-12bb97331649.png

Wr:

6aef68c8-15f8-11ec-8fb8-12bb97331649.png

Rd:

6aff46bc-15f8-11ec-8fb8-12bb97331649.png

MEM_ADDR_ORDER = "ROW_COLUMN_BANK";

Wr:

6b254cea-15f8-11ec-8fb8-12bb97331649.png

Rd:

6b3337f6-15f8-11ec-8fb8-12bb97331649.png

仔细的话,可以观察clk与app_rdy之间的关系,不难发现为什么两者的读写效率会相差这么大。不同的地址排列,在每次读写过程中,IP的效率有很大的关系,这个与DDR的实现机制有关。详细情况在PG150里有相关说明。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17644

    浏览量

    190261
  • DDR3
    +关注

    关注

    2

    文章

    287

    浏览量

    43939

原文标题:DDR3/4_IP核应用--vivado

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用AXI4接口IP核进行DDR读写测试

    本章的实验任务是在 PL 端自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测试,读写的内存大小是 4K 字节。
    的头像 发表于 11-24 09:19 2773次阅读
    使用AXI<b class='flag-5'>4</b>接口IP核<b class='flag-5'>进行</b><b class='flag-5'>DDR</b>读写测试

    DDR3 SDRAM参考设计手册

    电子发烧友网站提供《DDR3 SDRAM参考设计手册.pdf》资料免费下载
    发表于 11-05 17:04 1次下载

    基于FPGA的DDR控制器设计

    DDR控制协议 DDR3读写控制器主要用于生成片外存储DDR3 SDRAM
    发表于 10-21 14:30

    基于DDR200T开发板的e203进行DDR3扩展

    IP DDR3控制器 RISC-V 基于DDR200T开发板原理图,找到所需要使用的DDR引脚,制成DDR.ucf文件方便在添加管脚约束时
    发表于 10-21 12:43

    FPGA搭建DDR控制模块

    DDR3读写控制器主要用于生成片外存储DDR3 SDRAM进行读写操作所需要的时序,继而实现对片外存储
    发表于 10-21 10:40

    用FPGA实现DDR控制模块介绍

    DDR3读写控制器主要用于生成片外存储DDR3 SDRAM进行读写操作所需要的时序,继而实现对片外存储
    发表于 10-21 08:43

    AD设计DDR3时等长设计技巧

    本文紧接着前一个文档《AD设计DDR3时等长设计技巧-数据线等长 》。本文着重讲解DDR地址线、控制信号线等长设计,因为地址线、控制信号线有分支,SOC有可能带有2片
    发表于 07-29 16:14 2次下载

    AD设计DDR3时等长设计技巧

    的讲解数据线等长设计。      在另一个文件《AD设计DDR3时等长设计技巧-地址线T型等长》中着重讲解使用AD设计DDR地址线走线T型走线等长处理的方法和技巧。
    发表于 07-28 16:33 4次下载

    【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程

    的总线宽度共为 16bit。DDR3 SDRAM 的最高数据速率 1066Mbps。 2.1. DDR3 控制器简介 PG2L50H 为用户提供一套完整的 DDR memory
    发表于 07-10 10:46

    TPS51116 完整的DDRDDR2、DDR3DDR3L、LPDDR3DDR4 电源解决方案同步降压控制器数据手册

    TPS51116为 DDR/SSTL-2、DDR2/SSTL-18、DDR3/SSTL-15、DDR3L、LPDDR3
    的头像 发表于 04-29 16:38 915次阅读
    TPS51116 完整的<b class='flag-5'>DDR</b>、<b class='flag-5'>DDR</b>2、<b class='flag-5'>DDR3</b>、<b class='flag-5'>DDR3</b>L、LPDDR<b class='flag-5'>3</b> 和 <b class='flag-5'>DDR4</b> 电源解决方案同步降压<b class='flag-5'>控制器</b>数据手册

    TPS51916 DDR2/3/3L/4 内存电源解决方案同步降压控制器数据手册

    TPS51916 器件以最低的总成本和最小的空间为 DDR2、DDR3DDR3L 和 DDR4 内存系统提供完整的电源。它集成了同步降压稳压控制器
    的头像 发表于 04-28 10:58 595次阅读
    TPS51916 <b class='flag-5'>DDR</b>2/<b class='flag-5'>3</b>/<b class='flag-5'>3</b>L/<b class='flag-5'>4</b> 内存电源解决方案同步降压<b class='flag-5'>控制器</b>数据手册

    DDR3 SDRAM配置教程

    DDR3 SDRAM(Double-Data-Rate ThreeSynchronous Dynamic Random Access Memory)是DDR SDRAM的第三代产品,相较于DDR2,
    的头像 发表于 04-10 09:42 3768次阅读
    <b class='flag-5'>DDR3</b> SDRAM配置教程

    灿芯半导体推出DDR3/4和LPDDR3/4 Combo IP

    灿芯半导体(上海)股份有限公司(灿芯股份,688691)宣布推出基于28HKD 0.9V/2.5V 平台的DDR3/4, LPDDR3/4 Combo IP。该IP具备广泛的协议兼容性
    的头像 发表于 03-21 16:20 900次阅读

    DDR内存控制器的架构解析

    DDR内存控制器是一个高度集成的组件,支持多种DDR内存类型(DDR2、DDR3DDR3L、L
    的头像 发表于 03-05 13:47 3271次阅读
    <b class='flag-5'>DDR</b>内存<b class='flag-5'>控制器</b>的架构解析

    三大内存原厂或将于2025年停产DDR3/DDR4

    据报道,业内人士透露,全球三大DRAM内存制造商——三星电子、SK海力士和美光,有望在2025年内正式停产已有多年历史的DDR3DDR4两代内存。 随着技术的不断进步和消费级平台的更新换代
    的头像 发表于 02-19 11:11 3200次阅读