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

文章目录

  • FPGA配置概览
    • 配置模式
    • 配置引脚
    • 配置时序
    • 比特流的格式
      • 位宽自动检测
      • 同步字
      • 配置数据包
      • 常见数据
    • 配置寄存器
  • FPGA多重加载
    • IPROG
      • 使用ICAPE2发出IPROG指令
      • 比特流中嵌入IPROG指令
  • XAPP1081
  • XAPP733
  • 博文链接

FPGA配置概览

配置模式

FPGA的配置数据存储在CMOS锁存器中,掉电会丢失,因此在上电之后需要加载bit流。常见的配置模式如下所示,
纸上谈兵_FPGA配置_多重加载_第1张图片

配置引脚

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

名称 描述
DONE 高有效,表示配置完成
INIT_B 低有效,表示配置存储器正在初始化
PROGRAM_B 低有效,表示异步复位配置逻辑
TCK Jtag时钟信号
TDI Jtag数据输入
TDO Jtag数据输出
TMS Jtag模式选择
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个步骤才能运行正常的运行用户逻辑,整个流程如下所示,
纸上谈兵_FPGA配置_多重加载_第3张图片
从图中可以看出,8个步骤又可以归纳为3个阶段:Setup,BIT加载,启动序列。

启动序列的内容如下,可以在生成bit时进行设置,
纸上谈兵_FPGA配置_多重加载_第4张图片纸上谈兵_FPGA配置_多重加载_第5张图片

比特流的格式

比特流中由位宽自动检测同步字配置数据包组成。
纸上谈兵_FPGA配置_多重加载_第6张图片

位宽自动检测

纸上谈兵_FPGA配置_多重加载_第7张图片
只有在BPI配置模式中,才需要用到位宽自动检测,不过,可能是为了统一处理,vivado产生的bit文件中都包含了位宽自动检测。
配置逻辑仅仅检测并行总线的低8位,当低8位检测到0xBB后,如果下一次检测到的是0x11,则说明并行总线是x8位宽;如果下一次检测到的是0x22,则说明并行总线是x16位宽;如果下一次检测到的是0x44,则说明并行总线是x32位宽。

同步字

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

配置数据包

7系列FPGA的bit中包含一组配置命令,用以对配置寄存器进行读写。配置数据包中包含两类数据包,如下图所示。
纸上谈兵_FPGA配置_多重加载_第8张图片
TYPE1用来对寄存器进行读写,(配置寄存器的地址总共有14位,但是7系列的配置寄存器地址只使用了5位);TYPE2数据包紧随TYPE1数据包之后,使用TYPE1数据包中的地址,用来写入长数据包。

常见数据

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

配置寄存器

纸上谈兵_FPGA配置_多重加载_第9张图片

FPGA多重加载

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

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

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

IPROG

使用ICAPE2发出IPROG指令

纸上谈兵_FPGA配置_多重加载_第11张图片

比特流中嵌入IPROG指令

纸上谈兵_FPGA配置_多重加载_第12张图片

XAPP1081

XAPP733

博文链接

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

你可能感兴趣的:(FPGA)