当前位置:   article > 正文

串列配置(Tandem)在Kintex-7互联TRD中的实现_tandem configuration

tandem configuration

目录

一、概要

二、FPGA配置

2.1 Tandem方法

2.2 Tandem PROM

2.3 Tandem PCIe

三、在K7中启用Tandem


一、概要

PCI Express®规范要求PCIe®链路在电源稳定后120毫秒内做好连接准备。由于可用编程比特流的大小和配置速率,对采用闪存存储器配置的大型FPGA而言要想满足这个要求的确是一个挑战。赛灵思的串列配置法(Tandem Configuration)是缩短FPGA配置时间以满足120毫秒PCIe链接时间要求的一种现实可行的方法。

本应用指南介绍了如何将运行在KC705评估板(采用Kintex-7 XC7K325T FPGA)上的Kintex®-7 Connectivity Targeted Reference Design(TRD)与Tandem PROM和Tandem PCIe配置法结合使用。设计描述了TRD调节以适应串列配置法的情况。采用该方法,当使用Tandem PROM时基本比特流大小以及初始配置时间可减少85%以上,而使用Tandem PCIe时可减少80%以上。


二、FPGA配置

PCI Express规范规定,在电源有效后,基本复位必须保持至少100ms。它还规定设备必须在基本复位释放20ms后进入检测状态(为链路训练做好准备)。因此,PCI Express核必须准备好120ms后开始链路连接的良好信号。由于PCI Express规范的遗留问题,这个时间通常被称为PCI Express的100 ms启动时间要求。实际上,一个PCIe核心链路连接做准备的时间是120毫秒。
FPGA通过将bitstream装入内部FPGA内存来配置FPGA,有关配置的详细讨论可参阅7系列FPGAs配置用户指南(UG470)。FPGA配置时间是一个函数带宽的编程方法,主要受数据宽度和编程时钟频率影响。

随着FPGA器件容量的增加,满足PCIe规范的120ms要求变得更加困难。传统上,为了减少配置时间会使用更快和带宽更大的BPI闪存,但这种方法会增加硬件BOM成本,增加系统复杂度。而且即使使用带宽更大的闪存,也需要更高的时钟频率来满足120ms的要求。

例如,K7 XC7K325T FPGA配置位流长度为91,548,896位(87.3 Mb), TPOR为50 ms(最坏情况)。如果BPI flash位宽为16bit,并且通过同步读配置在主BPI模式,即使是EMCCLK的频率为50 MHz,FPGA进入检测状态的时间也在160 ms,这并不足够快来满足120 ms的要求。

作为传统方法的替代,Xilinx提供了两种快速配置方法—Tandem PROM和Tandem PCIe。

2.1 Tandem方法

Tandem方法方便快速,能够满足PCIe 120 ms link培训的要求,配置主要为两个阶段:

阶段1:确保设备发现配置所需的最小PCIe功能。此阶段需要非常小的位流,可以在远远小于120 ms的时间内配置,并且能够在枚举期间处理所有事务。

阶段2:PCIe块激活后,FPGA的其余部分按照用户设计进行配置。串联方法不是部分重构,与部分重新配置不同,串联方法从不重新配置帧,设备中的每帧都只配置一次。如果需要对用户应用程序进行动态更新,则应该使用传统的部分重新配置。

Tandem方法有两种:Tandem PROM和Tandem PCIe。

2.2 Tandem PROM

图1展示了Tandem PROM方案。阶段1和阶段2的位流以单个位流的形式背靠背打包在同一个PROM中。
 

Tandem PROM流程与标准流程相似,在实现结束后会生成单个位流,并对相应的闪存进行编程,PROM文件和位流都是独立的。PCIe块在第一阶段位流编程结束时激活,当PCIe枚举正在进行时,设备使用相同的编程路径继续对第2阶段的位流编程。
注意:双模式配置管脚必须为Tandem PROM配置预留用于设置PERSIST属性,这些IO不能用于用户设计。

2.3 Tandem PCIe

图2展示了Tandem PCIe解决方案。Tandem PCIe与Tandem PROM类似---第一阶段的FPGA位流编程使PCIe功能能够快速可用。但是,使用Tandem PCIe,第二阶段BIN文件是通过PCIe链接下载,并使用FPGA中的内部配置访问端口(ICAP)硬件,通过为PCI Express IP提供的7系列集成IP进行配置。这个过程需要一个软件驱动程序通过PCIe链接加载第二阶段BIN文件。请注意,串联PCIe在第二阶段使用BIN文件而不是位流文件。BIN文件已正确对齐,以便与ICAP一起使用。
 


三、在K7中启用Tandem

本节主要描述在Kintex-7连接TRD中如何修改Tandem配置流程。
图3展示了TRD中的Tandem配置,每个配置方法都会生成7系列的PCIe IP,并且该IP内部会添加下列Tandem配置所需的逻辑:
Tandem PROM:包括隔离多路复用器、串联完成器和握手逻辑,以完成建立阶段2的配置。
Tandem PCIe:包括用于配置第二阶段的ICAP、隔离多路复用器、串联完成器和握手逻辑,以完成建立第2阶段的配置。Tandem PCIe还需要一个驱动程序通过PCIe链接来下载第二阶段BIN文件。
 

与此应用程序说明关联的设计有一个USE_TANDEM_FLOW宏用于标识Tandem流程所需的改动。对于Tandem PCIe流程,在顶层设计文件k7_connectivity_trd.v的USE_TANDEM_PCIE宏下还包含一个额外的BUFG用于提供ICAP时钟。此外,还要对TRD进行以下改动来实现Tandem配置:

【设计改动】对于Tandem,PERST#(系统提供的来自PCIe插槽的复位)所在的整个I/O bank被配置为第一阶段位流的一部分。在顶层的非Tandem设计中,用户应用程序块(如MIG、10G Ethernet MAC和10GBASE-R等)使用PERST#进行重置,这种方式使用PERST#意味着所有这些逻辑都应该是第一阶段位流的一部分,因为更多的逻辑添加到了复位分支,这违背了Tandem配置的目的。为了保持第一阶段的位流较小,需要将用户应用程序块的复位逻辑改为使用来自PCIe块的寄存器信号user_lnk_up的反信号,这需要在顶层文件k7_connectivity_trd.v的不同位置使用USE_TANDEM_FLOW宏来确定。

【IP升级】7系列的PCIe IP也需要重新生成来适配Tandem PROM和Tandem PCIe流程。相关的XCI文件可以在ip_catalog目录下找到,IP配置的其余部分与非Tandem流程相同。

【约束改动】主要要修改两个约束:

(1)k7_conn_pcie.xdc,IP中提供的示例设计XDC文件,包含PCIe的tandem-specific约束

(2)k7_conn_pcie_tandem.xdc,包含PCIe的tandem-specific约束;k7_conn_trd_tpcie.xdc和k7_conn_trd_tprom.xdc,包含配置BPI flash的额外约束。

其他的约束和非Tandem流程是一样的。

Tandem PROM流程如果要用位流压缩,可以设置如下:

set_property bitstream.general.compress true [current_design]

Tandem PROM流程如果要生成分离位流,可以设置如下:

set_property bitstream.config.tandem_writebitstream separate [current_design] write_bitstream -force separate.bit

这样会为Tandem PROM流程阶段1和阶段2分别生成位流。不然默认情况下,Tandem PROM流程还是会生成一个单独的包含两个阶段的位流文件,Tandem PCIe流程默认情况下则是分别为阶段1和阶段2生成单独的BIT和BIN文件。

最后,利用promgen将得到的位流文件生成MCS文件进行后续处理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/577658
推荐阅读
相关标签
  

闽ICP备14008679号