大气网站特点,wordpress改登录路径,网络舆情监测内容,外贸网站外链怎么做这个系列开篇肯定要先了解FPGA的启动流程#xff0c;试想一下#xff1a;我想实现MultiBoot#xff0c;那么我应该在什么时候开始升级#xff0c;升级失败后FPGA进行了哪些操作#xff0c;以及怎么回到Golden区#xff1f; 还有一个问题#xff0c;就是我硬件打板回来试想一下我想实现MultiBoot那么我应该在什么时候开始升级升级失败后FPGA进行了哪些操作以及怎么回到Golden区 还有一个问题就是我硬件打板回来烧写进FLASH后起不来这应该怎么排查 缩略词索引 K7:Kintex 7V7:Vertex 7A7:Artix 7 以上所有这些的前提就是理解FPGA启动流程。 图07系列FPGA启动步骤-参考UG470 AMD-Xilinx FPGA启动阶段大概可以分为以上几个步骤上图参考来源UG470 Figure 5-3下面分别讲解每一个步骤中FPGA做哪些工作。 一、器件上电 器件外围设置 对于7系列FPGA主要的关注点就是BANK0、BANK14和BANK15BANK0主要关注电源和配置引脚下表是一些注意点 图1电源域相关配置-来源UG470 关于Vertex7系列详见《UG470》表2-7和表2-8。 SPI FLASH配置使用BANK0和BANK14BPI则是BANK0、BANK14和BANK15相关的电源域如图1所示对于FPGA人员主要关注BANK0下面是一个K7的典型电路 重点关注M0、M1、M2引脚其他重要引脚我们下一节重点介绍这几个引脚是关于FPGA的启动配置引脚 图2启动配置引脚-来源UG470 上电时序 7系列FPGA其实对于上电时序要求不是那么高但是对于电源域的要求比较高下图就是FPGA的上电时序要求。 图3SPI x1 启动时序-来源UG470 相关时序要求如下 图4几个重要时序参数-来源UG470 图4中Tpor的值和具体器件有关大概的范围是10~50ms若是从模式配置建议按照60ms设计主模式配置建议按照5ms来考虑。 二、配置初始化 配置初始化操作也就是上电复位完成后相关配置存储器按顺序清零。配置初始化的触发条件主要由以下几种情况器件正常上电、Program_B信号拉低、IProg指令、JTAG的JProgram指令、Fallback重配以及触发器通过全局GSR的重新初始化。配置初始化期间除了少量的配置输出管脚外其余IO的状态通过PUDC_B管脚上下拉确定详细说明见图5。 图5PUDC_B管脚上下拉和IO管脚配置关系-来源UG470 配置初始化期间还会将芯片内所有模块的配置RAM清零包括寄存器的值和Block RAM的存储值FF触发器重新初始化。在配置存储器清零过程中INIT_B信号一直为低电平当完成清零后INIT_B信号才会变成高电平。因此INIT_B信号拉高表示初始化完成图4中也简单说明了从上电配置到INIT_B信号拉高约多长时间。 三、配置管脚读取 按照图0中步骤经历过上面两个步骤后接下来就是进行配置模式采集。配置模式采集也很好理解就是当INIT_B信号拉高后读取M2M1M0管脚的电平状态这几个管脚的上下拉是决定FPGA的启动模式详细设计如图6所示。 图6FPGA配置管脚和启动模式-来源UG470 因为INIT_B拉高后才进行模式采样所以可以通过外部强制把INIT_B拉低后进行延时再配置。如果加载模式为Master模式FPGA很快就会输出有效的CCLK。此时FPGA开始在配置时钟的上升沿对配置数据进行采样当然也可以通过设置使用下降沿来采集配置数据。 四、检测同步头 当和外设进行通信的时候我们一般都会在协议里增加头校验、尾校验以及数据校验。对于FPGA读取FLASH中配置数据一样还没到读取用户数据流这个头校验就叫“同步头”它是一段特殊的同步字。“同步头”的作用和协议头校验一样帮助FPGA确定正确的数据位置同步字之前的配置数据都会被FPGA忽略也就是FPGA仅仅在同步化之后才正式开始接收配置数据。同步字说明详见图7。 图7FPGA 同步字-来源UG470 五、器件ID检测 为了确保位流和FPGA芯片匹配在读取到同步字后还会检测配置位流中的器件ID和目标ID是否一致。ID是一个固定的32位的数据基于IEEE Std 1149.1标准。7系列FPGA的ID已经在UG470 的 Table 1-1中列出下图是截取的一部分其他详见UG470。 图8器件ID - 截取UG470 32位的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相关硬件。 对于设计中常见的概念我们下一篇会详细介绍~