Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置(ug470)

配置模式

如果 M[2:0] 为 "101",则该FPGA 只支持 JTAG 进行配置。处于其余配置模式下时,依旧可以使用 JTAG 模式进行调试,并且优先级最高。

串行配置模式

接口
从-连接方式
主-连接方式
  • 除了CCLK 连接不同,其他都和从串行模式一样
串行菊花链(非同时配置)
  • 上升沿采样DIN数据,下降沿DOUT输出数据,形成上下流关系;
  • SPI 在该连接方式下不支持重配置功能;
  • 第一个器件最后完成配置;当链中最远端器件完成配置,则将DONE变为高阻态,这样下一个器件检测到DONE为高则开始配置;
  • 7系列必须放在第一个;
  • DOUT传输的总数据量有限制,所以要根据程序大小计算好可以连接的器件个数
串行配置(同时配置)
  • 所有器件要一样(IDCODE一样),配置程序也一样
时序

主SPI配置模式

SPIx1/x2 连接图
  • INIT_B 需要外部上拉电阻;
  • 菊花链模式不支持SPIx2和x4,DOUT连接下个器件的DIN形成菊花链;
  • FPGA VCCO_0 要适配 FLASH器件的VCC;
  • 默认SPI器件在CCLK下降沿锁存数据,FPGA在上升沿采样数据(可以通过配置SPI_FALL_EDGE属性更改为下降沿采样);
  • 可通过ConfigRate属性调节CCLK频率;可通过ExtMasterCclk_en属性使能外部输入时钟EMCCLK作为CCLK源使用;
  • VCCBATT用于AES密钥存储,需要时连接
SPIx1模式时序
  • CCLK初始始终为3MHz,配置ConfigRate只有在读写数据时生效,写地址和指令时不生效;
  • SPI FLASH在配置后不使用,建议将FCS_B拉高;
  • PUDC_B为低,在写完读指令和地址后,MOSI需要拉高或者为高阻态
SPIx4 连接图
SPI操作指令
  • 通过spi_buswidth属性改变读写位宽
操作flash空间大于128Mb
  • 通过使能 spi_32bit_addr 属性支持32bit地址模式
SPI配置时序
  • 默认SPI器件在CCLK下降沿锁存数据,FPGA在上升沿采样数据;
  • 可以通过配置SPI_FALL_EDGE属性更改为下降沿采样,但是一开始还是上升沿采样,只有到读取bit流中的更改为下降沿这个配置信息之后才会生效,这个在使能外部时钟源和更改速率之前生效
SPI最大速率计算
上电顺序要求

SPI flash必须在FPGA 拉低FCS_B和发送读指令之前具备接受指令状态

主BPI配置模式

  • 某些引脚位于 bank15,Artix-7 中 7A50T 以及更小器件和 Spartan-7系列不支持 BPI 配置;
  • BPI模式支持异步和同步读取两种方式,默认异步;
  • 异步读取支持x8和x16两种位宽,均为自动识别
接口
异步读取模式
连接图
  • BPI模式:M[2:0]= 101 ;
  • CCLK必须作为输出悬空;
  • RS[1:0]用于多镜像配置(MultiBoot)
时序
  1. 开始配置:上电或者低脉冲PROGRAM_B信号;
  2. 上电配置:PROGRAM_B低电平时拉低INIT_B;
  3. 初始化完成:INIT_B变高,INIT_B上升沿采样M[2:0],识别配置模式;
  4. 识别为BPI模式:FWE_B拉高,FOE_B拉低,FCS_B拉低;
  5. 主模式时INIT_B上升沿一段延时后输出CCLK;
  6. FPGA输出初始地址并维持10个CCLK;
  7. FPGA在CCLK上升沿读取数据;
  8. CRC错误,INIT_B输出低,DONE保持低电平;
  9. 加载完成,DONE拉高;
  10. CCLK变为高阻态;
  11. 在GTS_cycle后多功能I/O引脚变为用户模式,默认为DONE变为高后一个周期
同步读取模式
连接图
  1. 同步读取模式是最快的配置模式;
  2. 一开始使用默认CCLK速率和异步读取模式,直到读取bitstream的header才转换为同步读模式;
  3. 同步模式需要通过设置BPI_sync_mode属性设置,有两种属性值:Type1(用于G18F信号flash);Type2(用于P30/P33信号flash);
  4. 同步读模式,FPGA CCLK输出连接BPI Flash,ADV_B连接FLASH ADV引脚;
  5. FPGA配置完成后 BPI flash保持同步读模式;
  6. 同步读模式只支持x16;
  7. bit顺序和SelectMap一样
最大配置速率计算


上电顺序要求
  • 在FPGA驱动FCS_B低电平并输出第一个地址之前,BPI闪存必须准备好进行异步读取,以确保BPI闪存可以输出存储的比特流。

SelectMAP 配置模式

简介
  • 总线宽度 8、16、32bits,可以自动识别总线宽度;

  • 支持配置和读取操作;

  • 读操作只有从 SelectMAP模式支持;

  • CCLK主模式下为输出;从模式下为输入;

  • 模式:单器件从模式、多器件菊花链模式、多相同器件模式

接口
Data Ordering

单器件配置模式
连接示例
数据加载

支持连续和非连续数据加载,数据加载由 CSI_B、RDWR_B、CCLK信号控制

  • CSI_B

    • SelectMAP 接口使能,低有效;

    • 当不需要SelectMAP和读回操作时,CSI_B可以接地

  • RDWR_B

    • 输入输出使能,低电平输入(写FPGA),高电平输出(读FPGA);
    • CSI_B使能时,RDWR_B保持不变,否则会中断配置和回读操作
  • CCLK

    • 所有数据操作同步于CCLK;
    • 配置FPGA:FPGA在时钟上升沿采样;
    • 回读FPGA:FPGA在时钟上升沿更新数据
连续配置时序
非连续配置时序

两种非连续配置方式:

  • 通过控制CSI_B信号;
  • 通过控制CCLK信号


终止操作
  • 分为配置终止和回读终止操作;
  • 当CSI_B有效时改变RDWR_B触发终止操作;
  • 配置终止会持续4个CCLK周期,同时数据线D0-7会返回状态字;回读终止不返回状字;
  • 终止操作完成后会恢复配置/回读操作;或者可以通过产生PROGRAM_B低脉冲复位整个器件
时序
状态字定义
状态字数据对齐
多器件SelectMAP独立配置
  • 通过CS单独控制每个器件
多器件SelectMAP同时配置
并行菊花链配置
  • CS_B为菊花链;
  • 第一个器件可以为Master/Slave SelecrMAP、BPI,其他必须都为Slave SelecrMAP

JTAG配置模式

  • 无论M[2:0]配置为何值,都支持JTAG在线配置

配置引脚

CVGBVS

  • 输入引脚;
  • CVGBVS决定bank0 I/O支持的电压值,以及配置区间bank14、bank15的I/O所支持的电压值;
  • 若I/O工作在1.8V或者更低电压下,CVGBVS接GND;
  • 若I/O工作在2.5V/3.3V下,CVGBVS接VCCO_0(3.3V/2.5V);
  • 7系列有两种I/O bank类型:high-range (HR I/O) banks 支持3.3,2.5V电压标准;a few lower voltage I/O standards, and high-performance (HP I/O) banks 支持 1.8V 或者更低的电压标准;

PROGRAM_B

  • 输入引脚,下降沿有效,用于复位整个器件;
  • 上升沿开始启动配置,但上电时把 PROGRAM_B 保持低电平不会使 FPGA配置保持复位状态,延迟配置时间需要使用 INIT_B 信号配合完成
  • 引脚外部需要通过4.7kΩ 以上电阻上拉至VCCO_0

INIT_B

  • FPGA 初始化引脚或配置错误信号,低电平有效。当 FPGA 处于配置复位状态或当FPGA 正在初始化(清除)其配置存储器(PROGRAM_B信号为低电平)时或当 FPGA 检测到配置错误时,FPGA 会将该引脚驱动为低电平;
  • 在上电期间,可以通过讲该引脚拉低,来延迟上电配置程序的时间 ;
  • 当完成初始化后,该引脚被释放,外部上拉电阻讲该引脚拉高,当检测到该信号上升沿之后,FPGA会读取M[2:0]引脚状态,从而确定后续采用哪种配置方式进行配置 ;
  • 引脚外部需要通过4.7KΩ以上的电阻上拉至VCCO_0 ;
  • M[2:0]被采样之后:INIT_B作为输出,0表示CRC或IDCODE错误(这时DONE为低电平),0或表示回读CRC错误(这时DONE为高电平,且回读CRC使能);1表示没有CRC错误,初始化完成

PUDC_B

  • 输入引脚(不可悬空),在配置期间I/O引脚内部上拉电阻使能;
  • 低电平,配置期间所有未赋值引脚为高电平;
  • 高电平,配置期间所有未赋值引脚为高阻态

VCCBATT

  • FPGA内部易失性存储器的电池备用电源,用于存储AES解密器的密钥,如果不需要使用AES易失性密钥存储区域中的解密器密钥,那么将该引脚接地就行,该引脚不是I/O,不受VCCO_0的影响

RS0, RS1

  • 输出引脚,RS[1:0]用多镜像配置(MultiBoot)

RDWR_B

  • 输入引脚;
  • 高电平:FPGA输出数据到SelectMap数据线上;
  • 低电平:外部控制器通过SelectMap数据线写数据到FPGA

FCS_B

  • 输出引脚,flash片选信号,低有效

FOE_B

  • 输出引脚,flash输出使能,低有效

FWE_B

  • 输出引脚,flash写使能,低有效

Configuration Details

配置文件格式

总线位宽自动检测

  • Serial、JTAG、SPI模式不支持总线位宽自动检测功能;
  • 只检测D[7:0]的值,检测到0xBB,若下一次检测到0x11,则为x8;若下一次检测到0x22,则为x16;若下一次检测到0x44,则为x32;然后立即切换总线位宽,开始检测同步字

同步字

  • 识别到同步字前没有其他包数据

位交换和总线字序


延迟配置

  • 通过 INIT_B保持低电平来延迟配置。当INIT_B拉高后(完成初始化阶段),再次拉低不会延迟配置。
延迟相关信号

配置顺序

Setup
Device Power-Up (Step 1)
  • 电源引脚
  • 上电时序

Clear Configuration Memory (Step 2, Initialization)
  • 以下情况都会触发"清除配置存储":重新上电、PROGRAM_B低脉冲、JTAG JPROGRAM指令、IPROG指令、fallback重配置;
  • BRAM和寄存器都会通过GSR拉高初始化;
  • 这段期间,除了少数配置输出引脚,其他I/O通过GTS处于高阻态,如果PUDC_B为低,则为内部上拉
Sample Mode Pins (Step 3)
  • INIT_B拉高后,器件采集M[2:0]模式引脚值,驱动CCLK(master模式下),然后在CCLK上升沿采集配置数据引脚值
Bitstream Loading
Synchronization (Step 4)
  • 对于BPI模式、SelectMAP模式,同步前需要先自动识别位宽;
  • 任何同步字前的数据都会被忽略,除了位宽检测序列;
  • 同步阶段对于大多数用户是透明的,因为工具生成的bit包含位宽检测序列及同步字

同步阶段相关信号

Check Device ID (Step 5)
  • 同步之后进行器件ID检验,如果ID不匹配则回退进行重配置

  • 7系列 jtag ID Code寄存器格式

Load Configuration Data Frames (Step 6)
  • 同步字加载及器件ID检查完成后,开始加载配置数据帧

  • Configuration Packets :Type1、Type2两种,寄存器地址只用5bit


Cyclic Redundancy Check (Step 7)
  • FPGA 计算CRC跟bit里的校验值比较;
  • 同步丢失后,后续的指令都被忽略,最配置失败---DONE低,INIT_B高
Startup
  • DONE置位后要保留足够时间保证能到 phase7,保守时间为64个时钟周期
  • 防止DONE、GTS、GWE在MMCMs锁相和DCI匹配前置位


配置过程I/O电平变化(EOS)
  • 在End Of Startup后一个CFGCLK发生0-1-0的电平转变过程;
  • 避免产生影响:VCCO14、15接2.5/3.3V;或者外部引脚上拉;还可以逻辑设计忽略EOS 后第一个CFGCLK上升沿之后至少200ns不采纳数据
STARTUPE2原语

Bitstream Security

Bitstream Composition

配置寄存器

重配置和多镜像

Fallback MultiBoot

  • 回退功能使能:ConfigFallback(通过xdc约束或者bitstream设置);
  • 回退重配置时将忽略IPROG,看门狗计时器关闭;
  • 重配置失败,配置终止,INIT_B和DONE保持低电平
先加载golden再触发MultiBoot
直接加载MultiBoot
  • 对于SPI模式,回退默认使用x1进行golden镜像加载;
  • 对于BPI模式,回退默认使用异步读模式进行镜像加载,所以当配置为同步读模式时要注意CCLK,同时要满足异步和同步读模式;
  • BPI模式,硬件设计RS引脚要根据upper address进行上拉或者下拉

IPROG

  • IPROG(Internal PROGRAM)指令和PROGRAM_B引脚给低脉冲作用类似,区别在于IPROG不复位WBSTAR、TIMER、BSPI和BOOTSTS寄存器值;
  • IPROG指令触发初始化,同时INIT和DONE拉低;
  • 两种发起指令方式:逻辑控制ICAPE2;生成bit时在golden bit前加入WBSTAR和IPROG指令; 4.当触发回退重新加载时IPROG指令将被忽略
IPROG Using ICAPE2
  • 输入配置信息需要位转换;
  • 发送流程:同步字->WBSTAR->IPROG
IPROG Embedded in the Bitstream
Status Register for Fallback and IPROG Reconfiguration
  • BOOTSTS用于存储配置历史;
  • Valid用于只是当前Status是否有效;
  • Status_0用于记录最新配置状态; Status_1用于记录上一次配置状态;
  • Status_1 表示执行了IPROG,检测到CRC错误;
  • Status_0表示回退加载成功,同时也有IPROG,只是回退重配置忽略IPROG指令,但是同样记录状态

WBSTAR Register

  • 执行IPROG指令后,FPGA从WBSTAR指示的地址开始读指令

Watchdog Timer

  • 两种模式:配置监控、用户逻辑监控;
  • 计数到达0,触发回退;
  • 计时器寄存器计数时钟为CFGMCLK(65MHz))256分频,一个时钟周期为4000ns,计数器位宽30bits,所以可以计时4230秒;
  • 回退重配置时,Watchdog不使能
Configuration Monitor Mode
  • TIMER寄存器:TIME_CFG_MON设为1,并设置超时计数值
User Monitor Mode
  • TIMER寄存器:TIME_USR_MON设为1,并设置超时计数值

RS Pins

  • 除SPI配置模式,RS信号均由WBSTAR寄存器控制输出;

  • 当BPI或Master SelectMap模式回退时,输出低电平;

  • 在多镜像场景用作为高位地址线;

  • 除CCLK外所有BPI引脚均为多功能I/O,配置完成后(DONE为高)均可由用户控制

JTAG高级用法

参考文献

7 Series FPGAs Configuration User Guide (UG470)

相关推荐
DS小龙哥7 小时前
基于Zynq FPGA的雷龙SD NAND存储芯片性能测试
fpga开发·sd nand·雷龙·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
上理考研周导师16 小时前
第二章 虚拟仪器及其构成原理
fpga开发
FPGA技术实战18 小时前
《探索Zynq MPSoC》学习笔记(二)
fpga开发·mpsoc
bigbig猩猩1 天前
FPGA(现场可编程门阵列)的时序分析
fpga开发
Terasic友晶科技1 天前
第2篇 使用Intel FPGA Monitor Program创建基于ARM处理器的汇编或C语言工程<二>
fpga开发·汇编语言和c语言
码农阿豪1 天前
基于Zynq FPGA对雷龙SD NAND的测试
fpga开发·sd nand·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
江山如画,佳人北望1 天前
EDA技术简介
fpga开发
淘晶驰AK1 天前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发
最好有梦想~1 天前
FPGA时序分析和约束学习笔记(4、IO传输模型)
笔记·学习·fpga开发