http://blog.sina.com.cn/s/blog_98d98c7f0102v4ex.html
http://www.cnblogs.com/aikimi7/p/3499633.html
FPGA配置方式
目前spartan6、Vertex6系列FPGA可以支持多种配置方式:从配置时钟的来源可分为:Master Modes、Slave Modes,从数据读取方式可分为:Parallel、Serial Modes。这样排列组合以下就有如下配置方式:Master Serial、Slave Serial、Slave Parallel、Master Parallel另外Spartan 6等新片子还支持一种SelectMAP 模式,也可以分为Master SelectMAP和Slave SelectMAP两种,这次并没有尝试这两种新式的配置方式,所以没有发言权,所以这两种方式具体的特点参见相关datasheet:ug380等。另外还可以采用JTAG方式在线配置,不过掉电程序是不能保留的。
广义的来说,FPGA的配置包括直接使用下载电缆对FPGA器件进行编程、对外部EEPROM和FLASH进行编程、使用MPU对FPGA器件进行编程、外部EEPROM和FLASH对器件进行编程等。
FPGA器件配置方式分三大类:主动配置、被动配置和JTAG配置。
主动配置:由FPGA器件引导配置操作过程。
被动配置:由计算机或控制器控制配置过程。上电后,控制器件或主控器把存储在外部存储器中的数据送入FPGA器件内,配置完成之后将对器件I/O和寄存器进行初始化。初始化完成后,进入用户模式,开始正常工作。
一旦设计者选定了FPGA系统的配置方式,需要将器件上的MSEL引脚设定为固定值,以指示当前所采用的配置方式。
常用的配置方式有:
PS配置(Passive Serial ConfiguraTIon):被动串行配置
AS配置(AcTIve Serial ConfiguraTIon):主动串行配置
PPS配置(Passive Parallel Synchronous ConfiguraTIon):被动并行同步配置
FPP配置(Fast Passive Parallel Configuration):快速被动并行配置
PPA配置(Passive Parallel Asynchronous Configuration):被动并行异步配置
PSA配置(Passive Serial Asynchronous Configuration):被动串行异步配置
JTAG配置(Joint Test Action Group Configuration)
FPGA和CPLD相比,CPLD是基于ROM型的,就是在数据下载到CPLD上,掉电后不丢失。而FPGA则是基于RAM的,如果没有外部ROM存储配置数据,那么掉电后就丢失数据。所以FPGA都需要外接有配置芯片(当然现在也有基于FLASH的FPGA出现)。
Xilinx FPGA的五种常用配置方式:主串、从串、主并、从并、JTAG。前四种是相对于下载到PROM而言的(串并是相对于不同配置芯片是串口和时并口协议和FPGA通讯区分的),只有JTAG是相对于调试是将配置下载到FPGA的RAM而言的(掉电后丢失)。
其中,主模式与从模式的主要区别就是:
主模式的CCLK信号为FPGA内部产生,作为FPGA的输出。.bit流文件只能保存在板子上的PROM中;
从模式的CCLK信号由外部时钟提供。.bit流文件可以保存在任何位置,包括板上的PROM、板外的存储器。并且,从模式并非必需外部控制器,如下图:
当需要对多个器件进行并行配置时,需选择从并行模式。
主串模式:最简单、最常用的FPGA配置模式。FPGA主动控制加载外部ROM或中的bit流文件。
从串模式:FPGA接收来自外部PROM或其它器件的配置bit数据,在FPGA产生的时钟CCLK的作用下完成配置。多个FPGA可以形成菊花链,从同一配置源中获取数据。
Select MAP模式:配置数据是并行啊,是速度最快的配置模式。
SPI配置:主要在具有SPI接口的Flash电路中使用。
首先介绍下AS、PS、JTAG三种模式的区别。
AS模式: 烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程,该方法适用于不需要经常升级的场合;
PS模式:EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程。可以采用微控制器(单片机、ARM等)或者CPLD,该模式可以实现对FPGA在线可编程,升级方便;
JTAG:直接烧到FPGA里面的,由于是SRAM,断电后要重烧,适用于调试;
.pof文件可以通过AS方式下载;
.sof文件或者转换的.jic可以通过JTAG方式下载。
usb blaster下载线支持以上三种模式。(http://baike.baidu.com/link?url=qmMniuXETFfL3zzXWhJYCDzAA4x0nVTKfkMGYMg7laPPhYqiYrY8ydGkibSYgf3PFlS-76m2C-istSaQtw5iCK)
FPGA在正常工作时,它的配置数据存储在SRAM中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS。在实用系统中,多数情况下必须由FPGA主动引导配置操作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中fpga配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。
JTAG接口是一个业界标准接口,主要用于芯片测试等功能。altera FPGA基本上都可以支持JTAG命令来配置FPGA的方式,而且JTAG配置方式比其他任何方式优先级都高。JTAG接口有4个必需的信号TDI, TDO, TMS和TCK以及1个可选信号TRST构成,其中:
. TDI,用于测试数据的输入;
. TDO,用于测试数据的输出;
. TMS,模式控制管脚,决定JTAG电路内部的TAP状态机的跳变;
. TCK,测试时钟,其他信号线都必须与之同步;
. TRST,可选,如果JTAG电路不用,可以讲其连到GND。
用户可以使用altera的下载电缆,也可以使用微处理器等智能设备从JTAG接口设置FPGA。nCONFIG、MESL和DCLK信号都是用在其他配置方式下。如果只用JTAG配置,则需要将nCONFIG拉高,将MSEL拉成支持JTAG的任一方式,并将DCLK拉成高或低的固定电平。
FPGA和10针插座连接图:
由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EPCS4配置器件专供AS模式,目前只支持 Stratix II 和Cyclone系列。使用Altera串行配置器件来完成。Cyclone器件处于主动地位,配置器件处于从属地位。配置数据通过DATA0引脚送入 FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。
AS配置器件是一种非易失性、基于flash存储器的存储器,用户可以使用altera的ByteBlaster II加载电缆、altera的“altera programming unit”或者第三方的编程器来对配置芯片进行编程。它与FPGA的接口为以下简单的4个信号线:
. 串行时钟输入(DCLK):是在配置模式下FPGA内部的振荡器(oscillator)产生的,在配置完成后,该振荡器将被关掉。工作时钟在20MHz左右,而fast AS方式下(stratix II和cyclone II支持该种配置方式),DCLK时钟工作在40MHz左右,在altera的主动串行配置芯片中,只有EPCS16和EPCS64的DCLK可以支持到40MHz,EPCS1和EPCS4只能支持20MHz。
. AS控制信号输入(ASDI);
. 片选信号(nCS);
. 串行数据输出(DATA)。
FPGA和串口配置芯片连接图:
FPGA、串口配置芯片和10针插座连接图1:
FPGA、串口配置芯片和10针插座连接图2:
PS(被动串行)则由外部计算机或控制器控制配置过程,是使用最多的一种配置方式。。所有altera FPGA都支持这种配置模式。通过altera 的下载电缆、加强型配置器件(EPC16,EPC8,EPC4)等配置器件或智能主机(如微处理器和CPLD)来完成,在PS配置期间,配置数据从外部储存部件(这些存储器可以是altera配置器件或单板上的其他flash器件),通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。
与FPGA的信号接口:
. DCLK(配置时钟);
. DATA0(配置数据);
. nCONFIG(配置命令);
. nSTATUS(状态信号);
. CONF_DONE(配置完成指示)。
在PS方式下,FPGA处于完全被动的地位。FPGA接收配置时钟、配置命令和配置数据,给出配置的状态信号以及配置完成指示信号等。PS配置可以使用altera的配置器件(EPC1、EPC4等),可以使用系统中的微处理器,也可以使用单板上的CPLD,或者altera的下载电缆,不管配置的数据源从哪里来,只要可以模拟出FPGA需要的配置时序来,将配置数据写入FPGA就可以。
在上电以后,FPGA会在nCONFIG管脚上检测到一个从低到高的跳变沿,因此可以自动启动配置过程。
(1)根据模式的不同,MSEL有不同的设置。
(2)配置芯片EPCS16存储大小为16Mbits=2MB.
(3)实验室的板子的配置方式JAG方式和“AS方式”,但是没有AS配置口,将SOF文件转换我JIC文件,利用JATG将配置文件下载到配置芯片中。所以,可以把这种方式叫做伪AS模式。
串口配置芯片EPCS16的4个引脚(DATA、DCLK、nCS和ASDI)与FPGA相连即可,JTAG口连接方式按上文所述即可。MSEL只有三位,配置为010(AS模式),这里按照AS模式连 接。
这种利用JTAG将配置文件下载配置芯片的方式如下所示:
通过serial flash loader design将JTAG interface和AS interface联系起来。详见C3手册“Programming Serial Configuration Devices In-System Using the JTAG Interface”部分。当然,也可以将AS和JTAG都保留,详见“Combining JTAG and Active Serial Configuration Schemes”部分。
有以下问题:
1. JTAG口4脚和6脚的连接不理解。4脚按手册说法如下,那么应该是VCCA(模拟),而不是设计中的VCC(数字)。学习FPGA电源设计!
而6脚按手册说法如下,那么应该是不连接吧,设计中连了VCC。
2. 虽然nCONFIG、nSTATUS、CONFIG_DONE与外部ARM连接,但是DATA[0]、DCLK没有和ARM相连,所以项目中PS模式通过ARM配置FPGA不行,不知这样连接是否可以实现AS模式的远程更新??
答:应该是存在设计问题。
参考资料:http://bbs.ednchina.com/BLOG_ARTICLE_1796890.HTM,http://blog.sina.com.cn/s/blog_7d1e2bb101016w1n.html,
ARM动态配置FPGA:http://wenku.baidu.com/link?url=iB6WRAIZ5G32fJERWgiC4VBQt5Wg5fohFy9AWCPMJaUqIqhpPcjWtcgxdM3G580_Xi9lLrtYzWUBcXnOm-jc04NM884mEdO0pAAEdcJGP7C