在设计紫光logos2 FPGA升级方案时参考了之前xlinx的透传方案,也就是mcu直接访问FPGA的flash。结果在烧写sfc文件后加载异常缓慢。正常上电1s加载完成现在需要半分钟甚至更久。最后发现是使用了GTP_CFGCLK这个原语,注释掉之后加载恢复正常。但是不调用这条原语,mcu无法驱动flash的时钟。因此在紫光fae提供的升级参考方案里面找到解决方法。
问题根本原因是调用这个原语会导致加载时候的时钟异常,那么在加载时候屏蔽这条原语即可,这里参考方案里面提供了GTP_START_E1这个原语,具体原语介绍可以参考官方手册UG040007_Logos2系列产品GTP用户指南(其他型号的GTP手册应该也有介绍)
下面直接给出我的配置代码:

其中wakeup_over_n为低有效信号,在配置时拉高,配置完成型号变为低电平,指示配置完成。spi_clk_en为低有效信号,在上位机(MCU)要写flash时拉低,此时CFGCLK信号由sys_clk信号驱动。