vcu1525 PCIe-DDR4连接方案
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,测试PCIe、DDR及user bar读写
vcu1525 PCIe-DDR4连接方案相关推荐
- pcie总线连接两台电脑_基于PCIe总线的多路复用DMA高速传输系统的设计
摘要:文章针对双处理器设备问的数据通信提出了基于PCIe非透明桥的高速传输系统的设计方法.该方法应用于视频转码设备,实验结果表明当转码设备作为外设与PC主机进行通信时,采用多路虚拟DMA方法的数据传输 ...
- wifi传输信息需要连接服务器,基于近场通信的WiFi传输连接方案.pdf
第39 卷 第6 期 计 算 机 工 程 2013 年6 月 Computer Engineering June 2013 Vol.39 No.6 文献标识码文献标识码::A 文献标识码文献标识码:: ...
- 接入层交换机和汇聚层交换机的选择及连接方案
本篇文章,易天光通信(ETU-LINK)将为大家介绍下接入层交换机和汇聚层交换机的选择及连接方案.在三层架构中,接入层的作用主要是让终端用户连接到网络,接入层交换机即为交换层的设备,由于接入层交换机需 ...
- 海外休闲游戏的网络连接方案
由于项目开始沿用了公司其它项目组的TCP长链接网络框架,在实际上线测试中遇到了很多问题.最主要的是不同国家的网络情况不同,经常有玩家因为登录不了游戏而打差评.因此对网络连接方案作出如下整理. 长链接: ...
- CarPlay无线连接方案详解(WIFI部分)
这篇博客是继上一篇CarPlay wireless(蓝牙+WiFi)连接方案(蓝牙部分)的第二部分:Wi-Fi部分.在这篇博客中我主要是针对CarPlay over wireless方案中的Wi-Fi ...
- CarPlay wired(USB)连接方案
在上一篇博客中我对CarPlay做了基本的介绍,在这篇博客中我将介绍CarPlay的wired(USB)的连接方案. 首先,CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB ...
- 态路小课堂 丨400G QSFP-DD SR8和DR4光模块连接方案
QSFP-DD 全称 "Quad Small Form Factor Pluggable-Double Density" 是QSFP-DD MSA小组定义的一种高速.小型.可插拔的 ...
- 一文带你知晓所有交换机10G SFP+端口连接方案
10G带SFP+光口交换机已经被数据中心和企业大量的应用,本篇文章易天光通信(ETU-LINK)就为大家罗列下可接入10G SFP+ 端口的连接方案有哪些?以及在什么情况下选用哪种更为合适一些. 首先 ...
- CarPlay无线连接方案详解(蓝牙部分)
苹果公司除了推出基于wired(USB)的CarPlay连接方案(详细请查看上一篇),苹果公司还推出了基于wireless(蓝牙+WiFi)的CarPlay连接方案. 基于wireless的CarPl ...
最新文章
- lvs十种调度策略+三种模式
- 什么是ATM(异步传输模式)?—Vecloud微云
- MFC90条技巧-带目录
- 使用scapy回放wireshark抓到的包
- PMP培训机构哪家好,求推荐?
- [原创]用逻辑嗅探破解接触式IC卡口令
- SAP中设置参数缺省值小技巧
- asdfasdfasdf
- lisp ssget 浩辰_lisp程序--AutoCAD和浩辰GstarCAD.pdf
- php 七牛云获得上传token,客户端生成七牛上传token
- 【浙江大学】一个开源的知识图谱表示学习框架
- matlab gui输入函数,紧急求助!关于matlab中GUI用户图形界面通过edit输入调用函数问题!...
- 百度APIak和sk
- Amazon(AMZN)2020年第三季度收益电话会议记录
- Homography 估计单应性矩阵代码实现
- Ruby中Time的常用函数
- 慕课网SSMOA办公系统
- 【DIY娱乐】手机链接PC玩体感游戏
- it之家评论在线搜索
- 互联网业务数据分析- 数据分析基础
热门文章
- 沧海一粟小组(第三次作业)
- super关键字用法
- php curl get 返回空,php-cURL从有效url返回空输出-没有错误报告
- No adapter attached; skipping layout
- 忙碌的你不妨停下来, 看看这份前端规划
- 你只管粘贴。复制我帮你解决
- java 视频截取图片 linux,在Windows和Linux下用JAVA调用FFMPEG 3.x进行视频截图的最新范例...
- 网站快照异常预示网站优化有问题
- 【渝粤教育】电大中专微生物与寄生虫基础 (2)_1作业 题库
- Typora+阿里云OSS(将图片上传到阿里云服务器上)