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…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
