基于GTX的64B66B编码IP生成(高速收发器二十)

news2024/11/25 22:49:52

  点击进入高速收发器系列文章导航界面


1、配置GTX IP 相关参数

  前文讲解了64B66B编码解码原理,以及GTX IP实现64B66B编解码的相关信号组成,本文生成64B66B编码的GTX IP。

  首先如下图所示,需要对GTX共享逻辑进行设置,为了便于扩展,与8B10B编码一致,将共享逻辑放在IP外部的示例工程中。

在这里插入图片描述

图1 设置“GT Selection”界面

  之后将发送通道和接收通道的线速率均设置为10Gbps,参考时钟频率选择156.25MHz(开发板提供给高速收发器的参考时钟频率)。由于线速率大于5.5Gbps,因此接收通道和发送通道的时钟只能来自QPLL输出。其余设置与8B10B编码保持一致。

在这里插入图片描述

图2 设置”Line Rate,RefClk Selection”界面

  设置“Encoding and Clocking”界面时,根据前文可知,GTX的发送通道可以由用户逻辑提供变速器的计数器,也可以使用IP内部自带的计数器,因为GTH等高速收发器内部变速器没有自带计数器,为了与其余高速收发器设计保持一致,1处发送通道选择使用外部计数器的64B66B编码方式。

  此处可以计算出PCS内部并行数据传输时钟userclk和用户接口时钟userclk2的频率,首先userclk等于线速率除以内部数据位宽,线速率为10Gbps,内部数据位宽(Internal Data Width)32位,计算得到userclk为312.5MHz。而用户接口数据位宽为64位,为了保持带宽恒定,用户接口时钟频率应该是内部时钟频率的一半,即userclk2等于156.25MHz。

  数据位宽选择64位,降低用户时钟频率,有利于时序稳定。接收通道不需要用户提供计数器,直接选择64位数据位宽的64B66B编码即可。

  在接收通道和发送通道依旧使能内部Buffer对数据同步,将发送通道和接收通道的时钟来源均设置为TXOUTCLK,而TXOUTCLK来源于TXPLLREFCLK,如下图所示。

在这里插入图片描述

图3 设置“Encoding and Clocking”界面

  即使经过前面8B10B的讲解,有部分读者还是会疑惑,为什么发送通道和接收通道内部就必须使用buffer同步数据,以发送通道为例,此处在此说明。

  首先要清楚buffer两侧的时钟域分别是什么,各自时钟域的来源是什么,是否真的存在相位差,然后就知道为什么必须要同步了。

  如下图所示,发送通道的buffer两侧的时钟分别是TXUSRCLK(PCS内部传输数据时钟)和XCLK(PMA的并行时钟),TXUSRCLK和TXUSRCLK2都是TXOUTCLK通过同一个锁相环生成的,因此不存在相位差,他们之间也不需要同步。

在这里插入图片描述

图4 发送通道的Buffer

  在此之后,需要知道TXOUTCLK与XCLK的来源。下图是发送通道内部的时钟结构,前文也进行过详细分析。

  根据图3的设置可知TXOUCLK来源于TXPLLREFCLK,而高速收发器的PLL应该就是CPLL或者QPLL,因此下图中TXOUCLK的来源应该是3(CPLREFCLK)或者4(QPLLREFCLK)。

  再看XCLK来源,5处选择QPLL或者CPLL的输出时钟(与其参考时钟相位相同)作为PMA的输入时钟,然后经过内部的相位调节模块(Phase Interp)调节时钟与PMA数据的相位关系,再经过分频得到并串转换的时钟信号。因此PMA的并行时钟信号就是TXOUTCLKPCS,即XCLK。

  TXOUTCLKPCS的相位经过Phase Interp调节后,很可能与QPLL或者CPLL的参考时钟相位已经不同了,那么XCLK与TXUSRCLK的相位也就不同,因此需要同步,个人的理解就是这么多了。

在这里插入图片描述

图5 发送通道内部的时钟架构

  至于上图中的分频系数如何设置,含义是什么,前文已经详细讲解过,本文不再赘述。接收通道的原理类似,只不过是将Phase Interp换成了CDR而已。

  回归正文,如下图所示,配置“Comma Alignment and Equalization”界面,由于64B66B没有K码相关内容,因此不能设置K码对齐,需要用户去控制同步头实现手动对齐,后续代码设计时进行讲解。

  由于10Gbps线速率比较高,接收通道选择DFE均衡模式,将发送端的加重和极性控制等选项勾选。

在这里插入图片描述

图6 配置“Comma Alignment and Equalization”界面

  之后设置“PCIe,SATA,PRBS”界面,如下图所示,只需要勾选回环控制即可,其余保持不变。

在这里插入图片描述

图7 设置“PCIe,SATA,PRBS”界面

  下图是设置通道绑定和时钟纠正的界面,其中通道绑定只能在设计中存在多个高速收发器时使用。启用时钟纠正功能,每发送5000字节数据会发送一个时钟序列,用于时钟纠正。

在这里插入图片描述

图8 设置“CB and CC Sequence”界面

  最后来到IP设置的汇总界面,如下图所示,其中USRCLK位312.5MHz,USRCLK2为156.25MHz,与前文计算结果一致。

在这里插入图片描述

图9 GTX设置参数汇总界面

2、模块分析

  打开IP的示例工程,主要关注下图几个重要模块,多数与8B10B编码的模块类似。首先时QPLL、复位、用户时钟生成的相关模块。与8B10B编码不同的是多了一个手动同步的模块。

在这里插入图片描述

图10 GTX示例工程模块分析

  同步模块通过判断接收的同步头是否正确,来拉高Slip信号调节开始转换的位置,来达到接收数据同步的目的,RTL视图如下所示。

在这里插入图片描述

图11 同步模块的RTL视图

  官方示例工程的手动同步模块写的比较繁琐,经过前面讲解可知,在正常传输数据时,64B66B编码会有控制码和数据码两种,同步头分别是2’b01和2’b10。

  因此接收端在上电后,可以根据接收到的同步头的状态判断接收的数据是否同步了,如果接收到的同步头不是2’b01或者2’b10,则把Slip信号拉高一个时钟,等待一段时间后继续检测,直到连续检测32个时钟接收的数据均正常时,把同步成功信号拉高。

  数据同步与ISERDES的原理类似,后文的自定义64B66B协议时,会自己设计同步模块,比较简单,本文就不讲述官方该模块的设计了,有兴趣的可以看看。

  运行示例工程的仿真,QPLL仿真结果如下所示。

在这里插入图片描述

图12 QPLL仿真结果

  发送通道的用户接口时序如下图所示,帧头和帧尾的控制帧数据对应的同步头为2’b10,而纯数据帧的同步头为2’b01。当外部想GTX中连续输入32个数据(计数器txsequence计数到31)时,txdata_in需要暂停输入数据,清空内部变速器中的数据。

在这里插入图片描述

图13 发送通道时序

  当接收通道复位完成后,接收端需要对接收数据进行同步,如下图所示,多次拉高rxgeraboxslip,直到接收到的同步头正常为止。

在这里插入图片描述

图14 接收端同步时序

  如下图所示,接收到的同步头数据txheader_out并不全为2’b01或者2’b10,说明接收的数据并没有同步成功,因此将rxgeraboxslip拉高一个时钟,过一段时间后继续检测txheader_out状态,直到持续32个时钟接收到txheader_out的状态均正常时,认为同步完成。

在这里插入图片描述

图15 同步时序

  仿真采用回环设计,如下图所示,发送数据经过IP收发后,接收端仍然能够接收到数据,证明该IP的使用没有问题。

在这里插入图片描述

图16 收发数据时序

  注意该IP并不具备64B66B编码和解码的能力,64B66B编码和解码是通过示例工程的两个模块完成的,对应的RTL视图如下图所示。

在这里插入图片描述

图17 加扰和解扰模块的RTL视图

  后续用户在设计自己的工程时,可以直接使用这两个模块,对发送数据加扰,接收数据解扰。

  由于本文只使用了一个高速收发器,因此不对示例工程上板,后续在自定义的64B66B工程中进行上板测试。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

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

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

相关文章

Apple - Framework Programming Guide

本文翻译自:Framework Programming Guide(更新日期:2013-09-17 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183i 文章目录 一、框架编程指南简介…

文件操作(1)(C语言版)

前言: 为什么要学习文件操作: 1、如果大家写过一些代码,当运行结束的时候,这些运行结果将不复存在,除非,再次运行时这些结果才能展现在屏幕上面,就比如之前写过的通讯录。 现实中的通讯录可以保…

商超智能守护:AI监控技术在零售安全中的应用

结合思通数科大模型的图像处理、图像识别、目标检测和知识图谱技术,以下是详细的商超合规监测应用场景描述: 1. 员工仪容仪表监测: 利用图像识别技术,系统可以自动检测员工是否按照规范整理妆容、穿着工作服,以及是否…

Arm和高通的法律之争将扰乱人工智能驱动的PC浪潮

Arm和高通的法律之争将扰乱人工智能驱动的PC浪潮 科技行业高管和专家表示,两大科技巨头之间长达两年的法律大战可能会扰乱人工智能驱动的新一代个人电脑浪潮。 上周,来自微软(Microsoft)、华硕(Asus)、宏碁(Acer)、高通(Qualcomm)等公司的高管在台北举行…

Raylib的贪吃蛇

配置Raylib库 工具链主函数模板Draw: 绘制网格Snake: 初始化Draw:绘制蛇与果Input:移动Logic:游戏主要逻辑Draw: 游戏结束 工具链 mkdir snake cd snakeCMakeLists.txt cmake_minimum_required(VERSION 3.10) project(snake) set(CMAKE_EXP…

深度学习500问——Chapter11:迁移学习(3)

文章目录 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 11.3.2 边缘分布自适应 11.3.3 条件分布自适应 11.3.4 联合分布自适应 11.3.5 概率分布自适应方法优劣性比较 11.3.6 特征选择 11.3.7 统计特征对齐方法 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 数据分布自适…

libdrm 2.4.107 needed because amdgpu has the highest requirement

libdrm 2.4.107 needed because amdgpu has the highest requirement 1.问题分析解决 1.问题 Message: libdrm 2.4.107 needed because amdgpu has the highest requirement Run-time dependency libdrm_intel found: YES 2.4.107 Run-time dependency libdrm_amdgpu found: Y…

深度学习500问——Chapter11:迁移学习(4)

文章目录 11.3.8 流形学习方法 11.3.9 什么是finetune 11.3.10 finetune为什么有效 11.3.11 什么是网络自适应 11.3.12 GAN在迁移学习中的应用 参考文献 11.3.8 流形学习方法 什么是流行学习? 流行学习自从2000年在Science上被提出来以后,就成为了机器…

uniapp canvas生成海报

效果 封装组件&#xff0c;父组件 ref 调用 downImgUrl()函数&#xff0c;其他根据自己需求改 <template><view><view class"bgpart"><canvas class"canvas-wrap" canvas-id"canvasID" type"2d"></canvas…

41、基于深度学习的自适应线性预测(matlab)

1、原理及流程 自适应线性预测是一种基于递归最小二乘法&#xff08;Recursive Least Squares, RLS&#xff09;的线性预测方法&#xff0c;用于自适应地估计线性系统的参数。下面是自适应线性预测的原理和流程&#xff1a; 原理&#xff1a; 自适应线性预测的核心思想是通过…

Java | Leetcode Java题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution {public int findPeakElement(int[] nums) {int n nums.length;int left 0, right n - 1, ans -1;while (left < right) {int mid (left right) / 2;if (compare(nums, mid - 1, mid) < 0 && compare(n…

转型AI产品经理(12):“希克定律”如何应用在Chatbot产品中

信息过载&#xff0c;这个对现代人来说是很常见的问题&#xff0c;信息获取变得越来越便捷的同时&#xff0c;也导致信息过载让我们无法及时做出有效决策&#xff0c;还可能演变成选择困难症。信息过载对用户体验的设计也有着显著的负面影响&#xff0c;如果我们的产品设计让人…

HTML静态网页成品作业(HTML+CSS)——美食火锅介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

笔记 | 软件工程06-2:软件设计-软件体系结构设计

1 软件体系结构的概念 1.1 软件体系结构的设计元素 1.2 不同的抽象层次 1.3 软件体系结构的不同视图 1.3.1 软件体系结构的逻辑视图&#xff1a;包图 1.3.2 软件体系结构的逻辑视图&#xff1a;构件图 1.3.3 软件体系结构的开发视图 1.3.4 软件体系结构的部署视图 1.3.4.1 描述…

UV胶带和UV胶水的应用场景有哪些不同吗?

UV胶带和UV胶水的应用场景有哪些不同吗? UV胶带和UV胶水的应用场景确实存在不同之处&#xff0c;以下是详细的比较和归纳&#xff1a; 一&#xff1a;按使用场景来看&#xff1a; UV胶带的应用场景&#xff1a; 包装行业&#xff1a;UV胶带在包装行业中常用于食品包装、药…

About Apple Pay

本文翻译整理自&#xff1a;About Apple Pay &#xff08;更新时间&#xff1a;2017-03-16&#xff09; https://developer.apple.com/library/archive/ApplePay_Guide/index.html#//apple_ref/doc/uid/TP40014764 文章目录 一、关于 Apple Pay1、使用 Apple Pay2、测试 Apple …

Kaggle比赛:成人人口收入分类

拿到数据首先查看数据信息和描述 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 加载数据&#xff08;保留原路径&#xff0c;但在实际应用中建议使用相对路径或环境变量&#xff09; data pd.read_csv(r"C:\Users\11794\Desk…

【机器学习300问】121、RNN是如何生成文本的?

当RNN模型训练好后&#xff0c;如何让他生成一个句子&#xff1f;其实就是一个RNN前向传播的过程。通常遵循以下的步骤。 &#xff08;1&#xff09;初始化 文本生成可以什么都不给&#xff0c;让他生成一首诗。首先&#xff0c;你需要确定采样的起始点。这可以是一个特殊的开…

深度学习:从理论到应用的全面解析

引言 深度学习作为人工智能&#xff08;AI&#xff09;的核心技术之一&#xff0c;在过去的十年中取得了显著的进展&#xff0c;并在许多领域中展示了其强大的应用潜力。本文将从理论基础出发&#xff0c;探讨深度学习的最新进展及其在各领域的应用&#xff0c;旨在为读者提供全…