Transmitter功能介绍

每个收发器(Transceiver)包括一个独立的发射器(Transmitter),它由PCS和PMA组成。下图显示了发射器(Transmitter)的功能块。并行数据从FPGA逻辑流入FPGA TX接口,通过PCS和PMA,然后作为高速串行数据流出TX驱动器 。

如下图所示,GTX/GTH Transceiver的TX功能框图:

可见,TX中包含以下功能块:

  1. FPGA TX Interface
  2. TX 8B/10B Encoder
  3. TX Gearbox
  4. TX Buffer
  5. TX Buffer Bypass
  6. TX Pattern Generator
  7. TX Polarity Control
  8. TX Fabric Clock Output Control
  9. TX Phase Interpolator PPM Controller
  10. TX Configurable Driver
  11. TX Receiver Detect Support for PCI Express Designs
  12. TX Out-of-Band Signaling

TX Interface

下面会有取舍的介绍,本文主要介绍TX Interface,即逻辑并行数据与TX交互的窗口,还有Tx 8B/10B编码模块。

关于这部分,我们在GT Transceiver的时钟篇已经介绍了一部分,和时钟有关的一部分,可见下方的往期回顾。

FPGA逻辑生成并行数据使用的时钟是TXUSRCLK,它来自于时钟TXOUTCLK,而TXOUTCLK的来源,可以是GT Transceiver的外部参考时钟,这些都可以参考下面的往期回顾。

  • GT Transceiver中的重要时钟及其关系(8)TXOUTCLK的来源及其产生

  • GT Transceiver中的重要时钟及其关系(7)TXUSRCLK以及TXUSRCLK2的产生

  • GT Transceiver中的重要时钟及其关系(6)TXUSRCLK以及TXUSRCLK2的用途与关系

TX 8B/10B编码

许多协议对输出数据使用8B/10B编码。8B/10B是一种行业标准的编码方案,它用每个字节的两个比特的开销来换取实现的直流平衡和bounded disparity,以允许合理的时钟恢复。

GTX/GTH收发器有一个内置的8B/10B TX路径(集成的硬核资源),对TX数据进行编码而不消耗FPGA资源。启用8B/10B编码器会增加通过TX路径的延迟。如果不需要,可以禁用或绕过8B/10B编码器,以尽量减少延迟。

8B/10B位和字节排序

8B/10B编码器后的位顺序与如下 "8B/10B编码表 "中的顺序相反,因为8B/10B编码要求先传送位a0,而GTX/GTH收发器总是先传送最右边的位。

为了与8B/10B匹配,GTX/GTH收发器中的8B/10B编码器会自动颠倒位序。

下图显示了当TX_DATA_WIDTH=20、40和80时GTX/GTH收发器传输的数据。TXDATA使用的比特数和相应的字节顺序由TX_DATA_WIDTH决定。

  • 如果TX_DATA_WIDTH = 20,只使用TXDATA[15:0]

  • 如果TX_DATA_WIDTH = 40,只使用TXDATA[31:0]

  • 如果TX_DATA_WIDTH = 80,使用全部TXDATA[63:0]

当8B/10B编码器被绕过,TX_DATA_WIDTH被设置为10的倍数,10位字符以这种格式传递给TX数据接口。- 相应的TXCHARDISPMODE代表第9位 - 相应的TXCHARDISPVAL代表第8位 - 相应的TXDATA字节代表[7:0]位

Running Disparity

8B/10B编码是直流平衡的,也就是说,传输的1和0的长期比例应该正好是50%。为了实现这一点,编码器总是计算传输的1和0的数量之间的差异,并在每个字符传输结束时,使其差异为+1或-1。这个差值被称为Running Disparity。

为了适应使用Disparity来发送控制信息的协议,运行中的Disparity不仅可以由8B/10B编码器产生,而且还可以通过TXCHARDISPMODE和TXCHARDISPVAL来控制,如下所示。例如,发送的空闲字符与颠倒的Disparity可能被用来触发时钟校正。

上面提到了TXCHARDISPMODE和TXCHARDISPVAL,其基本含义以在表中说明,下面介绍下这两个端口的位与数据的对应关系:

  1. TXCHARDISPMODE[7:0] ,这是一个输入端口,时钟域TXUSRCLK2,设置为高,以便在编码TXDATA时与TXCHARDISPVAL一起工作,强制执行负数或正数的Running Disparity。设置为低,则使用正常的Running Disparity。
  • TXCHARDISPMODE[7]对应于TXDATA[63:56]
  • TXCHARDISPMODE[6]对应于TXDATA[55:48]
  • TXCHARDISPMODE[5]对应于TXDATA[47:40]
  • TXCHARDISPMODE[4] 对应于TXDATA[39: 32]
  • TXCHARDISPMODE[3]对应TXDATA[31:24]
  • TXCHARDISPMODE[2]对应TXDATA[23:16]
  • TXCHARDISPMODE[1]对应TXDATA[15:8]
  • TXCHARDISPMODE[0] 对应TXDATA[7:0]
  1. TXCHARDISPVAL[7:0] ,输入端口,时钟域TXUSRCLK2,与TXCHARDISPMODE合作,提供Running Disparity控制。

其对应关系与TXCHARDISPMODE一致,不再赘述。

下面在看下其他端口:

  1. TX8B10BBYPASS[7:0] ,这个高电平有效的端口允许字节交错的数据以每个字节为单位绕过8B/10B。TX8B10BEN必须为高电平,才能使用这种逐个字节的旁路模式。
  • TX8B10BBYPASS [7] 对应于TXDATA[63:56]

  • TX8B10BBYPASS [6] 对应于TXDATA[55:48]

  • TX8B10BBYPASS [5] 对应于TXDATA[47:40]

  • TX8B10BBYPASS [4] 对应于TXDATA[39:32]

  • TX8B10BBYPASS [3] 对应于TXDATA:31: 24]

  • TX8B10BBYPASS [2] 对应TXDATA[23:16]

  • TX8B10BBYPASS [1] 对应TXDATA[15:8]

  • TX8B10BBYPASS [0] 对应TXDATA[7:0]

TX8B10BBYPASS[x] = 1,字节x的编码器被绕过。TX8B10BBYPASS[x] = 0,使用字节x的编码器。

  1. TX8B10BEN ,TX8B10BEN被设置为高电平以启用8B/10B编码器。启用8B/10B编码器时,TX_DATA_WIDTH必须被设置为20、40或80。0:8B/10B编码器被绕过。该选项可以减少延迟。1:启用8B/10B编码器。

  2. TXCHARISK[7:0] ,当高电平时,表示TXDATA上对应的数据字节是一个有效的K字符。

  • TXCHARISK[7]对应TXDATA[63:56] * TXCHARISK[6]对应TXDATA[55:48] * TXCHARISK[5]对应TXDATA[47:40] * TXCHARISK[4]对应TXDATA[39:32] * TXCHARISK[3] 对应TXDATA[31: 24]
  • TXCHARISK[2]对应TXDATA[23:16] * TXCHARISK[1]对应TXDATA[15:8] * TXCHARISK[0]对应TXDATA[7:0] 当来自 txdata 的相应数据字节被设置为绕过8b/10b 编码器时, TXCHARISK 位应该被拉低。

启用和禁用8B/10B编码

  1. 要启用8B/10B编码器,TX8B10BEN必须被驱动为高电平。TX8B/10B编码器允许字节交错的数据以每个字节为单位绕过编码器。

  2. 当TX8B10BEN被驱动为低电平时,所有编码器被关闭,不能对TXDATA的数据进行编码。

  3. 当TX8B10BEN为高电平时,将TX8B10BBYPASS的一个位驱动为高电平可以使来自TXDATA的相应字节通道绕过8B/10B编码。

当编码器关闭时,TXDATA端口的操作与FPGA TX接口中描述的一样。即当8B/10B编码器被绕过且TX_DATA_WIDTH为20、40或80时,TXCHARDISPMODE和TXCHARDISPVAL端口被用来将TXDATA端口从16位扩展到20位,32位扩展到40位,或64位扩展到80位。

近期回顾

  • GT Transceiver的动态重配置端口

  • GT Transceiver的回环模式

  • GT Transceiver的电源控制

  • GT Transceiver的复位与初始化(4)RX初始化和复位流程

  • GT Transceiver的复位与初始化(3)TX初始化和复位流程

  • GT Transceiver的复位与初始化(2)CPLL复位以及QPLL复位

  • GT Transceiver的复位与初始化(1)Transceiver复位的两种类型和两种模式

  • GT Transceiver中的重要时钟及其关系(10)RXOUTCLK的来源及其生成

  • GT Transceiver中的重要时钟及其关系(9)RXUSERCLK和RXUSER_CLK2的生成

  • GT Transceiver中的重要时钟及其关系(8)TXOUTCLK的来源及其产生

  • GT Transceiver中的重要时钟及其关系(7)TXUSRCLK以及TXUSRCLK2的产生

  • FPGA 核和FPGA Fabric的区别是什么?

  • GT Transceiver中的重要时钟及其关系(6)TXUSRCLK以及TXUSRCLK2的用途与关系

  • GT Transceiver中的重要时钟及其关系(5)QPLL的工作原理介绍

  • GT Transceiver中的重要时钟及其关系(4)CPLL的工作原理介绍

  • GT Transceiver中的重要时钟及其关系(3)多个外部参考时钟使用模型

  • GT Transceiver中的重要时钟及其关系(2)单个外部参考时钟使用模型

  • GT Transceiver中的重要时钟及其关系(1)GT Transceiver参考时钟

  • FPGA的设计艺术(11)FPGA的构建过程

  • FPGA的设计艺术(8)最佳的FPGA开发实践之严格遵循过程

  • GT Transceiver的总体架构梳理

  • Vivado中用于时钟操作的几个Tcl命令

  • 高速串行总线设计基础(六)揭秘SERDES高速面纱之数据包与参考时钟要求

  • 高速串行总线设计基础(八)揭秘SERDES高速面纱之CML电平标准与预加重技术

  • FPGA基础知识极简教程(1)从布尔代数到触发器

  • FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输

  • 静态时序分析中的四类时序路径

  • 时序分析中的关键术语

  • 高速串行总线设计基础(一)同步时序模型介绍

  • 高速串行总线设计基础(四)眼图的形成原理

  • FPGA设计心得(10)关于行为仿真的一点观点

  • Vivado如何计算关键路径的保持时间裕量?

  • Vivado如何计算关键路径的建立时间裕量?(实践篇)

  • Vivado如何计算关键路径的建立时间裕量?(理论分析篇)

  • TCL中Ports/Pins/Nets/Cells/Clocks之间的交互关系?

  • TCL中关于Nets的一些用法?

  • TCL中关于Cells的一些使用方法?

  • TCL中关于Pins的一些使用方法?

  • TCL中关于管脚(Ports)的一些使用方法?

  • 逻辑设计中复位的稳妥处理方法?

  • 逻辑设计中需要显式地使用IBUF以及OBUF类似的原语吗?

  • FPGA的设计艺术(1)FPGA的硬件架构

TX的8B/10B编码功能相关推荐

  1. 8B/10B编码原理详解、Verilog实现及在JESD204B中的应用

    目录 1.8B/10B介绍 2.原理 3.Verilog实现 4.实例:在JESD204B中的应用 参考资料: 1.8B/10B介绍 8B/10B编码的目的是防止串行的数据出现长时间的连0连1,因为这 ...

  2. 8b10b编码源码 matlab,8b/10b编码技术系列(一):Serdes、CDR、K码

    和大家分享一下关于8b/10b编码的知识点,如有什么错误之处或大家有什么额外的见解欢迎大家公众号后台留言! 一.Serdes高速收发器 在传统的源同步传输中,数据和时钟分离,在速率较低(<100 ...

  3. 8b/10b编码技术系列(一):Serdes、CDR、K码

    和大家分享一下关于8b/10b编码的知识点,如有什么错误之处或大家有什么额外的见解欢迎大家公众号后台留言! 一.Serdes高速收发器 在传统的源同步传输中,数据和时钟分离,在速率较低(<100 ...

  4. 高速串行总线系列(1)8B/10B编码技术

    目录 8B/10B编码 5B/6B 编码表 3B/4B 编码表 控制字符编码表 8B/10B编码的利用率 参考文献 8B/10B编码 为什么要使用8B/10B编码? 8b/10b编码的特性之一是保证D ...

  5. 高速收发器之8B/10B编码

    前面文章说过,在高速链路中导致接收端眼图闭合的原因,很大部分并不是由于高频的损耗太大了,而是由于高低频的损耗差异过大,导致码间干扰严重,因此不能张开眼睛.针对这种情况,前面有讲过可以通过CTLE和FF ...

  6. 线路/信道编码技术(1)——8B/10B编码

    1. 线路编码技术 线路编码机制将输入原始数据转变为接收器可接收的数据格式,同时保证数据流中有足够的时钟信息提供给接收端的时钟恢复电路.线路编码技术提供了一种将数据对齐到字节/字的方法,可以保持良好的 ...

  7. #PCIE# 8b/10b 编码

    前言 8B/10B,也叫做8字节/10字节或8B10B.8B/10B方式最初由IBM公司于1983年发明并应用于ESCON(200M互连系统),由Al Widmer和Peter Franaszek在I ...

  8. 让我们来搞清楚8b/10b编码到底是怎么回事吧

    前言:很多知识我们往往只是了解了皮毛,不知道它为什么产生,更不清楚它深层的应用,很多人半瓶水晃荡,而这正是我最厌恶的,对于8B/10B编码这个知识点我就来扯开它的神秘面纱. 8b/10b的由来: 8B ...

  9. 高速串行通信常用的编码方式-8b/10b编码/解码

    绪论 8b/10b编码/解码是高速串行通信,如PCle SATA(串行ATA),以及Fiber Channel中常用的编解码方式.在发送端,编码电路将串行输入的8比特一组的数据转变成10比特一组的数据 ...

最新文章

  1. Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep
  2. 【连载】高效人士的116个IT秘诀(第2版)——秘诀25快速记录你的工作日志
  3. 配置ssh_config
  4. C++对象模型学习——站在对象模型的尖端
  5. Spring初学(一)
  6. 2019第一篇万字长文!30+家一线投资机构已出投资新策略...
  7. 操作系统存储器管理实验报告_献上膝盖!华为工程师抛出一份堪称“举世无双”操作系统笔记...
  8. 湖北省武汉科技大学计算机报名,湖北武汉科技大学第33次计算机等级考试报名通知...
  9. .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
  10. 贪心策略——哈夫曼编码
  11. java开发项目经验_Java项目经验——程序员成长的钥匙
  12. CMOS 与BIOS
  13. 微服务esb_深入理解微服务架构:银弹or焦油坑?
  14. java 读取yaml配置文件
  15. 把Spring boot jar作为Windows服务运行
  16. Matlab更改计算机用户名
  17. extension(扩展)使用详情
  18. 【渝粤教育】 国家开放大学2020年春季 2774畜产品加工技术 参考试题
  19. 疫情期间再读三体(3)——黑暗森林到底怎么个黑法
  20. property中ref、value、name的区别

热门文章

  1. web客户端 http error 413
  2. 认识nio中buf的三个常用属性
  3. javascript中的for循环
  4. 7、Altiris cms 7.0 软件管理 下
  5. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)
  6. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
  7. webhook自定义服务器,GO 使用Webhook 实现github 自动化部署
  8. 计算机原理与接口专科学影像技术专业的,女生影像学专业就业前景好
  9. c++链表形参丢失_LeetCode 例题精讲 | 01 反转链表:如何轻松重构链表
  10. android设置app全局没通知声,从android中的firebase发送通知时没有通知声音