通信人家园
标题:
FPGA在线加载模式简介
[查看完整版帖子]
[打印本页]
时间:
2010-9-24 22:23
作者:
h99110501
标题:
FPGA在线加载模式简介
FPGA
是基于
SRAM
编程的,编程信息在系统掉电时会丢失,每次上电时,都需要从器件外部的
FLASH
或
EEPROM
中存储的编程数据重现写入内部的
SRAM
中。
FPGA
在线加载需要有
CPU
的帮助,并且在加载前
CPU
已经启动并工作。
FPGA
的加载模式主要有以下几种:
1).PS
模式
(Passive Serial Configuration Mode)
,即被动串行加载模式。
PS
模式适合于逻辑规模小,对加载速度要求不高的
FPGA
加载场合。在此模式下,加载所需的配置时钟信号
CCLK
由
FPGA
外部时钟源或外部控制信号提供。另外,
PS
加载模式需要外部微控制器的支持。
2).AS
模式
(Active Serial Configuration Mode)
,即主动串行加载模式。在
AS
模式下,
FPGA
主动从外部存储设备中读取逻辑信息来为自己进行配置,此模式的配置时钟信号
CCLK
由
FPGA
内部提供。
3).PP
模式
(Passive Parallel Configuration Mode)
,即被动并行加载模式。此模式适合于逻辑规模较大,对加载速度要求较高的
FPGA
加载场合。
PP
模式下,外部设备通过
8bit
并行数据线对
FPGA
进行逻辑加载,
CCLK
信号由外部提供。
4).BS
模式
(Boundary Scan Configuration Mode)
,即边界扫描加载模式。也就是我们通常所说的
JTAG
加载模式。
所有的
FPGA
芯片都有三个或四个加载模式配置管脚,通过配置来选取不同的加载模式。
<SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
首先来介绍下PS
加载模式,各个厂商FPGA产品的PS加载端口定义存在一些差异,下面就对目前主流的三个FPGA厂商Altera, Xilinx,Lattice的PS加载方式进行一一介绍。
<SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
Altera
公司的
FPGA
产品
PS
加载接口如下图所示。
<SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
1).CONFIG_DONE
:加载完成指示输出信号,
I/O
接口,高有效,实际使用中通过
4.7K
电阻上拉到
VCC
,使其默认状态为高电平,表示芯片已加载完毕,当
FPGA
正在加载时,会将其驱动为低电平。
2).nSTATUS
:芯片复位完成状态信号,
I/O
接口,低有效,为低时表示可以接收来自外部的加载数据。实际使用中通过
4.7K
电阻上拉到
VCC
,使其默认状态为高,表示不接收加载数据。
3).nCE
:芯片使能管脚,输入信号,低有效,表示芯片被使能。当
nCE
为高电平时,芯片为去使能状态,禁止对芯片进行任何操作。对于单
FPGA
芯片单板,
nCE
直接接
GND
即可,而对于多
FPGA
芯片单板,第一片芯片的
nCE
接
GND
,下一芯片的
nCE
接上一芯片的
nCEO
。
4).nCEO
:使能输出信号,当芯片加载完成时,该管脚输出为低电平,未加载完成时输出为高电平。对于单
FPGA
芯片单板,
nCEO
悬空,对于多
FPGA
芯片单板,
nCEO
接下一芯片的
nCE
。
5).nCONFIG
:启动加载输入信号,低电平时表示外部要求
FPGA
需要重新加载,复位
FPGA
芯片,清空芯片中现有数据。实际使用中该管脚通过
4.7K
电阻上拉到
VCC
,使其默认状态为高。
6).DCLK
:加载数据参考时钟。
PS
模式下为输入,
AS
模式下为输出。
7).DATA0
:加载数据输入,输入信号。
8).MSEL[0:3]
:加载模式配置管脚。
<SPAN lang=EN-US style="FONT-SIZE: 12pt">
上图为利用
CPU
扩展
I/O
端口对多片
FPGA
进行
PS
加载的硬件连接实例。
CPU
可以利用自己的
I/O
端口来对
FPGA
进行直接加载,不过,由于
CPU
的
I/O
端口有限,在大多数情况下,都是利用扩展
I/O
端口,扩展器件可以是
CPLD
或
FPGA
,不过在大多数情况下都是
CPLD
。上图为同步加载方案,两片
FPGA
的
nCE
管脚都接
GND
,所以两片
FPGA
的加载操作会同时开始和结束,此种设计方案适用于两片
FPGA
来自同一个厂家,并且逻辑数据相同。如果两片
FPGA
的逻辑数据不同,则需要采取异步加载模式,如下图所示。
<SPAN lang=EN-US style="FONT-SIZE: 12pt">
如上图所示,第一片芯片的
nCEO
输出管脚与第二片芯片的
nCE
管脚连接,当第一片芯片加载逻辑时,
nCEO
输出高电平,将第二片芯片禁止,直到第一片芯片加载完成时,
nCEO
输出低电平,让第二片芯片使能,然后开始接收加载数据。
FPGA
的加载流程
1).CPU
的
I/O
端口或扩展
I/O
端口将
FPGA
的
nCONFIG
驱动为低,通知
FPGA
去完成加载前的准备工作
(
复位芯片,清空
FPGA
内部数据
)
。
2).FPGA
完成准备工作,将
nSTATUS
信号驱动为低,表示准备工作已完成,可以接收加载数据。
3).CPU
对
FPGA
加载逻辑,在此器件,
FPGA
将
CONFIG_DONE
驱动为低,表示正在加载。
4).
加载完成后,
FPGA
将
CONFIG_DONE
驱动为高,通知
CPU
加载已完成。如果加载过程出现错误,需要重新加载的话,
FPGA
会将
CONFIG_DONE
保持为低,通知
CPU
重新加载。
Xilinx
公司
FPGA
产品的逻辑加载端口信号跟
Altera
公司的有点差别,如下图所示。
<SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
1).DONE
:加载完成指示信号,
I/O
信号,
OD
输出,低有效,使用时需要上拉到
VCC
,此信号与
Altera
芯片的
CONFIG_DONE
信号功能相同。
2).INTI_B
:
I/O
信号,
OD
输出,在配置模式采样之前,此信号为输入,为低电平时,表示延迟配置。在配置模式采样后,用于指示配置过程中是否有
CRC
错误,为低电平时表示有
CRC
错误。使用时需要上拉到
VCC
。
3).PROG_B
:输入信号,低电平时,异步复位芯片,为接收加载数据作准备。与
Altera
芯片的
nCONFIG
信号功能相同。
4).CCLK
:
I/O
信号,
JTAG
模式外的所有配置模式下的时钟输入。
5).D_IN
:输入信号,加载数据输入,与
CCLK
信号的上升沿同步。
6).D_OUT
:输出信号,串行数据输出。当
FPGA
芯片配置为
bypass
模式时,
D_IN
可以直接透传过芯片从
D_OUT
管脚输出。
Xilinx
芯片
PS
加载的硬件连接方式同
Altera
芯片的相同,这里就不画了,同样的,
Xilinx
芯片多片加载时也支持同步和异步两种方式。同步方式下,加载数据分别跟每一片
FPGA
芯片的
D_IN
信号连接。异步方式下,前一芯片的
D_OUT
接后一芯片的
D_IN
,等前一芯片加载完毕后,切换到
bypass
模式,数据直接从
D_OUT
管脚透传过去给后面一片芯片加载。
Lattice
公司的
FPGA
产品逻辑加载端口跟
Xilinx
很相似,如下图所示。
CFG
是加载模式配置管脚,
PROGRAMN
是加载控制管脚,输入信号,低电平进入加载状态。
DI
是加载数据输入管脚,非加载状态下可作为普通
I/O
端口使用。
下面是
Lattice FPGA
芯片的
PS
和
AS
加载模式混合使用的实例,如下图所示。
<SPAN lang=EN-US style="FONT-SIZE: 12pt">
如上图所示,左边的
FPGA
使用
AS
模式,通过
CPU
的
SPI
接口给自己加载逻辑,时钟信号
CCLK
由左边的
FPGA
提供,等左边的
FPGA
加载完成后,它会作为主控制器给右边的
FPGA
加载,此时的加载方式为
PS
模式。
CPU
通过
I/O
口与两片
FPGA
的
PROGRAMN
管脚相连,可以控制加载的先后顺序。
PP
加载模式
Altera
芯片的并行加载端口与串行加载差不多,只是数据宽度由
1
位增加到
8
位。
Xilinx
芯片的并行加载端口与串行加载端口相比,多出如下信号线:
1).
数据宽度由
1
位增加到
8
位;
2).DOUT_BUSY
:回读数据
Ready
指示信号。
3).CS_B
:芯片加载选择管脚,低有效;
4).RPWD_B
:读写控制信号,低电平为写,高电平为读。
Lattice
芯片的并行加载端口与串行加载端口相比,多处如下信号线:
1).CSN/CS1N
:加载启动信号,
CSN
或
CS1N
为高时,
D[7:0]
和
BUSY
变为高;
CSN
和
CS1N
同为高时,
flow_through
和
bypass
寄存器将被复位;
CSN
和
CS1N
同为低时,
FPGA
进入加载状态。
2).WRITEN
:读写控制信号,低电平时表示写,高电平时表示读。
3).BUSY
:三态输出,
BUSY
=
0
时,表示已准备好接收
D[0:7]
或送出
D[0:7]
;为高电平时表示忙碌。
4).CSON
:当
flow_through
使能时,当第一个
FPGA
芯片加载完成后,
CSON
将输出低电平,使第二个
FPGA
进入加载状态。此信号可连接下一片芯片的
CSN, CS1N
附件:
时间:
2010-9-25 10:57
作者:
els99
很好 很基础
通信人家园 (https://www.txrjy.com/)
Powered by C114