1. 概述:本文从系统方面入手,利用vivado丰富的IP资源,设计一个链路可配置的PCIe EP(当然RC也可,IP支持,在此以EP为例)。
2. 参考文件:Xilinx vivado的各类参考文件
PCIe 2.0 Spec
Xilinx PCIe IP
3. 环境:如下图:采用V7485t,FPGA内置PCIe IP以及48个GTX模块
4. Design:
(1)generate 一个 IP block(这种IP block特别适合直接采用各种IP生成模块)
(2)基于IP block 界面加入IP核
i:add IP
ii:choose IP(在这里基于V7 FPGA的pcie IP有三个,其中第一个是仅有PCIe,第二个挂在了AXI总线上,第三个集成了DMA功能,由于本题功能需求仅为生成PCIe EP,只具备端点的接受功能,不需要主动发送,RC需要给EP写数据,所以选用第二个)
iii:加入其他IP(只需要手动添加红框的IP之后自动布线,就会生成如下如,点击工具栏红框,自动布局,把输入输出接出来即可)
3. 配置PCIe IP
i:配置为EP模式,时钟为100MHz
ii:第一个是选择GTX bank的,可以使用默认的,具体要和板子相对应;之后选择链路宽度X1;链路速率Gen2
iii:厂商号可以使用默认的(当然可以任意设置哈哈哈哈)
iv:BAR配置(可以开的大一些,利于debug,后面axi转换地址可以不用)
v:之后就一直下一步下一步结束,注意mem的位宽。
vi:配置一下地址,也是之后访问的地址 。
然后就成功了,生成一下
4. 添加顶层(点击source,然后在block上右键,选择添加顶层)
5. 综合 布局布线 下载 OK
后面会附加工程文件链接
武汉加油!
疫情当前也在家做做贡献,之前做过这个,经过回忆理解写下来,有问题联系。