wyzhou 发表于 2020-6-18 17:32:11

【转载】Intel Stratix10收发器时钟网络介绍

本帖最后由 wyzhou 于 2020-6-18 17:58 编辑

版权声明:本文为CSDN博主「huan09900990」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/huan09900990/article/details/104444581

现在intel的中高端FPGA(A10,S10等)的高速收发都是采用的模块化的形式来组成的,这样更加的灵活。下图就是一个高速收发器的设计框图(包含了PHY, reset,PLL,MAC4个模块)。本文主要介绍下其中的PLL模块。

1、参考时钟输入
每个tile有8个专用参考时钟输入管脚,每个tile由4个bank组成,所以,每个bank有2个专用参考时钟输入管脚。各自对应BOTTOM和TOP的PLL。

2、PLL资源介绍
每个bank有2个ATX PLL,2个FPLL,2个CMU PLL以及两个MCGB。ATX PLL是收发器主要使用的PLL,其能支持收发器的全速率需要的时钟,同时性能也最好。注意CMU PLL是嵌入在收发器通道里的,只有通道1和4里才有,可以用作发送PLL。但用作发送PLL时,该通道是不能作为接收通道的。相关的介绍如下:

下面是3个PLL支持的速率
3、transmitter时钟网络
发送时钟网络的功能就是将PLL输出的时钟连接到每个收发器通道,它提供两种类型的时钟到收发器通道。
(1)High-Speed Serial Clock高速串行时钟–给serializer用的即PMA高速发送用的。
(2)Low-Speed Parallel Clock给serializer和PCS用的。并行时钟主要是PCS部分给并行的数据使用的。
在bonded通道配置时,Serial Clock和并行时钟都是从transmitter PLL连接到收发器通道的。
在non-bonded通道配置时,只有Serial Clock时钟是从PLL连接来的,而 Parallel Clock是每个通道自己生成的。
为了支持不同种类的bonded和non-bonded时钟配置,FPGA提供了4中类型的发送时钟网络布线资源。
(1)x1时钟网络
(2)x6时钟网络
(3)x24时钟网络
(4)GXT时钟网络
----x1时钟网络
x1时钟连线用来将PLL输出的高速串行时钟连接到同一个bank的任意channel。Low-Speed Parallel Clock然后由特殊通道(ch1和4)的 Local CGB产生。non-bonded的时钟配置使用x1时钟网络就可以了。
从下图可以看出x1时钟网络可以由同一个Bank里的ATX,FPLL或者CMU PLL驱动。然后再连接到同一个bank的每个通道。

----x6时钟网络
x6时钟连线也是用来走同一个bank的时钟网络。x6时钟连线是由Master Clock Generation Block(MCGB)来驱动的。这里MCGB又只能由ATX PLL或FPLL来驱动。由于CMU PLL不能用来驱动MCGB,所以,CMU PLL不能用作通道绑定时的时钟。每个bank里有两个x6时钟网络,一个向上连接,一个向下连接。各自对应一个MCGB。同一个bank里的任意通道都可以由x6时钟网络来驱动。
在bonded通道配置时,由MCGB输出的低速并行时钟来驱动serializer和PCS,同时Local CGB就被旁通不使用了。都是从transmitter PLL连接到收发器通道的。
在non-bonded通道配置时,当你有多个通道被同一个ATX /FPLL驱动或者这些non-bonded的通道跨越bank时,可使用MCGB来输出高速的串行时钟到每个通道。*即在non-boned时,可以使用MCGB输出的串行时钟来驱动同一个tile的24个通道。*同时x6时钟网络可以用来驱动x24时钟网络,这样就可以将时钟输出到相邻的bank。

-----x24时钟网络
x24时钟网络将收发器时钟连接到同一个tile的不同bank。MCGB驱动x6时钟网络,x6时钟网络又驱动x24时钟网络,每个bank有两个x24时钟网络,一个向上连接相邻的bank时钟网络,一个向下连接下面相邻的时钟网络。x24时钟网络可以用于bonded和non-bonded两种模式,对于bonded配置,由MCGB输出的低速并行时钟被使用而Local CGB被旁通。对于non-bonded,当你有多个通道被同一个ATX /FPLL驱动或者这些non-bonded的通道跨越bank时,可使用MCGB来输出高速的串行时钟到每个通道。用MCGB来提供一个高速的串行时钟到每个通道。当同一个Tile里的bank的工作电压不同时,这个x242时钟网络只能用于连续的通电压的bak的时钟连线。

每个收发器通道都有一个Local CGB,对于non-bonded配置,传输PLL产生一个串行时钟来驱动每个通道的Local CGB.Local CGB然后再生成并行时钟用于serializer和PCS。MCGB和LCGB的功能都一样,只是MCGB输出的时钟可以通过x6 网络来驱动同一个bank的其它通道,也可以通过x24网络驱动到其它bank的通道。而LCGB只能驱动自己对应的通道。每个通道都有一个选择开关来选择时钟源是来自MCGB还是LCGB。

4、Channel Bonding,non-bonding
对于S10有两种类型的bonding模式
(1)PMA bonding
可以用来减少通道间PMA的skew,该模式下,只有PMA部分才进行了skew补偿的,而PCS没有进行skew补偿。该模式下只能使用x6/x24网络。只用一个PLL来驱动多个通道。
(2)PMA and PCS bonding
可以用来减少bonding通道组间PMA和PCS的skew.一些在bonding组内通道的PCS控制信号被使用专用的硬件电路使其skew对齐。


—non-bonding模式
只有一个高速的串行时钟从PLL输出收发器通道(x1或者MCGB到x6),低速并行时钟是由每个通道的LCGB自己产生的。下图就是一个PLL产生MCGB来驱动多个通道的non-bonding模式。

在列话的ATX PLL里设置如下
(1)如果是同一个bank的通道,可以直接通过tx_serial_clk(x1line)输出然后连接到通道
(2)如果有多个跨bank的通道,则需要生成MCGB时钟来驱动x6网络,x6再去驱动x24网络

—bonding模式
该模式下,**高速串行时钟和低速并行时钟都是由PLL输出到收发器通道的。**所以每个通道的LCGB被旁通了,并行时钟都是由MCGB产生的。

bonding模式,通道间收发器的skew是最小的。常用于比如PCIE,Interlaken等。下面就是一个10个通道bonding的方式。看着跟non-bonding是相似的,但是ATX PLL的设置不一样,以及PHY的设置也不一样,此时是

ATX PLL设置如下

这时在native PHY里需要设置通道为bonding

这时ATX PLL输出的是tx_bonding_clocks,而tx_serial_clk信号就没用了,需要悬空。PHY是有10个通道,有tx_bondin_clks,每个通道是需要输入一组tx_bonding_clocks,所以,此时需要把时钟信号复制为10组分别输入到10个通道的时钟端口。




页: [1]
查看完整版本: 【转载】Intel Stratix10收发器时钟网络介绍