01signal.com

多吉比特收发器(MGT)概览

本页是介绍多吉比特收发器(Multi-Gigabit Transceiver,MGT)的系列文章的第一篇,也是对整个系列将要介绍的内容的概览。

简介

多吉比特收发器(MGT)在计算机或电子系统内部不同部分之间的通信中起着重要作用。计算机内部一些常见接口都基于 MGT,例如 PCIe 和 SATA。还有一些常用接口用于计算机与外设之间的通信,例如千兆以太网、SuperSpeed USB、Thunderbolt 和 DisplayPort。

MGT 也用来连接电子元件,比如连接两片 FPGA。这种情况下,通信通常基于某种较少为人所知的协议,甚至是非标准协议。但 MGT 也可以用来把 FPGA 连接到其他类型的元件,或者用于其他元件之间的相互连接,比如借助 Xillyp2p

例如,光纤收发器往往是标准模块(尤其是 SFP+ 封装),可以直接与 MGT 对接,如这个示例设计所示。一些高速 ADC/DAC 也使用 MGT 来传输采样数据(通常基于 JESD204 协议)。还有一些协议用于传输视频数据(例如 MIPI 的某些物理层协议)。

尽管 MGT 经常用于双向协议,但每个 MGT 实际上由两个独立部分组成:一个发送器和一个接收器。因此可以让其中一个部分关闭,从而把 MGT 用于单向传输。在大多数 FPGA 的 MGT 中,发送器和接收器的参数也可以独立配置。

总之,MGT 的应用非常广泛。很多时候,接口的名字并不会让人想到其中用了 MGT(例如千兆以太网、SATA 和 DisplayPort),但它们的物理层就是由 MGT 构成的。

值得一提的是,Xilinx(之后并入 AMD)给自己的 MGT 起了不同的名字:RocketIO、GTX、GTH、GTY、GTP、GTM 等。每个名字都对应收发器的一种具体硬件实现,因此根据名字可以大致了解该收发器的数据速率以及其他性能特性。

本系列文章将介绍 MGT 的基础知识,以及一些与之相关的常用术语,目的是帮助读者更容易读懂技术文档,尤其是能够判断哪些参数与自己的项目有关,哪些无关。

什么是 MGT?

需要认识到一个重点:在所有复杂功能的背后,MGT 本质上只是一个 SERDES(串行器/解串器),也就是一个负责接收和发送数据的电子功能模块。MGT 对外的电气接口由两根导线组成,它们构成一对差分线。当第一根线(“正”线)上的电压高于另一根线(“负”线)上的电压时,物理状态对应为逻辑 1;否则为逻辑 0。这与 LVDS 等差分接口的原理相同。

MGT 与 SERDES 的另一个相似之处是,MGT 与应用逻辑之间的接口是一个并行字:在应用逻辑时钟的每个周期内,应用逻辑与 MGT 之间会传输若干位数据。这样做是必要的,因为数据速率远高于 FPGA 能够达到的最高时钟频率。

不过,普通 SERDES 与 MGT 之间也有一些重要区别。下面列举其中几点:

那么,MGT 为什么会这么复杂?

凡是在 FPGA 项目中配置过 MGT 模块的人都知道,这里有很多参数和选项。可为什么非要这样呢?

其实未必需要这么复杂:如这个示例设计所示,如果只是把 MGT 当作 SERDES 来用,很多复杂之处都可以省掉。

然而,使用 MGT 通常还是很复杂,原因主要有三点。第一,MGT 模块实现了许多功能模块,这些功能本来可以在 FPGA 的逻辑结构(logic fabric)中实现,但为了效率,MGT 把它们直接包含在了自己内部。例如,所有 MGT 都能对8b/10b 进行编码和解码,尽管这个任务本来可以由应用逻辑完成。只是因为这种编码技术太常用,所以让 MGT 直接处理更为方便。

第二个原因与时钟有关:MGT 正常工作需要多个时钟。更麻烦的是,相比 FPGA 逻辑结构使用的时钟,MGT 对时钟质量的要求更高,尤其是对抖动(jitter)的要求。有时还会使用 SSC(Spread Spectrum Clocking,扩频时钟),这让事情变得更加复杂。

所以,有时候把时钟处理好,难度一点都不亚于为 MGT 选择合适的参数。

第三个原因是,MGT 在设计上要支持好几种标准通信协议。于是,某些特定协议所需功能特性的名字往往就直接取自该协议的规范。对于不了解相关协议的人来说,这些术语毫无意义。这就使人们在为 FPGA 配置 MGT 模块时,很难决定到底要开启哪些功能。

以上问题都会在本系列后面的文章中详细讨论。

需要注意的问题

在大多数应用场景中,MGT 是作为另一种成熟协议的物理层来用的,尤其是 PCIe。在这种情况下,FPGA 工具会处理所有细节,你并不需要太了解底层发生了什么。

不过,如果你打算把自己的应用逻辑直接接到 MGT 上,就必须知道这种逻辑要应对哪些挑战。其中一些问题可以由专门用于 FPGA 之间通信的协议来解决。

下面简要列出一些需要重点考虑的问题。本系列后面的文章会对每一条做更详细的介绍。

PMA、PCS 与时钟

这个框图展示了 MGT 的组成部分以及它与应用逻辑之间的交互:

Overview of Multi-Gigabit Transceiver's components

MGT 的功能通常被划分为三个部分:

这些内容会在本系列文章中进一步展开。

PIPE 接口

PIPE 标准值得一提:它定义了 MGT 与实现 PCIe、SuperSpeed USB 或 SATA 的逻辑之间的连接,包括用于传输数据、控制信号和状态信号的端口。

在这个标准中,MGT 被称为 PHY 层,协议则被称为 MAC 层。定义以太网、USB 1.x 和 USB 2.0 的标准也使用这套术语。这些标准通常由两颗独立的芯片来实现。例如,要在处理器芯片上实现以太网,MAC 层就做在该芯片内部,PHY 层则放在另一颗独立的芯片中。PIPE 标准也是按同样的思路编写的,只不过 PCIe、SuperSpeed USB 或 SATA 实际上几乎总是完整地集成在同一颗芯片上。PIPE 标准所定义的 MAC 层与 PHY 层之间的连接发生在芯片内部,外界很少能够看到。

PIPE 标准的一个重要影响是:主流 FPGA 的 MGT 都一定会实现 PCIe 所要求的 PIPE 接口。用于 SATA 的 PIPE 接口也常常得到支持。在实现这两种协议时,这显然很有用;但另一个重要的好处是,不同 FPGA 上 MGT 的接口都很相似。尤其是有一些功能单元几乎存在于所有 MGT 中。

总结

本页对 MGT 及其复杂性做了一个概述。在本系列后面的文章中,会讲到上面提到的许多概念。但在此之前,我们先简要介绍一下在连接两片 FPGA 的 MGT 时常用的协议。

本页由机器从英文翻译而来。如有疑问,请参阅原文
Copyright © 2021-2026. All rights reserved. (dcc38493)