高端Zynq ultrascale+使用GTH回环测试 提供2套工程源码和技术支持
这目录
- 1、前言
- 2、GTH 高速收发器介绍
- GTH 高速收发器结构
- 参考时钟的选择和分配
- GTH 发送端
- GTH 接收端
- 3、vivado工程详解
- 4、上板调试验证
- 5、福利:工程代码的获取
1、前言
Xilinx系列FPGA内置高速串行收发器,配有可配置的IP方便用户调用,按照速度等级和使用器件分别如下:
GTP:Artix7使用,最大线速率6.6Gbps,之前写过一篇GTP实现板间视频传输的文章,参考链接:GTP
GTX:Kintex7使用,最大线速率12.5Gbps,之前写过一篇GTX实现板间视频传输的文章,参考链接:GTX
GTH:ultrascale+系列的 GTH 收发器最高支持 16.3Gbps,本例程使用的器件是xczu7ev-ffvc1156-2-i;
本文详细描述了高端FPGA对GTH的回环测试的实现设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速信号传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
本设计提供2套工程源码:
工程1:GTH仿真工程;
工程1:GTH回环测试工程;
2、GTH 高速收发器介绍
GTH 高速收发器结构
在 Ultrascale/Ultrascale+架构系列的 FPGA 中,GTH 高速收发器通常使用 Quad 来划分,一个 Quad 由四个GTHE3/4_CHANNEL 原语和一个 GTHE3/4_COMMON 原语组成。每个 GTHE3/4_COMMON 中包含两个 LC-tank pll(QPLL0 和 QPLL1)。只有在应用程序中使用 QPLL 时,才需要实例化 GTHE3/4_COMMON。

每个 GTHE3/4_CHANNEL 由一个 channel PLL(CPLL)、一个 transmitter,和一个 receiver 组成。一个参考时钟可以直接连接到一个 GTHE3/4_CHANNEL 原语,而不需要实例化 GTHE3/4_COMMON。

GTH 收发器的发送端和接收端功能是相互独立,都是由 Physical Media Attachment(物理媒介适配PMA)和Physical Coding Sublayer(物理编码子层 PCS)组成。PMA 内部集成了串并转换(PISO)、预加重、接收均衡、时钟发生器和时钟恢复等;PCS 内部集成了 8b/10b 编解码、弹性缓冲区、通道绑定和时钟修正等。

参考时钟的选择和分配
UltraScale 器件中的 GTH 收发器提供了不同的参考时钟输入选项。参考时钟选择架构支持 QPLL0、QLPLL1 和CPLL。从架构上讲,每个 Quad 包含四个 GTHE3/4_CHANNEL 原语,一个 GTHE3/4_COMMON 原语,两个专用的外部参考时钟引脚对,以及专用的参考时钟路由。如果使用到了高性能 QPLL,则必须实例化 GTHE3/4_COMMON,如下面 GTHE3/4_COMMON 时钟多路复用器结构的详细视图所示,在一个 Quad 中有 6 个参考时钟引脚对,两个本地参考时钟引脚对:GTREFCLK0或GTREFCLK1,两个参考时钟引脚对来自上面的两个Quads:GTSOUTHREFCLK0或 GTSOUTHREFCLK1,两个参考时钟引脚对来自下面的两个 Quads:GTNORTHREFCLK0 或 GTNORTHREFCLK1。

类似的,下面是 GTHE3/4_CHANNEL 原语中的参考时钟多路复用器结构的详细视图。
GTH 发送端
结合本节课的历程,来看一下 transmitter 端工作流程,并行数据从设备逻辑给到 TX 接口,首先进入物理编码子层(PCS),经过 8B/10B 编码器编码之后,进入一个发送缓存区 Phase Adjust FIFO。如下所示,GTH 收发器TX 数 据 路 径 有 两 个 用 于 PCS 的 内 部 并 行 时 钟 域 :PMA 并 行 时 钟 域 (XCLK) 和 PCS 并 行 时 钟 域(TXUSRCLK),如果要传输数据,XCLK 速率必须与 TXUSRCLK 速率匹配,并且必须解决两个时钟 域 之 间 的 相 位 差 。 GTH 发 送 端 提 供 了 一 个 TX buffer 和 一 个 TX 相 位 校 准 电 路 , 以 解 决 XCLK 和TXUSRCLK 域之间的相位差。推荐默认使用 TX Buffer,易于操作。如果对低延迟有严格要求则须旁路 TX buffer。当 TX buffer 被旁路时,使用 TX 相位校准电路去调整 XCLK 和 TXUSRCLK 域之间的相位差,以便将数据从 PCS 传输到 PISO。最后通过高速 Serdes 进行并串转换(PISO),经预/后加重,输出TX 驱动程序作为高速串行数据。

GTH 接收端
接下来看一下 Receiver 端工作流程,RX 接收到的信号会首先经过 RX 均衡器,均衡器的主要作用是用于补偿信号的高频损失, LPM 和 DFE 分别是两种不同模式的均衡器。

RX 的时钟数据恢复电路是图上图中的 RX CDR 模块,因为 GTH 传输不带随路时钟,因此在接收端必须去实现时钟恢复和数据恢复,时钟数据恢复电路下图所示:

GTHE3/4_CHANNEL 收发信机采用相位旋转 CDR 架构。传入数据首先经过接收机均衡阶段。均衡数据由边缘和数据采样器捕获。数据采样器捕获的数据被提供给 CDR 状态机和下游收发器块。CDR 状态机使用来自边缘和数据采样器的数据来确定传入数据流的相位,并控制相位插值器(pi)。边缘采样器的相位被锁定在数据流的过渡区域,而数据采样器的相位被定位在数据眼的中间,CPLL 或 QPLL 为相位插补器提供基准时钟。相位插补器反过来产生良好的、均匀间隔的采样相位,以允许 CDR 状态机有良好的相位控制。
数据经过 CDR 之后进行串并转换,这里的 Polarity 是用来进行极性控制的,如果传入的数据是 PRBS,那么接下来会使用内嵌的 PRBS 检查器进行 check,xilinx 官方提供了四种不同的伪随机序列生成器可供用户选择,PRBS checker 用来测试信号的完整性。如果传入的是 8b10b 编码后的用户数据,那么接下来就会对传出的数据进行边界对齐和 8b10b 的解码。
最后是 RX elastic buffer 这个部分,如上图所示,GTH 收发器 RX 数据路径有两个用于 PCS 的内部并行时钟域:PMA 并行时钟域(XCLK)和 PCS 并行时钟域(RXUSRCLK),为了接收数据,PMA 并行速率必须足够接近
RXUSRCLK 速率,并且必须解决两个时钟域之间的相位差。GTH 收发器包含一个 RX elastic buffer,以解决 XCLK和 RXUSRCLK 域之间的差异。当 RX elastic buffer 被旁路时,RX 相位校准电路用于调整 SIPO 并行时钟域和 RXXCLK 域之间的相位差,以实现从 SIPO 到 PCS 的可靠数据传输,最后输出给 RX 外部接口。要特别注意一下的是RX elastic buffer 还具有时钟纠正和通道绑定功能。
3、vivado工程详解
开发板:Zynq ultrascale+xczu7ev-ffvc1156-2-i;
开发环境:vivado2021.1,2021.1以上版本均可打开,升级一下IP即可使用;
输入/输出:SFP接口的GTX对插回环;
首先创建一个工程,添加 UltraScale FPGAs Transceivers Wizard IP;

这 里 的 预 设 配 置 选 择 GTH-aurora_8B10B 即 可 。 串 行 收 发 器 类 型 取 决 于 使 用 的 具 体 设 备 , 以MZU04A 板卡为例,它的 SFP+仅支持 GTH 类型。

接收端边界对齐和 comma 检测:
工程代码架构如下:

4、上板调试验证

编译完工程之后下载程序,验证光纤接口 8b10b 回环实验。下载完成后查看 ILA 的波形,当检测模块中的
prbs_any_chk_error_int 信号一直为 0,说明光纤接口 8b10b 环回实验下载验证成功。

5、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:


相关文章:
高端Zynq ultrascale+使用GTH回环测试 提供2套工程源码和技术支持
这目录1、前言2、GTH 高速收发器介绍GTH 高速收发器结构参考时钟的选择和分配GTH 发送端GTH 接收端3、vivado工程详解4、上板调试验证5、福利:工程代码的获取1、前言 Xilinx系列FPGA内置高速串行收发器,配有可配置的IP方便用户调用,按照速度…...
入门(Createing a scene)
这一部分将对three.js来做一个简要的介绍 首先将开始搭建一个场景,其中包含一个正在旋转的立方体 梦开始的地方 在开始使用threeJS之前,我们需要创建一个HTML文件来显示它(将下列HTML代码保存为你电脑上的一个HTML文件然后在你的浏览器中打…...
Unity入门精要03---透明效果
本节知识架构 1.渲染顺序与渲染队列 如果采用了透明度混合即要是实现半透明效果,那么就要关闭深度写入,那么此时渲染顺序就会变得非常非常重要,不然会出现不正确的遮挡效果。具体的分析可见书中解释 一句话概括就是因为没有写入深度…...
一文解码:如何在人工智能热潮下实现产业“智”变
近期由ChatGPT有关人工智能的话题引发了全民热议,在这股子浪潮下,讨论最多的话题就是ChatGPT的出现会为我们带来怎样的技术变革?是否会改变我们目前的生产方式?对于未来人工智能技术的发展,我们该如何客观看待…...
webshell管理工具-菜刀的管理操作
什么是webshell Webshell是一种运行在Web服务器上的脚本程序,通常由黑客使用来绕过服务器安全措施和获取对受攻击服务器的控制权。Webshell通常是通过利用Web应用程序中的漏洞或者弱密码等安全问题而被植入到服务器上的。 一旦Webshell被植入到服务器上࿰…...
dl----算法常识100例
1.depthwise卷积&&Pointwise卷积 depthwise与pointwise卷积又被称为Depthwise Separable Convolution,与常规卷积不同的是此卷积极大地减少了参数数量,同时保持了模型地精度,depthwise操作是先进行二维平面上地操作,然后利…...
京东百亿补贴,不要把方向搞偏了
出品 | 何玺 排版 | 叶媛 我吐槽来了。 3月6日0时,京东正式加入百亿补贴战局。那么,京东百亿补贴力度如何?用户又有什么反馈?我们一起来看看。 01 京东百亿补贴实测 京东百亿补贴上线的第一天,玺哥就亲自进行了体…...
Java中的static与final关键字
一、static关键字 static修饰位置表示含义变量表示这是一个类变量,类加载时分配在堆中方法静态方法,不依赖于对象可直接通过类标识访问代码块静态代码块,只在类加载初始化阶段时执行一次内部类静态嵌套类,表示只是放在外部类的文…...
开学新装备 - 学生党是否该入手 MacBook
学生党是否该入手 macbook 这个问题,相信许多人在许多社区都有看到过类似讨论。只不过,许多讨论都掺杂了信仰、智商税、不懂、不熟悉未来需求等各种因素,导致内容空洞价值不大。这篇文章,抛开了所有非理性因素,详细的告…...
【前端技巧】ESLint忽略检查行和文件
Author:Outman Date:2023-03-10 ESLint忽略检查行和文件 一、注释方式 1.注释忽略 —— 块注释 /* eslint-disable */ console.log(test); /* eslint-enable */2.注释忽略 —— 忽略指定规则项 /* eslint-disable no-alert, no-console */ alert(tes…...
单片机学习笔记之点阵(8x8)
心血来潮,想捡一下丢了很久的单片机,纪录一下单片机学习简单的点阵显示,及踩到的䟘,找到吃灰很久的普中科技开发板(非广告,为毕设学习买的)。 1. 使用工具 使用开发板: 普中科技开发…...
我一个普通程序员,光靠GitHub打赏就年入70万,
一个国外程序员名叫 Caleb Porzio在网上公开了自己用GitHub打赏年入70万的消息和具体做法。 Caleb Porzio 发推庆祝自己靠 GitHub 打赏(GitHub Sponsors)赚到了 10 万美元。 GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能,允许开发…...
剖析Spring MVC如何将请求映射到Controller
Spring MVC是一种基于Java的Web框架,可以帮助开发者快速地构建Web应用程序。在Spring MVC中,请求将会被映射到对应的Controller中进行处理。本文将会介绍Spring MVC如何将请求映射到Controller的过程。 DispatcherServlet DispatcherServlet是Spring M…...
设计模式之美-工厂模式
分类:简单工厂模式(静态工厂模式),工厂方法模式,抽象工厂模式。 这种设计模式也是 Java 开发中最常见的一种模式,它的主要意图是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类&a…...
A Star算法最通俗易懂的一个版本
01-概述虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。02-搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B &…...
JavaWeb--ListenerAjaxaxiosjson
Listener&Ajax&axios1 Listener1.1 概述1.2 分类1.3 代码演示2 Ajax2.1 概述2.1.1 作用2.1.2 同步和异步2.2 快速入门2.2.1 服务端实现2.2.2 客户端实现2.2.3 测试2.3 案例2.3.1 分析2.3.2 后端实现2.3.3 前端实现2.4 测试3 axios3.1 基本使用3.2 快速入门3.2.1 后端实…...
NoneBot2,基于Python的聊天机器人
NoneBot2,基于Python的聊天机器人第一步,配置python第二步,配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp)第三步,配置[NoneBot](https://61d3d9dbcadf413fd3238e89--nonebot2.netlify.app/)NoneBot2 是一个现代、跨平台、…...
java反射机制及其详解
反射反射机制反射调用优化有时候我们做项目的时候不免需要用到大量配置文件,就拿框架举例,通过这些外部文件配置,在不修改的源码的情况下,来控制文件,就要用到我们的反射来解决 假设有一个Cat对象 public class Cat …...
Leetcode—环形链表
前言:给定一个链表,判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表,具体如下图所示。 对于链表,我们如何去判断链表是循环链表呢?又寻找入环点呢?我们可以利用快慢指针的方法…...
蓝牙耳机哪个戴的最舒服?久戴不累的蓝牙耳机推荐
在喧嚣的时代中,快节奏和疲惫充斥着我们的生活,于是耳机成为了人们必不可少的东西,无论是闲暇时亦或是正处在工作时,都会将它戴上,出门在外戴耳机变成了常态,所以小编就整理了一期久戴不累的蓝牙耳机。 No…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
