vcu1525 PCIe-DDR4连接方案

2019年6月29日

21:04

vivado版本:2018.2

使用到的IP 模块:

DMA/Bridge Subsystem for PCI Express

DDR4 SDRAM

AXI Interconnect

可选:

AXI BRAM Controller

Block RAM Generator

新建RTL工程

开发板使用的是Xilinx VCU1525 VU9P

选择Create Block Design

添加PCIe XDMA IP核、DDR4 IP核、AXI Interconnect IP核,选择Run Block Automation,完成PCIe模块的自动配置

根据工程需要配置IP

首先配置PCIe IP,双击xdma_0,选择pci express x16

如果需要使用用户BAR空间,则勾选PCIe to AXI Lite Master Interface,此处我们配置了一个大小为1M的USER BAR,配置完成后点击OK生成IP

点击Run Connection Automation

这时我们发现相比于vcu118,此处ddr多了AXI_CTRL信号,这会影响到对ddr地址空间的分配,因此我们将其外接,右击该接口,选择Make External,后面我们会对这个接口分配初始化的值。

由于我们要使用user bar空间,所以还需要添加AXI Bram Controller和Block Ram Generator两个IP

添加完成后双击AXI Bram Controller IP,选择AXI Lite

双击Block Ram Generator IP选择True Dual Port RAM

手动连接如下接口

点击Address Editor,配置地址空间,如图

右键选择Validate Design

这时会有这样的报错,原因是DDR4复位需要高电平,而1525提供的外接复位是低电平,因此需要对外接reset取反

添加Utility Vector Logic IP核

重新连接

再次校验,确保没有错误

当提示没有错误和警告时,返回Sources窗口中,右击.bd文件,选择Create HDL Wrapper

生成如下的HDL文件

这时我们需要修改前文提到的向外引出的C0_DDR4_AXI_S_CTRL信号,打开design_1_wrapper.v,即工程顶层文件,屏蔽前三组C0_DDR4_AXI_S_CTRL开头的信号,按如下修改  design_1 design_1_i中的C0_DDR4_AXI_S_CTRL信号,即为C0_DDR4_AXI_S_CTRL附上默认初始值,修改完毕保存。

//Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

//--------------------------------------------------------------------------------

//Tool Version: Vivado v.2017.4 (win64) Build 2086221 Fri Dec 15 20:55:39 MST 2017

//Date        : Thu Jun 20 21:41:22 2019

//Host        : engl-PC running 64-bit Service Pack 1  (build 7601)

//Command     : generate_target design_1_wrapper.bd

//Design      : design_1_wrapper

//Purpose     : IP block netlist

//--------------------------------------------------------------------------------

`timescale 1 ps / 1 ps

module design_1_wrapper(

//    C0_DDR4_S_AXI_CTRL_araddr,

//    C0_DDR4_S_AXI_CTRL_arready,

//    C0_DDR4_S_AXI_CTRL_arvalid,

//    C0_DDR4_S_AXI_CTRL_awaddr,

//    C0_DDR4_S_AXI_CTRL_awready,

//    C0_DDR4_S_AXI_CTRL_awvalid,

//    C0_DDR4_S_AXI_CTRL_bready,

//    C0_DDR4_S_AXI_CTRL_bresp,

//    C0_DDR4_S_AXI_CTRL_bvalid,

//    C0_DDR4_S_AXI_CTRL_rdata,

//    C0_DDR4_S_AXI_CTRL_rready,

//    C0_DDR4_S_AXI_CTRL_rresp,

//    C0_DDR4_S_AXI_CTRL_rvalid,

//    C0_DDR4_S_AXI_CTRL_wdata,

//    C0_DDR4_S_AXI_CTRL_wready,

//    C0_DDR4_S_AXI_CTRL_wvalid,

ddr4_sdram_c0_act_n,

ddr4_sdram_c0_adr,

ddr4_sdram_c0_ba,

ddr4_sdram_c0_bg,

ddr4_sdram_c0_ck_c,

ddr4_sdram_c0_ck_t,

ddr4_sdram_c0_cke,

ddr4_sdram_c0_cs_n,

ddr4_sdram_c0_dq,

ddr4_sdram_c0_dqs_c,

ddr4_sdram_c0_dqs_t,

ddr4_sdram_c0_odt,

ddr4_sdram_c0_par,

ddr4_sdram_c0_reset_n,

default_300mhz_clk0_clk_n,

default_300mhz_clk0_clk_p,

pci_express_x16_rxn,

pci_express_x16_rxp,

pci_express_x16_txn,

pci_express_x16_txp,

pcie_perstn,

pcie_refclk_clk_n,

pcie_refclk_clk_p,

resetn);

//  input [31:0]C0_DDR4_S_AXI_CTRL_araddr;

//  output C0_DDR4_S_AXI_CTRL_arready;

//  input C0_DDR4_S_AXI_CTRL_arvalid;

//  input [31:0]C0_DDR4_S_AXI_CTRL_awaddr;

//  output C0_DDR4_S_AXI_CTRL_awready;

//  input C0_DDR4_S_AXI_CTRL_awvalid;

//  input C0_DDR4_S_AXI_CTRL_bready;

//  output [1:0]C0_DDR4_S_AXI_CTRL_bresp;

//  output C0_DDR4_S_AXI_CTRL_bvalid;

//  output [31:0]C0_DDR4_S_AXI_CTRL_rdata;

//  input C0_DDR4_S_AXI_CTRL_rready;

//  output [1:0]C0_DDR4_S_AXI_CTRL_rresp;

//  output C0_DDR4_S_AXI_CTRL_rvalid;

//  input [31:0]C0_DDR4_S_AXI_CTRL_wdata;

//  output C0_DDR4_S_AXI_CTRL_wready;

//  input C0_DDR4_S_AXI_CTRL_wvalid;

output ddr4_sdram_c0_act_n;

output [16:0]ddr4_sdram_c0_adr;

output [1:0]ddr4_sdram_c0_ba;

output [1:0]ddr4_sdram_c0_bg;

output ddr4_sdram_c0_ck_c;

output ddr4_sdram_c0_ck_t;

output ddr4_sdram_c0_cke;

output ddr4_sdram_c0_cs_n;

inout [71:0]ddr4_sdram_c0_dq;

inout [17:0]ddr4_sdram_c0_dqs_c;

inout [17:0]ddr4_sdram_c0_dqs_t;

output ddr4_sdram_c0_odt;

output ddr4_sdram_c0_par;

output ddr4_sdram_c0_reset_n;

input default_300mhz_clk0_clk_n;

input default_300mhz_clk0_clk_p;

input [15:0]pci_express_x16_rxn;

input [15:0]pci_express_x16_rxp;

output [15:0]pci_express_x16_txn;

output [15:0]pci_express_x16_txp;

input pcie_perstn;

input pcie_refclk_clk_n;

input pcie_refclk_clk_p;

input resetn;

//  wire [31:0]C0_DDR4_S_AXI_CTRL_araddr;

//  wire C0_DDR4_S_AXI_CTRL_arready;

//  wire C0_DDR4_S_AXI_CTRL_arvalid;

//  wire [31:0]C0_DDR4_S_AXI_CTRL_awaddr;

//  wire C0_DDR4_S_AXI_CTRL_awready;

//  wire C0_DDR4_S_AXI_CTRL_awvalid;

//  wire C0_DDR4_S_AXI_CTRL_bready;

//  wire [1:0]C0_DDR4_S_AXI_CTRL_bresp;

//  wire C0_DDR4_S_AXI_CTRL_bvalid;

//  wire [31:0]C0_DDR4_S_AXI_CTRL_rdata;

//  wire C0_DDR4_S_AXI_CTRL_rready;

//  wire [1:0]C0_DDR4_S_AXI_CTRL_rresp;

//  wire C0_DDR4_S_AXI_CTRL_rvalid;

//  wire [31:0]C0_DDR4_S_AXI_CTRL_wdata;

//  wire C0_DDR4_S_AXI_CTRL_wready;

//  wire C0_DDR4_S_AXI_CTRL_wvalid;

wire ddr4_sdram_c0_act_n;

wire [16:0]ddr4_sdram_c0_adr;

wire [1:0]ddr4_sdram_c0_ba;

wire [1:0]ddr4_sdram_c0_bg;

wire ddr4_sdram_c0_ck_c;

wire ddr4_sdram_c0_ck_t;

wire ddr4_sdram_c0_cke;

wire ddr4_sdram_c0_cs_n;

wire [71:0]ddr4_sdram_c0_dq;

wire [17:0]ddr4_sdram_c0_dqs_c;

wire [17:0]ddr4_sdram_c0_dqs_t;

wire ddr4_sdram_c0_odt;

wire ddr4_sdram_c0_par;

wire ddr4_sdram_c0_reset_n;

wire default_300mhz_clk0_clk_n;

wire default_300mhz_clk0_clk_p;

wire [15:0]pci_express_x16_rxn;

wire [15:0]pci_express_x16_rxp;

wire [15:0]pci_express_x16_txn;

wire [15:0]pci_express_x16_txp;

wire pcie_perstn;

wire pcie_refclk_clk_n;

wire pcie_refclk_clk_p;

wire resetn;

design_1 design_1_i

(.C0_DDR4_S_AXI_CTRL_araddr(32'b0),

.C0_DDR4_S_AXI_CTRL_arready(),

.C0_DDR4_S_AXI_CTRL_arvalid(1'b0),

.C0_DDR4_S_AXI_CTRL_awaddr(32'b0),

.C0_DDR4_S_AXI_CTRL_awready(),

.C0_DDR4_S_AXI_CTRL_awvalid(1'b0),

.C0_DDR4_S_AXI_CTRL_bready(1'b0),

.C0_DDR4_S_AXI_CTRL_bresp(),

.C0_DDR4_S_AXI_CTRL_bvalid(),

.C0_DDR4_S_AXI_CTRL_rdata(),

.C0_DDR4_S_AXI_CTRL_rready(1'b1),

.C0_DDR4_S_AXI_CTRL_rresp(),

.C0_DDR4_S_AXI_CTRL_rvalid(),

.C0_DDR4_S_AXI_CTRL_wdata(32'b0),

.C0_DDR4_S_AXI_CTRL_wready(),

.C0_DDR4_S_AXI_CTRL_wvalid(1'b0),

.ddr4_sdram_c0_act_n(ddr4_sdram_c0_act_n),

.ddr4_sdram_c0_adr(ddr4_sdram_c0_adr),

.ddr4_sdram_c0_ba(ddr4_sdram_c0_ba),

.ddr4_sdram_c0_bg(ddr4_sdram_c0_bg),

.ddr4_sdram_c0_ck_c(ddr4_sdram_c0_ck_c),

.ddr4_sdram_c0_ck_t(ddr4_sdram_c0_ck_t),

.ddr4_sdram_c0_cke(ddr4_sdram_c0_cke),

.ddr4_sdram_c0_cs_n(ddr4_sdram_c0_cs_n),

.ddr4_sdram_c0_dq(ddr4_sdram_c0_dq),

.ddr4_sdram_c0_dqs_c(ddr4_sdram_c0_dqs_c),

.ddr4_sdram_c0_dqs_t(ddr4_sdram_c0_dqs_t),

.ddr4_sdram_c0_odt(ddr4_sdram_c0_odt),

.ddr4_sdram_c0_par(ddr4_sdram_c0_par),

.ddr4_sdram_c0_reset_n(ddr4_sdram_c0_reset_n),

.default_300mhz_clk0_clk_n(default_300mhz_clk0_clk_n),

.default_300mhz_clk0_clk_p(default_300mhz_clk0_clk_p),

.pci_express_x16_rxn(pci_express_x16_rxn),

.pci_express_x16_rxp(pci_express_x16_rxp),

.pci_express_x16_txn(pci_express_x16_txn),

.pci_express_x16_txp(pci_express_x16_txp),

.pcie_perstn(pcie_perstn),

.pcie_refclk_clk_n(pcie_refclk_clk_n),

.pcie_refclk_clk_p(pcie_refclk_clk_p),

.resetn(resetn));

endmodule

这时可以进行综合布线了。

在生成比特流时会出现 如下报错

可向tcl console中输入脚本,或者右击Generate Bitstream,在tcl.pre中添加我们预先写好的tcl脚本

<<write_bit_pre.tcl>>

脚本内容:

set_property SEVERITY {Warning} [get_drc_checks NSTD-1]

set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

再次运行生成比特流,完成后下入板子,看到MIG校验通过说明成功了

重启PC,测试PCIeDDRuser bar读写

vcu1525 PCIe-DDR4连接方案相关推荐

  1. pcie总线连接两台电脑_基于PCIe总线的多路复用DMA高速传输系统的设计

    摘要:文章针对双处理器设备问的数据通信提出了基于PCIe非透明桥的高速传输系统的设计方法.该方法应用于视频转码设备,实验结果表明当转码设备作为外设与PC主机进行通信时,采用多路虚拟DMA方法的数据传输 ...

  2. wifi传输信息需要连接服务器,基于近场通信的WiFi传输连接方案.pdf

    第39 卷 第6 期 计 算 机 工 程 2013 年6 月 Computer Engineering June 2013 Vol.39 No.6 文献标识码文献标识码::A 文献标识码文献标识码:: ...

  3. 接入层交换机和汇聚层交换机的选择及连接方案

    本篇文章,易天光通信(ETU-LINK)将为大家介绍下接入层交换机和汇聚层交换机的选择及连接方案.在三层架构中,接入层的作用主要是让终端用户连接到网络,接入层交换机即为交换层的设备,由于接入层交换机需 ...

  4. 海外休闲游戏的网络连接方案

    由于项目开始沿用了公司其它项目组的TCP长链接网络框架,在实际上线测试中遇到了很多问题.最主要的是不同国家的网络情况不同,经常有玩家因为登录不了游戏而打差评.因此对网络连接方案作出如下整理. 长链接: ...

  5. CarPlay无线连接方案详解(WIFI部分)

    这篇博客是继上一篇CarPlay wireless(蓝牙+WiFi)连接方案(蓝牙部分)的第二部分:Wi-Fi部分.在这篇博客中我主要是针对CarPlay over wireless方案中的Wi-Fi ...

  6. CarPlay wired(USB)连接方案

     在上一篇博客中我对CarPlay做了基本的介绍,在这篇博客中我将介绍CarPlay的wired(USB)的连接方案. 首先,CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB ...

  7. 态路小课堂 丨400G QSFP-DD SR8和DR4光模块连接方案

    QSFP-DD 全称 "Quad Small Form Factor Pluggable-Double Density" 是QSFP-DD MSA小组定义的一种高速.小型.可插拔的 ...

  8. 一文带你知晓所有交换机10G SFP+端口连接方案

    10G带SFP+光口交换机已经被数据中心和企业大量的应用,本篇文章易天光通信(ETU-LINK)就为大家罗列下可接入10G SFP+ 端口的连接方案有哪些?以及在什么情况下选用哪种更为合适一些. 首先 ...

  9. CarPlay无线连接方案详解(蓝牙部分)

    苹果公司除了推出基于wired(USB)的CarPlay连接方案(详细请查看上一篇),苹果公司还推出了基于wireless(蓝牙+WiFi)的CarPlay连接方案. 基于wireless的CarPl ...

最新文章

  1. lvs十种调度策略+三种模式
  2. 什么是ATM(异步传输模式)?—Vecloud微云
  3. MFC90条技巧-带目录
  4. 使用scapy回放wireshark抓到的包
  5. PMP培训机构哪家好,求推荐?
  6. [原创]用逻辑嗅探破解接触式IC卡口令
  7. SAP中设置参数缺省值小技巧
  8. asdfasdfasdf
  9. lisp ssget 浩辰_lisp程序--AutoCAD和浩辰GstarCAD.pdf
  10. php 七牛云获得上传token,客户端生成七牛上传token
  11. 【浙江大学】一个开源的知识图谱表示学习框架
  12. matlab gui输入函数,紧急求助!关于matlab中GUI用户图形界面通过edit输入调用函数问题!...
  13. 百度APIak和sk
  14. Amazon(AMZN)2020年第三季度收益电话会议记录
  15. Homography 估计单应性矩阵代码实现
  16. Ruby中Time的常用函数
  17. 慕课网SSMOA办公系统
  18. 【DIY娱乐】手机链接PC玩体感游戏
  19. it之家评论在线搜索
  20. 互联网业务数据分析- 数据分析基础

热门文章

  1. 沧海一粟小组(第三次作业)
  2. super关键字用法
  3. php curl get 返回空,php-cURL从有效url返回空输出-没有错误报告
  4. No adapter attached; skipping layout
  5. 忙碌的你不妨停下来, 看看这份前端规划
  6. 你只管粘贴。复制我帮你解决
  7. java 视频截取图片 linux,在Windows和Linux下用JAVA调用FFMPEG 3.x进行视频截图的最新范例...
  8. 网站快照异常预示网站优化有问题
  9. 【渝粤教育】电大中专微生物与寄生虫基础 (2)_1作业 题库
  10. Typora+阿里云OSS(将图片上传到阿里云服务器上)