开发板:Xilinx K7 KC705

软件:ISE14.7

1.由于应用需求,我们要将开发板作为主机端,通过PCIe接口转接板外接一个NVMe PCIe SSD。并由FPGA控制SSD的数据读写。

因此我们例化生成了一个作为主机端的 PCIe IP核。

类型选择为Root Complex

这里我们将可设置的几项配置成抓取到的PCIe NVMe SSD的内部相应参数。

生成pcie核之后,在其目录下将example文件夹中的例程导入ISE中。

阅读其ucf文件,发现其中并没有约束sys_clk_p和sys_clk_n这一组差分时钟信号。取而代之的是如下的代码:

# SYS clock 100 MHz (input) signal. The sys_clk_p and sys_clk_n
# signals are the PCI Express reference clock. Virtex-7 GT
# Transceiver architecture requires the use of a dedicated clock
# resources (FPGA input pins) associated with each GT Transceiver.
# To use these pins an IBUFDS primitive (refclk_ibuf) is
# instantiated in user's design.
# Please refer to the Virtex-7 GT Transceiver User Guide
# (UG) for guidelines regarding clock resource selection.
#
INST "refclk_ibuf" LOC = IBUFDS_GTE2_X0Y3;

这样的配置就可以了吗?还需要添加或修改什么代码吗?

参考网上的一些类似问题:如http://www.newsmth.net/nForum/#!article/FPGATech/45472?au=biscuit123。

我们推断,这里约束了buffer "refclk_ibuf"的位置,即同时将sys_clk_p和sys_clk_n的LOC确定了。因为在顶层文件xilinx_pcie_2_1_rport_7x中例化了

IBUFDS_GTE2 refclk_ibuf (.O(sys_clk), .ODIV2(), .I(sys_clk_p), .CEB(1'b0), .IB(sys_clk_n));

ucf中的上述约束即为将refclk_ibuf确定为IBUFDS_GTE2_X0Y3,而这个buffer的位置是固定的,因而输入端的sys_clk_p和sys_clk_n也就确定了,不需要再进行约束。

上述分析纯属个人推断,如有误,还请留言指出。

同时在综合之后,打开PlanAhead以查看管脚映射:

发现sys_clk_p的管脚位置确实已经配置。并且修改IBUFDS_GTE2_X0Y3的值,综合后得到的管脚映射位置不一样,如下:

FPGA管脚号     Bank            时钟来源位置

IBUFDS_GTE2_X0Y0:sys_clk_p       R8                                         未连接

IBUFDS_GTE2_X0Y1:sys_clk_p       V8                    115               PCIE_8LANE_EDGE

IBUFDS_GTE2_X0Y2:sys_clk_p       L8                    116               SI5324C-C-GM

IBUFDS_GTE2_X0Y3:sys_clk_p       N8                   116               FMC接口

IBUFDS_GTE2_X0Y4:sys_clk_p       G8                   117

IBUFDS_GTE2_X0Y5:sys_clk_p       J8                    117               FPGA管脚J16

IBUFDS_GTE2_X0Y6:sys_clk_p       C8                   117               HPC接口

IBUFDS_GTE2_X0Y7:sys_clk_p       E8

具体连接位置可参照开发板的原理图。

在这里我们应该写成INST "refclk_ibuf" LOC = IBUFDS_GTE2_X0Y1;

这样两个输入时钟信号将接到金手指上,其输入来源是PCIe插槽转接板上的100MHz时钟。

具体PCIe接口信息可参见博文:http://blog.csdn.net/michaelcao1980/article/details/42778405

2.PCIe和NVMe的初始化完成,CSTS.RDY信号拉高,按照协议要求,我们想发送第一个指令:Identify。按照要求,我们修改了Admin SQ Doorbell寄存器。想要等待SSD给主机返回 读TLP包,但是在PCIe核的数据返回接口并没有抓到数据,过了一段时间之后,收到一个MXI中断包。

这是什么问题?

使用Xilinx K7 KC705开发板调试PCIe中的问题【持续更新】相关推荐

  1. Xilinx 黑金ZYNQ开发板AX7020,利用VIVADO进行FPGA程序烧录

    参考黑金的AX7020开发板资料中的SDK实验篇PDF教程文件. (1)创建工程,步骤与SDK实验篇中的步骤一致:配置PS端时应该可以只选需要的加载方式,如QSPI或者SD,我目前是两种都勾选了,但是 ...

  2. iTOP3A5000开发板多路PCIE、SATA、USB3.0等

    iTOP3A5000开发板多路PCIE.SATA.USB3.0等 桥片:支持PCIE3.0.USB3.0.SATA3.0.显示接口2路.HDMI和1路VGA.可直接连显示器,另外内置一个网络PHY,片 ...

  3. Vivado将程序固化到Xilinx的FPGA开发板的flash芯片中

    Vivado将程序固化到Xilinx的FPGA开发板 准备工作 开始 准备.mcs文件 在HardWare Manager界面操作 固化程序到flash中 对开发板进行操作 另外 准备工作 Vivad ...

  4. PHP —— 一份前端开发工程师够用的PHP知识点(持续更新)

    PHP -- 一份前端开发工程师够用的PHP知识点(持续更新) <工欲善其事,必先利其器> 本文只是记录本小菜鸡在工作中遇到的知识点,欢迎大家随时补充! 一.初识 PHP 首先,PHP 它 ...

  5. 总结Java开发面试常问的问题,持续更新中~

    数据库 mysql redis java java虚拟机 java并发 java容器 java基础 计算机网络 数据结构与算法 操作系统/Linux 设计模式 场景题和设计题 流行框架 数据库 mys ...

  6. 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战—持续更新(第三节:鸿蒙的技术特征)

    第三节:鸿蒙的技术特征 每篇内容都有视频讲解,可直接点击观看+关注,持续更新中 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战-持续更新(第二节:鸿蒙OS系统分布式操作) 硬件互助 ...

  7. 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战—持续更新(第二节:鸿蒙OS系统分布式操作)

    老罗带你了解鸿蒙,专注于移动端领域技术的研发和推广,助力鸿蒙在国内技术推广和普及. 每篇内容都有视频讲解,可直接点击观看+关注,持续更新中 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程 ...

  8. 信迈TI OMAP-L138(定点/浮点DSP C674x+ARM9) + Xilinx Spartan-6 FPGA开发板规格书

    1 评估板简介 基于TI OMAP-L138(定点/浮点 DSP C674x+ARM9)+ Xilinx Spartan-6 FPGA处理器: OMAP-L138 FPGA 通过uPP.EMIFA.I ...

  9. vivado2018.3创建一个流水灯(基于创龙k7核心开发板)

    vivado新建工程&流水灯 导言 之前一直用Quartus学习FPGA,第一次接触Xilinx开发工具vivado,看了一些新建工程教程之后,记录一下自己新建工程的过程,作为备忘,也作为初学 ...

最新文章

  1. C# Winform 启动和停止进程
  2. conflicts with existing, non-compatible bean definition of same name and class
  3. 第1章 故障处理方法
  4. 新项目废弃oracle,oracle 12.2数据库新增参数和废弃参数
  5. 【Verilog语法】分支延迟槽
  6. Fibonacci Sum HDU - 6755【2020 Multi-University Training Contest 1】斐波那契数列变形+二项式定理
  7. 【Kafka】Could not find or load main class kafka.tools.ConsumerOffsetChecker
  8. 元素内容必须由格式正确的字符数据或标记组成_Blockly Fields积木表单元素
  9. C 语言常见 API(fprintf、fputs、fprintf)
  10. 初级计算机处理员试题及答案,计算机软考信息技术处理员模拟试题及答案(1)[5]...
  11. Snagit 2021\2022
  12. cdlinux教程wpa2无线网络密码破解
  13. leetcode 1818 绝对差值和
  14. SDL —— SDL_mixer
  15. 智能家居无创新,不智能
  16. 模块Datetime
  17. wirehark数据分析与取证attack.pcap
  18. Vertica 常用命令
  19. VLAN vs. VXLAN:云时代下各施所长
  20. 深度优先搜索—走迷宫

热门文章

  1. 20172305 2017-2018-2 《程序设计与数据结构》实验二报告
  2. 小程序setdata优化_关于小程序setData的写法,如何减少setData次数?优化程序性能...
  3. iOS In-App Purchase 内购之创建内购产品
  4. 百度地图使用的详细教程
  5. 【愚公系列】2022年02月 微信小程序-Component组件的扩展
  6. 你还在问我Bean的生命周期?带你看看一个Spring Bean从诞生到逝去的九次人生转折!
  7. 微信公众平台第三方平台全网发布 java
  8. Vue项目中将时间格式成xxxx-xx-xx
  9. 季逸超:90后IT少年的“盖茨梦”
  10. VBA-使用msgbox对话框