什么是GTH

GTH 是Xilinx UltraScale系列FPGA上高速收发器的一种类型,本质上和其它名称如GTP, GTX等只是器件类型不同、速率有差异;GTH 最低速率在500Mbps,最高在16Gbps

CoaXpress Host/Device IP 均需要用到厂商的GT收发器模块,因此这里写一篇笔记作为开发记录

GTH 的特性

physical coding sublayer (PCS) 是Xilinx 高速收发器的最顶层.

PCS(Physical Coding Sublayer)层是数据链路层中的一个子层,位于物理层和MAC(Media Access Control)层之间。它是在数据链路层中的一个组成部分,用于实现物理层与MAC层之间的接口功能。

PCS层的主要工作是将上层的数据帧转换为物理层能够传输的信号,并负责将接收到的信号解析为数据帧。它主要完成以下几个任务:

编码和解码:PCS层负责将上层数据帧进行编码,将其转换为物理层可传输的信号。这通常涉及到将数字数据转换为模拟信号,并在发送端对信号进行编码。接收端的PCS层则负责对接收到的信号进行解码,将其转换回数字数据。

时钟恢复:PCS层通过对接收到的信号进行时钟恢复操作,确保数据的准确传输。这包括识别接收信号中的时钟信息,以便正确地解析数据。

传输编码:PCS层可能会对数据进行传输编码,以增强传输的可靠性和效率。这包括添加冗余校验码、错误检测和纠正码等,以提高数据传输的可靠性,并确保数据在传输过程中不会出现错误。

对齐:PCS层负责对接收到的数据进行对齐,确保数据能够正确地被上层的MAC层处理和解析。

总的来说,PCS层在数据链路层和物理层之间起到了一个接口的作用,负责将上层的数据进行编码、时钟恢复、传输编码和对齐等操作,以实现可靠的数据传输。

由此可见,时钟恢复,数据编码,数据对齐等操作,均在PCS层完成,如果需要传输CRC校验,可以在更上一层实现,计算CRC后,将CRC结果作为正常数据进行传输

GTH 结构

下图是GTH的架构图,从图中可以得到几个信息:

1、GTH 一般是4个一组,4个channel ,1个common ,common负责时钟部分,channel 部分对应具体的serdes;

2、时钟恢复电路在PMA部分;

普通使用中需要关注的部分如下:

8B/10B 编解码,以RX为例

GTH模块内置了8b/10b编解码

对于单个channel来说,通常会选择内部40bit 位宽,用户32bit位宽模式,因为多数协议会定义用户数据为1个word == 4 bytes

8b/10b 编码的错误指示

The 8B/10B decoder performs out-of-table error detection and drives the RXCTRL3 port High when it is enabled,

but receives a 10-bit character that cannot be mapped into a valid 8B/10B character listed in Appendix A, Valid Data Characters. When this occurs, the

non-decoded 10-bit character is piped out of the decoder through the RX data interface with this format:

• The corresponding RXCTRL1 represents the 9th bit

• The corresponding RXCTRL0 represents the 8th bit

• The corresponding RXDATA byte represents the [7:0] bits

• The corresponding RXCTRL3 represents that an invalid 8B/10B character error occurred

8b/10b comma 对齐与word对齐

用K 码做对齐,常见用作对齐的K码为K28.5和K28.1,下图就实用K28.5做对齐

这只是byte对齐了,那么word怎么对齐呢?比如CoaXPress的downconnection高速传输用的都是1个word 4个字节作为一个最小单位,那么word怎么对齐呢?GTH也已经考虑了这一点,配置如下:

对应到GTWIZARD 模块,配置如下:

根据上述配置,CoaXpress协议对应的word数据就能正确的对齐并输出

(A word consists of 4 consecutive 8B/10B characters labeled P0, P1, P2 and P3 and are transmitted in the stated order (i.e. P0 first). The receiver shall perform word alignment in order to successfully decode the packets.)

Xilinx GTH 简介 ,CoaXpress FPGA PHY 部分的更多相关文章

  1. xilinx和altera的fpga的不同之处!----如果不知道,你将为之付出代价! --转载

    本人从2004年接触fpga开始,至今已经8年了.开发过altera的flex系列和cyclone3系列:开发过xilinx的vii和v5系列.下面谈谈本人对二者的一些不同,以便引起开发者对一些细节上 ...

  2. 270-VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡

    VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡 一.板卡概述       本板卡基于Xilinx公司的FPGA XC7V ...

  3. Xilinx FPGA结构

    FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越 ...

  4. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较

    前言 经常有朋友会问我,“我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?”当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容量的产品,因为我们的 ...

  5. Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)

    需求说明:Lattice系统FPGA入门 内容       :Lattice与Altera.Xilinx对比 来自       :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...

  6. 202-基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心板

    该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6678和一片Xilinx FPGA K7 XC72K325T-1ffg900.包含1个千兆网口,1个FMC ...

  7. 基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡

    基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡 1. 板卡概述   板卡主芯片采用Xilinx公司的XC7K325T-2FFG900 FPGA,pin_ ...

  8. 202-基于TI DSP TMS320C6678、Xilinx K7 FPGA XC72K325T的高速数据处理核心板

    基于TI DSP TMS320C6678.Xilinx K7 FPGA XC72K325T的高速数据处理核心板 一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP ...

  9. 175-基于TI DSP TMS320C6455、Xilinx V5 FPGA XC5VSX95T的高速数据处理核心板

    基于TI DSP TMS320C6455.Xilinx V5 FPGA XC5VSX95T的高速数据处理核心板 一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP ...

  10. Xilinx FPGA全局介绍

    Xilinx FPGA全局介绍 现场可编程门阵列 (FPGA) 具有诸多特性,无论是单独使用,抑或采用多样化架构,皆可作为宝贵的计算资产:许多设计人员并不熟悉 FPGA,亦不清楚如何将这类器件整合到设 ...

随机推荐

  1. OpenGauss3.1.0 单机版安装部署过程

    背景 由易到难 先进行单节点的设置 先说坑 openEuler2203 默认安装了python3.9 但是openGauss里面指代了3.6和3.7 /openGauss/install/om 注意在 ...

  2. Oracle12c 快速启动命令设置

    Oracle12c 安装完成之后 一般不会自动启动需要进行一下简单的设置才可以. 方法也比较简单. 可以使用 oracle 自带的 dbstart的命令执行服务启动 需要注意的事项是: 第一修改一个参 ...

  3. element-ui中Select 选择器列表内容居中

    <el-select class="my-el-select" v-model="tenantCont" placeholder="请输入机构标 ...

  4. 【小实验】使用 wrk 的 docker 容器来压测另一个容器

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 GET 请求 想压测容器环境的服务性能,发现两个麻烦: 本 ...

  5. linux时间和当前时间相关8小时问题

    依次执行如下的代码: 1.更改时区 cp /usr/share/zoneinfo/GMT /etc/localtime ln -sf /usr/share/zoneinfo/Asia/Shanghai ...

  6. 初试高云FPGA

    前言 之前一直眼馋Sipeed的Tang系列,正好遇到有工程需要高速控制并行总线,就买了NANO 9K和Primer 20K试试水 买回来先拆的贵的20k,结果发现Sipeed设计师有奇怪的脑回路: ...

  7. NET Core 通过扩展方法实现密码字符串加密(Sha256和Sha512)

    using System; using System.Security.Cryptography; using System.Text; namespace SPACore.Extensions { ...

  8. MySQL【一】基本使用----超详细教学

    相关文章: win10下MySQL安装教程(MySql-8.0.26超级详细)_丨汀.的博客-CSDN博客 1.RDBMS(Relational Databases Management System ...

  9. C/C++ x64 Inline Hook 代码封装

    Hook 技术常被叫做挂钩技术,挂钩技术其实早在DOS时代就已经存在了,该技术是Windows系统用于替代DOS中断机制的具体实现,钩子的含义就是在程序还没有调用系统函数之前,钩子捕获调用消息并获得控 ...

  10. Linux文件IO之二 [补档-2023-07-21]

    8-5 linux系统IO函数: open函数: ​ 函数原型:int open(const char *pathname, int flags, mode_t mode); ​ 功能:打开一个文件并 ...