远程更新FPGA配置的热启动地址(WBSTAR)的格式?

版权声明:本博客内容来自于个人学习过程中的总结,参考了互联网、数据手册、帮助文档、书本以及论文等上的内容,仅供学习交流使用,如有侵权,请联系,我会重写!转载请注明地址! https://blog.csdn.net/Reborn_Lee/article/details/88949882

MultiBoot的大致过程如下图:

MultiBoot的配置文件由两个比特流文件生成,第一个为备份文件,永远都不会变,称为Golden_image,从Flash的0地址存储。

第二个为更新文件,后面远程更新,更新的就是这个文件,称为Update_image,存放在某个地址处,这个地址有热启动地址寄存器(WBSTAR)指定。

配置过程大致如下:

FPGA从FLASH的0地址处读取配置,遇到IPROG Command命令时,跳转到WBSTAR寄存器指定的地址,该地址存放Update_image的地址,此时FPGA尝试加载该地址处的比特流文件,配置成功的话,就执行该配置的功能。如果遇到配置错误,则触发FallBack,FPGA重新加载Golden_image。

IPROG命令嵌入到Golden_image中,如何嵌入,需要调用一个ICAPE3的原语。

上面就牵扯到这个WBSTAR寄存器的格式,根据自己的要为Update_image分配在FLASH的地址,按照下面的格式生成一个32位数据。

例如,我为Update_image分配的flash地址为2000000。

令RS[1:0]为00,RS_TS_B为1,则地址放入寄存器按格式变为:22000000;RS[1:0]以及RS_TS_B的含义,以后讨论。

之后,这还不是可以放入寄存器的地址,需要进行比特交换:

同样是上面的例子:2200_0000最终为4400_0000.

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/88949882
今日推荐