使用Xilinx K7 KC705开发板调试PCIe中的问题【持续更新】
开发板: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中的问题【持续更新】的更多相关文章
- KC705开发板关于MIG的配置
KC705开发板关于MIG的配置
- Python开发【第二十三篇】:持续更新中...
Python开发[第二十三篇]:持续更新中...
- 下载uboot的调试版本到开发板的sdram中运行
开发环境:开发板:FriendlyARM Tiny6410 主机:CentOS release 6.4 (Final) 开发板与主机通过串口线连接 调试用的uboot源码为开发板光盘提供的u-boot ...
- 织女星开发板调试器升级为Jlink固件
前言 为了能使用板载的FreeLink调试器来调试RISC-V内核,我们需要把默认的CMSIC-DAP固件,升级为JLink固件,固件升级之后,通过选择使用不同的驱动程序,来支持ARM内核还是RISC ...
- 使用LPCXpresso开发板调试外部的电路板
MCUXpresso IDE开发环境有一个主要的功能:支持LPC-Link2仿真调试器.通过这种方式,对于基于ARM的电路板,我可以使用这个功能强大的仿真调试器来调试.在NXP的众多LPCXpress ...
- 【单片机】CH32V103v8t6开发板调试笔记
一.开发板样式和资源 找官网的商务申请了一块开发板,打算试一下串口打印程序测试,发现网上关于这个板子的相关资料特别少,为方便后来人,就顺便记录一下,板子资源如下图所示. 板子芯片的引脚排布图 二.使用 ...
- 【AT91SAM3S】英蓓特EM-SAM3S开发板例子工程中的启动文件分析
手上一块英倍特的EM-SAM3S开发板,拿到已经有一个月了.本来是做uLoong活动使用的板子,可当初由于不熟悉这个芯片,使用了STM32F4当作了替代.最近准备抽点时间折腾下这个板子. 这个板子的资 ...
- 关于LED 流水灯的软件调试方法(非开发板调试)
因为: 硬件 norflash 有寿命,所以尽量少用,而且自己也不会把 程序在 KEIL中从SDRAM 中调试,不会设置.所以采取软件虚拟的方法调试. 主要修改一下几部分: 1. ledcircle ...
- Hi3519V101+IMX274开发板调试经验
1.uboot没换 2.内核网络不对,其它的正常, sudo apt-get install libncurses5-dev sudo apt-get install u-boot-tools 3.根 ...
随机推荐
- Vivaldi浏览器媲美Chrome
Vivaldi跨平台的浏览器,很好的兼容性...基本上跟Chrome一个层次的... 好的东西,用一次就明白!好酒,酒香巷子深... Download: https://vivaldi.com/dow ...
- 高效编写微信小程序
原文:https://isux.tencent.com/high-performance-wechat-app-development.html 前言 微信小程序是一个工程,就和盖房子一样,打好了地基 ...
- 自制小工具含源码——SPTC上海交通卡余额查询
说明 需求 开发 其他
- Golang 用go-sql-driver 调用MySQL存储过程时的问题排查
今天在用go-sql-driver做MySQL driver调用MySQL的存储过程时遇到一个罕见的报错.本文对这个错误及其解做一个简单的总结. 1 问题描述 按照go中sql包提供的接口,应用层代码 ...
- 双链表实现Queue
算法导论第10章的东西,感觉用双链表真心简单,就是有点浪费空间,但是时间复杂度O(1): #include <stdio.h> struct LinkNode { LinkNode(): ...
- Nginx 504 Gateway Time-out问题解决
今天站群VPS上面的所有站出现的 504 网关错误,现在小色还是菜菜的,斗胆解决下.在网上面搜解决方案,尝试设置ngxin的fast-cgi_buffers 和重启ngxin来解决,但是错误依旧.怀疑 ...
- git使一个非仓库型的工程可以推送
git config receive.denycurrentbranch false
- Access数据库中日期时间类型的时间段查询
例: select ID,预设点,备注 from 预设点派车预警 where ( 到达时间>=#2013-01-01 12:12:12# and 到达时间<=#2016-01-24 2 ...
- xtrabackup-工作原理
数据备份 xtrabackup是基于innodb的crash恢复功能之上的.它会拷贝innodb数据文件(这会导致数据不一致的),然后对文件执行crash恢复使其一致. 因为innodb维护了redo ...
- 如何控制android系统中NavigationBar 的显示与隐藏
我们使用的大多数android手机上的Home键,返回键以及menu键都是实体触摸感应按键.如果你用Google的Nexus4或Nexus5话,你会发现它们并没有实体按键或触摸感应按键,取而代之的是在 ...