开发板: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中断包。

这是什么问题?

转载:https://blog.csdn.net/ssbls/article/details/55272114

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

  1. KC705开发板关于MIG的配置

    KC705开发板关于MIG的配置

  2. Python开发【第二十三篇】:持续更新中...

    Python开发[第二十三篇]:持续更新中...

  3. 下载uboot的调试版本到开发板的sdram中运行

    开发环境:开发板:FriendlyARM Tiny6410 主机:CentOS release 6.4 (Final) 开发板与主机通过串口线连接 调试用的uboot源码为开发板光盘提供的u-boot ...

  4. 织女星开发板调试器升级为Jlink固件

    前言 为了能使用板载的FreeLink调试器来调试RISC-V内核,我们需要把默认的CMSIC-DAP固件,升级为JLink固件,固件升级之后,通过选择使用不同的驱动程序,来支持ARM内核还是RISC ...

  5. 使用LPCXpresso开发板调试外部的电路板

    MCUXpresso IDE开发环境有一个主要的功能:支持LPC-Link2仿真调试器.通过这种方式,对于基于ARM的电路板,我可以使用这个功能强大的仿真调试器来调试.在NXP的众多LPCXpress ...

  6. 【单片机】CH32V103v8t6开发板调试笔记

    一.开发板样式和资源 找官网的商务申请了一块开发板,打算试一下串口打印程序测试,发现网上关于这个板子的相关资料特别少,为方便后来人,就顺便记录一下,板子资源如下图所示. 板子芯片的引脚排布图 二.使用 ...

  7. 【AT91SAM3S】英蓓特EM-SAM3S开发板例子工程中的启动文件分析

    手上一块英倍特的EM-SAM3S开发板,拿到已经有一个月了.本来是做uLoong活动使用的板子,可当初由于不熟悉这个芯片,使用了STM32F4当作了替代.最近准备抽点时间折腾下这个板子. 这个板子的资 ...

  8. 关于LED 流水灯的软件调试方法(非开发板调试)

    因为: 硬件 norflash 有寿命,所以尽量少用,而且自己也不会把 程序在 KEIL中从SDRAM 中调试,不会设置.所以采取软件虚拟的方法调试. 主要修改一下几部分: 1.  ledcircle ...

  9. Hi3519V101+IMX274开发板调试经验

    1.uboot没换 2.内核网络不对,其它的正常, sudo apt-get install libncurses5-dev sudo apt-get install u-boot-tools 3.根 ...

随机推荐

  1. Java通过在主循环中判断Boolean来停止线程

    Java代码: package Threads; /** * Created by Frank */ public class StopBoolean extends Thread { // 确保变化 ...

  2. 11、java5线程池之异步任务CompletionService

    JDK文档描述: public interface CompletionService<V> 将生产新的异步任务与使用已完成任务的结果分离开来的服务.生产者 submit 执行的任务.使用 ...

  3. 要想找出包含“w”的名字

    要想找出包含“w”的名字:mysql> SELECT * FROM pet WHERE name LIKE '%w%'“_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  4. 【转】TestNG 与 Junit的比较

    转自 http://www.blogjava.net/fanscial/archive/2005/12/14/23780.html 1.         JDK 5 Annotations (JDK ...

  5. 纪念品分组(NOIP2007)

    纪念品分组(NOIP2007)[题目描述] 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作. 为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把 购来的纪念品根据价格进行分组,但每组最多只 ...

  6. Ubuntu x86-64汇编(2)

    开发工具链 汇编编译器: yasm连接器: ld载入工具: os自带Debug工具:  ddd yasm安装 .tar.gz cd yasm-/ ./configure --prefix=/opt/y ...

  7. β particle, α particle, γ ray, ionization chamber

    Alpha particles consist of two protons and two neutrons bound together into a particle identical to ...

  8. Receiver not registered.

    1. 在MessageListActivity中出现异常:Receiver not registered. 07-16 11:15:47.881: E/AndroidRuntime(32361): F ...

  9. How to Land your Dream Job

           今天在code school上面看到一个外国人写的文章,写的很棒,瞧一下外国人的思维和我们有什么不同?分享给所有的朋友       You know how some things ar ...

  10. ios中布局(推荐一)

    - (void)viewDidLoad { [super viewDidLoad]; NSArray *data=@[@"标题一",@"标题二",@" ...