作者:Ivy Guo,AMD工程师;来源:AMD开发者社区
Versal的一个GTM Quad包含4路channel和两个LCPLL。两个LCPLL的设计,可以在同一个Quad里面实现更灵活的配置,比如两路channel的数据速率不同,且两路数据的VCO frequency不一样的应用,此时是无法用同一个LCPLL来实现的。
本文中的办法就是展示如何在设计里面实现此种配置的自动化。
Step 1:
打开Vivado,基于使用的器件新建一个工程。
Step 2:
新建一个BD设计: Create Block Design。因为两路channel需要不同的LCPLL控制,我们需要添加个gt_bridge IP和一个gt_quad_base IP。
一般情况下,两个gt_bridge是使用不同协议的,分别配置好即可。示例如下:
Step 3:
运行Run Block Automation。选择Auto方式先看看结果:
仔细查看Block Design,可以看到被选择的两路channel是ch0和ch2。这是因为ch0和ch1默认是使用同一个LCPLL的,而ch2和ch3则使用另外一个LCPLL。上述的两个协议没有共同的VCO frequency,所以自动会被绑定到ch0和ch2上面。
可以尝试绑定到ch0和ch1上看看,会报错:
Step 4:
有时候即使用同一个LCPLL可以实现多路数据协议的不同速率要求,为了彻底‘隔绝’ channel间的互相干扰,我们可能也想使用不同的LCPLL去提供时钟。手动修改连线是可以实现的,但是注意,GTM不建议任何的手动操作,因为理论上有可能出现底层配置没有对应修改好,导致功能异常的情况。这里我们就需要通过设置Run Block Automation时使用Customized_Connections来做自动连接了。
为了更好演示这种情况。我们把两个gt_bridge配置成一样的协议来看看:
此时如果选择Auto方式的Run Block Automation,连线会自动选择ch0和ch1,此时实际使用了同一个LCPLL:
所以我们如下操作:
重新连线。ch0和ch2被选择,此时GTM实际使用了两个LCPLL,完成了期望的配置方式。
综上,通过Run Block Automation时灵活选择各种Interface Options的设置,我们可以自动化实现各种配置的连线,大大节省建立工程的时间,并能保证正确性。