系统整理一下关于赛灵思FPGA原理图的设计过程,一方面记录下,另一方面小伙伴沟通交流。之前提到了关于FFVA1156 (XCKU040)器件bank0引脚详解、本篇介绍一下FPGA启动配置过程。

如下图分为配置+加载固件两个过程,总共8个步骤:

forum.jpg

FPGA初始化配置和加载过程

1、 power-UP部分:要求满足前面文案提到的电源和时序要求;所有的配置引脚为VCCO_0电源域;bank0与bank65的供电需要配置等等详见:DS892电源部分的文档,如下可以调整TPOR时间参数做一定延时来确保最后一组电已经稳定输出。

2、 清除配置内存:设备上电后;PROGRAM_B拉低时;JTAG触发复位命令时;IPROG command(内部命令)时;处于返回到重新配置的时序时,会触发该动作。此期间除了JTAG和配置引脚,其他引脚处于3态。INIT_B期间保持低电平,如下图所示。

3、 Sample mode:INIT_B拉高后,M[2:0]引脚配置了FPGA的SPI工作模式,而后SPI时钟开始工作,如下图所示。

forum.jpg

STEP1-3 FPGA配置过程部分

4、 同步:个人理解应该是FPGA在加载flash之前做的校验工作,包括接口位宽、数据格式等。

5、 设备ID确认:确认加载的文件对应芯片型号

6、 加载配置文件:FPGA加载flash中的固件文件

7、 CRC检测:检测异常的话INIT_B会拉低,

8、 启动时序:其内部分为了6个状态机如下图红色部分,主要行为的话,释放DONE信号,释放IO3态状态,结束启动状态。

forum.jpg

关键状态信号时序图,红色为FPGA内部状态机

配置调试:FPGA上电异常不开机时,针对前面提到的时序做下调试工作。

1、 确保配置文件本身没有问题:run the Tcl command: report_property -all [current_design]

2、 关注一下状态PIN:

forum.jpg

关键状态信号

3、 使用JTAG工具读取状态寄存器

forum.jpg

状态寄存器

4、 JTAG验证与回读:can eliminate issues during programming or verify if a rare SEU event has occurred,巴拉巴拉没用过。。。。

5、 查阅synchronization word简易是否符合预期,即时钟类型,速率大小,位宽之类的。

6、 其他不做介绍了。。。。