Xilinx MIG IP核使用说明


注:DDR3读写测试工程需要源码或者有任何问题可以联系我!

结构框图

  • MIG IP 主要包含 3 部分:
    • User Interface Block:用户控制逻辑接口
    • Memory Controller:内存控制器
    • Physical Layer:物理层,连接 DDR 芯片

在这里插入图片描述

PHY 结构框图

在这里插入图片描述

外部接口

MIG IP 对外接口除了支持用户接口(app),也支持 AXI4 接口

app 接口

信号方向描述
app_addr[ADDR_WIDTH – 1:0]Input请求地址
app_cmd[2:0]Input请求命令,读命令(001),写命令(000)
app_enInputapp_addr, app_cmd, app_sz, app_hi_pri 信号有效指示,高有效
app_rdyOutputIP 准备信号,高有效。当 app_en 为高电平时,app_cmd 和 app_addr 信号保持不变直至 app_rdy 拉高
app_hi_priInput提高当前请求优先级,高有效
app_rd_data[APP_DATA_WIDTH – 1:0]Output读数据
app_rd_data_endOutput最后一个读数据指示信号,高有效,app_rd_data_valid 为高电平时才有效
app_rd_data_validOutputapp_rd_data 读数据有效指示,高有效
app_szInput保留,设置为 0
app_wdf_data[APP_DATA_WIDTH – 1:0]Input写数据
app_wdf_endInput最后一个写突发数据指示信号,高有效
app_wdf_mask[APP_MASK_WIDTH – 1:0]Input写数据掩码,高有效,每位对应一个字节数据(高电平表示屏蔽该字节)
app_wdf_rdyOutput写数据 FIFO 准备信号,当 app_wdf_rdy 和 app_wdf_wren 信号同时为高电平时,写数据才写入 FIFO
app_wdf_wrenInput写使能,高有效
app_correct_en_iInput只有 ECC 时使用,默认设置为 1
app_sr_reqInput保留,设置为 0
app_sr_activeOutput保留
app_ref_reqInputDRAM 刷新命令请求,高有效
app_ref_ackOutputDRAM 刷新命令请求响应,高有效
app_zq_reqInputDRAM ZQ 校准命令请求,高有效
app_zq_ackOutputDRAM ZQ 校准命令请求响应,高有效
ui_clkOutput时钟频率必须为 DRAM 时钟的二分之一或者四分之一
init_calib_completeOutputPHY 部分会在校准完成后拉高该信号,高有效
app_ecc_multiple_err[7:0]OutputECC 模式使用
ui_clk_sync_rstOutput复位信号,高有效,同步于 ui_clk
app_ecc_single_err[7:0]OutputECC 模式使用

app_rdy 为低情况如下:

  • PHY/Memory 未初始化完成
  • 所有 bank 占用
    • 存在读请求且读 buffer 处于满状态
    • 存在写请求且没有可用 写 buffer 指针
  • 正在进行周期读操作

app 接口时序

写控制命令
  • 当 app_en 和 app_rdy 同时有效时,命令被写入控制命令 FIFO

在这里插入图片描述

写数据
  • 当 app_wdf_wren 和 app_wdf_rdy 同时有效,写数据被写入数据写 FIFO。 app_wdf_mask 信号可用于屏蔽写入外部存储器的字节。

  • 必须使用 app_wdf_end 信号来指示存储器写入突发的结束

    • 对于 2:1 模式,应该在第二个写入数据字上断言 app_wdf_end 信号
    • 对于 4:1 模式可以让 app_wdf_end = app_wdf_wren 简化时序控制
  • 此外下图中说明控制命令和数据通道没有先后顺序要求,但是要求控制命令发送后,数据必须最大延迟不能超过 2 个时钟。

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

读数据

在这里插入图片描述

AXI4 接口

内部时钟结构

对于 DDR3 设计,若 DDR3 时钟大于 667 MHz,则需要一个 MMCM 专门用来产生 300MHz 或 400MHz 时钟作为 IDELAY 参考时钟(具体选用 300MHz 还是 400MHz 取决于 FPGA 速度等级),其他情况使用 200MHz 时钟作为 IDELAY 参考时钟。

PHY 部分需要一个 MMCM 和一个 PLL

在这里插入图片描述

DDR3 接口输出字节序

  • 4:1 模式下用户接口数据位宽为 64bit,写入 64bit 数据(0000_0806_0000_0805)

  • 2:1 模式下用户接口数据位宽为 32bit,写入 64 bit数据(先写 0000_0805,再写 0000_0806)

  • DDR3 接口输出字节序:低字节优先输出

在这里插入图片描述

初始化和校准流程

在这里插入图片描述

4:1 or 2:1 mode

在这里插入图片描述

IP 例化

在这里插入图片描述

在这里插入图片描述

Arbitration Scheme

  • TDM(时分复用):在这种模式下,读写地址通道被赋予相等的优先级。读写地址通道的授权在每个时钟周期交替进行。

  • Round-Robin(轮询):在这种模式下,读写地址通道被赋予相等的优先级。读写通道的授权取决于AXI主设备最后一次授权的请求。 例如,如果最后一次执行的操作是写操作,那么它将优先为读操作服务而不是写操作。同样,如果最后一次执行的操作是读操作,那么它将优先为写操作服务而不是读操作。如果读写通道同时请求,并且没有待处理的请求,这种方案会优先服务写通道而不是读通道。

  • RD_PRI_REG(读优先):在这种模式下,读写地址通道被赋予相等的优先级。当以下情况之一发生时,处理来自写地址通道的请求:

    • 读地址通道没有待处理的请求。
    • 读饥饿限制达到256。它只在突发的末尾检查。
    • 读等待限制达到16。
    • 写QOS更高,非零。它只在突发的末尾检查。
  • RD_PRI_REG_STARVE_LIMIT(读优先带饥饿限制):在这种模式下,读地址通道总是被赋予优先权。当读地址通道没有待处理的请求或读饥饿限制达到时,处理来自写地址通道的请求。

  • WRITE_PRIORITY, WRITE_PRIORITY_REG(写优先):在这种模式下,写地址通道总是被赋予优先权。当写地址通道没有待处理的请求时,处理来自读地址通道的请求。在WRITE_PRIORITY_REG模式下,仲裁输出是寄存的。

在这里插入图片描述

官方手册:ug586

DDR3读写测试

在这里插入图片描述
在这里插入图片描述

Xilinx MIG IP是一种用于处理DDR存储器接口的IP。它具有用户接口和DDR物理芯片接口两组接口。用户接口用于FPGAMIG IP之间的交互,而DDR物理芯片接口负责产生具体的操作时序,并直接操作芯片管脚。用户只需操作MIG IP的用户接口就能进行DDR数据的读写。\[1\] 在XilinxMIG IP中,用户接口模块是整个IP的关键部分。它包括指令路径和数据路径,都是基于握手协议的。例如,在指令路径中,只有当app_en和app_rdy同时为高时,app_cmd才会被有效接收。在写数据通道中,只有当app_wdf_wren和app_wdf_rdy同时为高时,app_wdf_data才会写入FIFO。\[2\] 对于DDR3存储器,以Micron的MT41K256M16TW-107为例,它是一种4Gb大小的DDR3存储器,具有256M*16的大小,速度等级为1866MT/s。它采用8Bank配置,数据位宽为16bit,行地址为A\[14:0\],列地址为A\[9:0\]。需要注意的是,由于8n prefetch,实际上只使用了列地址A\[2:0\]。存储矩阵中的一个单元(CELL)为128bit,即一个Bank内按32768*128*128划分。\[3\] 总结来说,Xilinx MIG IP是用于处理DDR存储器接口的IP,它具有用户接口和DDR物理芯片接口。用户只需操作用户接口就能进行DDR数据的读写。在XilinxMIG IP中,用户接口模块是关键部分,它基于握手协议进行指令和数据的传输。对于DDR3存储器,具体的配置取决于所使用的存储器型号和要求。 #### 引用[.reference_title] - *1* [Xilinx DDR3 —— MIG IP的原理(APP接口)](https://blog.csdn.net/weixin_43872190/article/details/122993541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [xilinx ddr3 MIG ip使用详解](https://blog.csdn.net/admiraion123/article/details/107891017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA的花路

你的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值