XILINX 的 MIG IP(非AXI4)接口时序以及控制

2023-05-16

一、 MIG 控制器概述

7 系列 FPGA 存储器接口解决方案核心如图所示。

二、 用户 FPGA 逻辑接口

        上图所示的用户 FPGA 逻辑模块可以连接到外部 DDR2 或 DDR3 SDRAM 的任何 FPGA 设计。用户 FPGA 逻辑通过用户界面连接到内存控制器。IPCORE 提供了一个用户 FPGA 逻辑示例。

AXI4  从接口块
        AXI4 从站接口将 AXI4 事务映射到 UI,以向内存控制器提供行业标准总线协议接口。

用户界面块和用户界面
       UI 块向用户提供 FPGA 逻辑块。它通过呈现平面地址空间和缓冲读写数据来提供对本机接口的简单替代。

内存控制器和本机接口
       内存控制器(MC)的前端显示 UI 块的本机接口。本地接口允许用户设计提交存储器读写请求,并提供将数据从用户设计移动到外部存储器件的机制,反之亦然。内存控制器的后端连接到物理接口,并处理该模块的所有接口要求。 内存控制器还提供了重新排序选项,重新排序接收的请求以优化数据吞吐量和延迟。

       PHY 和物理接口 PHY 的前端连接到存储控制器。PHY 的后端连接到外部存储设备。 PHY 处理所有存储器件信号顺序和定时。IDELAYCTRL 任何使用 IDELAYs 的 bank 都需 IDELAYCTRL。 IDELAY 与数据组(DQ)相关联。 任何使用这些信号的 BANK/时钟区域都需 IDELAYCTRL.MIG 工具实例化一个IDELAYCTRL,然后使用 IODELAY_GROUP 属性(参见 iodelay_ctrl.v 模块)。基于此属性,Vivado Design Suite 可根据需要在设计中正确复制 IDELAYCTRL IDELAYCTRL 参考频率由 MIG 工具设置为 200 MHz,300 MHz 或 400 MHz,具体取决于 FPGA 的存储器接口频率和速度等级。 根据设置的 IODELAY_GROUP 属性,Vivado Design Suite 会复制 IDELAY 块所在区域的 IDELAYCTRL。

      当用户自己创建一个多控制器设计时,每个 MIG 输出都具有用原语实例化的组件。 这违反了IDELAYCTRLs 的规则和 IODELAY_GRP 属性的使用。IDELAYCTRL 需要只有一个组件的实例化才能正确设置属性,并允许工具根据需要进行复制。

用户接口
       UI 连接到 FPGA 用户设计,以允许访问外部存储设备。

app_addr i此输入表示当前正在提交给用户界面的请求的地址。 UI 聚合外部 SDRAM 的所有地址字段,并向您显示一个平面地址空间。
app_cmdi

read:001

write:000

app_eni此信号在输入请求中使用,用户必须赋值于 app_addr ,app_cmd 和 app_hi_pri,然后断言 app_en 将该请求提交给 UI。这将通过断言 app_rdy 启动 UI 确认的握手。
app_hi_prii该输入表示当前请求是高优先级。
app_wdf_datai该总线提供当前正在写入外部存储器的数据。
app_wdf_endi该输入表示当前周期中 app_wdf_data 总线上的数据是当前请求的数据。
app_wdf_wreni该输入表示 app_wdf_data 总线上的数据有效。
app_rd_datao该输出包含从外部存储器读取的数据。
app_rd_data_endo此输出表示当前周期中 app_rd_data 总线上的数据为当前请求的最后数据
app_rd_data_valido该输出表示 app_rd_data 总线上的数据有效。
app_rdyo此输出向用户显示当前正在提交给 UI 的请求是否被接受。如果在 app_en 被断言之后,UI 不会声明此信号,则必须重试当前的请求。如果以下情况,则不会声明 app_rdy 输出:
1)PHY /内存初始化尚未完成
2)所有的 bank 机器都被占用(可以看作命令缓冲区已满)
- 请求读取,读取缓冲区已满
- 请求写入,并且没有写缓冲区指针可用
3)正在插入定期读取
app_wdf_rdyo该输出表示写入数据 FIFO 准备好接收数据。 接受写入数据
当 app_wdf_rdy 和 app_wdf_wren 都被断言时。
   
app_wdf_maski该总线指示 app_wdf_data 的哪些位被写入外部存储器,哪些位保持在当前状态。
ui_clko这是 UI 的输出时钟。 它必须是出口到外部 SDRAM 的时钟频率的一半或四分之一,这取决于GUI 中选择的 2:1 或 4:1 模式。
ui_clk_sync_rsto这是从与 ui_clk 同步的 UI 重置。
init_calib_completeo当校准完成时,PHY 会断言 init_calib_complete。 在向内存控制器发送命令之前,应用程序无需等待 init_calib_complete。

 

三、 MIG内存控制器用户逻辑时序

3.1 控制命令时序

app_rdy:这个信号由DDR3输出,告诉用户在app_rdy拉高的时候拉高app_en。地址app_addr才是有效的。

当用户逻辑 app_en 信号被断言并且 app_rdy 信号从 UI 被断言时,命令被 UI 接受并写入 FIFO。当 app_rdy 被取消置位时,UI 会忽略该命令。用户逻辑需要将 app_en 保持为高电平以及有效的命令和地址值,直到 app_rdy 被断言,如图所示。

3.2 写操作及时序

app_cmd :操作命令,确定是读还是写。读: app_cmd = 3'b001; 写:app_cmd = 3'b000;
app_addr:操作地址(往哪写,从哪读)
app_en  :操作地址app_addr的使能,只有它拉高的时候,对应的app_addr才是有效的
app_wdf_data:写入数据的接口(往DDR3里面写什么)
app_wdf_wren:写入的数据接口app_wdf_data的使能,只有它拉高的时候。对应的app_wdf_data才是有效的
app_wdf_end:这里不需要管他。只需要使app_wdf_end = app_wdf_wren。
app_rdy:这个信号由DDR3输出,告诉用户在app_rdy拉高的时候拉高app_en。地址app_addr才是有效的。
app_wdf_rdy:这个信号由DDR3输出,告诉用户在app_wdf_rdy拉高的时候拉高app_wdf_wren,写入的数据app_wdf_data才是有效的。

所以写入数据的时候你只需要处理好这8个信号就可以
 
app_cmd         
app_addr                                           
app_en                             
app_wdf_data                              
app_wdf_wren           
app_wdf_end
app_rdy
app_wdf_data

在app_rdy和app_wdf_rdy都拉高的时候,把app_en拉高、app_wdf_wren拉高、给出相应的地址、写入相应的数据 就可以把相应的数据写入到DDR3中相应的地址。但是,需要注意的是,在app_rdy 或者app_wdf_rdy没有拉高的时候,需要把相应的数据和地址保持不变。app_wdf_mask 信号可用于屏蔽写入外部存储器的字节。

写入数据和相关联的写入命令之间的单次写入的最大延迟是两个时钟周期。当发出背靠背写入命令时,写入数据和相关的背靠背写命令之间没有最大延迟。

必须使用 app_wdf_end 信号来指示存储器写入突发的结束。对于 8 位的内存突发类型,应该在第二个写入数据字上断言 app_wdf_end 信号。应用程序接口数据到 DRAM 输出数据的映射可以是以一个例子解释。

3.3 读操作及时序

读数据的时候只需要操作以下三个信号(这里的三个信号和上面是一样的)
app_cmd
app_addr
app_en

读取的数据由 UI 以请求的顺序返回,并且在 app_rd_data_valid 被断言时有效。app_rd_data_end 信号表示每个读命令脉冲串的结束,在用户逻辑中不需要。

在读的时候,只需要在app_rdy拉高的时候给出地址app_addr和使能app_en即可。然后就等着接数就可以,给几个周期的使能就出几个周期的数据。

返回的读取数据总是与地址/控制总线上的请求顺序相同。

 

特别

vivado 2016.2 版本之前的软件可以修改接口类型。

vivado 2016.2 版本之后的软件生来就是 AXI4 接口标准,不能修改,所以下一期来介绍axi4接口的MIG控制器设计方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XILINX 的 MIG IP(非AXI4)接口时序以及控制 的相关文章

  • 基于Xilinx的XADC笔记

    基于Xilinx的XADC笔记 星旭的博客 CSDN博客 https blog csdn net Real003 article details 88879625
  • 移植FreeRTOS到 Xilinx ZYNQ Microblaze IP核

    1 xff0c 运行环境vivado2019 2 xff0c win10 ZYNQ 7000系列 2 xff0c FreeRTOS官网源码下载 https www freertos org 3 xff0c FreeRTOS 是一个迷你的实时
  • XILINX 的 MIG IP(非AXI4)接口时序以及控制

    一 MIG 控制器概述 7 系列 FPGA 存储器接口解决方案核心如图所示 二 用户 FPGA 逻辑接口 上图所示的用户 FPGA 逻辑模块可以连接到外部 DDR2 或 DDR3 SDRAM 的任何 FPGA 设计 用户 FPGA 逻辑通过
  • xilinx ise 下载地址

    10 1i ed2k file Xilinx ISE DS v10 1 iso 6345773056 5211e011944e70e0e682b3f90a613695 9 1i http download xilinx com direct
  • Xilinx ChipScope 的使用 ICON/ILA/VIO

    文章目录 0 FPGA也能片上调试吗 1 Xilinx ChipScope简介 2 示例工程创建 3 添加ChipScope ICON IP核 4 添加ChipScope ILA IP核 5 添加ChipScope VIO IP核 6 将C
  • 【DDR3 控制器设计】(5)DDR3 的仲裁读写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • xilinx ip 图像画框

    功能 1 单axi stream 接口输入 10bit raw输入 axis输出 10bit输出 2 使用xilinx hls 编写 3 配置寄存器有 目前最多画10个框 pragma HLS INTERFACE s axilite por
  • 开源、低成本的 Xilinx FPGA 下载器(高速30MHz)

    目前主流的Xilinx下载器主要有两种 一种是Xilinx官方出品的Xilinx Platfom Cable USB 还有一个就是Xilinx的合作伙伴Digilent开发的JTAG HS3 Programming Cable JTAG H
  • 【Vivado】Xilinx UG994 Addressing for Block Designs

    目录 写在前面 Block Designs 的寻址 寻址概述 寻址结构 概念 术语 使用地址编辑器 编辑器行 编辑器视图组 编辑栏 编辑地址 为外部段分配多个地址范围 从地址编辑器导出或导入地址映射 地址路径属性视图 Apertures 使
  • Xilinx FPGA 学习笔记——时钟资源

    在Xilinx的FPGA中 时钟网络资源分为两大类 全局时钟资源和区域时钟资源 全局时钟资源是一种专用互连网络 它可以降低时钟歪斜 占空比失真和功耗 提高抖动容限 Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构 从而使全局时钟到达C
  • Xilinx BUFGMUX使用注意事项

    Xilinx BUFGMUX使用注意事项 最近使用Xilinx FPGA的时候 需要用到一个外部时钟和一个PLL产生的时钟 可以通过外部SWICH进行时钟的切换 觉得这种方式可以通过原语例化完成 原语 果不其然 在原语示例中找到了类似的模块
  • Xilinx ISE系列教程(8):读取FPGA芯片唯一ID号

    文章目录 toc 应用场景 方法1 通过JTAG读取 方法2 调用原语读取 DNA PORT原语的使用 DNACLK频率注意 本文是Xilinx ISE系列教程的第8篇文章 用过单片机的朋友都知道 单片机芯片内部都有一串序列号 比如STM3
  • Xilinx实习一年总结

    从去年7月4号来到上海xilinx 转眼间已经一年 这一年学了很多知识 也长了很多见识 去年七月一到公司 立即投入到摄像头 DDR HDMI图像通路的研发中 就是在ZEDboard板卡上 通过外置摄像头采集图像 在PL部分将采集的像素数据进
  • HLS图像处理系列——肤色检测

    本博文采用Xilinx HLS 2014 4工具 实现一个肤色检测的模块 其中 本文重点是构建HLS图像处理函数 新建HLS工程的步骤 本博文不再详述 本工程新建之后 只添加了五个文件 如下图所示 其中 top cpp中的主函数最终会综合生
  • 【Xilinx】SynchronousInterruptHandler错误排查笔记

    SynchronousInterruptHandler错误排查笔记 一 ArmV8的异常处理 二 64位lscript ld的修改 三 asm vectors S的修改 四 SynchronousInterruptHandler函数解析 五
  • 打印存储在 reg 类型变量中的有符号整数值

    如何打印存储在 8 位寄存器中的有符号整数值 声明为 reg 7 0 acc Using display acc d acc 它打印无符号值 正确的语法是什么 display功能 如果您声明reg as signed display将显示减
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • VHDL FSM多驱动网Q连接到常量驱动程序,其他驱动程序被忽略,我的代码有什么问题?

    这段代码是一个 FSM 它是一个摩尔机 艾莉莎 P 哈克 Alyssa P Hacker 有一只蜗牛 沿着纸带爬下去 上面有 1 和 0 蜗牛 每当最后两个时都会微笑 它爬过的数字是 01 设计摩尔和米利 蜗牛大脑的 FSM 代码如下所示
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使
  • VHDL - ror 和 rol 操作

    我怎么解决这个问题 reg 变量定义为 signal reg STD LOGIC VECTOR 7 downto 0 00000001 下面代码中ror操作有问题 错误信息是 Line 109 Syntax error near ror L

随机推荐