- 前言
在CSDN上讲解配置ddr ip核和仿真的示例已经很多了,在此仅仅记录下自己在项目中以及学习过程中自己的总结;下一篇继续仿真测试代码的讲解。
- AXI4接口协议
既然是基于AXI4接口的配置,那么就必须要说一下什么是AXI4接口协议。AXI 总线协议包括 AXI4,AXI4-Lite,AXI4-Stream 三类,均分为为主(master)、从(slave)设备,按照约定好的数据传输方式来交互。AXI4总线通道分为读地址、读数据、写地址、写数据、写响应五个通道,每个通道都有自己的valid与ready信号。具体详细信息可参照ug761官方详细文档(https://docs.xilinx.com/v/u/en-US/ug761_axi_reference_guide)。
- IP 核配置流程
(1)勾选AXI4 interface,name可以自己修改。
(2)此页为配置IP 核兼容其他的FPGA型号,如果有需要可以勾选
(3)选择ddr3还是ddr2。
(4)clock period: DDR3 芯片工作的时钟,这里我选择的芯片最高支持800MHz,所以就选择800M,理论上只要选择小于等于最高工作频率就可以。选择了800MHZ之后DDR3的工作时钟与用户端的时钟之比就只能选择4:1,此时ui_clk为 800 ÷ 4 = 200 MHz。 有一个地方需要注意,如果你配置的ip核时钟刚好可以选择2:1的比例,比如选择500MHZ后就可以选择2:1比例。 2:1会降低最大存储器接口频率,2:1比例的用户界面数据总线宽度(s_axi_rdata、s_axi_wdata)是物理存储器接口宽度(Data_width)的4倍。而4:1比率的总线宽度是物理存储器接口宽度的8倍。 Memory part:芯片型号自己选择,也可以自己定制自己的芯片属性(create custom part)。
Memory Voltage:这个为ddr的电压选择,在硬件设计时已经决定了,自主选择就好。
Data Width:数据位宽这里选择16。在测试四片ddr时我这里就要选择64位的数据位宽,那么对应的s_axi_wdata与s_axi_rdata就会变为512(64*8,前提是选择的4:1的比例)。
其余的ECC与数据掩码都保持默认即可。
(5)AXI DATA WIDTH 读写的数据位宽可以自己选择,其中narrow burst support选为1,表示支持突发传输数据。如果没有主机发出突发传输并且所有的发出的以及接收的数据位宽都是相同的,那么可以设置为0。
地址宽度和ID宽度保持默认即可。
(6)这一页中依次配置进ddr的系统时钟,这里选择200M为了和后面的系统时钟共用一个时钟。其中read burst type and length可以选择为连续模式(Sequential)与中断模式(Interleaved),一般选择连续模式,其余保持默认。
(7)系统时钟类型选择no buffer,如果你硬件设计上有直接输入给ddr的差分晶振时钟,那么就选择Differential,No Buffer 代表是FPGA内部产生的时钟,Single-Ended为单端时钟。具体看自己设计需求选择。由于在前文设置了进ip的系统时钟为200M,所以这里参考时钟可以选择为use system clk,节约一个时钟输入。(如果没有系统时钟不为200M,那么就需要再输入一个参考时钟,可由FPGA内部产生)。其余配置默认。
(8)这一页也保持默认。
(9)一般自己的项目都需要根据自己的 FPGA 芯片引脚绑定 DDR3 引脚,具体查看原理图,对应地址线数据线填入即可。如果是开发板的话一般都配有ucf文件,点击read ucf/xcf文件导入即可。最后一路点击next即可完成mig ip核的配置。
谢谢观看,有问题可以评论区一起讨论。
文章介绍了基于AXI4接口的DDR3IP核配置过程,包括AXI4接口协议的概述,IP核配置的各个步骤,如选择DDR3类型、设置时钟周期、数据位宽等参数,并提到了地址宽度、突发传输模式和时钟类型的选择。此外,文章还强调了系统时钟与DDR3工作时钟的比例以及引脚绑定的重要性。
2万+

被折叠的 条评论
为什么被折叠?



