代码改变世界

FPGA配置方式

2016-12-03 13:29  工匠小建  阅读(4380)  评论(0编辑  收藏  举报

 

首先介绍下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格式的文件烧录进去。

1. JATG模式

     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针插座连接图:

 

2. AS(主动串行)模式

     由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和串口配置芯片连接图:

image

 

FPGA、串口配置芯片和10针插座连接图1:

FPGA、串口配置芯片和10针插座连接图2:

3. PS(被动串行)模式

      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管脚上检测到一个从低到高的跳变沿,因此可以自动启动配置过程。

image

image

 

 

(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”部分。

image

 

有以下问题:

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.HTMhttp://blog.sina.com.cn/s/blog_7d1e2bb101016w1n.html

ARM动态配置FPGA:http://wenku.baidu.com/link?url=iB6WRAIZ5G32fJERWgiC4VBQt5Wg5fohFy9AWCPMJaUqIqhpPcjWtcgxdM3G580_Xi9lLrtYzWUBcXnOm-jc04NM884mEdO0pAAEdcJGP7C