Xilinx MIG IP核使用

Xilinx MIG IP核使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Clock Period:选择ddr芯片的工作时钟(这个时钟是从FPGA接口到DDR的时钟,ddr芯片会以这个时钟采数据)
PHY to Controller Clock Ratio:选择4:1或者2:1,可以理解为ddr3的工作时钟频率:用户时钟频率 = 4:1。
Memory Type:选择DDR3的芯片形式,主要有Component、RDIMMs、UDIMMs和SODIMMs四类,如果硬件选用的是DDR3芯片颗粒,则选择Component,如果硬件选用的是内存条形式,则选择RDIMMs、UDIMMs或SODIMMs中的某类,RDIMMs全称Registered Dual In-line Memory Module,带寄存器的双列直插内存模块;UDIMMs全称Unbuffered Dual In-line Memory Module,即无缓冲双列直插内存模块;SODIMMs全程Small Outline Dual In-line Memory Module,即小型双列直插式内存模块;
Memory Part:选择具体的DDR3型号。
选择ddr芯片型号(根据开发板定,如果只是看一下仿真,可以随意选择),
其中芯片名字有两个重要的点,位宽和容量,以上为例代表这一片ddr的位宽为16,总容量为256Mb x 16bit = 512MB。
在这里插入图片描述
Memory Voltage:由芯片决定,芯片手册上有
Data Mask:数据宽度,一片ddr位宽为16,我现在是使用了两片ddr,所以位宽为32.
ECC:只有数据位宽为64时,可以选择8位的ecc校验码(总位宽就为72)。
Data Mask:数据掩码。
Memory Details:DDR信息的一个小总结,4Gb代表总容量(也就是512MB),x16为位宽,row为行,col为列,bank为2的3次方,可以通过这里算出一片ddr的容量,
16bit x 2^15 x 2^10 x 2^3 = 512MB
注意:这一栏只显示一片ddr的信息。
在这里插入图片描述
Input Clock Period : MIG IP核的输入时钟(我这里设置的100m,不知道软件有bug还是我操作不对,每次点进来都会变成800m,但是使用的时候还是100m)。
在这里插入图片描述
Memory Address Mapping Seletion :选择地址映射方式:
BRC这种映射方式,用的最多。其优点是,功耗低;
RBC的优点是适合数据流方式去访问数据,性能好;
其它项一般不用改变
在这里插入图片描述
设置Referce Clock、System Clock
可以选择单端,差分和No Buffer;
如果Referce Clock、System Clock这两个时钟设置为单端或者双端,IP核内部会为这两个时钟做缓存一下(这个叫法可能不太对);打开IP核内部会看见这样的一个原句(没有截全)
在这里插入图片描述
在这里插入图片描述
这两个原句只能对从IO输入的时钟使用,所以只能选择由外部输入的时钟。
如果选择no buffer就没有这个原句,就可以直接使用由FPGA内部其它模块送过来的时钟。
总结一下这个IP核里面的三个时钟:
第一个时钟(名字还真想不起来)是由FPGA通过管脚送到ddr芯片的时钟,由ddr芯片的工作频率决定
Sys_clk:这个时钟是由我们向MIG IP核提供的时钟,我们不在这个时钟域处理数据,IP核会送出来一个ui_clk,我们所有的操作包括发送接收数据都要在ui_clk这个时钟域,ui_clk和第一个时钟的比例关系也就是4:1;
Ref_clk:在migIP核中使用了idealy,odelay,idelayctrl原句,idelayctrl原句需要提供一个ref_clk作为基准。

下图中左边标出来的长方形的蓝色是使用了的block ram资源,左边蓝色(除了block ram)是已经使用了的可配置逻辑块的资源,右边黄色(包括标出来的蓝色小块)是已经使用了的selectIO资源,其中标出来的蓝色小块就是idelayctrl资源。
在这里插入图片描述
其实xilinx的很多IP核里面都有ref_clk,一般情况下叫这个名字,那就是上面这种用法(当然,这是我自己的观点)。
在这里插入图片描述
这里第一个的意思是系统给你分配它认为的最合适的管脚(如果只是看一下仿真,可以选择这个),
第二个的意思是你自己分配管脚(因为这里我使用的开发板,所以我选择第二个)
在这里插入图片描述
选择第二个就会出现这个页面,可以直接读SDC或者UCF文件(这个文件一般开发板的ddr例程就有,直接拽过来就可以使用)点击validata,验证通过后,下一步
在这里插入图片描述
这一页也是在分配管脚,如果有需要可以将这几个信号接出去,但是这几个信号一般都是FPGA内部使用,所以选择No connect

全文一些是我自己的观点,如果有不对或者没说清楚的地方,非常非常欢迎指出。

最后贴上4:1的时序图:
在这里插入图片描述
在这里插入图片描述

时序图来自官方文档:ug586

用户接口简介:
在这里插入图片描述

  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值