FPGA实现串口升级及MultiBoot(二)FPGA启动流程

[复制链接]
发表于 2026-1-26 22:06:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

这个系列开篇肯定要先相识FPGA的启动流程,试想一下:我想实现MultiBoot,那么我应该在什么时间开始升级,升级失败后FPGA举行了哪些操纵,以及怎么回到Golden区?
尚有一个标题,就是我硬件打板返来,烧写进FLASH后起不来,这应该怎么排查?
缩略词索引:

  • K7:Kintex 7
  • V7:Vertex 7
  • A7:Artix 7
以上全部这些的条件就是明白FPGA启动流程。
图0:7系列FPGA启动步调-参考:UG470AMD-Xilinx FPGA启动阶段大概可以分为以上几个步调(上图参考泉源:UG470 Figure 5-3),下面分别讲授每一个步调中FPGA做哪些工作。
一、器件上电

器件外围设置

对于7系列FPGA重要的关注点就是BANK0、BANK14和BANK15,BANK0重要关注电源和设置引脚,下表是一些留意点:
图1:电源域干系设置-泉源:UG470关于Vertex7系列详见《UG470》表2-7和表2-8。
SPI FLASH设置利用BANK0和BANK14,BPI则是BANK0、BANK14和BANK15,干系的电源域如图1所示,对于FPGA职员重要关注BANK0,下面是一个K7的典范电路:
重点关注:M0、M1、M2引脚(其他告急引脚我们下一节重点先容),这几个引脚是关于FPGA的启动设置引脚:
图2:启动设置引脚-泉源:UG470上电时序

7系列FPGA实在对于上电时序要求不是那么高,但是对于电源域的要求比力高,下图就是FPGA的上电时序要求。
图3:SPI x1 启动时序-泉源:UG470干系时序要求如下:
图4:几个告急时序参数-泉源:UG470图4中Tpor的值和具体器件有关,大概的范围是10~50ms,如果从模式设置,发起按照60ms筹划,主模式设置,发起按照5ms来思量。
二、设置初始化

设置初始化操纵,也就是上电复位完成后,干系设置存储器按次序清零。设置初始化的触发条件重要由以下几种环境:器件正常上电、Program_B信号拉低、IProg指令、JTAG的JProgram指令、Fallback重配,以及触发器通过全局(GSR)的重新初始化。设置初始化期间,除了少量的设置输出管脚外,别的IO的状态通过PUDC_B管脚上下拉确定,具体阐明见图5。
图5:PUDC_B管脚上下拉和IO管脚设置关系-泉源:UG470设置初始化期间还会将芯片内全部模块的设置RAM清零,包罗寄存器的值和Block RAM的存储值,FF触发器重新初始化。在设置存储器清零过程中,INIT_B信号不停为低电平,当完成清零后,INIT_B信号才会变成高电平。因此INIT_B信号拉高表现初始化完成,图4中也简单阐明确从上电设置到INIT_B信号拉高约多长时间。
三、设置管脚读取

按照图0中步调,履历过上面两个步调后,接下来就是举行设置模式收罗。设置模式收罗也很好明白,就是当INIT_B信号拉高后读取M2,M1,M0管脚的电平状态,这几个管脚的上下拉是决定FPGA的启动模式,具体筹划如图6所示。
图6:FPGA设置管脚和启动模式-泉源:UG470由于INIT_B拉高后,才举行模式采样,以是可以通过外部逼迫把INIT_B拉低后,举行延时再设置。如果加载模式为Master模式,FPGA很快就会输出有效的CCLK。此时,FPGA开始在设置时钟的上升沿对设置数据举行采样,固然也可以通过设置,利用降落沿来收罗设置数据。
四、检测同步头

当和外设举行通讯的时间,我们一样平常都会在协议里增长头校验、尾校验以及数据校验。对于FPGA读取FLASH中设置数据一样(还没到读取用户数据流),这个头校验就叫“同步头”,它是一段特别的同步字。“同步头”的作用和协议头校验一样资助FPGA确定准确的数据位置,同步字之前的设置数据都会被FPGA忽略,也就是FPGA仅仅在同步化之后才正式开始吸收设置数据。同步字阐明详见图7。
图7:FPGA 同步字-泉源:UG470五、器件ID检测

为了确保位流和FPGA芯片匹配,在读取到同步字后还会检测设置位流中的器件ID和目的ID是否同等。ID是一个固定的32位的数据,基于IEEE Std 1149.1标准。7系列FPGA的ID已经在UG470 的 Table 1-1中列出,下图是截取的一部门,其他详见UG470。
图8:器件ID - 截取:UG47032位的ID中包罗了28位的特性值和4位掩码。特性值包罗厂商信息,器件族,器件规模等。如果器件ID和位流设置中不匹配,FPGA 会将内部寄存器的第一位ID_Err置高,软件也会体现错误信息,同时克制后续位流加载。
六、设置文件载入

在第四步和第五步顺遂通过后,FPGA开始加载设置数据。
设置文件框架

7 系列 FPGA 设置文件以帧的情势分列。帧是 7 系列 FPGA 设置内存空间中最小的可寻址段,因此全部操纵都必须作用于整个设置帧。每帧由 101 个 32 位构成。
由于后续我们操纵根本都是通过脚本大概GUI举行设置的,这部门内容现实我们现在也用不上,以是有爱好的可以去看看UG470中第五章关于这部门具体先容。
七、CRC校验

设置文件载入完成后,为了验证数据的准确性,FPGA还自动设置了CRC校验(CRC是同步举行),导入完成后会将盘算的CRC值与渴望CRC值举行比力。如果CRC校验不准确,FPGA会自动把INIT-B拉低,放弃这次设置。用户必须把PROG-B引脚拉低,才气举行重新设置。默认环境下,天生的设置位流会自动添加CRC校验,但这个不是必须的,可以通过位流设置功能取消CRC查验,但是取消CRC校验会存在因导入的错误位流而引起功能非常乃至破坏器件。
图9:通过上图次序举行CRC设置八、启动序列

末了一个步调就是启动序列,也是我们须要重点关注的一步。
前面几步顺遂完成后就到末了一步了,FPGA进入启动序列流程。启动序列包罗8个次序启动状态(0-7)操纵,此中启动状态0对用户是不透明的,Phase1-Phase7如图10所示。
图10:启动序列1~7 - 泉源:UG470启动序列变乱的默认次序为先开释DONE引脚,然后激活I/O,末了启动写使能(详见UG470中Table 5-11 默认启动次序,下面图12中)。现实利用中,可以通过BitGen参数对启动次序举行设置来满意差别的需求。也就是上图中除了步调7以外,别的几个步调启动次序是用户可编程的,而且启动次序中的内容也是可编辑的,如是否等候MMCM锁定大概是否等候DCI阻抗匹配这些都是可设置的,以上两个可选设置。
但是,对于1-全局使能GWE(使能RAM和Flip-Flops全部同步单元工作)置位、2-取消全局三态GTS,激活输出管脚这两步时逼迫实验的,否则对于1不实验的话,FPGA无法正常工作;对于2不实验则FPGA全部引脚将功能失效。
开释DONE管脚,FPGA将取消之前按照PUDC_B引脚设置的引脚默认状态。DONE引脚是开漏输出信号,因此芯片外部须要利用一个330Ω上拉,当器件开释DONE管脚,DONE管脚的电平变为高电平。上面的具体阐明如图11所示:
图11:启动序列阐明 - 泉源:UG470默认启动序列时序图:
图12:默认启动序列时序图 - 泉源:UG470修改上面默认的启动序列的Vivado设置如下图所示。
图13:修改默认启动序列的Vivado设置总结

固然还没开始进入正题,但是“前戏”也很告急,这决定了你能深入多少。本文重要须要相识的就是FPGA启动的几个步调,其内容更得当排查和筹划FPGA干系硬件。
对于筹划中常见的概念我们下一篇会具体先容~
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表