高速收发器(GTX)文章导航

  关于FPGA的开发,大致可以分为算法和接口两类,其中接口又可以分为高速和低速两类,像UART、I2C、SPI、SDRAM、HDMI、LVDS等等,都被归为低速接口类别,最高线速率不过几百Mbps,使用FPGA的普通IO即可实现数据收发。

  而高速接口是指基于serdes设计的一些接口,线速率一般大于1Gbps,比如万兆网、PCIE、SRIO等协议所有的接口。xilinx的GTP、GTX、GTH等都属于这类接口,有专用的参考时钟引脚、数据收发引脚。

  如今高速接口很多,就像金庸的武侠剧中有各种各样的上层武功,最好用的无非是乾坤大挪移这种打好基础,就能快速上手其余武功。而GTX这种底层的Serdes就好比乾坤大挪移或北冥神功,JESD204B、万兆网、SRIO、Aurora等就是各种上层武功。

  在后面会发现JESD204B、万兆网、SRIO、Aurora这些只不过是在GTX的基础上封装得到的,GTX的时钟架构适用于所有上层高速接口。只要掌握GTX(指掌握理论知识,包括内部时钟架构分析,8B10B,64B66B编码等等,不是会调用IP)的使用,后续的JESD204B、万兆网、SRIO、Aurora等高速接口学习会事半功倍。并且GTX这种底层Serdes可以自定义PHY层协议(类似自创武功),比上层协议IP更加灵活。

  学习了一段时间的高速接口内容,目前使用过GTX实现8B10B,64B66B数据收发、aurora 8B10B和aurora 64B66B,SRIO数据收发、万兆以太网UDP协议栈的搭建。整个过程感觉最重要的就是对GTX的熟悉,后续的SRIO和万兆网只需要熟悉协议,在看官方IP手册即可。

  关于高速收发器相关内容打算从最基础的GTX开始讲解,再看官方提供的aurora 8B10B和aurora 64B66B就会特别简单。SRIO目前还只是初步使用,暂时不会出相关讲解。万兆网之前使用10G PCSPMA IP搭建的UDP协议栈,但是后面想直接使用GTX搭建万兆网的PHY层、MAC层以及IP层的ARP、ICMP、UDP协议,将难度提升到最大,充分掌握GTX的开发。

  既然要完成上述内容,就必须熟悉GTX相关内容,因此下面会通过大约十多篇文章讲解GTX的原理及常用设置,重点需要关注共享逻辑、内部时钟结构、时钟纠正、接收数据对齐等内容。


1、GTX相关的原理内容

  FPGA高速收发器的来源:了解高速收发器是串行差分总线,为什么不是并行总线?

  详解GTX时钟及共享部分(高速收发器一):了解GTX共用资源及高速收发器参考时钟的设置。

  如何理解GTX发送通道的用户接口?(高速收发器二):概述发送通道内部模块的功能,对发送通道内部时钟以及数据传输位宽做详细讲解,需要知道如何根据线速率计算txusrclk频率,进而确定用户接口时钟频率。以及并串转换的相关时钟内部是如何设置的,这与内部为啥使用FIFO同步数据也有一定关系。关于8B10B编码、加重、gearbox等内容会单独在后续章节详细讲解。

  如何理解GTX接收通道相关模块?(高速收发器三):概述GTX接收通道相关模块,需要重点理解逗号对齐、buffer缓冲数据、时钟纠正等原理,另外通道绑定、CDR等内容在后文详细讲解,本文就没有过多赘述。

  深入解析GTX收发器的时钟架构与数据位宽关系(高速收发器四):结合前三篇内容,对GTX内部时钟结构和内部数据传输位宽进行对应讲解,便于通过线速率和内部数据位宽,计算内部时钟频率及用户接口时钟频率。

  8B10B编码(高速收发器五):本文讲述8B10B编码原理,详细讲解了RD的使用,FPGA实现8B10B编码、解码很简单,编码可以通过查找表实现,解码需要通过移位寄存器将输入的数据暂存,检测移位寄存器中的数据是否是指定的K码,从检测到的K码位置开始对后续的编码进行解码。由于K码的编码结果是唯一的,因此不会识别错误。

  简要讲解高速信号的眼图_加重_均衡(高速收发器六):本文讲述发送端使用加重、接收端使用均衡的原因(信道对各个频段信号的衰减程度是不一样的,类似低通滤波器,对传输的高频分量衰减的比较大),通过B站一些示波器厂家的讲解熟悉高速接口使用这些手段的原因。

  科普光纤及光模块(高速收发器七):光口是用于数据传输的物理接口,与万兆网等通信协议无直接联系。光模块将电信号转换为光信号,通过光纤传输,有SFP+等多种封装。光纤通过全反射传输光信号,有单模和多模之分,接口类型多样。10G以太网有多种命名规则,涉及速率、介质、编码等,如10GBASE-T、10GBASE-SR等。

  IBERT眼图扫描(高速收发器八):本文介绍了如何使用Xilinx的IBERT IP核对GTX收发器进行眼图扫描和参数优化。解释了GTX的回环模式,包括近端和远端回环,以及它们在信号完整性测试中的应用。接着,详细说明了IBERT IP核的配置过程。通过Vivado工具查看眼图,调整加重和幅值参数,利用眼图扫描功能找到最佳设置。


2、基于GTX的8B10编码开发

  GTX IP生成及参数详解(高速收发器九):本文介绍了7系列FPGA中GTX收发器的配置过程。首先通过Transceivers Wizard选择GT收发器并配置QPLL。接着在Line Rate界面设置线速率和参考时钟,选择收发器位置并启用通道。在Encoding界面配置数据编码、位宽和DRP时钟。

  GTX示例工程分析及上板(高速收发器十):本文分析了Xilinx GTX IP的官方示例工程,包括数据生成、校验和GTX IP处理模块。通过仿真验证了GTX IP的收发功能,然后对工程进行修改以适应上板测试,包括时钟输入和回环设置。

  整理GTX收发器示例工程(高速收发器十一):本文整理了Xilinx GTX IP示例工程,创建了gt_channel模块。通过在gt_module模块中多次例化gt_channel,实现了多通道收发器设计,共用QPLL时钟。

  基于GTX 8B10B编码的自定义PHY发送模块(高速收发器十二):本文介绍了自定义PHY协议发送模块的设计方法,重点在于状态机的实现和FIFO的使用以提高数据发送效率。详细分析了状态机的编码逻辑、FIFO配置和计数器设置,并通过仿真验证了设计的正确性。

  基于GTX 8B10B编码的自定义PHY接收模块(高速收发器十三):本文介绍了自定义PHY协议接收模块的设计,重点解决了GTX IP接收通道的字对齐问题。通过移位寄存器暂存数据,检测帧头帧尾,生成数据掩码和有效指示信号。

  基于GTX 8B10B编码的自定义PHY上板测试(高速收发器十四):本文通过光纤回环对自定义PHY协议的GTX IP收发模块进行了上板测试。集成了两个收发器通道和测试数据模块,设置了基于眼图扫描得到的加重和幅度参数。上板测试中,通过ILA观测了回环数据,验证了自定义PHY的正确性。测试了不同数据有效字节数的情况,结果表明发送和接收的数据一致,确认了自定义PHY模块的功能正常。


3、Aurora 8B/10B协议的开发

  Aurora 8b/10b协议(高速收发器十五):Aurora 8B/10B是一种高速串行链路层协议,支持点对点数据传输。它通过Padding、组帧、8B/10B编码、串行化等流程发送数据,并支持UFC和NFC流量控制机制,防止数据丢失。协议还包括通道初始化、绑定、验证等过程,以及时钟补偿序列,以适应发送端和接收端的时钟速率差异。

  Xilinx的Aurora8B10B ip原理讲解(高速收发器十六):Xilinx的Aurora 8B/10B IP基于Aurora 8B/10B协议,提供两种用户数据接口,支持流量控制,简化了数据传输。该IP内部完成组帧、字节对齐、时钟补偿等功能,用户不需直接操作GTX收发器。

  Xilinx的Aurora8B10B的IP仿真及上板测试(高速收发器十七):本文介绍了Xilinx Aurora 8B/10B IP的配置、仿真和上板测试流程。首先在Vivado中配置IP参数,生成示例工程并进行模块仿真,验证数据收发正确性。然后修改工程以适应开发板,通过ILA抓取发送和接收数据,确认IP收发数据时序无误。

  整理Aurora8B10B官方示例工程(高速收发器十八):本文介绍了如何封装和测试Xilinx Aurora 8B/10B IP的多通道收发功能。首先整理了官方示例工程,将共享逻辑和独立逻辑分离,简化了多通道收发器的例化。然后调用两个收发器进行仿真,最后在开发板上进行了测试,通过ILA抓取的发送和接收数据时序,验证了封装的双通道收发器功能正常。


4、基于GTX的64B66编码开发

  GTX的64B66B编码(高速收发器十九):GTX的64B66B编码原理和使用方法。64B66B通过加扰保证零一均衡,使用2位同步头指示帧类型,并通过Gearbox实现数据的串并转换。GTX内部不进行加扰和解扰,需要用户在外部完成。发送时使用外部计数器控制数据发送,接收时通过RX Gearbox实现数据输出,并通过RXGEARBOXSLIP信号和同步头状态实现手动对齐。

  基于GTX的64B66B编码IP生成(高速收发器二十):如何配置GTX IP实现64B66B编码,涉及共享逻辑设置、线速率与参考时钟频率配置、Buffer同步、均衡模式选择、通道绑定与时钟纠正等。同时分析了示例工程中的模块,包括QPLL、复位、用户时钟生成、手动同步等,最后通过仿真验证了IP配置的正确性。

  基于GTX的64B66B编码的自定义协议发送模块(高速收发器二十一):主要讲解64B66B组帧原理,包括数据帧和控制帧,以及以太网控制协议。设计了自定义PHY发送模块,采用axi_stream接口,通过FIFO暂存数据,实现组帧发送。详细分析了模块代码,最后通过仿真验证了模块的正确性。

  基于GTX的64B66B编码的自定义接收模块(高速收发器二十二):完成了64B66B自定义PHY的顶层模块设计,包括发送、加扰、接收对齐、解扰和接收数据模块。重点设计了接收端同步模块,通过检测同步头状态调整串并转换起始位置实现数据对齐,并增加了同步失败的判断条件,最后通过仿真验证了设计的正确性。

  基于64B66B编码的自定义协议phy层上板测试(高速收发器二十三):对64B66B自定义PHY进行了总体仿真和上板测试,验证了高速收发器模块、发送模块、接收模块的功能正确性。顶层模块包含两个高速收发器和自定义PHY层模块,通过光纤回环传输数据。仿真验证了接收端同步模块和收发数据的时序正确性。上板测试中,通过ILA调试信号,测试了不同尾端数据掩码情况下的收发数据,结果表明设计正确。


5、Aurora 64B/66B协议的开发(重点在于流控的使用)

  Aurora64B 66B IP的原理及示例工程分析(高速收发器二十四):Aurora 64B/66B是一种高性能串行通信协议,与Aurora 8B/10B原理相似,支持全双工模式,提供AXI4-Stream和Stream两种接口。内核基于GTX封装,内部包含加扰、解扰模块,具备流控和CRC校验功能。复位信号包括Reset_pb和pma_init,前者仅复位内核逻辑,后者复位整个高速收发器。

  整理Aurora64B 66B示例工程并上板测试(高速收发器二十五):主要讲解Aurora 64B/66B IP的整理、封装、测试和上板过程。首先对每个高速收发器进行复位逻辑和时钟信号封装,然后生成测试数据并连接各模块,完成顶层模块设计,接着进行仿真验证,确认数据收发正常,最后将工程下载到开发板,通过ILA抓取数据,验证实际硬件中的数据传输和初始化过程。

  Aurora64B 66B的流控原理(高速收发器二十六):深入讲解了Aurora 64B/66B协议的流控原理,包括本地流量控制(NFC)和用户流量控制(UFC)。NFC用于防止接收端FIFO溢出,通过发送信号让发送端暂停数据传输。UFC允许发送高优先级数据帧。

  Aurora 64B 66B两种流量控制的使用方式(高速收发器二十七):测试了Aurora 64B/66B IP的UFC和NFC流控功能。通过仿真和上板实验,验证了接收端通过NFC让发送端暂停发送数据,以及按键触发UFC发送优先级高的数据帧的功能。


6、SRIO协议开发

  简要讲解Xilinx SRIO IP(高速收发器二十八) : 串行RapidIO(SRIO)技术是基于SERDES的高速串行总线,Xilinx提供的SRIO IP核支持1至4通道,建立在GT收发器之上,包含逻辑层、BUFFER层和PHY层。逻辑层支持多种事务类型和数据包格式。

  详解Xilinx的SRIO IP的配置参数(高速收发器二十九):详解Vivado中配置SRIO IP核的参数,包括选择数据链路、线速率、参考时钟频率等,并设置了缓冲区深度、设备ID和流量控制。并分析SRIO IP的示例工程,涉及发送和接收数据模块。

  整理及仿真Xilinx的SRIO示例工程(高速收发器三十):仿真展示了维护端口配置、复位时序、初始化成功信号、流写事务和响应时序。整理示例工程时,建议将共享逻辑置于顶层以方便扩展。

  SRIO工程仿真及上板测试(高速收发器三十一):仿真时通过顶层模块交叉连接两路SRIO形成数据回环,验证了写入、门铃、读事务和消息发送等功能。上板时通过ILA捕获信号,确认了写数据、门铃、读数据响应和消息发送的时序与仿真一致。


7、万兆以太网(基于10G PCS PMA)开发

  万兆以太网接口演变(万兆以太网一):遵循IEEE 802.3ae规范,最初使用XGMII接口与PHY芯片通信,随后发展出XAUI接口,通过XGXS转换简化为8对差分信号线,随着Serdes技术发展,FPGA内部可实现PHY层设计,简化硬件设计。

  详解Xilinx的10G PCS PMA IP(万兆以太网二):详细阐述了10GBASE-R/KR的工作原理、XGMII接口时序、内核时钟分析及IP的功能信号与调试信号。


8、JESD204B接口协议开发

  初始JESD204B高速接口协议(JESD204B一):JESD204B是用于高速ADC/DAC与逻辑器件通信的串行接口协议,通过减少数据线对和简化PCB布线,解决了LVDS接口在高速数据传输中的布线难度和时序问题。

  JESD204B数据链路建立过程(JESD204B二):发送端首先进行时钟同步,然后接收端通过SYNC信号触发发送端发送K28.5字符进行码组同步。完成码组同步后,发送端在LMFC边沿发送初始通道对齐序列(ILAS),用于验证链路参数和对齐所有通道。接收端利用CDR技术恢复数据,并在ILAS的帮助下进行通道间数据对齐。

  详解JESD204B子类一的确定性延时(JESD20B三):通过SYSREF信号同步发送端(TX)和接收端(RX)的本地多帧时钟(LMFC),确保所有通道在LMFC的相同边沿发送和接收数据。ILAS序列用于标注数据的开始和结束,帮助接收端识别帧边界。弹性buffer(RBD)调整数据输出点,以补偿通道间的延迟差异,保证数据对齐输出。

  Xilinx的JESD204B PHY层IP仿真及上板测试(JESD204B四):详细介绍了在FPGA上配置和仿真JESD204B PHY IP的全过程。通过分析示例工程,理解了时钟处理、数据生成和检测模块的功能,并重点观察了axi_lite配置接口的时序。最后上板验证了PHY IP的通信功能。

  详解Xilinx JESD204B PHY层端口信号含义及动态切换线速率(JESD204B五):该IP具备丰富的内部寄存器,可通过axi_lite总线进行动态配置,包括QPLL和CPLL参数设置以实现线速率的调整。


9、PCIE接口协议开发(XDMA & RIFFA)


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

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

  • 12
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Zynq是Xilinx公司的一款片上系统(SoC),其中集成了一颗ARM处理和FPGA。而GTX/GTH是Xilinx 7系列FPGA中的高速收发。下面是一些基本概念: 1. GTX/GTH收发GTX(Gigabit Transceiver)/GTH(Gigabit Transceiver Hard)是Xilinx 7系列FPGA中的高速串行收发。它们支持多种协议,包括PCI Express、SATA、USB3.0、10Gb Ethernet等。GTX/GTH收发的特点是高速、低功耗和灵活性。 2. 通道:通道是指GTX/GTH收发中的一个物理通道,它包括一个发送端和一个接收端。一个GTX/GTH收发可以包含多个通道。 3. 数据速率:数据速率是指GTX/GTH收发传输数据的速度,通常以Gbps为单位。不同的协议有不同的数据速率要求,因此GTX/GTH收发支持多种数据速率。 4. 传输协议:GTX/GTH支持多种传输协议,包括PCI Express、SATA、USB3.0、10Gb Ethernet等。每种协议有不同的数据速率和传输格式要求,因此GTX/GTH收发需要配置不同的参数以支持不同的协议。 5. 时钟和时序:GTX/GTH收发需要使用时钟信号以同步发送和接收数据。时钟信号的频率和时序对于数据传输的稳定性和可靠性非常重要。GTX/GTH收发支持多种时钟配置方式,包括外部时钟、内部PLL时钟等。 6. 驱动和接收GTX/GTH收发的驱动和接收是用来控制发送和接收数据的电路。驱动控制数据的发送,接收控制数据的接收。GTX/GTH收发支持多种驱动和接收配置方式,包括预加重、均衡、解调等。 以上是一些基本概念,对于GTX/GTH的详细配置和使用,需要参考Xilinx的相关文档和实验指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电路_fpga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值