KC705开发板——MGT IBERT测试记录
本文介绍使用KC705开发板进行MGT的IBERT测试。
KC705开发板
KC705开发板的图片如下图所示。FPGA芯片型号为XC7K325T-2FFG900C。
MGT
MGT是 Multi-Gigabit Transceiver的缩写,是Multi-Gigabit Serializer/Deserializer (SERDES)的别称。MGT包含GTP、GTX、GTH、GTZ、GTY、GTM。在Kintex-7系列FPGA只有GTX。
根据UG810中介绍,KC705上引出的16个GTX收发器分别是
- Eight of the GTX transceivers are wired to the PCI Express® x8 endpoint edge connector (P1) fingers
- Four of the GTX transceivers are wired to the FMC HPC connector (J22)
- One GTX is wired to the FMC LPC connector (J2)
- One GTX is wired to SMA connectors (RX: J17, J18 TX: J19, J20)
- One GTX is wired to the SFP/SFP+ Module connector (P5)
- One GTX is used for the SGMII connection to the Ethernet PHY (U37)
7系列FPGA中的GTX收发器分为四个通道,称为Quad。某Quad的参考时钟可以来源于上一个Quad或下一个Quad。KC705板上有4个GTX Quad,具体连接如下表所示:
Transceiver Bank | Associated Net Name | Connections |
---|---|---|
MGT_BANK_115 | GTXE2_CHANNEL_X0Y0 | PCIe7 |
GTXE2_CHANNEL_X0Y1 | PCIe6 | |
GTXE2_CHANNEL_X0Y2 | PCIe5 | |
GTXE2_CHANNEL_X0Y3 | PCIe4 | |
MGTREFCLK0 | N/C | |
MGTREFCLK1 | PCIe_CLK | |
MGT_BANK_116 | GTXE2_CHANNEL_X0Y4 | PCIe3 |
GTXE2_CHANNEL_X0Y5 | PCIe2 | |
GTXE2_CHANNEL_X0Y6 | PCIe1 | |
GTXE2_CHANNEL_X0Y7 | PCIe0 | |
MGTREFCLK0 | Si5326 | |
MGTREFCLK1 | FMC LPC GBT_CLK0 | |
MGT_BANK_117 | GTXE2_CHANNEL_X0Y8 | SMA |
GTXE2_CHANNEL_X0Y9 | SGMII | |
GTXE2_CHANNEL_X0Y10 | SFP/SFP+ | |
GTXE2_CHANNEL_X0Y11 | FMC LPC DP0 | |
MGTREFCLK0 | SGMII_CLK | |
MGTREFCLK1 | SMA_CLK | |
MGT_BANK_118 | GTXE2_CHANNEL_X0Y12 | FMC HPC DP0 |
GTXE2_CHANNEL_X0Y13 | FMC HPC DP1 | |
GTXE2_CHANNEL_X0Y14 | FMC HPC DP2 | |
GTXE2_CHANNEL_X0Y15 | FMC HPC DP3 | |
MGTREFCLK0 | FMC HPC GBT_CLK0 | |
MGTREFCLK1 | FMC HPC GBT_CLK1 |
时钟
KC705板载的时钟源有以下几个
1. System Clock Source
系统时钟源为2.5V LVDS差分200 MHz振荡器,SYSCLK_P——AD12,SYSCLK_N——AD11。
2. Programmable User Clock Source
可编程用户时钟源为低抖动3.3V差分振荡器Si570,USER_CLOCK_P——K28, USER_CLOCK_N——K29。上电默认输出频率为156.250 MHz,可通过I2C接口在10MHz~810 MHz范围内调整输出频率。
3. User SMA Clock Input
连接关系:
USER_SMA_CLOCK_P ——L25,USER_SMA_CLOCK_N——K25。
4. GTX SMA Clock Input
连接关系:
SMA_MGT_REFCLK_P——J8,SMA_REFCLK_N——J7,其连接至Bank 117 MGT参考时钟1。
5. Jitter Attenuated Clock
连接关系:
REC_CLOCK_C_P——W27,REC_CLOCK_C_N——W28。
SI5326_OUT_C_P——L8,SI5326_OUT_C_N——L7,连接至Bank 116 MGT参考时钟0。
SI5326_RST——SI5326_RST_LS——AE20。
6. SGMII GTX Transceiver Clock
ICS844021I为一个倍频系数固定为5的芯片,故在此处其输出为125 MHz LVDS差分时钟。
连接关系:SGMIICLK_Q0_P——G8,SGMIICLK_Q0_N——G7,连接至Bank 117 MGT参考时钟0。
IBERT IP核
Protocol Definition
在Protocol为Custom1时,线速率LineRate、数据位宽DataWidth、参考时钟频率Refclk可自行指定。Quad Count取决于待测试的GTX是否位于同一个Bank。勾选Quad PLL则该Quad内的GTX共用一个QPLL,不勾选则不同GTX使用不同的CPLL。QPLL和CPLL的关系示意图如下。
Protocol Selection
根据待测试的GT所位于的Bank号设置Protocol Selected。参考时钟Refclk可以来自于本Quad或上一个Quad或下一个Quad的参考时钟输入。在前面勾选Quad PLL的情况下,TXUSERCLK Source可以任意设置。
Clock Settings
系统时钟System Clock可以选择前面所设置的GT参考时钟,也可以选择外部参考时钟。
生成IP核示例工程
右击IP核后,点击Open IP Example Design生成工程。
注意事项
生成IP核示例工程后,查看综合后的Schematic和I/O Ports确认。
此时修改该工程中的IBERT IP核的GT参考时钟和系统时钟时,引脚分配是不会发生改变的。
SMA回环测试
根据前面的介绍,接下来进行KC705的GT测试。KC705上的J17和J66、J19和J20分别连接了Quad 117的GT的接收通道和发送通道。使用SMA连接线将J17与J19相连,J66与J20相连。
生成并下载Bitstream,点击Auto-detect links,即可看到测试结果。
链路测试所用的回环方式一共有4种,分别是
该4种方式在通信链路中对应的位置示意图如下。
点击Serial I/O Scans中的Create Scan创建扫描。
扫描后得到如下结果。
SFP+回环测试
使用如图所示的回环器,插到KC705开发板上的SFP/SFP+连接器上。
注意到SPF/SFP+所连接的GT收发器是X0Y10。
Transceiver Bank | Associated Net Name | Connections |
---|---|---|
MGT_BANK_117 | GTXE2_CHANNEL_X0Y8 | SMA |
GTXE2_CHANNEL_X0Y9 | SGMII | |
GTXE2_CHANNEL_X0Y10 | SFP/SFP+ | |
GTXE2_CHANNEL_X0Y11 | FMC LPC DP0 | |
MGTREFCLK0 | SGMII_CLK | |
MGTREFCLK1 | SMA_CLK |
再做一个MGT参考时钟的实验。方法是从其他博主那里学到的。
即是将SI570默认输出的156.250MHz的差分时钟输入(引脚为K28和K29);
通过USER_SMA_CLOCK(引脚为L25和K25,SMA头为J11和J12)输出;
然后通过SMA连接线接到SMA_MGT_REFCLK(Bank 117的参考时钟1,引脚为J8和J7,SMA头为J16和J15)。
此时需要更改IBERT IP核中GTX的参考时钟频率和来源,同时该SFP+回环器最高支持10 Gbps,于是我们也将线速率设置为10 Gbps。具体设置如下图所示。
接下来,重新生成IBERT IP核示例工程。
在示例工程的顶层文件中,添加如下代码。
input USER_CLOCK_P,
input USER_CLOCK_N,
output USER_SMA_CLOCK_P,
output USER_SMA_CLOCK_N,wire user_clock;
IBUFGDS u_user_clock(.I(USER_CLOCK_P),.IB(USER_CLOCK_N),.O(user_clock));wire user_clock_bufg;
BUFG u_BUFG_sysclk (.O(user_clock_bufg),.I(user_clock)
);OBUFDS u_OBUFDS_sysclk (.O (USER_SMA_CLOCK_P), .OB(USER_SMA_CLOCK_N), .I (user_clock_bufg)
);
同时在xdc文件中,添加时钟约束和引脚约束。
create_clock -name user_clock -period 6.4 [get_ports USER_CLOCK_P]
create_clock -name user_sma_clock -period 6.4 [get_ports USER_SMA_CLOCK_P]
set_property PACKAGE_PIN K28 [get_ports USER_CLOCK_P]
set_property IOSTANDARD LVDS_25 [get_ports USER_CLOCK_P]
set_property PACKAGE_PIN L25 [get_ports USER_SMA_CLOCK_P]
set_property IOSTANDARD LVDS_25 [get_ports USER_SMA_CLOCK_P]
综合后得到额外的RTL电路为。
生成并下载Bitstream,链路正常锁定,得到链路测试结果如下。
眼图扫描结果如下。
参考资料
- kc705_Schematic_xtp132_rev1_1.pdf
- xtp200-kc705-ibert-c-2014-3.pdf
- ug810_KC705_Eval_Bd.pdf
- ug811_ChipScopeUsingIBERTwithAnalyzer.pdf
相关文章:

KC705开发板——MGT IBERT测试记录
本文介绍使用KC705开发板进行MGT的IBERT测试。 KC705开发板 KC705开发板的图片如下图所示。FPGA芯片型号为XC7K325T-2FFG900C。 MGT MGT是 Multi-Gigabit Transceiver的缩写,是Multi-Gigabit Serializer/Deserializer (SERDES)的别称。MGT包含GTP、GTX、GTH、G…...
前端代码优化散记
把import Button from xxx 的引入方式,变成import {Button} from xxx 的方式引入,以利于按需打包。原生监听事件、定时器等,必须在componentWillUnmount中清除,大型项目会发生内存泄露,极度影响性能。使用PureComponen…...
HTML <map> 标签的使用
map标签的用途:是与img标签绑定使用的,常被用来赋予给客户端图像某处区域特殊的含义,点击该区域可跳转到新的文档。 编写格式: <img src"图片" border"0" usemap"#planetmap" alt"Planets…...

stable diffusion实践操作-大模型介绍
本文专门开一节写大模型相关的内容,在看之前,可以同步关注: stable diffusion实践操作 模型下载网站 国内的是:https://www.liblibai.com 国外的是:https://civitai.com(科学上网) 一、发展历…...

W5500-EVB-PICO进行MQTT连接订阅发布教程(十二)
前言 上一章我们用开发板通过SNTP协议获取网络协议,本章我们介绍一下开发板通过配置MQTT连接到服务器上,并且订阅和发布消息。 什么是MQTT? MQTT是一种轻量级的消息传输协议,旨在物联网(IoT)应用中实现设备…...

90、00后严选出的数据可视化工具:奥威BI工具
90、00后主打一个巧用工具,绝不低效率上班,因此当擅长大数据智能可视化分析的BI数据可视化工具出现后,自然而然地就成了90、00后职场人常用的数据可视化工具。 奥威BI工具三大特点,让职场人眼前一亮! 1、零编程&…...
删除maven中出现.lastUpdate结尾的文件
出现 .lastupdate 结尾的文件的原因:由于网络原因没有将maven的依赖下载完整. 解决方案: 1) 删除所有以 .lastupdate 结尾的文件 A) 1.切换到maven本地仓库 B)2.在当前目录打开cmd命令行(shift右键-->在此处打开命令窗口 或 直接在当前文件路径上敲cmd 或 右键-->…...
Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
webpack打包js文件中不允许混用import和module.exports。 方式①:babel.config.js添加sourceType: {"presets": [...],"sourceType": "unambiguous" }方式②:安装babel-plugin-transform-es2015-modules-commonjs npm …...
Dockerfile中编译、打包、部署spring boot项目
1、Dockerfile 1.1、什么是Dockerfile Dockerfile是自动构建docker镜像的配置文件,将镜像构建过程通过指令的方式定义在Dockerfile中。配合docker build命令行可以实现自动化的Docker镜像的构建。 1.2、Dockerfile语法解析 我们在学习一门语言或文档语法的时候&am…...

微型计算机原理知识点总结(一)
目录 一.微型计算机 二.微型计算机系统 1.微型计算机硬件系统 冯诺依曼体系结构 总线 (1)微处理器(CPU) 运算器 控制器 内部寄存器 (2)存储器 1.基本概念 2.内存的操作 3.内存的分类 (3)I/O接口与输入/输出设备 2.微型计算机软件系统 (1)系统软件 操作系统 …...
【postgresql 基础入门】psql客户端的使用方法
psql 客户端使用 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤…...
QTcpSocket发送数据方法
文章目录 一、简介二、write(const char *, qint64)三、isValid() 一、简介 本文主要记录QTcpSocket的write(const char *, qint64)和isValid()。 二、write(const char *, qint64) 概念:在QTcpSocket中,使用write(char* data, int size)函数将指定长…...

select 语句执行顺序
sql 样例 select t_students.name as 姓名, sum(case when b.cname语文 then c.sc_val else 0 end) As 语文 ,sum(case when b.cname数学 then c.sc_val else 0 end) As 数学,sum(case when b.cname英语 then c.sc_val else 0 end) As 英语, From t_students a, t_corses b, t…...
PMD 检查java代码:避免将内部数组直接返回给调用者(MethodReturnsInternalArray)
https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_bestpractices.html#methodreturnsinternalarray 直接将内部数组暴露给调用者破坏了封装性,因为调用者可能在拥有内部数组的对象外部更改或者删除数组的元素。返回内部数组的拷贝会更加安全。 例如&…...

ActiveMQ配置初探
文章目录 配置wrapper相关配置wrapper是干什么用的MQ的运行内存修改【需修改】修改内容题外话 wrapper.log配置【需修改】引起的问题优化方式 activemq.xml相关配置官网介绍配置管理后台的认证授权【建议修改】配置broker【根据自己需求更改】配置允许jmx监控关闭消息通知持久化…...
【官方中文文档】Mybatis-Spring #示例代码
示例代码 提示 查看 JPetstore 6 demo 了解如何在完整的 Web 应用服务器上使用 Spring。 您可以在 MyBatis-Spring 的 代码仓库 中查看示例代码: 所有示例都能在 JUnit 5 下运行。 示例代码演示了事务服务从数据访问层获取域对象的典型设计。 FooService.java …...

python二级例题
请编写程序,生成随机密码。具体要求如下: (1)使用 rand…...

【java】【项目实战】[外卖九]项目优化(缓存)
目录 一、问题说明 二、环境搭建 2.1 Git管理代码 2.1.1 创建本地仓库 2.1.2 创建远程仓库 2.1.3 创建分支--》推送到远程仓库 2.2 maven坐标 2.3 配置文件application.yml 2.4 配置类RedisConfig 三、缓存短信验证码 3.1 实现思路 3.2 代码改造 3.2.1 UserContro…...
Scala集合常用函数与集合计算简单函数,高级计算函数Map和Reduce等
Scala集合常用函数与集合计算简单函数 1.Scala集合常用函数 基本属性和常用操作 1.常用函数: (1) 获取集合长度(2) 获取集合大小(3) 循环遍历(4) 迭代器(…...

You must install at least one postgresql-client-<version> package
使用主机上的映射端口来连接到 PostgreSQL 数据库。例如,使用以下命令连接到数据库: psql -h localhost -p 5432 -U postgres出现下面的问题: 分析: 如果您在运行 psql 命令时遇到错误消息 You must install at least one pos…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...