依据PCIe的协议,当设备发动后,PCIe设备有必要满意发动时刻的要求,即上电后100ms内,完结PCIe设备的初始化。假如不能满意PCIe设备发动时刻的要求,则lspci或许无法检测到根据FPGA的PCIe设备,需求reboot服务器。众所周知,FPGA芯片规划越来越大,那么怎么做才干满意PCIe设备的发动时刻的要求呢?
7系列FPGA常见的装备形式如下图所示:
SelectMAP和Master/SlaveSerial是Xilinx前期的FPGA两类装备形式,SPI装备形式为SPI接口答应FPGA把规范的工业SPI Flash作为装备数据存储介质串行读取,同理BPI装备形式指FPGA能够从一个工业规范的并行NOR Flash读取装备数据。明显,关于单FPGA芯片的规划,BPI装备形式为最快速的装备FPGA的办法。在BPI装备形式下,装备时钟能够挑选内部CCLK或许外部EMCCLK。下面的公式为核算FPGA装备时刻的公式,从公式中能够看出,关于同类型的FPGA,bitstream size越小(7系列bitstream size 巨细见附录1),装备时钟的频率越高,数据线位宽越大,则装备时刻越短。
假如运用CCLK,装备速率最大为66Mhz,所以在高速装备FPGA的需求下,需求外部EMCCLK来满意装备时刻的要求。EMCCLK最大频率核算办法见下面的公式,而且不能超过DS181, DS182, 和 DS183文档中界说的最大值。在7系列中,常见的EMCCLK时钟频率为100Mhz。比方关于K7325T,经过查阅bitstream size的巨细为91,548,896 bits(87.3Mb),EMCCLK时钟频率为100Mhz,数据位宽为16,则装备时刻为57ms,能够满意PCIe设备发动时刻的要求。
在确认了选用BPI形式装备及外部装备时钟EMCCLK后,FPGA规划应该怎么做呢。首要有必要把EMCCLK引进到FPGA中,所以在逻辑顶层,要有EMCCLK的界说,如下所示:
Input emcclk;
在生成bitstream的时分,需求对EMCCLK做管脚束缚,如下所示:
set_property IOSTANDARD LVCMOS18[get_ports emcclk]
set_property PACKAGE_PIN R24[get_ports emcclk]
还需求在xdc中增加如下束缚,也能够在图形界面中完结,增加在xdc里能够削减图形界面的交互,进步规划功率。
set_propertyBITSTREAM.CONFIG.EXTMASTERCCLK_EN DIV-1 [current_design]
set_propertyBITSTREAM.CONFIG.BPI_SYNC_MODE TYPE2 [current_design]
假如经过上述公式的核算,发现依然不能满意100ms的要求,还能够测验如下办法处理装备FPGA的问题。第一种比较简单,生成bitstream的时分,能够挑选紧缩bitsteam的巨细,这个设置能够经过图形界面完结,也能够经过在xdc里增加Compress参数完成。第二种办法比较费事,能够运用Tandem ConfiguraTIon,详细请参阅xapp1179。经过公式的核算,以及上述几种办法的挑选,终究能够使规划满意PCIe设备发动时刻的要求。
附录:7系列FPGAbitstream size