400-035-6699
当前位置: 首页 » 技术支持 » 博文资讯 »

FPGA配置与加载攻略:不同方式的详细解析与实践

FPGA(现场可编程门阵列)作为一种高度集成的可编程硬件,其配置方式分为主动和被动两大类。这两种方式各有特点,适用场景也略有不同。
被动配置模式中,最常见的例子是JTAG下载bit文件。在这种模式下,计算机扮演主动角色,通过JTAG接口向FPGA发送配置数据。FPGA处于被动接收状态,根据接收到的数据进行配置。而配置数据的来源则非常灵活,可能是通过本地运行的EDA工具生成的,或者是通过网络、USB存储设备获取的。
与被动配置相反,主动配置模式下,FPGA在配置过程中处于主导地位,主动发起对Flash存储器的读写操作,以获取配置信息并进行配置。下面我们通过一个使用EDA工具自带的烧录Flash的操作案例,来分析具体的配置过程。
通常情况下,完整的配置过程包括以下几个步骤:
1. 上位机主动发起配置,FPGA被动接收数据并进行重配置。这一步采用基于JTAG的被动配置模式,将FPGA配置成一个Flash读写器。
2. 配置完成后,上位机开始通过JTAG接口发送或接收Flash中的数据。FPGA接收到数据后,根据需求发起对Flash的读写操作,将需要更新的数据写入Flash中,完成Flash的更新。
3. Flash更新完成后,在适当的时机让FPGA重新配置,如重新上电。这时,FPGA开始主动配置过程,从Flash中读取配置数据并完成加载。
Intel(Altera)的FPGA产品使用一种名为jic的文件格式,即JTAG间接配置文件。在Quartus的Programmer界面中,添加了jic文件后,可以看到一个Factory default SFL image,这是将FPGA配置为Flash控制器的镜像。
根据配置方式的不同,Flash更新也可以分为主动更新和被动更新两种。被动更新模式下,通常有一个主动发起配置的设备,如MCU。这种模式下,数据的传输、存储和读取都由主设备负责,更新过程相对简单。FPGA本身几乎与更新过程完全隔离,因此很容易满足需求。
而主动更新则较为复杂。首先,Flash很可能只有与FPGA的数据接口,这意味着Flash的读写操作只能由FPGA发起。其次,由于FPGA需要主动更新Flash,如何获取配置数据成为一个需要解决的问题。FPGA需要一个数据通路(如JTAG)接收配置数据,并实现一个Flash的读写控制器来执行读写操作。更新Flash完成后,下一次配置被触发时(如重新上电),FPGA会主动发起读取Flash的操作,加载配置数据完成配置。
总之,FPGA的配置方式灵活多样,既可以通过被动接收数据完成配置,也可以主动控制配置过程。不同的配置方式适用于不同的应用场景,理解和掌握这些配置方式对于开发人员来说至关重要。

FPGA有多种配置/加载方式。粗略可以分为主动和被动两种。主动加载是指由FPGA控制配置流程,被动加载是指FPGA仅仅被动接收配置数据。

FPGA配置与加载攻略:不同方式的详细解析与实践

最常见的被动配置模式就是JTAG下载bit文件。此模式下,主动发起操作的设备是计算机,数据通路是JTAG,FPGA会被动接收数据,根据需要的操作来进行更新FPGA配置。而上位机如何获取配置数据就非常灵活了,可能是本地运行EDA工具生成的,也可以是网络/USB存储设备获取的。

主动配置就是FPGA在配置过程中处于主导地位,主动发起对Flash的读写,获取配置信息进行配置。

下面利用间EDA工具自带的烧录Flash的操作为例,分析一下具体的烧录过程。

通常情况下,完整的过程是:

1.上位机主动发起配置,FPGA被动接收数据进行重配置,此时的配置模式是上文提到的基于JTAG的被动配置。此操作的结果是将FPGA配置为一个Flash的读写器。

2.配置完成后,上位机开始发送/接收Flash的数据,数据通道为JTAG。FPGA通过JTAG接收到数据之后,根据需求发起对Flash的读写操作,将需要更新的数据写入Flash,完成更新。此过程是更新Flash的过程,烧录过程中Flash只收到FPGA的控制。

3.Flash更新完毕后,在合适的时候让FPGA进行重新配置(例如重新上下电),FPGA会开始主动配置过程,从Flash中读取配置数据完成加载。

IntelAltera)的这种模式使用的文件后缀是jic,全称是JTAG Indirect Configuration File。直接翻译是JTAG间接配置文件。在Quartus的Programmer界面中,当添加了Jic文件之后,可以看到有一个Factory default SFL image,就是将FPGA配置为Flash控制器的镜像。

根据配置的不同,也可以分为主动更新和被动更新两种。

如果是被动更新,那么通常配置过程会有一个主动发起的设备,常见有MCU。这样配置过程相对容易,数据的传输、存储和读取都交给主设备操作。整个更新过程按要求更新即可,然后再合适的时间重新加载FPGA即可。FPGA本身几乎和更新过程完全隔离,所以也很容易满足需求。

主动更新则相对麻烦。首先,Flash很可能只于FPGA有数据接口,表明Flash的读写只能从FPGA来发起;其次,由于FPGA需要发起Flash的更新写入,所以FPGA如何获取数据也是需要考虑的问题。可以参考上文,主动配置更新Flash完整过程的描述,可以看到FPGA需要一个数据通路(JTAG)接收配置数据,并实现一个Flash的读写控制器来读写Flash。更新Flash完成之后,下一次配置被触发(重新上下电)会主动发起读Flash的操作,加载配置数据完成配置。

【限时免费】一键获取网络规划系统模板+传输架构设计+连通性评估方案

FPGA相关文章

服务电话:
400-035-6699
企服商城