FPGA - Xilinx系列高速收发器---GTX

1,GTX是什么?

GT :Gigabit Transceiver千兆比特收发器;

GTX :Xilinx 7系列FPGA的高速串行收发器,硬核

xilinx的7系列FPGA根据不同的器件类型,集成了GTP、GTX、GTH、GTZ四种串行高速收发器,可以支持多种协议如PCI Express,SATA,JESD204B等。

四种收发器主要区别是支持的线速率不同,下图可以说明在7系列里面器件类型和支持的收发器类型以及最大的收发器数量:

下图是各个系列的芯片所包含的GT资源,以及它们的相关性能参数

首先需要明确的一点是,他们都是高速收发器,只是传输速率不同,速率大小为:

GTP < GPX < GTH < GTZ < GTY < GTM

可以看到不同系列收发器个数和传输速度都不一样。

        Artix-7 中的收发器类型为GTP;
        Kintex-7 中的收发器类型为GTX;
        Virtex-7 中的收发器类型为GTX/GTH/GTZ ;
        UltraScale 中的GTH、GTY;
        UltraScale+ 中的GTR、GTH、GTY;

原理图


2,高速收发器的用途

        可以把它理解为一个高速串行并行转换器,其串行速率可达几十G。它可以将输入的并行数据转换为串行输出,或者将串行数据转换为并行数据。它既可以作为独立的发送装置或接收装置,也可以同时进行发送和接收。此外,用户可以根据需要自定义协议来实现通信,与其他IP核配合使用,以实现协议通信。例如,用于实现两块板子之间的通信,如Aurora协议,可以与Xilinx提供的Aurora IP核配合使用。GTX主要负责物理层数据的发送和接收,包括串行化和解串行化、编码和解码、时钟恢复等一系列物理层任务。此外,它还支持以下协议(见下图 该图是在数据手册截取的):


3,为什么需要高速收发器

         主要是还是速率的问题,特别是在现在对于速率要求越来越高的情况下。在高速串行口之前,当数据速率开始超过1gb /s时,并行I/O方案就会达到物理限制,并且不再能够提供可靠、经济的方式来保持信号同步。

        在早期的并行I/O总线中,接口对齐问题阻碍了与外部设备的有效通信。随着更高的速度在数字设计中变得普遍,管理信号延迟成为一个问题。

        接口对齐问题是指在并行通信中,由于各个数据位可能在物理线路长度信号传播速度等方面存在不同,因此它们可能无法在完全相同的时间到达目标设备,导致数据传输过程中发生错误。简单地说,就是各个数据线的信号需要在同一时刻到达目标,对齐就是把这个时刻统一

        之前也有一些解决方案,比如利用系统时钟来同步:两个ic之间的通信,在两个ic上都应用一个公共时钟,用于数据传输和接收

看起来好像很容易就解决了时间同步的问题,但实际上的系统是这样的

        各种延误在速率低的情况下还可以忽略,因为延误相对于有效信号来说非常小。但随着速率的提高,延误的影响越来越大,甚至导致系统上的错误。随之而来的解决方法是,不依靠系统时钟,发送方在发生数据的时候,也发送一个同步的时钟

        这样可以消除部分延迟,同时由于两根线是从同一个地方发出传输距离等也很容易做的一致,所以有些延迟也可以抵消

        不过,源同步设计导致时钟域数量的显著增加。这引入了时序约束和分析的复杂性,如现场可编程设备具有有限时钟缓冲的门阵列(FPGA),以及必须定制设计每个时钟树的专用集成电路(ASIC)。这个问题在大型并行总线上更加严重,因为电路板设计的限制常常迫使每个数据总线使用多个转发时钟。因此,32位总线可能需要4个,甚至8个转发时钟

        还有一种自同步的模式:

        数据线带着时钟,相对自同步来说,它不需要那么多的时钟线了,随之而来的时钟复制也不需要。但比特率变动时需要额外的手段来纠正。如果数据包含相当多的连续零或连续一,那么可能出现失同步的情况。此外,在传输中,噪声或者干扰可能会导致误码。

        这些问题,GTX的设计都给出了解决方案。


4,GTX IP核配置

基础知识

        GT又称之为Gigabit Transceiver 千兆比特收发器,是嵌入在FPAG芯片里面 的一种硬核

         一条lane包含一对tx和rx;

        一对tx、rx、加上cpll称之为一条通道channel;

        一个bank有4对tx和rx、两对差分时钟,也被称之为quad。

        ①参考时钟不仅可以驱动当前 bank 的上面的通道,还可以驱动相临近的 bank。 上面的bank的被称之为北North,下面的bank被称之为南South。

        ②一对外部参考时钟,最多驱动三组相邻的 bank,( quad 不超过不超过三 个),驱动的通道不超过12个


IP核配置

(1)创建工程

IP Catalog中搜索GT

(2)第一页配置

(3)第二页配置

(4)第三页配置

(5)第四页配置

(6)第五页配置

(7)第六页配置

(8)第七页 总结界面

(9)IP核生成完成

打开官方Example Design


代码框架

(1)gtwizard_0_exdes.v为整体工程的TOP文件

输入输出端口分别为:

        Q0_CLK1_GTREFCLK_PAD_N/P_IN:外部差分输入参考时钟

        DRP_CLK_IN_P/N:系统时钟

        TXP/N_OUT:发送1bit差分输出

        RXP/N_IN:接收1bit差分输入

(2)gtwizard_0_support.v

该文件主要例化了GT高速收发器的IP核,并对时钟进行了配置

例如FPGA与GT的接口:32bit的待发送数据gt0_txdata_in:

32bit的接收数据gt0_rxdata_out

(3) gtwizard_0_GT_FRAME_GEN.v

该文件用于产生发送数据的来源,本质上是从ROM中读取数据。

(4)gtwizard_0_GT_FRAME_CHECK.v

该文件用于接收到数据后,与文件中的数据源进行比对,并且记录下错误的数据个数。

(5)gtwizard_0_TB.v

        GTX收发的测试文件,在此之前,应该先了解一下LOOPBACK

        从手册中得知收发器有专门的回环模式进行测试,即进行自发自收,如下图所示有四个通道。

测试的时候选择哪种呢?

查看top文件,即gtwizard_0_exdes.v文件,LOOPBACL设置的是0,即Normal 模式,并没有进行回环测试,如下图

观察TB文件,这里是直接在仿真中把发送端和接收端用线连在一起实现回环测试


仿真波形

由于此仿真是自收发,因此我们需要关注的信号只有四个,gtwizard_0_support.v中的:

/gtwizard_0_TB/gtwizard_0_exdes_i/gtwizard_0_support_i/gt0_txdata_in
/gtwizard_0_TB/gtwizard_0_exdes_i/gtwizard_0_support_i/gt0_txcharisk_in
/gtwizard_0_TB/gtwizard_0_exdes_i/gtwizard_0_support_i/gt0_rxdata_out
/gtwizard_0_TB/gtwizard_0_exdes_i/gtwizard_0_support_i/gt0_rxcharisk_out

发送端

gt0_txcharisk_in为1时发送数据060504bc,然后gt0_txcharisk_in为0后数据gt0_txdata_in依次为0a090807,0e0d0c0b……

接收端

gt0_txcharisk_in为1时发送数据060504bc,然后gt0_txcharisk_in为0后数据gt0_rxdata_out依次为0a090807,0e0d0c0b……  

接受数据和发送端一致,测试正确!


总结:

GT高速收发器的IP Example已经具有相当完备的功能,但是GT IP 核端口信号非常多,乱七八糟的信号也多,可以使用官方的文件封装 一个非常简洁明了、看着非常舒服的用户端信号出来

如下图:

修改gtwizard_0_exdes.v文件,加入用户端接受和发送相关信号就实现上述框架!

参考:https://blog.csdn.net/weixin_44253012/article/details/136401477

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(python)cryptography-安全的加密

前言 cryptography 是一个广泛使用的 Python 加密库&#xff0c;提供了各种加密、哈希和签名算法的实现。它支持多种加密算法&#xff0c;如 AES、RSA、ECC 等&#xff0c;以及哈希函数&#xff08;如 SHA-256、SHA-384 等&#xff09;和数字签名算法(如 DSA、ECDSA 等). 目录 …

pikachu靶场通关之csrf漏洞通关教程

目录 CSRF&#xff08;get型&#xff09; 1.打开网站&#xff0c;点击右上角提示 2.登录之后&#xff0c;点击修改个人信息 3.修改上述内容&#xff0c;打开抓包工具 4.抓到修改用户信息的数据包 5.构造虚假url&#xff0c;诱导用户点击 6.弹到修改后的界面 ​编辑 7.返…

前端已死? Bootstrap--CSS组件

目录 Bootstrap 下载 Bootstrap--全局CSS样式 栅格系统 栅格参数 正常显示 实例 代码演示: 排版 代码演示 表格 代码演示 表单 代码演示 等等...(文档很清晰了) Bootstrap--组件 结合演示:(页面) Bootstrap Bootstrap v3 中文文档 Bootstrap 是最受欢迎的 HT…

计算机视觉与深度学习实战:以Python为工具,基于小波的图像压缩技术

一、引言 在数字图像处理领域,图像压缩技术一直是一个热门且重要的话题。随着计算机视觉和深度学习技术的快速发展,图像压缩技术也在不断地进步和创新。本文将探讨如何使用Python这一强大的编程工具,结合深度学习技术和小波变换,实现高效的图像压缩。 二、计算机视觉与深度…

Ubuntu22.04 sudo pip 找不到命令解决方法

解决方法&#xff1a; &#xff08;1&#xff09;编辑/etc/sudoers&#xff1a; sudo vim /etc/sudoers 将Defaults env_reset修改为&#xff1a; Defaults !env_reset &#xff08;2&#xff09;编辑配置文件~/.bashrc&#xff1a; sudo vim ~/.bashrc 添加&#xff1a; a…

ps学习计划

将学习完成以下功能 1.更换证件照背景色 2.人像换装 3.人像去水印文字 4. P掉其中的一个人 去除无关的人 5.生活照扶正 6.瘦身 美白 去下巴 单眼皮变双眼皮 7.头发变颜色 8.竖图变横图技巧 9.帮小姐姐P裙子 10.人物头发变黑技巧 11.抠印章 一键抠图 12.抠图换背景 …

测试计划和管理:构建高质量软件的关键

目录 测试原则 测试计划 概述 过程 目标 策略 制定计划 范围分析和工作量估计 测试资源要求和进度管理 测试风险的控制 测试报告 测试管理工具 结论 测试是软件开发过程中的关键组成部分&#xff0c;确保了最终产品的质量和可靠性。有效的测试计划和管理对于确保测…

建筑乙级资质换证过程中的质量与安全保障

在建筑乙级资质换证过程中&#xff0c;确保质量与安全保障是至关重要的&#xff0c;它不仅关系到企业的声誉和长期发展&#xff0c;也直接关系到工程项目的成功实施和客户的满意度。以下是在换证过程中加强质量与安全保障的建议&#xff1a; 1. 明确质量与安全管理目标 在换证之…

Unreal Engine 4 简介

Unreal Engine 4&#xff08;虚幻引擎4&#xff09;是由Epic Games开发的一款强大而全面的游戏引擎。以下是关于Unreal Engine 4的简介&#xff1a; 开发目的&#xff1a;Unreal Engine 4最初是为了开发第一人称射击游戏而设计的&#xff0c;但随着时间的推移&#xff0c;它已…

Open AI再次定义AI PC?

从传统的文字交互&#xff0c;到语音和图像交互——Open AI再次提升了人们对AI PC的想象空间。 这种更贴近人类间交互的模式&#xff0c;会多大程度改变目前PC的生态&#xff1f; 随着苹果M4芯片、高通骁龙X的发布&#xff0c;AI PC也逐渐成为了市场热议的产品。 从各家PC厂…

Spring:SpringBoot Starter 工作原理详解

一、前言 通过使用Spring Boot Starter&#xff0c;开发人员可以避免手动查找和添加每个所需的库&#xff0c;从而大大简化了项目的依赖管理。这些starter不仅包含了库依赖&#xff0c;还可能包含自动配置&#xff0c;从而减少了开发人员需要编写的配置代码。 本文将分析Spring…

51单片机小车制造过程记录

首先感谢B站up主好家伙vcc的资料。 这次小车做出来虽然资料挺全的&#xff0c;但中间还是犯了很多不该犯的错误。 第一个&#xff0c;物料这次我们搞错了挺多&#xff0c;最离谱的应该是最小系统板都错了。 资料里用的stm32f103c8t6&#xff0c;我们开始买成了stm32f103c8t6。…

RHCE网络服务配置之循环执行的例行性工作

1、什么是循环执行的例行性工作 循环执行的例行性工作&#xff1a;每隔一定的周期就需要执行一次 2、crontab的工作过程 /etc/cron.allow&#xff0c;写在该文件的人可以使用crontab命令 /etc/cron.deny&#xff0c;黑名单 两个文件如果都不存在&#xff0c;只有root能使用…

QT状态机4-使用并行状态来避免组合爆炸

#include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent):

慧天卓特:全国干旱情况2024年4月监测分析报告

【本报告通过对2024年4月全国干旱情况的监测统计分析&#xff0c;展示了我公司干旱监测产品的按区域持续精准监测以及未来预测能力】 本报告主要内容如下&#xff1a; 1、全国气象概况&#xff08;本月平均气温和降水量&#xff09;&#xff1b; 2、本月干旱情况概述&#x…

【数据结构】队列的实现(链式)

文章目录 队列1.队列的概念及结构概念结构 2.队列的实现&#xff08;链式结构&#xff09;队列定义初始化队列入队出队获取队头元素获取队尾元素销毁队列判断队列是否为空队列有效个数 完整代码&#xff08;包含测试代码&#xff09;Queue.hQueue.ctest.c 队列 1.队列的概念及…

代码随想录算法训练营第二十八天|​216.组合总和III​、17.电话号码的字母组合

216.组合总和III 文档讲解:代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 这一题与昨天的组合差不多&#xff0c;区别就在只有和是目标值的时候才会加入到result数组中&#xff0c;并且在回溯时&#xff0c;会处理sum的值 class Solution:def __i…

14.正交向量与子空间

文章目录 1. 四个子空间的相互关系2. 正交向量3. 无解方程求解 1. 四个子空间的相互关系 对于m行n列的矩阵A来说&#xff0c;矩阵A的行空间的秩等于矩阵A的列空间的秩 R a n k ( A ) R a n k ( A T ) r (1) Rank(A)Rank(A^T)r\tag{1} Rank(A)Rank(AT)r(1) A X 0 ; A T X …

HTTP代理可以应用在那些领域呢

HTTP代理是IP代理领域中一个重要组成部分&#xff0c;它基于HTTP协议传输&#xff0c;使用海外服务器帮助用户绕开访问限制&#xff0c;浏览查看海外资讯信息。 HTTP代理可以应用在哪些领域呢&#xff1f; 1.保护使用者隐私 当今越来越数据被上传到网络云端上&#xff0c;用户…