Xilinx 7系列FPGA之MGT简介

本篇作为xilinx 7系列FPGA简介篇的最后一篇,咱们来介绍MGT(Multi-gigabittransceiver)。

在业界,MGT是高速串行收发器模块的简称,xilinx公司在其artix7、kintex7以及virtex7里集成了数量不同的MGT用于实现FPGA与外界的高速串行通信,并且根据支持线速度的不同赋予了它新的名称。另外,Spartan7里面没有MGT。

在artix7里面,MGT被称作GTP,;在kintex7里面,MGT被称作GTX;在virtex7里面,MGT被称作GTX/GTH/GTZ;

GTP最高线速度6.6Gb/s,GTX最高线速度12.5Gb/s,GTH最高线速度13.1Gb/s,GTZ最高线速度28.05Gb/s(太牛逼,没用过,本篇不做介绍了)。

无论是GTP、GTX还是GTH,都是由3个模块构成:

1、时钟模块

2、数据发送模块

3、数据接收模块

首先我们看看GTP的构成,如图1所示:

图1:GTP结构图

图1:GTP结构图

在artix7中,每个GTP包含1个时钟模块、4个数据发送模块以及4个数据接收模块。一个时钟模块负责管理4对收发器(1个发送模块和1个接收模块合为一对收发器)。

时钟模块的输入端可以接2组差分参考时钟,内部也有2个频率为1.6GHz~3.3GHz的PLL,这样就允许RX和TX工作在不同的参考时钟下。

我们在来看看GTX/GTH的构成,如图2所示:

图2:GTX/GTH结构图

图2:GTX/GTH结构图

在kintex7/virtex7中,每个GTX/GTH同样包含1个时钟模块、4个数据发送模块以及4个数据接收模块。一个时钟模块负责管理4对收发器。但是时钟模块内有4个CPLL,即每个收发器都包含一个。同时还有一个QPLL。那么CPLL和QPLL有何不同呢?

在GTX里面,CPLL的频率范围为1.6GHz~3.3GHz,支持的最高线速度为6.6Gb/s。在GTH里面,CPLL的频率范围为1.6GHz~5.16GHz。当收发器的线速度非常高,其CPLL的频率范围已无法满足需求时,QPLL就出场了。

在GTX里面,QPLL的工作频率在低波段模式时为5.93 GHz~8.0GHz,在高波段的工作频率为9.8GHz~12.5GHz。在GTH里面,QPLL的工作频率为8.0GHz~13.1GHz。

因此,无论是artix、kintex还是virtex,PLL的频率范围决定了收发器的最高线速度。

咱们再看看数据发送模块的结构,如图3所示:

图3:TX模块

图3:TX模块

TX模块的每一个单元模块在其datasheet都有详细的描述,有兴趣的可以仔细去研究。咱们在使用TX功能时,大概知道其工作原理即可。正如图上所标识的,咱们将需要发送的16/32bit并行数据通过内部接口fifo“1”传递给8/10编码模块“2”,模块“2”的10bit数据由于需要跨时钟域,因此缓存到fifo“3”后再传递到并串转换模块“4”,“4”输出的串行数据再通过接口5处理,调整数据的电气性能就通过高速IO口发送出去了。

咱们再看看数据接收模块的结构,如图4所示:

图4:RX模块

图4:RX模块

RX模块的使用相对发送模块来说复杂一点点,但仅仅也是一点点而已。其数据流通的路径和TX模块正好相反,咱们这里就不再细说。

根据实际使用的经验来看,RX模块数据接收时,串并转换的时钟域、数据缓存的时钟域、RX与FPGA内部逻辑之间的时钟域,咱们千万要注意,只要一混淆,数据接收就会出现莫名的bug。最简单的方式就是使用RX接收数据的恢复时钟,datasheet也推荐了其他几种方式,大家也可以研究研究。

另外,RX数据的对齐咱们只要管理好上图标注✳的部分,监测其输出的三两个标识信号,就可完成数据的正确获取。

总之GTP、GTX、GTZ的使用没有想象的复杂,例化这些IP核时,xilinx官方都给出了带详细注解的源码例程,咱们少量改动就可以用在自己项目上了,其四五百页的英文datasheet很多的内容都可以走马观花,不会影响咱们使用它的功能。

该篇所讲的MGT内容实在太多,万语千言不如十分钟的实例操作来的直观明了,所以有机会咱们再来一篇实例操作篇吧!

文章来源:XiaoQingCaiGeGe的博客
声明:本文由原创博主授权转发,如需转载请联系博主

最新文章

最新文章