[FPGA21]高速串行总线_IBERT核

总线基本概念,常用高速串行总线,IBERT_UltraScale_GTH核的使用

总线基本概念

总线概念

  • 总线最开始是计算机里的概念,它表示计算机内部以及计算机之间传输数据的共同通道。
  • 计算机中的总线有很多,例如ISA,PCI,SATA等。计算机中总线的分类可以有很多种方式,例如:按照功能可以分为:数据总线,地址总线,控制总线。
  • 在计算机之后出现的嵌入式系统中也沿用了总线的概念,并为了适应嵌入式的特定需求,制定了适用于嵌入式设备的总线标准,例如用于FPGA之间传输数据的Aurora总线,用于嵌入式设备之间数据传输的SRIO总线(例如FPGA与DSP之间数据传输)等。

总线位宽

  • 顾名思义,总线位宽是指总线能够一次性传送的二进制数据位数,例如32bit、64bit等。

总线的工作频率

  • 计算机以及嵌入式系统,都必须工作在一定的时钟下,时钟是嵌入式系统的心脏,顾名思义,总线的工作频率也即时钟频率。

总线带宽

  • 总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系: 总线的带宽=总线的工作频率*总线的位宽/8 ; 或者 总线的带宽=(总线的位宽/8 )/总线周期。
  • 上述定义中,除8的原因是以字节Bps为单位,众所周知,一个字节是8bit位宽。如果不除以8,单位则是bps,串行总线常常以Gbps为单位。

常用高速串行总线

JESD204总线

  • JESD204总线是面向DAC、ADC的串行通信总线结构。
  • JESD204协议采用CML(Current Mode Logic)电平,以一对差分线代替原来并行的12~16位数据线,实现ADC、DAC器件的串行通信接口。

SRIO总线

  • SRIO(Serial RapidIO)是一种低延时、基于包交换和分发结构的、支持消息和读写操作的、具有容错机制和流量控制的、高效率低功耗、可支持数千个节点的新型总线结构。
  • SRIO总线的定位是针对嵌入式系统多处理器间的互连,如常见的FPGA与DSP的互联。

PCIE

  • PCIE主要用于PC领域的高速串行通信。
  • PCIE是PC内的系统总线或局部系统总线,用于连接CPU及各种功能的外设,是一种通用总线结构。PC设备中有一个中央处理器CPU,其余均为CPU的外设,即只有一个主设备。

SATA总线

  • SATA主要用于实现PC领域的存储。SATA是面向硬盘存储的总线接口。

Aurora

  • Aurora总线协议由Xilinx公司于2002年首次提出,是针对FPGA间的高速串行数据传输总线。
  • 与SRIO,PCIE总线相比,Aurora总线特征明显,用于解决FPGA之间的数据传输,速率任意,不支持交换结构。

FC标准

  • SRIO主要用于解决嵌入式处理器之间的互联,JESD204实现ADC、DAC与FPGA之间的接口,SATA主要用于实现PC领域的存储,而企业级的存储区域网络(SAN,Storage Area Network)也需要一种高速的串行通信技术用于代替并行的SCSI方式了,FC总线标准诞生了。
  • FC准备综合了通道技术和网络技术这两种技术的各自优势。通道技术的设计目的是为了使数据信息在设备缓存间能够快速传输,而不需要进行很多的逻辑操作,属于一种硬件密集型的技术,如前面的SRIO;
  • 网络技术属于一种软件密集型技术,具有操作大量节点的能力,网络上的数据包通过网络技术可以被路由到许多设备中的某个节点上,典型应用为SAN。

IBERT核_集成比特误码率测试仪

  • IBERT是Xilinx提供的集成比特误码率测试仪(Integrated Bit Error Ratio Tester),作为用户来说可以使用这个工具对自己设计的板子中的高速串行收发器进行简单测试,从而判断设计的接口是否有问题。

配置工程文件

  1. 首先先新建Vivado工程,并选择对应芯片或开发版
  2. 点击"PROJECT MANAGER -> IP Catalog",打开IP管理界面,搜索"IBERT",点击添加"IBERT_UltraScale_GTH"IP核,会自动弹出IP配置界面
  3. 在"Protocol Definition"界面,"Number of Protocols"选项可配置protocol的数量,如果我想同时测试不通的LinerRate,就需要根据实际数量进行选择。"LineRate"选项可配置收发器的最高速率,可根据该接口的实际使用需求选择对应的速率值。"Refclk"选项可配置收发器所需要的参考时钟,具体数值需根据具体手册要求进行选择,比如10G以太网对应156.25MHz参考时钟,25G以太网对应161.1328125MHz参考时钟。"Quad Count"选项可选择对应的数量,每一个Quad对应4个GTH收发器,根据测试数量决定。
  4. 在"Advanced Settings"界面,可以用于设置收发器接收端的均衡等内容,保持默认就好了
  5. 在"Protocol Selection"界面,主要用于设置待测试的GTH接口的所在位置,以及所想要使用的GTH接口参考时钟所在位置。具体可查阅对应芯片的原理图文件,查看对应待测高速接口的所在BANK,以及连接的参考时钟。需要注意,参考时钟的选择仅可使用自身bank和相邻bank的输入时钟。
  6. 在"Clock Settings"界面,可以选择系统时钟,可根据原理图的系统时钟进行选择。
  7. 在"Summary"界面,能够看到IP核的具体配置情况,点击"OK",完成IP核的配置
  8. 在"Sources -> Design Sources"界面下,能够看到我们刚刚生成好的IP核,右键IP核,选择"Open IP Example Design",即可获得基于该IP生成的示例工程。
  9. 接着直接生成bit即可,配置工程文件的工作到此结束。

板上调试

  1. 将生成好的bit和ltx下载到板子上,在调试界面中右键"IBERT",选择"Create Links",一个GTY收发器包含一个发送端Tx和一个接收端Rx,故有四组Tx、Rx。如果测试是选择一个GTY收发器自发自收可以选择单个收发器的Tx和Rx直接连接;如果选择GTY两两相互收发,可以两个GTY收发器的Tx和Rx端交叉连接等等。根据原理图与外部连线,选择对应的收发器。当然更简单的,可以点击"Auto-detect Link",进行自动连接。
  2. 连接成功后,可以再"Serial I/O Links"界面中,查看当前链路的连接情况。
  3. "Rx PLL Status"和"Tx PLL Status"选项中,如果显示"Locked",即表明时钟已锁定正常工作;如显示其他信息则说明对应的参考时钟设置或参考失踪的管脚约束可能存在问题
  4. "Loopback Mode"主要有四种模式,分为近端、远端的PCS和近端、远端PMA回环,如果选择其中一种回环方式则其在对应的位置回环了,如果选择none,则Tx端的码流将会输出,根据自行外部连接线在输入到Rx端去,这里采用外部连接故选择none,选择外部连接一定要注意连接线是否合适
  5. Tx 的Pre-cursor、Post-cursor和Diff Swing就是收发器的Tx发送端的预加重等可以改善信号传输质量的一下参数,可以修改这些参数获取最优质量,而DFE Enable是收发器的Rx接收端的均衡器的使能信号,勾选有利补偿信号在信道传输中的损失
  6. "Tx Pattern"和"Rx Pattern"是测试时的伪随机码,接收端可以校验发送端发送的数据是否正确的来计算误码率,故需要Tx和Rx的伪随机码一致
  7. "Inject Error"可以在测试过程中机型注入错误,可以模拟真实情况下有可能遇到的各种影响
  8. 在以上的每种操作后记得要reset下,当设置好上述的参数或者其他设置之后就可以观察收发情况
  9. 还可以观察收发器的眼图来查看信道收发情况,右键对应的Link,选择"Create Scan..."选项,即可查看眼图,观察该图是否像眼睛以及张开的面积,如果张开的面积越大说明信道质量越好
  10. 还可以右键对应的Link,选择"Create Sweep..."选项,这样就可以设置多组不同的预加重参数生成眼图,从所有参数中选取眼睛张开面积最大的那张图所对应的参数就是最优参数,可以应用在之后的接口设计配置中。

参考:
在开始高速接口前,我们来试试IBERT测试吧
XILINX_PG246
高速串行总线系列(2)高速串行总线技术总览
高速串行总线系列(5)总线的各种基础问题