当前位置:   article > 正文

纸上谈兵_FPGA配置_多重加载_icape2

icape2

FPGA配置概览

配置模式

FPGA的配置数据存储在CMOS锁存器中,掉电会丢失,因此在上电之后需要加载bit流。常见的配置模式如下所示,
在这里插入图片描述
在这里插入图片描述

如果通过JTAG配置7系列设备,则配置指令独立于模式引脚而发生。
在这里插入图片描述

配置引脚

从上图中可以看到,配置模式由M[2:0]指定(在配置过程中及配置完成之后,其引脚电平不能改变),有主XX配置、从XX配置、JTAG配置;主/从是针对CCLK引脚而言的(CCLK由内部有源晶振产生,对应的频率值就是产生bit时设置的配置速率)。每种配置模式都有一些相关的接口引脚,这些引脚分布在不同的Bank中,Bank0中包含JTAG引脚、专用配置引脚;Bank14和Bank15包含多功能配置引脚,如下所示,
在这里插入图片描述
部分引脚的介绍

名称描述
DONE高有效,表示配置完成
INIT_B低有效,表示配置存储器正在初始化
PROGRAM_B低有效,表示异步复位配置逻辑
TCKJtag时钟信号
TDIJtag数据输入
TDOJtag数据输出
TMSJtag模式选择
CFGBVS为bank0的配置引脚预选择电平标准,1表示bank0的供电电压为2.5或3.3;0表示bank0的供电电压为1.8
PUDC_B上拉电阻配置引脚,配置Select IO在配置阶段或上电后的其上拉电阻是否使能。当接GND,表示不使能;接VCCO_34表示使能。
EMCCLK外部主配置时钟,可选引脚
RS0,RS1区域选择引脚,用于选择FLASH的地址

配置时序

Xilinx FPGA需要经过8个步骤才能运行正常的运行用户逻辑,整个流程如下所示,
在这里插入图片描述
从图中可以看出,8个步骤又可以归纳为3个阶段:Setup,BIT加载,启动序列。

启动序列的内容如下,可以在生成bit时进行设置,
在这里插入图片描述在这里插入图片描述

比特流的格式

比特流中由位宽自动检测同步字配置数据包组成。
在这里插入图片描述

位宽自动检测

在这里插入图片描述
只有在BPI配置模式中,才需要用到位宽自动检测,不过,可能是为了统一处理,vivado产生的bit文件中都包含了位宽自动检测。
配置逻辑仅仅检测并行总线的低8位,当低8位检测到0xBB后,如果下一次检测到的是0x11,则说明并行总线是x8位宽;如果下一次检测到的是0x22,则说明并行总线是x16位宽;如果下一次检测到的是0x44,则说明并行总线是x32位宽。

同步字

在同步字之前的数据会被忽略掉。
在这里插入图片描述

配置数据包

7系列FPGA的bit中包含一组配置命令,用以对配置寄存器进行读写。配置数据包中包含两类数据包,如下图所示。
在这里插入图片描述
TYPE1用来对寄存器进行读写,(配置寄存器的地址总共有14位,但是7系列的配置寄存器地址只使用了5位);TYPE2数据包紧随TYPE1数据包之后,使用TYPE1数据包中的地址,用来写入长数据包。

常见数据

16进制数据释义
20000000Packet Type 1:NOP,插入该数据包是为了满足延时要求
30022001Packet Type 1: Write TIMER register, WORD_COUNT=1
30020001Packet Type 1: Write WBSTAR register, WORD_COUNT=1
30008001Packet Type 1: Write CMD register, WORD_COUNT=1
30026001Packet Type 1: Write CRC register, WORD_COUNT=1
30012001Packet Type 1: Write COR0 register, WORD_COUNT=1
3001C001Packet Type 1: Write COR1 register, WORD_COUNT=1
3000C001Packet Type 1: Write MASK register, WORD_COUNT=1
3000A001Packet Type 1: Write CTL0 register, WORD_COUNT=1
5xxxxxxxxTYPE2数据包写入

配置寄存器

在这里插入图片描述

cmd寄存器

在这里插入图片描述

7系列FPGA的比特设置

在这里插入图片描述

FPGA多重加载

重配置技术可以分成两种:静态重配置和动态重配置。

  • 静态重配置:通过指导不同比特流的加载,实现不同逻辑功能的切换。它通常用于系统正常工作之前进行配置,是一种逻辑功能的静态加载。
  • 动态重配置:对全局or局部逻辑资源进行重新配置,以实现不同逻辑功能的转换。与静态重配置不同,它在加载比特流时,仍然保持系统处于工作状态。

FPGA多重加载允许FPGA在多个设计镜像文件之间进行切换,它具有Fallback MultiBoot(可靠的多重加载)特性,当在多重加载的过程中出现错误的时候,FPGA能够再次开启配置流程。具体而言,当 IDCODE错误、CRC错误、看门狗超时、BPI地址错误 等错误触发fallback特性时,会在内部产生一个复位脉冲来复位整个配置逻辑、WBSTAR、BOOTSTS寄存器,这个复位脉冲会拉低INIT_B、Done引脚,重新从RS引脚设置的0地址处开始配置流程。在fallback的重配置过程中,看门狗会禁能, IPROG指令也被忽略掉,且此次配置若是失败的话,不会再进行配置了。
在这里插入图片描述
在这里插入图片描述

IPROG

使用ICAPE2发出IPROG指令

在这里插入图片描述

比特流中嵌入IPROG指令

在这里插入图片描述

XAPP1246

xapp提供了两个参考工程,一个是golden工程,一个是update工程,两个工程在HDL层面上,区别主要是流水灯的闪烁方式不同,
在这里插入图片描述
golden工程与update工程均设置了bit的multiboot属性,这可以通过gui的方式实现,也可以直接在xdc中进行约束,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解析的bit流对比如下,
在这里插入图片描述

博文链接

FPGA开发全攻略——配置电路
7系列FPGA上电配置流程
Xilinx FPGA上电时序分析与设计
基于FPGA的flash分区实现多功能转换(icap核)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/394886
推荐阅读
相关标签
  

闽ICP备14008679号