目录

前言

一、地址映射

二、命令路径

三、写路径

四、读路径

五、内存刷新

六、ZQ校准

参考说明




前言

前两篇文章主要介绍 MIS IP的配置(非AXI4)以及用户接口各信号的含义。本文将继续介绍DDR3数据传输过程的读写时序问题。

前情回顾:

1、DDR3 数据 传输 (一)

2、DDR3 数据 传输 (二)

建议PC端食用~



一、地址映射

地址空间有两种方式:

1、Bank- Row-Column

2、Row-Bank-Column

方式的选择由字符参数:MEM_ADDR_ORDER控制,参数为 BANK_ROW_COLUMN 时,地址空间为方式1,参数为 ROW_BANK_COLUMN 时,地址空间为方式2。参数为 TG_TEST 时,地址映射仅用于测试目的。它使地址重新映射能够测试对DRAM不同部分的地址访问。它重新映射地址,重新映射在控制器的UI部分中完成。

举例说明

行地址位宽:15,列地址位宽:10,BANK位宽:3 地址映射方式为: ROW_BANK_COLUMN

二、命令路径

当用户逻辑侧的  app_en 信号和 MIS IP核的UI块输出的 app_rdy 信号同时有效时,用户发出的命令(读或者写)被 IP核接收,并且写入 命令 FIFO中等待被执行。但如果  app_rdy 信号无效,那么用户发出的命令将不被IP 核接收。如下图所示,用户需要一直保持   app_en信号、地址信号、命令信号有效直到  app_rdy 信号有效,将命令以及地址接收。下图中,app_cmd信号、app_addr信号、app_en信号一直保持3个时钟周期同时有效,直到第三个时钟周期时,app_rdy信号输出有效才将命令信号、地址信号接收。

非连续的写命令如下图所示,对应有三种不同情况:

  • 写的数据和与之对应的写命令同时有效;
  • 写的数据出现(有效)的时刻早于写命令一个时钟周期;
  • 写的数据出现(有效)的时刻晚于写命令,但是不能超过两个时钟周期;

三、写路径

当 app_wdf_wren 和 app_wdf_rdy 均有效时(握手),写入的数据将被寄存在写FIFO中。如果 app_wdf_rdy 信号输出无效(低电平),用户需要保持 app_wdf_wren 和 app_wdf_end 高电平 以及 数据 app_wdf_data 有效,直到 app_wdf_rdy 信号输出有效。

上图中,内存的突发类型为 BL8(突发长度为8,即连续写入8个数据),2:1模式 和 4:1模式 指的是在配置MIS IP的GUI界面选择的DDR3时钟频率与FPGA内部逻辑时钟频率之间的比例。 app_wdf_end 信号必须在写突发模式结束时拉高。对于内存突发类型为 BL8,2:1 模式下,app_wdf_end 信号必须在第二个写数据字拉高(如图1-76)。

 ※ 以8位内存、突发类型为 BL8 ,4:1模式为例,如果应用接口处的64位数据是:0000_0806_0000_0805(16进制),那么在外部DRAM接口处的数据如下图所示。

在不同时钟边沿的数据为:

以8位内存、突发类型为 BL8 ,2:1模式为例,应用数据位宽为32位,第一个周期发送的数据是:0000_0405(16进制),第二个周期发送的应用数据是:0000_080A(16进制)如下图所示,64位的用户数据必须用两个时钟周期发送。

对应的外部DRAM接口的数据为:

总结:

1、突发类型与模式(2:1或4:1)之间没有任何关系,对于BL8(Burst Length eight),突发长度为8,仅仅表示一次性连续写入数据(app_wdf_data)的周期个数。

2、假设 app_wdf_data 位宽为 WIDTH_DATA;选择的模式为 MODE (MODE=2或4);DDR3的存储单元位宽 WIDTH_DDR3 (一般来说等于8或16),在DDR3存储单元位宽等于GUI界面(Controller Options 页面)设置的数据位宽(Data Width)的前提下,位宽则有如下关系成立:

WIDTH_DATA = MODE * WIDTH_DDR3 * 2

再假设 Controller Options 页面设置的数据位宽为:WIDTH_USER,则通用的表达式为:

WIDTH_DATA = MODE * WIDTH_USER * 2

3、详细解释一下  app_wdf_end 信号拉高的条件,该信号表面含义指的是在最后一个周期数据(app_wdf_data)传输时,拉高。那么何为最后一次?如何把握?

技术文档原话:The app_wdf_end signal must be used to indicate the end of a memory write burst.

意思是,在一次内存突发写的末尾将该信号,拉高,那么何时是一次突发写结束?对于存储单元位宽为8位的DDR3来说,BL8的突发模式下,一共需要写入8*8=64位,对于app_wdf_data为64位的情况,写的第一次即是最后一次,对于app_wdf_data 为32位的情况,写的第二次即使最后一次。(认真对比图1-76 和1-77的相关信号 特别是  app_wdf_end 信号)

四、读路径

IP 的UI块 会把用户侧请求的读数据按照请求的顺序进行数据输出。当 app_rd_data_valid 拉高时,UI输出的数据为有效数据。如下图所示:

app_rd_data_end 信号在一次 突发读 操作结束时拉高。但是对于 用户侧的逻辑不是那么必要。

读取的数据会按照 请求的地址顺序进行输出。如下图所示:

五、内存刷新

用户逻辑需要通过将 app_ref_req 信号拉高一个时钟周期,来发起一次内存刷新请求。IP 核中 内存控制器模块(Memory Controller)向物理层(PHY)发送刷新指令后,物理层会将 app_ref_ack 拉高一个时钟周期来响应刷新请求。 在 app_ref_ack 信号应答之后,才可以发送第二次刷新请求。时序逻辑如下图:

六、ZQ校准

用户逻辑需要通过将 app_zq_req 信号拉高一个时钟周期,来发起一次内存ZQ校准请求。IP 核中 内存控制器模块(Memory Controller)向物理层(PHY)发送ZQ校准指令后,物理层会将 app_zq_ack 拉高一个时钟周期来响应ZQ校准请求。 在 app_zq_ack 信号应答之后,才可以发送第二次ZQ校准请求。时序逻辑如下图:

参考说明

【1】Zynq-7000 SoC and 7 Series FPGAs MIS v4.2

【2】图取自官方文档 ☝

DDR3 数据传输 (三)相关推荐

  1. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇三

    前言 本以为测试基于FPGA 的DDR3,比较简单的事情,发现环境搭建还是比较的繁琐的,这里做个详细的记录,后面就可以通过直接修改工程的方式,快速搭建测试验证环境 开发环境 Windows 10 64 ...

  2. DDR3 数据传输 (一)

    文章目录 目录 前言 MIG IP核 配置 1.检索 IP 2.首页 3."Output Options"页 4."Pin Compatible FPGAs"页

  3. DDR3 数据传输 (四)

    目录 引言 AXI从侧接口参数 AXI从侧接口信号 参考说明 引言 前文链接&#

  4. DDR3 数据传输 (五)

    目录 引言 设计说明 参数说明 设计简图 IP配置说明 写FIFO IP

  5. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇尾

    FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇一 FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇二 ...

  6. 大三上期末复习(网络安全物联网概论安全协议软件工程)

    网络安全 零. 试题解析 1.分数分配 删去.... 2.IP分类复习 根据上图,我们可以推出下面的表 再筛选掉特殊的地址,就有如下的范围 P地址根据网络号和主机号来分,分为A.B.C三类及特殊地址D ...

  7. 计算机网络——传输层实现可靠数据传输

    文章目录 一.传输层为什么实现不了可靠数据传输 二.传输层如何实现可靠数据传输 三.可靠传输协议--停-等协议 1.关于ACK数据包+差错检测+重传 2.关于只需1位作序号位 3.关于多次发ACK+序 ...

  8. OneNET云平台-EDP协议数据传输

    OneNet真是中移动的良心之作,对比阿里云和庆科云,OneNet不但免费而且功能也足够嵌入式应用,对学生党而言真是大大的福利,感谢中移动!!!. 一.云端创建设备与应用 (1)创建产品:进入开发者中 ...

  9. Linux学习笔记 驱动开发篇

    ARM Linux 驱动开发篇 本篇我们将会详细讲解 Linux 中的三大类驱动:字符设备驱动.块设备驱动和网络设备驱动. 字符设备最多,从最简单的点灯到 I2C.SPI.音频等都属于字符设备驱动的类 ...

  10. DDR学习心得(一)

    前言 最近在学习DDR3/DDR4相关知识,从中总结了一些心得,想放在CSDN上记录下来.之前在CSDN上看了不少大神的帖子,对我的学习颇有帮助,现在我也想把我的学习进程记录下来,希望可以和各位大神进 ...

最新文章

  1. SAP LSMW 导入Open PO单据,系统报错 --- GL account 670100 cannot be used ---
  2. ashx+jQuery,一个轻量级的asp.net ajax解决方案
  3. fastjson查找指定键值_分布式键值存储 etcd
  4. [SPDK/NVMe存储技术分析]012 - 用户态ibv_post_send()源码分析
  5. tomcat配置文件详解
  6. 《HTTP权威指南》 – 11.验证码和新鲜度
  7. Exynos4412 文件系统制作(一)—— 文件系统的启动过程分析
  8. WinForm始终置顶并获取焦点
  9. 《恋上数据结构第1季》二叉树基础、真二叉树、满二叉树、完全二叉树、二叉树的遍历(重点)
  10. 定时器(setTimeout/setInterval)调用带参函数失效解决方法
  11. Ubuntu 12.04 下安装 Eclipse
  12. WINCE6.0+ILI9806E休眠唤醒显示异常问题
  13. 安卓微信无root降级教程
  14. C.I.刘易斯的学术之路--- 刘易斯逻辑之十二尾篇
  15. 黎活明8天快速掌握android视频教程--21_监听ContentProvider中数据的变化
  16. [USACO09OCT]谷仓里的回声Barn Echoes(hush、STL)
  17. Java 基础 - List 遍历时为什么不能通过 for 循环进行删除,而使用 Iterator 可以 ?
  18. 服务器Linux环境下安装Matlab2018b
  19. 在当前项目组中引入敏捷开发思想
  20. linux用什么剪辑视频教程,极简主义:Linux视频剪辑利器Viedo Trimmer

热门文章

  1. 服务器2t内存只显示1t,内存时序1t和2t的差别
  2. Win10如何将语言栏移回右下角
  3. html5改变窗口大小,js怎么改变窗口大小?js改变窗口大小方法
  4. Vue中图片裁剪的实现
  5. php计算指数函数,指数函数运算法则公式有哪些
  6. Intelligent driver model(IDM)
  7. 进博会中国自行车排名辐轮王自行车点赞中国GDP突破一百万亿元
  8. 记解决一次drawable资源找不到的问题
  9. php微信退款结果通知,微信支付退款结果通知解密
  10. 如何用jQuery访问后台API,实现真正的前后端分离