FPGA配置方式、启动过程

AS模式:主动模式

烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS(Erasable programmable configurable serial串行存储器)主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程,该方法适用于不需要经常升级的场合;

PS模式:被动模式

EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程。可以采用微控制器(单片机、ARM等)或者CPLD,该模式可以实现对FPGA在线可编程,升级方便;

JTAG模式:

直接烧到FPGA里面的,由于是SRAM,断电后要重烧,适用于调试。
JTAG接口有4个必需的信号TDI, TDO, TMS和TCK以及1个可选信号TRST构成,其中:
TDI:用于测试数据的输入;
TDO:用于测试数据的输出;
TMS:模式控制管脚,决定JTAG电路内部的TAP状态机的跳变;
TCK:测试时钟,其他信号线都必须与之同步;
TRST:可选,如果JTAG电路不用,可以讲其连到GND。
在这里插入图片描述

AS模式

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。
ASDI:AS控制信号输入;
nCS:片选信号;
DATA:串行数据输出。
在这里插入图片描述

PS(被动串行)

则由外部计算机或控制器控制配置过程,是使用最多的一种配置方式。。所有altera FPGA都支持这种配置模式。通过altera 的下载电缆、加强型配置器件(EPC16,EPC8,EPC4)等配置器件或智能主机(如微处理器和CPLD)来完成,在PS配置期间,配置数据从外部储存部件(这些存储器可以是altera配置器件或单板上的其他flash器件),通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。
与FPGA的信号接口:
. DCLK(配置时钟);
. DATA0(配置数据);
. nCONFIG(配置命令);
. nSTATUS(状态信号);
. CONF_DONE(配置完成指示)。

FPGA启动过程

首先,FPGA相当于一个万能芯片,可以通过编程来实现其逻辑功能。为了实现其功能,就要把这个万能芯片变成自己想要的芯片,因此其内部结构就必须要改变,也就是它内部的资源要重新互联(通过熔丝的断与连),这就必须要有一个文件,这个文件也就是我们经常说的配置文件,因为fpga内部的逻辑结构是有配置数据决定的。
那好,既然我们想要这样的配置文件,那么这个配置文件从哪里来呢?fpga上电前还是一片空白的万能芯片,即使上次用它做成了一个系统,但只要断电,它又恢复了空白,也就是说其万能的内部如果落实到一个具体的结够必须要有电的维持。一旦fpga上电,它首先就会通过一定的严格时序去读取内部SRAM(因为fpga芯片内部嵌有ram,这里装有配置文件的sram应该就是其内部嵌有的ram,比如cyclon系列的M4KRAM等)的配置文件,当然这里不仅仅是读,因为FPGA是基于SRAM结构的,这里读的目的就是实现万能芯片最终的功能,即把硬件也固化了。(FPGA 没有DDR,内部是使用的SRAM原理,断电消失。
FPGA使用的程序是使用外部的EPCS配置芯片,也就是串行FLASH芯片。在FPGA上电时,FPGA自动从Flash中读取配置数据,DDR应该是外部自己加的SDRAM,可以作为数据暂存使用,里面的数据作为一个缓冲,而不能在其中存储数据,断电后消失,只在运算的过程中使用。)
我们平时一般都是用JTAG模式下载.sof(SRAM Object File)到fpga中,既然是sof,这里下载到fpga是指下载到fpga的SRAM中,因为下载时候是必须上电的,所以这时候SRAM就有配置文件了,此时的FPGA在一定时序下读取并配置了其逻辑就可以开始运行了。一旦fpga开始工作了,我估计此时的内部SRAM(开始说的M4K等)就可以被我们用来读写或其他应用,比如FIFO啊什么的。也就是说我们的fpga内部ram在fpga没有工作时是装载配置数据的,当fpga开始工作了,就可以覆盖其配置数据了,把它当一个存储器来用。
那如果fpga上电按照初始固定的时序去读取内部的SRAM,发现其中没有配置数据怎么办?这里就要讨论下我们所说的AS下载配置了。如果上电后fpga发现内部SRAM没有配置数据,它又会通过固定引脚和时序去看看有没有配置芯片(比如说epcs系列)存在,如果有(下载到配置芯片内部的是.pof(Programmer ObjectFile)文件)它就会先把配置芯片的数据主动读取到内部sram中,至于后面的过程跟上一段所描述的就一样了。因为配置芯片都是基于ROM的,所以其内部的数据不会改变,因此我们系统掉电后上电通过此过程照样可以启动工作,它需要的时间非常少,只是人反应不过来,就好像fpga内部数据固化了一样。
鉴于上述原因,我们一般调试时下载.sof文件,调试成功定板时下载.pof文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值