赛灵思
直播中

李蕊

7年用户 222经验值
私信 关注
[问答]

Virtex 6 GTX耗尽资源的解决办法?

您好,我正在使用Plan Ahead 14.7和Virtex6 xc6vlx240tff1759-2目标FPGA
我的设备中有一个PCIe内核,它使用了FPGA中可用的24个GTX通道。
我有5个通信链路,这是我需要实现的双通道,需要10个以上的GTX通道。
我创建这些GTX通道的方法是使用GTX向导创建一个通道GTX,并使用GTX示例设计的修改版本作为包装器来实例化多个GTX通道,并将它们限制在芯片上正确的GTX站点。
我已成功构建并测试了4 GTX版本的频道。
我可以使用这种方法成功构建一个8通道版本,但由于BUFG耗尽,我不能再使用GTX了(我还需要两个以上共10个)。
有8个GTX通道(除了我的PCIe核心中的8个),剩下零BUFG。
包装器使用BUFG,向导创建的底层GTX使用2个BUFG。
封装器使用BUFG将GTX0_RXRECCLK_OUT作为输入,然后输出到MMCM_ADV引脚CLK_IN。
我希望通过使用BUFR来消除使用BUFG的功能,这需要BUFR被LOC约束到与它们交互的MMCM中或附近的时钟区域。
要做到这一点,我需要LOC约束BUFR和MMCM。
我似乎无法通过这样做的任何组合来传递MAP。
我是以错误的方式来做这件事的吗?
有更容易的方法吗?
鉴于该芯片具有24个GTX通道和32个BUFG,看起来不可能使用所有GTX通道,至少在向导构建它们时。
在此先感谢您的帮助。

回帖(5)

陈晨

2020-6-17 08:19:54
谢谢venkata。
我会试一试并报告。
举报

常小丽

2020-6-17 08:30:13
我尝试过使用向导生成这10个GTX的结果相同。
错误:BUFG类型的comps太多了
如果我使用向导生成一个GTX并实例化它的10个实例,这就是我得到的相同错误。
我的FPGA有24个GTX通道。
它们是GTXE1_X0Y0到GTXE1_X0Y23。
我的PCIe内核使用从X0Y0到X0Y7的前8个,因此它们存在于时钟区域X1Y1和X1Y2中。
我将10个GTX通道放置在时钟区域X1Y3到X1Y5的GTXE1_X0Y14到GTXE1_X0Y23位置。
看起来向导编码GTX频道的方式,使用3个BUFG。
它们与时钟倍频所需的MMCM结合使用,以在GTX通道上实现所需的线速率。
我的第一个好奇心是,如果我在FPGA中有24个GTX通道和32个BUFG,则不可能使用所有24个GTX通道,因为这需要72个BUFG。
我的设计需要总共18个GTX频道,因此需要54个BUFG;
也太多了。
根据DOC,我可以将BUFR与MMCM一起使用,只要它在相同的时钟区域或相邻的时钟区域。
我对这个问题的解决方案是尝试将MMCM定位在GTX所在的相同时钟区域,然后在这些区域使用BUFR。
出于某种原因,我无法使用那些MMCM / BUFR对通过MAP。
BUFH的限制性更强,因为它需要位于同一个时钟区域。
奇怪的是,向导使用一定数量的BUFG来创建GTX通道,这将限制一个人利用所有可用的GTX通道。
举报

常小丽

2020-6-17 08:58:36
您的应用程序极不可能需要这么多独特的时钟源,但您没有充分了解与GTX一起使用的协议,以便能够提供具体的指导。
对于具有8个通道的PCIe内核,它应该最多需要2个BUFG(1个用于RXUSRCLK / TXUSRCLK,1个用于TXUSRCLK2 / TXUSRCLK2),这可能低至1个BUFG,具有正确的内部和外部数据宽度。
在您的原始帖子中,您提到在RXRECCLK输出上使用了BUFG。
这不是典型配置,因为它意味着您使用的协议不支持时钟校正。
如果相同的REFCLK源是源多个GTX通道,那么至少可以在所有GTX通道上共享TXUSRCLK和TXUSRCLK2。
------您是否尝试在Google中输入问题?
如果没有,你应该在发布之前。太多结果?
尝试添加网站:www.xilinx.com
举报

李森

2020-6-17 09:10:21
谢谢mcgett,
我相信PCIe核心BUFG的用途正如你所说的那样。
就我的应用而言,它接收来自10个链路的外部传感器数据,所有这些都是独立的。
我对多个GTX通道使用相同的REFCLK但是我没有在GTX上使用任何TX资源。
我只收到数据。
至于BUFG和MMCM之间的连接,这就是向导构建它的方式。
RXUSRCLK从GTX到BUFG中.BUFG输出到MMCM CLKIN。
RX_USRCLK2到接口。
再次感谢,
短发
举报

更多回帖

发帖
×
20
完善资料,
赚取积分