**引言:**为保证FPGA设备可以连接并被系统识别,本节讨论了PCIe基础规范和PCIe板卡电气规范的对FPGA配置时间具体要求。
1. 配置访问时间
在PCIe的标准系统中,当系统通电时,处理器上运行的配置软件开始扫描PCIe总线以发现机器拓扑。扫描PCIe层次结构以确定其拓扑结构的过程称为枚举过程,根复合体(RC)通过向设备发起配置事务来实现枚举过程。
图1:系统启动时的PCIe拓扑图
所有PCIe设备都应已与其链路伙伴建立链路,并在枚举过程中准备好接受配置请求。因此,对设备在通电后何时需要准备好接受配置请求有要求,如果不符合要求,则会发生以下情况:
•如果设备未就绪且未响应配置请求,则根复合体不会发现它并将其视为不存在;
•操作系统不报告设备的存在,用户应用程序无法与设备通信。
1.1 配置访问规范要求
PCIe规范项与配置访问相关包括:
(1)PCIe基础规范V1.1版第6.6节规定:"系统必须保证所有在启动时可见的软件组件在根复合体基本重置结束后100ms内准备好接收配置请求。"
(2)PCIe基础规范V1.1第6.6节定义了"在提供电源和PERST#的情况下"所需的三个参数。参数TPVPERL适用于FPGA配置时序,定义为:
TPVPERL-PERST#必须在电源有效后至少保持活动状态这么长时间。
PCIe基本规范没有给出TPVPERL的具体值,只定义了它的含义。图2显示了电源稳定和PERST#之间的关系。
图2:上电时序
PCIe卡电气规范V1.1第2.6.2节将TPVPREL定义为最小100ms,表示从电源稳定时起,系统重置至少持续100ms,如表1所示。
表1:TPVPERL规格
从图2和表1中,可以得到一个简单的方程来定义FPGA配置时间,如下所示:
FPGA配置时间 ≤ TPWRVLD+TPVPERL (式1)
假设TPVPERL被定义为最小100ms,则变为:
FPGA配置时间 ≤ TPWRVLD+100ms (式2)
注:尽管TPWRVLD包含在方程式2中,但在本次讨论中尚未定义,因为它取决于使用的系统类型。真实系统中的电路板电源部分为基于ATX和非基于ATX的系统定义了TPWRVLD。
FPGA配置时间仅在冷启动时相关,后续的热重置或热复位不会导致FPGA的重新配置。如果设计因FPGA配置而出现问题,您应该发出一个热复位作为简单的测试,复位系统,包括PCI Express链路,但保持电路板通电。如果问题没有出现,则问题可能与FPGA配置时间有关。
2. 实际系统中板卡电源
在PCIe系统中可能会使用多个板卡,英特尔认可的ATX电源设计规范被用作指导方针,因此大多数主板都遵循该规范,如果是基于英特尔的主板,则100%遵循该规范。ATX 12V电源设计指南中描述了电源轨和电源有效信号之间的关系,如图3所示。
图3:ATX电源时序
图3显示,图2中PCIe系统的电源稳定指示由PWR_OK信号表示。当电源达到标称值的95%时,经过一段延迟后,PWR_OK被断言为高电平。
图3显示,在PWR_OK被断言为高之前,电源是有效的。这由T3表示,即PWR_OK做了延迟。ATX 12V电源设计指南将PWR_OK定义为100ms<T3<500ms,表明从电源电平达到标称值的95%开始,在PWR_OK被断言之前,至少有100ms但不超过500ms的延迟。
同样,FPGA配置时间方程为:
FPGA配置时间≤TPWRVLD+100ms
TPWRVLD定义为PWR_OK延迟期;也就是说,TPWRVLD表示在PWR_OK被断言之前,电源在系统中有效的时间量。此时间可以添加到FPGA必须配置的时间量中。T2和T4的最小值可以忽略不计,在这些计算中被视为零。对于基于ATX的主板,它代表了大多数实际使用的主板,TPWRVLD可以定义为:
100 ms≤TPWRVLD≤500 ms
因此,FPGA配置时间需满足以下要求:
FPGA配置时间≤200ms(适用于基于ATX的主板)
FPGA配置时间≤100ms(适用于非ATX主板)
注意:(1)非基于ATX的主板的第二个方程假设TPWRVLD值为0ms,因为在此上下文中没有定义。使用非ATX主板的设计人员应评估自己的电源设计,以获得TPWRVLD的值。
(2)本节假设FPGA功率(VCCINT)在PWR_OK被断言之前或同时是稳定的。如果不是这样,则必须从FPGA配置的可用时间中减去额外的时间。
2.1 热插拔系统
热插拔系统通常使用位于系统主板上的热插拔电源控制器。许多分立的热插拔电源控制器将TPVPERL扩展到最小值100ms以上。插件卡设计人员应参考热插拔电源控制数据表以确定TPVPERL的值。如果热插拔功率控制器未知,则应假设TPVPERR值为100ms。
2.2 FPGA配置建议
为了缩短FPGA配置时间,Xilinx建议使用并行NOR闪存的BPI配置模式,该模式支持高速同步读取操作。此外,可以向外部主配置时钟(EMCCLK)引脚提供外部时钟源,以确保所有条件下的配置时钟频率一致。
3. 7系列器件的FPGA配置时间
在加电期间,FPGA配置顺序分三个步骤执行:
(1)等待FPGA中所有电压(VCCINT、VCCAUX和VCCO_0)的上电复位(POR)跳闸,称为POR跳闸时间。
(2)在接受比特流传输之前,等待INIT_B完成(取消确认)以允许FPGA初始化。
注:一般来说,步骤1和2要求≤50 ms
(3)等待DONE的断言,比特流传输所需的实际时间取决于:
○比特流大小
○时钟(CCLK)频率
○闪存设备的传输模式(和数据总线宽度)
-SPI=串行外围接口(x1、x2或x4)
-BPI=字节外围接口(x8或x16)
比特流传输时间可以使以下方程进行估计:
比特流传输时间=(比特流大小,单位为比特)/(CCLK频率)/(数据总线宽度,单位为位)