一、MIG IP核例化模板MIG IP核例化模板代码如下。axi_ddru_axi_ddr(// Memory interface ports.ddr3_addr(ddr3_addr),// output [14:0] ddr3_addr.ddr3_ba(ddr3_ba),// output [2:0] ddr3_ba.ddr3_cas_n(ddr3_cas_n),// output ddr3_cas_n.ddr3_ck_n(ddr3_ck_n),// output [0:0] ddr3_ck_n.ddr3_ck_p(ddr3_ck_p),// output [0:0] ddr3_ck_p.ddr3_cke(ddr3_cke),// output [0:0] ddr3_cke.ddr3_ras_n(ddr3_ras_n),// output ddr3_ras_n.ddr3_reset_n(ddr3_reset_n),// output ddr3_reset_n.ddr3_we_n(ddr3_we_n),// output ddr3_we_n.ddr3_dq(ddr3_dq),// inout [31:0] ddr3_dq.ddr3_dqs_n(ddr3_dqs_n),// inout [3:0] ddr3_dqs_n.ddr3_dqs_p(ddr3_dqs_p),// inout [3:0] ddr3_dqs_p.ddr3_cs_n(ddr3_cs_n),// output [0:0] ddr3_cs_n.ddr3_dm(ddr3_dm),// output [3:0] ddr3_dm.ddr3_odt(ddr3_odt),// output [0:0] ddr3_odt// Application interface ports.init_calib_complete(init_calib_complete),// output init_calib_complete.ui_clk(ui_clk),// output ui_clk.ui_clk_sync_rst(ui_clk_sync_rst),// output ui_clk_sync_rst.mmcm_locked(mmcm_locked),// output mmcm_locked.aresetn(aresetn),// input aresetn.app_sr_req(app_sr_req),// input app_sr_req.app_ref_req(app_ref_req),// input app_ref_req.app_zq_req(app_zq_req),// input app_zq_req.app_sr_active(app_sr_active),// output app_sr_active.app_ref_ack(app_ref_ack),// output app_ref_ack.app_zq_ack(app_zq_ack),// output app_zq_ack// Slave Interface Write Address Ports.s_axi_awid(s_axi_awid),// input [3:0] s_axi_awid.s_axi_awaddr(s_axi_awaddr),// input [29:0] s_axi_awaddr.s_axi_awlen(s_axi_awlen),// input [7:0] s_axi_awlen.s_axi_awsize(s_axi_awsize),// input [2:0] s_axi_awsize.s_axi_awburst(s_axi_awburst),// input [1:0] s_axi_awburst.s_axi_awlock(s_axi_awlock),// input [0:0] s_axi_awlock.s_axi_awcache(s_axi_awcache),// input [3:0] s_axi_awcache.s_axi_awprot(s_axi_awprot),// input [2:0] s_axi_awprot.s_axi_awqos(s_axi_awqos),// input [3:0] s_axi_awqos.s_axi_awvalid(s_axi_awvalid),// input s_axi_awvalid.s_axi_awready(s_axi_awready),// output s_axi_awready// Slave Interface Write Data Ports.s_axi_wdata(s_axi_wdata),// input [127:0] s_axi_wdata.s_axi_wstrb(s_axi_wstrb),// input [15:0] s_axi_wstrb.s_axi_wlast(s_axi_wlast),// input s_axi_wlast.s_axi_wvalid(s_axi_wvalid),// input s_axi_wvalid.s_axi_wready(s_axi_wready),// output s_axi_wready// Slave Interface Write Response Ports.s_axi_bid(s_axi_bid),// output [3:0] s_axi_bid.s_axi_bresp(s_axi_bresp),// output [1:0] s_axi_bresp.s_axi_bvalid(s_axi_bvalid),// output s_axi_bvalid.s_axi_bready(s_axi_bready),// input s_axi_bready// Slave Interface Read Address Ports.s_axi_arid(s_axi_arid),// input [3:0] s_axi_arid.s_axi_araddr(s_axi_araddr),// input [29:0] s_axi_araddr.s_axi_arlen(s_axi_arlen),// input [7:0] s_axi_arlen.s_axi_arsize(s_axi_arsize),// input [2:0] s_axi_arsize.s_axi_arburst(s_axi_arburst),// input [1:0] s_axi_arburst.s_axi_arlock(s_axi_arlock),// input [0:0] s_axi_arlock.s_axi_arcache(s_axi_arcache),// input [3:0] s_axi_arcache.s_axi_arprot(s_axi_arprot),// input [2:0] s_axi_arprot.s_axi_arqos(s_axi_arqos),// input [3:0] s_axi_arqos.s_axi_arvalid(s_axi_arvalid),// input s_axi_arvalid.s_axi_arready(s_axi_arready),// output s_axi_arready// Slave Interface Read Data Ports.s_axi_rid(s_axi_rid),// output [3:0] s_axi_rid.s_axi_rdata(s_axi_rdata),// output [127:0] s_axi_rdata.s_axi_rresp(s_axi_rresp),// output [1:0] s_axi_rresp.s_axi_rlast(s_axi_rlast),// output s_axi_rlast.s_axi_rvalid(s_axi_rvalid),// output s_axi_rvalid.s_axi_rready(s_axi_rready),// input s_axi_rready// System Clock Ports.sys_clk_i(sys_clk_i),.sys_rst(sys_rst)// input sys_rst);二、端口信号说明第一部分 DDR3 芯片物理层接口ddr3_addr[14:0] / ddr3_ba[2:0]行地址和 Bank 地址。告诉 DDR3 去哪个“仓库区”找数据。ddr3_cas_n / ddr3_ras_n / ddr3_we_n三大命令线列选通、行选通、写使能。注意带 _n 表示低电平有效。MIG 通过这三个线的不同组合告诉 DDR3 是要“读”、“写”还是“刷新”。ddr3_ck_p / ddr3_ck_n差分时钟信号。DDR3 心跳的源头由 MIG 输出给 DDR3 芯片。ddr3_cke时钟使能。拉低可以让 DDR3 进入休眠省电模式。ddr3_reset_nDDR3 芯片的硬件复位引脚。ddr3_dq[31:0]数据线重点。注意它是 inout双向的因为数据既要写进去又要读出来。ddr3_dqs_p/n[3:0]数据选通脉冲重点。也是双向的。它是 DQ 数据线的“伴随时钟”告诉接收方什么时候去采样 DQ 上的数据才最准确。ddr3_dm[3:0]数据掩码。如果写字节时想屏蔽某个字节比如只写低 8 位不改高 8 位就拉高对应的 DM 线。ddr3_odt片上终结电阻。高频信号容易反射ODT 用来动态开关 DDR3 内部的终端电阻保证信号质量。ddr3_cs_n片选信号。如果你的板子上有两颗 DDR3 芯片共用总线就用这个来选通。第二部分 init_calib_complete信号信号 init_calib_complete 是 DDR 控制器对外部 DDR3 存储器初始化和校准完成信号若该信号为高表示 DDR 初始化和校准完成之后用户可往 DDR 进行数据的读写操作。第三部分 app 信号带 app 的信号是本地接口维护命令信号这几个信号可以不用使用输入信号直接给 0输出信号不连接其他信号。第四部分 ui_clk 和 ui_clk_sync_rst信号ui_clk 和 ui_clk_sync_rst 是提供给用户侧使用的时钟信号和同步复位信号。第五部分 mmcm_locked信号mmcm_locked 信号是 MIG IP 里面时钟锁相环的锁定信号输出。可通过观察这个信号是否变为高电平判断内部锁相环是否锁定。第六部分 sys_clk_i 和sys_rst 信号sys_clk_i 是 IP 的系统时钟输入信号根据前面 IP 配置这个时钟需要提供 200MHz时钟sys_rst 是 IP 的系统复位输入信号低电平复位。第七部分 aresetn信号输入低电平复位信号。第八部分 带 s_axi 的信号带 s_axi 的信号是供用户侧使用的 AXI 接口。