S6
配置详细攻略
何冰峰
1
概述
1.1
什么是配置?
S6
的配置就是应用配置数据通过比特流的方式加载进入
S6
内部存储器。
1.2
配置模式?
主从角度(时钟方向)
S6
可以主动地从外部非易失性存储器加载数据来配置自己
S6
也可以被动的由外部微处理器等加载来配置自己
位宽角度
串行配置
8bit/16bit
并行模式
因为
FPGA
的配置数据是被存放在
CMOS
配置锁存器(
CCLs
)中的,所以如果需要在
掉电之后才能进行重新配置。
配置数据比特流需要通过特定的管脚进入
FPGA
中。根据上述
配置模式的分类进行组合之后分为以下
5
类配置模式:
JTAG
配置模式
主动串行(
x1
)
/SPI(x2/x4)
配置模式
被动串行配置模式
主动并行(
x8/x16
)配置模式
被动并行(
x8/x16
)配置模式
1.2.1
主从模式与
CCLK
的关系
在主动配置模式下,
S6
默认的通过
S6
内部晶体振荡器或者是外部主动时钟源
GCLK0/USERCCLK
来驱动
CCLK
输出配置时钟。当使用内部晶振的时候,可以通过配置
BitGen
软件中的
-g ConfigRate
位来进行配置时钟频率的选择,
S6
默认设置为
2MHz
。
配置结束之后,
S6
内部的晶振关闭,除非发生以下情况:
使用
SEU
侦测
CFGMCLK
在启动初始的时候就已经连接了
SUSPEND
模式下选择使用内部时钟(晶振仅在在唤醒的流程中开启)
密钥使能
CCLK
管脚是一个复用引脚,在配置之前,
片内是没有上拉电阻的。配置完成之后作为
IO
口使用,除非
PERSIST
使用了。
被动配置模式下,
CCLK
作为输入管脚。
不管在何种配置模式下面,
JTAG
接口都是可用的。
1.3
配置方案
1.3.1
基本配置方案
基本配置方案包括使用
XILINX
平台
FLASH PROM
或者是第三方
SPI PROM
进行主动
串行配置。 这种解决方案能够最少的使用
FPGA
的管脚, 并且在
I/O
电压的供应上更加具有
选择的灵活性。
XILINX
的
JTAG
编程软件也支持
SPI PROM
。
1.3.2
低成本优先解决方案
在某些特殊的应用中我们可以选用低成本的配置解决方案:
假如在系统设计中有多余的非易失性存储器,
那么我们把配置比特流镜像文件存放
在这个存储器中。 如果没有这样一个存储器件,
也可以通过远端的一个连接来完成
对
FPGA
的配置,这种情况下可以考虑被动串行
/
并行模式以及
JTAG
模式。
假如在系统设计中一定会使用到一个非易失性存储器,
那么可以与其他处理器共用
这个存储器。
FPGA
的配置比特流能够以任何处理器代码的方式存放在电路板上,
这样
FPGA
配置数据和处理器代码可以共用一个存储器件。
S6
也可以直接使用商业级
SPI
串行
FLASH
和并行
NOR FLASH
存储器进行配置。
1.3.3
高速解决方案
在某些应用中需要在很短的时间中就要是
FPGA
中的逻辑是可用的,所以
FPGA
配置
模式和配置工具必须比普通的配置要快许多。
配置时间包括配置逻辑的初始化时间加上配置
时间,这个时间主要取决与配置设备的位宽以及配置逻辑的速度。例如,当使用一个
4-bit
位宽
33MHz
的数据总线,
3.6Mb
的配置数据需要
28ms
配置进入
XC6SLX16 FPGA
中。
同样时钟频率下,并行配置模式必然比串行配置模式快。
在菊花链中配置一片
FPGA
必然比配置多片
FPGA
快。但是如果多片
FPGA
并联
独立分开配置速度是可以确定。
在主动模式下,
FPGA
内部产生
CCLK
配置时钟信号,
CCLK
可由用户设置,最大
CCLK
频率的设置取决于存放配置数据的非易失性存储器的读速率,
一个高速的存
储器必然是配置加快。
假如单板上有一个可用的外部时钟,可以使用
XILINX
平台
FLASH
对
FPGA
进行
被动配置。
1.4
加密技术
和处理器加载代码一样,
FPGA
的配置比特流会在上电的时候加载进入
FPGA
中。这就
意味着比特流会被人盗取。
同样和处理器一样,
S6
有多种技术用来保护
FPGA
比特流。
XC6SLX75/T
、
XC6SLX100/T
、
XC6SLX150/T
有片上
AES
解密逻辑来保证
S6
的高度安全性能。
2
配置接口
2.1
配置模式选择接口
S6
的配置模式选择由
M[1:0]
来进行选择。
并行配置模式的总线位宽是由配置逻辑自动侦测的。
不管
FPGA
出于何种配置模式下面,
S6
有
4
条专用的
JTAG
引脚一直是可用的。
S6
默认设置为被动串行模式,在模式设置管脚
M[1:0]
内部有上拉电阻。
2.2
JTAG
接口
对于
JTAG
接口来说, 没有一种指定的模式, 只要
FPGA
上电之后, 不管任何时候
JTAG
接口作为配置接口是一直可用的。
2.3
串行配置接口
2.3.1
串行配置管脚
Pin
Type
Dedicated/
Dual-purpose
Description
M[1:0]
I
复用
配置模式选择管脚
CCLK
I/O
复用
除
JTAG
外的所有配置模式下的配置时钟源
DIN
I
复用
串行配置数据输入,与
CCLK
上升沿同步
DOUT
O
复用
为下游菊花链设备输出串行数据,与
CCLK
下
降沿同步
DONE
I/O/OD
专用
高电平有效信号,高电平表明
FPGA
配置完成
INIT_B
I/O/OD
复用
在
M[1:0]
采样之前是一个输入管脚,可以
通过拉低该脚可以延迟
FPGA
的配置;
在
M[1:0]
采样之后是一个
OD
门低输出有
效信号,低电平指示配置期间发生了
CRC
校验错误;
开启
SEU
侦测的时候, 该管脚保留,可作
为
I/O
口使用
PROGRAM_B
I
专用
低电平有效信号,异步复位整个
FPGA
芯片
2.3.2
主动串行配置
主动串行配置被设计是使用
XILINX
平台
FLASH PROM
来配置
FPGA
。
在多片
FPGA
菊花链配置的时候,
DOUT
需要接到下游
FPGA
的
DIN
管脚。
CCLK
网络需要进行并行端接。
主动串行模式和主动地
SPI
模式都是通过同样的
M[1:0]
值来进行判定的。因此,
SPI
控
制管脚、
CSO_B
、
MOSI
在配置的时候都是有效的。
S6
的
BANK2
供电电压必须和
XILINX
平台
FLASH PROM
供电电压相同。
DONE
管脚默认的是作为带有内部上拉的
OD
门输出管脚, 但是依然建议额外外接一个
上拉电阻。在
BitGen
软件中可以设置
–
g-DriveDone
来对
DONE
进行驱动。
INIT_B
是一个双向的
OD
门管脚,所以需要外接一个上拉电阻。
BitGen
启动时钟设置必须设置
CCLK
,但实际上软件中进行了默认的设置。
多片
XILINX PROM
可以通过级联来扩展配置存储能力。
在向
XILINX PROM
中烧写程序之前需要将生成的
BIT
文件跟换成为适当格式的文件。
在一些
XILINX PROM
中,复位的极性是可以变成设置。在
S6
的应用中
RESET#
应该
被配置为低电平有效。
主动串行配置仅限于
XILINX
平台
FLASH XCFS/XCFP PROM
。
不是用的配置管脚如
CSI_B/RDWR_B
可以悬空或接地处理。 它们都是可以复用的管脚。
VFS
存在于
XC6SLX75/T
、
XC6SLX100/T
、
XC6SLX150/T
中,用于
eFUSE
编程使用。
VBA TT
也存在于
XC6SLX75/T
、
XC6SLX100/T
、
XC6SLX150/T
中,为密钥的存储进行
供电。假如不使用
AES
加密,
VBA TT
可接
VCCAUX
或者接地或者悬空。
假如
BANK2
供电电压为
1.8V
,
VCCAUX
必须为
2.5V
。假如
BANK2
供电电压为
2.5V/3.3V
,那么
VCCAUX
供电电压可以为
2.5V/3.3V
。
在上电和配置期间,
SUSPEND
管脚必须为低电平。假如
SUSPEND
功能没有使用,这
个管脚需要接地处理。
2.3.3
被动串行配置
在串行菊花链中或者通过外部微处理器配置
FPGA
的时候通常使用的是被动串行配置
模式。配置基本上和主动串行配置相似,除了
CCLK
的方向。
2.3.4
串行配置时序
BIT0
为第一个字节的高位。
在主动配置模式下,等到
M[1:0]
采样之后
CCLK
才会使能。
在被动模式下
CCLK
会自动运行。
2.4
并行配置接口
S6
为并行配置提供一个
8bit/16bit
双向的数据接口, 数据接口不仅可以用来配置数据也
可以进行数据的回读。并行配置的总线位宽是自动侦测的。
主动并行模式下
CCLK
是一个输出,被动并行模式下,
CCLK
是一个输入,可以通过
外部时钟源供给或者使用
GCLK
供给。并行总线也支持多片
FPGA
的配置。
并行配置模式有很多种方式:
单片
FPGA
主动并行配置。
单片
FPGA
被动并行配置,典型为使用一个处理器提供时钟数据。
多片
FPGA
菊花链并行配置,从
PROM
或处理器为多片
FPGA
进行不同的配置。
多片
FPGA
并联并行配置,从
PROM
或处理器为多片
FPGA
进行相同的配置。
在并行配置中需要注意到的是
RDWR_B
是一个复用管脚可以用来作为
BANK2
的
VREF
来使用,但是当使用并行配置的时候,
RDWR_B
管脚不能用作
VREF
。
2.4.1
并行配置管脚
Pin
Type
Dedicated/
Dual-purpose
Description
M[1:0]
I
复用
配置模式选择管脚
CCLK
I/O
复用
除
JTAG
外的所有配置模式下的配置时钟源
D[15:0]
三态
I/O
复用
配置和回读数据总线,与
CCLK
上升沿同步
DONE
I/O/OD
专用
高电平有效信号,高电平表明
FPGA
配置完成
INIT_B
I/O/OD
复用
在
M[1:0]
采样之前是一个输入管脚,可以
通过拉低该脚可以延迟
FPGA
的配置;
在
M[1:0]
采样之后是一个
OD
门低输出有
效信号,低电平指示配置期间发生了
CRC
校验错误;
开启
SEU
侦测的时候, 该管脚保留,可作
为
I/O
口使用
PROGRAM_B
I
专用
低电平有效信号,异步复位整个
FPGA
芯片
CSI_B
I
复用
低电平有效信号,低电平片选使能并行数据总
线,高电平禁止
RDWR_B
I
复用
决定
D[X:0]
总线传输方向,
0=
输入;
1=
输出。
RDQR_B
输入尽在
CSI_B
没有使能的时候发生
改变,否则将会出现一个
ABORT
。当使用并行
配置模式的时候,
RDWR_B
管脚不能作为
VREF
来使用
CSO_B
O
复用
低电平有效信号,并行菊花链片选输出管脚,
单片
FPGA
配置时不用
BUSY
O
复用
在回读模式下
BUSY
输出管脚会被使用。
2.4.2
XILINX
平台
FLASH PROM
并行配置
在并行配置模式中,最简单的方法就是直接使用配置
PROM
芯片对
FPGA
进行配置。
这种情况下,设置
FPGA
为主动并行模式,
RDWR_B
和
CSI_B
管脚接地保证数据的连续加
载。
从
PROM
到
FPGA
的
D[X:0]
线路上需要串联匹配电阻防止过冲。
XILINX PROM
需要设置为并行模式。
当使用
XILINX
配置
PROM
对
S6
进行并行配置的时候,
RDWR_B
和
CSI_B
管脚
需要拉低。
主动并行配置的时候,
D[X:0]
总线可以使
X8/X16
模式。
XCFxxP
芯片最大的数据
位宽是
X8
模式。
FLASH PROM
并行配置仅限于
XCFP PROM
。
XCFS PROM
仅支持串行配置。
在配置期间除了
BUSY,FOE_B,FCS_B,FEW_B
之外的
A[25:0]
管脚都是可用的,系
统在这些复用管脚的配置期间必须能够受控。
2.4.3
微处理器并行配置
使用微处理器或
CPLD
进行配置的时候可以使用主动并行配置也可以使用被动并行配
置。当然优先考虑被动模式。
在配置或者回读操作的时候,
DOUT/BUSY
可以被驱动为输出。
当
FPGA
仅仅用来配置而不会使用回读模式的时候,
CSI_B
和
RDWR_B
管脚可以接地。
2.4.4
并行数据加载
并行接口允许连续和非连续的数据加载。
数据的加载由
CSI_B
、
RDWR_B
、
CCLK
信号
来进行控制。
2.4.4.1 CSI_B
并行模式下的位宽是需要侦测才能决定的,这个侦测过程中不管
CSI_B
是什么状态都
是无效的,在同步字侦测之前,不论
CSI_B
的状态如何,每个时钟沿上都会对
D[0
:
n]
进行
采样。当同步字侦测结束之后
CSI_B
使能并行总线才会有效,在同步字的中间
CSI_B
是不
允许被取消的。 当
CSI_B
高电平的时候,
S6
忽略并行接口, 既不锁存数据, 也不驱动输出,
D[0
:
n]
高阻状态,
RDWR_B
的状态也被忽略。
当同步字 被侦测到之后片选管脚会使能并行总线。在同步字侦测之前,不管
CSI_B
出
于何种状态
,D[0
:
n]
会在每个时钟沿上进行采样。最好不要再同步字发送的发送中间取消
CSI_B
。当
CSI_B
处于高电平的时候,
S6
忽略并行接口,既不进行锁存数据也不进行数据
的输出,此时
D[0
:
n]
高阻状态,
RDWR_B
状态也不 进行考虑。
CSI_B=0
的时候,并行接口使能。
CSI_B=1
的时候,并行接口禁止。
假如
FPGA
通过并行接口配置,而且不需要回读模式,或者是多片
FPGA
并联配置的
时候,
CSI_B
可以接地处理。
2.4.4.2 RDWR_B
RDWR_B=0
的时候,数据输入(写入
FPGA
中),配置时使用。
RDWR_B=1
的时候,数据输出(从
FPGA
中读出)。回读模式下使用时
CSI_B
需
要被取消。
当
CSI_B
取消的时候
RDWR_B
信号状态被忽略。 对三态数据管脚的读写控制是异步的。
当
CSI_B
有效的时候,
RDWR_B=1
的时候,
FPGA
主动的驱动并行数据。假如
CSI_B
有效
的时候
RDWR_B
的状态发生了改变,
FPGA
异步侦测到违例,并且驱动
BUSY
信号只是一
个
ABORT
的发生。直到下一个
CCLK
上升沿到来的时候状态寄存器的状态才会更新。
2.4.4.3 CCLK
并行总线上所有的活动都是同步于
CCLK
的。当
RDWR_B=0
的时候,
FPGA
在
CCLK
上升沿采样并行数据管脚。当
RDWR_B=1
的时候,
FPGA
在
CCLK
的上升沿更新并行管脚
上的状态。
在被动并行模式下,可以通过暂停
CCLK
来暂停配置。
2.4.5
连续并行数据时序
连续数据加载应用于配置处理器能够提供一个无中断的配置数据流中。
上电之后,配置控制器设置
RDWR_B=0
,并且使
CSI_B
生效
(CSI_B=0)
,引起
FPGA
驱动
BUSY
信号低电平(该过程是异步的)
。在
CSI_B
有效前
RDWR_B
需要先被驱动为低
电平,否则将会发生
ABORT
事件。
在
CCLK
的下一个上升沿,
FPGA
开始采样数据管脚来判断数据位宽。
数据位宽判定之
后,适当的数据总线位宽为同步字的侦测做准备。当同步字锁存到
FPGA
之后开始配置。
当配置比特流加载完成之后,
FPGA
进入启动程序。
FPGA
通过特定的比特流使
DONE
高电平来来表明
FPGA
进入启动阶段。配置控制器在启动阶段完成之后还会继续发送一会
CCLK
脉冲。
配置完成之后
CSI_B
和
RDWR_B
信号可以取消也可以继续保持。
因为并行端口处于不
活动的状态,
RDWR_B
的状态不会再引起一个
ABORT
事件。
并行总线上面只有一个外设的时候,
CSI_B
信号可以接低电平。
不适用回读模式的时候,
RDWR_B
可以接地。
CSI_B
有效地时候
RDWR_B
状态
不能发生改变,否则会引起一个
ABORT
事件。
模式选择管教在
INIT_B
上升沿采样。
RDWR_B
需要在
CSI_B
之前有效以防止
ABORT
事件发生。
CSI_B
有效的时候使能并行接口。
第一个字节会在
CSI_B
有效之后的第一个
CCLK
上升沿载入。
配置比特流在每个
CCLK
上升沿载入一个字节。
当启动命令载入之后,
FPGA
进入启动阶段。
启动阶段持续最少
8
个
CCLK
周期。
启动阶段
DONE
管脚变为高电平。可以使用额外的
CCLK
来完成启动流程。
配置结束之后
CSI_B
信号可以取消。
CSI_B
信号取消之后,
RDWR_B
也可以取消。
数据总线可以是
X8/X16
模式。
2.4.6
间断并行数据时序
间断数据配置应用于配置控制器不能提供一个无中断的配置数据流中。
例如,当控制器
需要从其他地方读取额外的数据的时候,就需要暂停配置。
暂停配置有两种方法:
取消
CSI_B
信号,此时
CCLK
依然能够自由运行。
控制
CCLK
,延迟
CCLK
。
仅当
FPGA
加载同步字的时候
CSI_B
信号不能被取消。
2.4.6.1
控制
CSI
信号
用户拉低
RDWR_B
管脚设置
D[0
:
n]
为配置输入管脚。如果不适用回读模式,则
可以讲
RDWR_B
直接接地。
CSI_B
有效的时候
RDWR_B
是不可以进行转换的,
否则会引发一个
ABORT
。当然在同步字加载的时候
CSI_B
不能取消。
并行总线上仅有一片外设的时候,
CSI_B
可以接地。
2.4.6.2
控制时钟信号
当
CSI_B
取消的时候,数据管脚处于高阻状态。数据总线可以是
X8/X16
模式的。
当
CSI_B
取消的时候,
RDWR_B
对
FPGA
没有任何影响。
2.4.7
并行数据位号序列
大部分情况下,并行配置都是使用外部的微控制器、
CPLD
、
FPGA
等。这种应用下面
就必须了解配置文件中
D[0
:
n]
与
FPGA
对应的高低位是否恰当。
在并行
X8
模式下。配置数据在每个
CCLK
的时候加载一个字节,每个字节的高位在
D0
管脚,低位在
D7
管脚。
2.5
SPI
配置接口
主动串行外围接口(
SPI
)允许使用一个
SPI
串行
FLASH
存储配置数据。
S6
可以允许
使用一个工业标准的
SPI
串行
FLASH PROM
直接连接进行配置。虽说
SPI
是一个标准的
4
线接口,但是不同的
SPI FLASH
却不一定使用相同的读命令和协议。
SPI
配置也分为
X1/X2/X4
三种配置模式。在
X2
模式中,
D
管脚作为一个服用管脚,可以作为数据输入
/
输
出管脚。在
X4
模式中,
2
跟额外的数据管脚会被使用到。
SPI
串行菊花链的配置仅在
X1
模
式下面生效。
SPI
串行
FLASH
的编程可以直接通过
iMPACT
编程软件来进行。该软件可以通过
S6
来对
FLASH
进行配置文件的下载。
2.5.1
SPI
配置管脚
Pin
Type
Description
During
Configuration
After
Configuration
M[1:0]
I
配置模式选择管脚
INIT_B
上升
沿采样
I/O
HSWAPEN
I
I/O
上拉控制
HSWAPEN=0
:配置过程
I/O
口上拉
HSWAPEN=1
:配置过程无上拉
配 置 期 间 驱
动 为 有 效 状
态
I/O
MOSI/
MISO[0]/
CSI_B
I/O
主动
FPGA
串行数据输出、主动
FPGA
串行数据输入
连接到
SPI FLASH PROM
的被动
串行数据输入管脚
FPGA
发送读
命 令 和 起 始
地
址
给
PROM
的 串
行数据输入
I/O
DIN/D0/
MISO/
MISO[1]
I
主动
FPGA
串行数据输入、 被动
SPI
FLASH
输出。连接
SPI FLASH
被
动数据输出管脚
FPGA
接受来
自
PROM
的
串 行 输 出 数
据
I/O
CSO_B
O
主动
SPI
片选输出。低电平有效
连接到
SPI FLASH
的被动片选输入
HSWAPEN_
B=1
的时候,
需 要 外 接 上
拉电阻
配 置 结 束 之
后
驱
动
CSO_B
高电
平 禁 止
SPI
FLASH
,同时
MOSI/DIN.C
CLK
作为普
通
I/O
。
CCLK
O
配置时钟,
FPGA
内部晶振产生,
连接到
SPI FLASH
的被动时钟输入
驱 动
PROM
时钟输入
I/O
。不用时
接 高 电 平 或
低电平
DOUT
O
串行数据输出。用于多片
FPGA
菊
花链配置
单 片
FPGA
中不使用。 内
部 上 拉 不 会
主动驱动。 菊
花 链 配 置 时
连 接 到 下 游
FPGA
的
DIN
I/O
INIT_B
OD/I/O
初始化指示。低电平有效
假
如
SPI
FLASH
在上
电 之 后 要 求
2ms
内 部 复
位时间, 需要
拉蒂
INIT_B
到
PROM
准
备完毕。
不
使
能
POST_CRC
时为
I/O
。需
要 外 接 上 拉
电阻
DONE
OD/I/O
配置完成指示。
专用引脚, 外
接上拉电阻
PROGRA
M_B
I
对
FPGA
编程。低电平有效。
低电平大于等于
500ns
强制清空配
置 存 储 器 进 行 重 新 配 置 ,
PROGRAM_B
返回高电平之后充
值
DONE/INIT_B
高 电 平 开 始
配置
保
持
PORGRAM_
B
低 电 平 强
制
FPGA I/O
高阻。
MISO[3:2]
I
主动
FPGA
串行数据输入, 被动
SPI
串行输出
尽 在 快 速 读
取 是 输 出 命
令
I/O
2.5.2
X1
模式
SPI
配置
FLASH
到
FPGA
的数据路径上应该添加匹配电阻减小过冲。
FPGA BANK2
的电压和
SPI FLASH
的供电电压应该相同。
CSO_B
和
MOSI
在
CCLK
下降沿锁定。
DIN
在
CCLK
上升沿锁定。
SPI FLASH
上面的其他管脚,比如
WP/HOLD
管脚,在
FPGA
配置过程中没有使用。
应该按照
SPI FLASH
规格书中描述的接法做相应的处理。
HSWAPEN
管脚悬空或接高电平的时候,
CSO_B
需要外接一个上拉电阻。
使用
FPGA
内部晶振的时候可以通过
BitGen
的
ConfigRate
来设置
CCLK
频率。 也可以
使用外部始终原来供给
CCLK
使用。
DONE
管脚是带有内部上啦的
OD
门输出,最好外接上拉电阻。
在启动过程
DONE
释放的周期中,当数字时钟管理(
DCM
)或者
PLL
锁相环等待是能
的时候,
FPGA
继续接收数据直到启动等待条件出现,或者
DONE
管脚释放。
2.5.3
X4
模式
SPI
配置
S6
还支持
X4
模式下的主动
SPI
配置。
上图所示连接中使用的是
WINBOND W25Q
系列
FLASH
。如果要使能
X4
输出操
作模式,用户需要设置
FLASH
的
QE
位
status_reg[9]=1
。这个设置在
iMPACT
编
程的过程中进行。
CCLK
可以使
FPGA
内部晶振产生也可以是外部时钟源输入产生。
PROGRAM_B/INIT_B/M0
管脚内部有默认的上拉电阻。
软件对
X4
的支持需要在
BitGen
中设置
X4
使能。
SPI FLASH
的编程需要一个专用的寄存器设置,这个设置可以在
iMPACT
软件中
设置使能
X4
输出。
2.5.4
主动
SPI
自动侦测和错误处理
SPI
读命令是自动选择的,在初始化
FPGA
配置的时候使用一个循环读命令机制。
SPI
X2/X4
的应用就是使用这个机制来进行初始化数据的加载的。
当
FPGA
发出第一个设置命令
的时候,
Mode_Reg
中读命令改变,通过
IPROG
命令,配置改变为
X2/X4
模式。这就需要
在
BitGende spi_buswidth
选项中进行
SPI X2/X4
命令的设置。
循环机制如下图:
2.5.5
主动
SPI
时序
FPGA
发出第一个读命令(操作码
03H
),假如这个读命令没有返回一个同步字,
FPGA
就会发出第二个读命令(操作码
E8H
)。
2.5.6
主动
SPI X2/X4
读命令
S6
的主动
SPI
配置模式支持
Winbond W25Q Quad I/O SPI FLASH
存储器
X2/X4
位宽读
指令。在
BitGen
中
spi_buswidth
选项设置生成
.bit
文件可以是能这种配置方式。
FPGA
以
X1
模式初始化
FLASH
,再以
X2/X4
模式加载。
X2
模式下,
X2
快速输出指令(
3Bh
)类似于标准的快速输出指令(
0Bh
),
DO/DIO
替
代了
DO
变成了两个管脚输出。
X4
模式下,
X4
快速输出指令是
6Bh
。
2.5.7
上电配置注意事项
上电的时候
,FPGA
会自动的开始配置流程。 当
FPGA
处于主动串行
SPI
配置模式的时候,
FPGA
将
CSO_B
拉低片选
SPI FLASH
并且发送一个读命令给
SPI FLASH
。需要注意的是在
FPGA
对
SPI FLASH
进行片选发送读命令之前,
SPI FLASH
必须已经完成初始化并且能够
接受命令。这就需要考虑上电时序和上电时间。
控制上电时序,保证
SPI FLASH
在
FPGA
开始配置之前商店完成并且准备好。
保持
PROGRAM_B
低电平延迟
FPGA
配置直到
SPI
商店完成能够接受命令的时候
释放
PROGRAM_B
高电平。
保持
INIT_B
低电平延迟
FPGA
配置。
.
2.5.8
SPI
串行菊花链
在串行菊花链的应用中, 第一级设备使用
SPI
模式, 下游的后级设备都是用被动串行模
式。这样所有的配置比特流都可以存放在一个
SPI
外设中, 主动和被动串行菊花链的比特流
格式基本上都是一样的。
2.6
主动
BPI
配置接口
通过主动字节宽度外设接口(
BPI
),
S6
可以通过工业标准的并行
NOR FLASH
来配置
自己。
S6
支持最大
26bit
地址
512Mb
容量的并行
NOR FLASH
。
当使用
BPI
配置接口的时候,
BNAK1
的
DDR
控制器不能使用。因为在
BANK1
中的复用管脚上面,要么作为
DDR
控制接口使用,要么作为
BPI
配置接口使用。
XC6SLX4
、
XC6SLX25/T
不支持
BPI
配置接口。
TQG144/CPG196
封装
S6
不支持
BPI
接口。
CSG225
封装中不存在地址管脚
A22/A23
。
iMPACT
编程软件可以通过间接编程工具完成对
NOR FLASH
启动的编程。
FPGA
驱动
26
跟地址线去访问与其相连接的并行
FLASH
。进行
FPGA
配置的时候只能
使用异步读取模式,这种模式下,
FPGA
驱动地址总线,
FLASH PROM
驱动数据比特流发
送给
FPGA
。总线位宽支持
X8/X16
模式。假如并行
NOR FLASH
也支持
X8/X16
模式,必
须将
BYTE#
信号接到合适的状态。
FPGA
方面总线位宽是自动侦测的。
在主动
BPI
模式下,当使用并行
NOR FLASH
的时候,
CCLK
输出不接在并行
NOR
FLASH
上面。但是
FLASH
的数据依然会在
CCLK
的上升沿进行采样。
并行
BPI
模式下,地址从
0
开始,每次加
1
,直到
DONE
管脚做出指示。假如地址达
到
26
’
h3FFFFFF(
最大值
)
但是配置依然没有完成,计数器又会从
0
开始。
2.6.1
BPI
配置接口管脚
Pin
Type
Dedicated/
Dual-Purpose
Description
M[1:0]
I
复用
使用并行
NOR FLASH
进行并行主动配置时为
00
HSWAPEN
I
复用
配置过程中
I/O
上拉选择,内部弱上拉。
HSWAPEN=0
:配置过程中上拉。
HSWAPEN=1
:配置过程
I/O
三态
DONE
I/O/
OD
专用
配置完成高电平指示
INIT_B
I/O/
OD
复用
模式采样之前,拉低
INIT_B
延迟配置。
模式采样之后,低电平表明配置过程
CRC
错误。
SEU
侦测使能的时候,
INIT_B
保留不能作为
I/O
使
用
PROGRAM_B
I
专用
低电平异步复位
CCLK
O
复用
配置时钟输出。
不连接到
NOR FLASH
上面,但是却在内部作为地
址和数据的参考时钟。
FCS_B
O
复用
低电平片选有效信号。
配置过程中驱动低电平,配置完成后三态。配置过
程中内部弱上拉,配置结束之后内部弱下拉。
FOE_B
O
复用
低电平输出使能信号。
配置过程中驱动低电平,配置完成后三态。配置过
程中内部弱上拉,配置结束后内部弱下拉。
FEW_B
O
复用
低电平写使能。
配置过程中驱动高电平,配置结束后三态。配置过
程中内部弱上拉,配置结束之后内部弱下拉。
A[25:0]
O
复用
地址输出
D[15:0]
I
复用
数据输入,在
CCLK
的上升沿采样
CSO_B
O
复用
并行菊花链中的低电平片选信号,
单一
FPGA
配置
的时候不用
HDC
O
复用
High During Configuration
配置过程高电平。
可以连接在
FLASH
上面控制是
X8/X16
输出。
LDC
O
复用
Low During Configuration
配置过程低电平。
可以连接在
FLASH
上面控制是
X8/X16
输出。
2.6.2
主动
BPI
配置
CCLK
必须悬空,不能接高电平也不能接低电平,不需要被驱动。
CCLK
是作为配置过
程中操作的时钟源。
M[1:0]=00
。
上图为
X16
模式,如果使用
X8
模式的配置,仅仅使用
D[7:0]
。
BANK1
和
BANK2
供电电压必须相同,因为这些管脚都是与
FLASH
进行连接。
A24/A25
存在于部分型号中的
BANK5
。
比特流的发送与
SelectMAP
模式下的位交换规则相同。
假如不用对
FLASH
进行编程,
FPGA
的
FCS_B/FOE_B/FEW_B
可以不用,
DONE
连接
在
FLASH
的
FCS_B
,
FLASH
的
FOE_B
接低电平,
FLASH
的
FEW_B
接高电平。
假如
HSWAPEN
悬空或接高电平,
FCS_B
需要一个上拉电阻。
需要特别注意的是
FLASH
和
FPGA
地址低位和高位不要弄反了,不是所有的
FLASH
都是以
A0
作为低位的。
2.6.3
BPI
配置时序
BPI
模式下
CCLK
是输出。并行
NOR FLASH
数据的采集是在
CCLK
的上升沿进行的。
DONE
高电平之后
S6
停止比特流的加载。
复用
I/O
管脚在
GTS_cycle
之后由配置管脚变为普通
I/O
。默认情况下这个周期是
DONE
管脚高电平之后的一个周期。
数据可以使
X8/X16
模式,地址最高支持
X25
。
FCS_B/FOE_B/FEW_B
配置完成后也需要内部配置为上拉,或者外接上拉电阻。
由于初始化的原因,第一个地址
0
在主动
BPI
模式下会延长很长的周期。
2.6.4
上电注意事项
与
SPI
上电注意事项相仿。