Xilinx 7系列FPGA配置(ug470)
- 配置模式
- 串行配置模式
- 接口
- 从-连接方式
- 主-连接方式
- 串行菊花链(非同时配置)
- 串行配置(同时配置)
- 时序
- 主SPI配置模式
- SPIx1/x2 连接图
- SPIx1模式时序
- SPIx4 连接图
- SPI操作指令
- 操作flash空间大于128Mb
- SPI配置时序
- SPI最大速率计算
- 上电顺序要求
- 主BPI配置模式
- 接口
- 异步读取模式
- 连接图
- 时序
- 同步读取模式
- 连接图
- 最大配置速率计算
- 上电顺序要求
- SelectMAP 配置模式
- 简介
- 接口
- Data Ordering
- 单器件配置模式
- 连接示例
- 数据加载
- 连续配置时序
- 非连续配置时序
- 终止操作
- 时序
- 状态字定义
- 状态字数据对齐
- 多器件SelectMAP独立配置
- 多器件SelectMAP同时配置
- 并行菊花链配置
- JTAG配置模式
- 配置引脚
- CVGBVS
- PROGRAM_B
- INIT_B
- PUDC_B
- VCCBATT
- RS0, RS1
- RDWR_B
- FCS_B
- FOE_B
- FWE_B
- Configuration Details
- 配置文件格式
- 总线位宽自动检测
- 同步字
- 位交换和总线字序
- 延迟配置
- 延迟相关信号
- 配置顺序
- Setup
- Device Power-Up (Step 1)
- Clear Configuration Memory (Step 2, Initialization)
- Sample Mode Pins (Step 3)
- Bitstream Loading
- Synchronization (Step 4)
- Check Device ID (Step 5)
- Load Configuration Data Frames (Step 6)
- Cyclic Redundancy Check (Step 7)
- Startup
- 配置过程I/O电平变化(EOS)
- STARTUPE2原语
- Bitstream Security
- Bitstream Composition
- 配置寄存器
- 重配置和多镜像
- Fallback MultiBoot
- 先加载golden再触发MultiBoot
- 直接加载MultiBoot
- IPROG
- IPROG Using ICAPE2
- IPROG Embedded in the Bitstream
- Status Register for Fallback and IPROG Reconfiguration
- WBSTAR Register
- Watchdog Timer
- Configuration Monitor Mode
- User Monitor Mode
- RS Pins
- JTAG高级用法
- 参考文献
配置模式
如果 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)
时序
- 开始配置:上电或者低脉冲PROGRAM_B信号;
- 上电配置:PROGRAM_B低电平时拉低INIT_B;
- 初始化完成:INIT_B变高,INIT_B上升沿采样M[2:0],识别配置模式;
- 识别为BPI模式:FWE_B拉高,FOE_B拉低,FCS_B拉低;
- 主模式时INIT_B上升沿一段延时后输出CCLK;
- FPGA输出初始地址并维持10个CCLK;
- FPGA在CCLK上升沿读取数据;
- CRC错误,INIT_B输出低,DONE保持低电平;
- 加载完成,DONE拉高;
- CCLK变为高阻态;
- 在GTS_cycle后多功能I/O引脚变为用户模式,默认为DONE变为高后一个周期
同步读取模式
连接图
- 同步读取模式是最快的配置模式;
- 一开始使用默认CCLK速率和异步读取模式,直到读取bitstream的header才转换为同步读模式;
- 同步模式需要通过设置BPI_sync_mode属性设置,有两种属性值:Type1(用于G18F信号flash);Type2(用于P30/P33信号flash);
- 同步读模式,FPGA CCLK输出连接BPI Flash,ADV_B连接FLASH ADV引脚;
- FPGA配置完成后 BPI flash保持同步读模式;
- 同步读模式只支持x16;
- 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)