MultiBoot SPI
对于7系列FPGA来说,计算器件启动时间按照以下公式:
Config time = Bitstream size / (Config clk freq * Config interface width)
- Bitstream size为实际文件的大小,如果开启了compression,按照压缩后的尺寸计算
- Config clk freq是CCLK或者EMCCLK的频率
- Config Interface width取决于启动模式,比如SPIX4则位宽为4
接下来用启动时间去换算Watchdog timer数值:
Watchdog timer = Config time / Watchdog clk period
- Watchdog clk period对于7系列FPGA是4000ns,FPGA内部有个65MHz时钟,经过256分频系数得到大约为250KHz的时钟,这个时钟用于驱动watchdog timer。
需要以上两个步骤来计算watchdog timer的具体数值
这里再解释一下为什么UG470 Table 5-37中说Watchdog timer的时钟大概是125KHz-380KHz。这是因为FPGA内部的时钟tolerance范围比较大,可以达到+-50%,经典值是65MHz,因此可以忍受的范围在37.5MHz-97.5MHz,经过256分频后,范围正好是125KHz-380KHz左右。
关于watchdog的描述,见ug470 P140。
Tolerance在DS182,因为这个时钟源是芯片内部的,时钟源频率不是很稳,所以频率范围比较大。
对于US/US+系列FPGA来说,计算方式和7系列也不一样,主要是watchdog的时钟设计变化,统一改为CCLK。
以7K325T为例,Master SPI X1方式加载。
配置bit文件92M bits,CCLK 100Mhz, Config time = 92M bits/(100Mhz *1) = 0.92s
watchdog period = 1/250Khz = 4000ns
则watchdog timer = config_time/watchdog period = 0.92s/4000ns = 23000 = 0x3_8270
因此,Watchdog Timer Register (10001)的配置为0x4003_8270
以KU5P为例,Master SPI X1方式加载。
配置bit文件128M bits,CCLK 125Mhz, Config time = 128M bits/(125Mhz *1) = 1.024s
watchdog period = 1/125Mhz = 8ns
则watchdog timer = config_time/watchdog period = 1.024s/8ns = 128*10^6 = 0x7A1_2000
因此,Watchdog Timer Register (10001)的配置为0x47A1_2000