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 SDSoC编译bug ——fatal error: sys/cdefs.h解决方案

    INFO HLS 200 10 Analyzing design file 39 home vslyu SDX workspace ZCU706 test src madd cpp 39 WARNING HLS 200 40 In file
  • xilinx ZCU104安装tensorflow

    xilinx ZCU104安装tensorflow ZCU104芯片是Cortex A53 xff0c 该芯片是ARMv8架构 xff0c 目前满足该平台的tensorflow版本较少 xff0c 我当时在github上找了好长一段时间才找
  • K7 325t调试xilinx aurora ip核关于帧模式和流模式

    要做的是一个K7 325t上pcie 收发4通道光纤的数据测试程序 xff0c gtx使用的是aurora的协议 发送流程 xff1a pc主机通过DMA 发数据到ddr3中缓存 xff0c 使用的是AXI Memory Map的方式 xf
  • Xilinx FPGA中HR、HD、HP bank说明

    HR bankHP bankHD bank全称High RangeHigh PerformanceHigh Desity名称高范围bank高性能bank高密度bank电压范围1 2 3 3V1 0 1 8V1 2 3 3V接口速率 支持高速
  • xilinx fpga xdma

    一 下载XDMA文件 输入命令 sudo git clone https github com Xilinx dma ip drivers 二 编译文件 进入xdma文件夹 xff1a cd dma ip drivers XDMA linu
  • 基于Xilinx的XADC笔记

    基于Xilinx的XADC笔记 星旭的博客 CSDN博客 https blog csdn net Real003 article details 88879625
  • 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
  • vivado2013.4和modelsim联合仿真

    vivado2013 4和modelsim联合仿真 Hello Panda 最近在做Zynq的项目 曾经尝试使用ISE PlanAhead XPS SDK组合和Vivado SDK来搭建工程 使用中发现前者及其不方便后者有诸多不稳定 近期得
  • Xilinx软件开发: 用仿真器在XSCT下加载u-boot

    XSCT介绍 XSCT全称叫做Xilinx Software Command Line Tool 顾名思义是Xilinx提供的软件命令行工具 完整的使用说明可以参考ug1208 xsct reference guide 我们平常调试裸机程序
  • 数字电路设计之Xilinx全局时钟网络的使用

    为了实现同步电路设计 Xilinx使用了一种时钟分配树 其实感觉就是多个H组成的时钟网络 这样就可以使得每个时钟的延时都一样 为了使用Xilinx的全局时钟 可以使用全局时钟原语 IBUFGP U1 I clk in O clk out 全
  • 教程:在ZYBO板卡实现PL-PS交互

    目的 学会vivado PL PS协同开发流程 平台 ZYBO开发板 zynq 7010 clg400芯片 工具 Vivado 2014 4 功能 实现PL PS协同通信 PS通过AXI总线读取PL部分的GPIO状态 对应zybo的四个开关
  • Xilinx BUFGMUX使用注意事项

    Xilinx BUFGMUX使用注意事项 最近使用Xilinx FPGA的时候 需要用到一个外部时钟和一个PLL产生的时钟 可以通过外部SWICH进行时钟的切换 觉得这种方式可以通过原语例化完成 原语 果不其然 在原语示例中找到了类似的模块
  • 【XINLIX 原语】XILINX 原语的使用之 IBUFDS 差分转单端、OBUFDS 单端转差分

    目录 IBUFGDS IBUFDS 介绍 IBUFDS 示意图 例化方式 OBUFDS OBUFDS 介绍 OBUFDS 示意图 例化方式 在 XILINX 中有许多原语 常见的差分转单端 IBUFDS 单端转差分 OBUFDS IBUFG
  • Xilinx ISE系列教程(8):读取FPGA芯片唯一ID号

    文章目录 toc 应用场景 方法1 通过JTAG读取 方法2 调用原语读取 DNA PORT原语的使用 DNACLK频率注意 本文是Xilinx ISE系列教程的第8篇文章 用过单片机的朋友都知道 单片机芯片内部都有一串序列号 比如STM3
  • Xilinx ISE系列教程(9):LabTools下载、安装、使用教程(独立的下载工具)

    文章目录 1 ISE Vivado LabTools简介 2 ISE 14 7 Lab Tools下载 安装 3 Vivado 2018 3 LabTools下载 安装 1 ISE Vivado LabTools简介 Xilinx LabT
  • 【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将显示减
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • VHDL (Xilinx) 中的错误:无法链接设计

    为什么我在 VHDL 中遇到错误 另外 有时 无法执行流程 因为之前的流程失败了 非常感谢 永久解决方案1 在win 10上 找出 installation directory Xilinx 14 x ISE DS ISE gnu MinG

随机推荐