目录
3.1 动态部分重配置(Partial Reconfiguration, PR)
3.2 在系统编程(In-System Programming, ISP)
3.3 多比特流配置(Multi-Bitstream Configuration)
FPGA(Field-Programmable Gate Array,现场可编程门阵列)器件的在线配置,也被称为动态重配置或在线编程,是指在FPGA已经部署并运行在系统中时,无需断电或重启,即可对其内部逻辑进行重新配置的过程。这一功能使得FPGA能够根据运行时需求灵活地改变其功能,增强了系统的灵活性和适应性。
1.配置电路结构和原理
PC机与单片机的接口如图2所示。AT89C2051单片机通过串行口直接接收PC机传送来的串行数据,然后把接收到的数据存入数据存储器。由于PC机的串行口都是RS-232C标准的接口,所以,其输入输出在电平上和采用TTL电平的AT89C2051在接口时会产生电平不同的问题。为了解决这个问题,在PC机和单片机的串行通信电路中加入了MAX232芯片,以实现TTL电平和RS-232C接口电平之间的转换。这样PC机和AT89C2051单片机进行串行通信时就可以顺利进行了。除了电路结构之外,要实现PC机和AT89C2051之间的通信,还需要有合适的通信软件。
ICR控制电路的工作过程为:经MAXPLUS II编译生产的配置文件(.sof)通过格式转换成为 (.rbf)。然后,利用PC机端的控制程序,通过PC机的串行通信口,经U1存储在U2中。U1再根据系统的要求,通过P1.2、P1.3、P1.4、P3.0和P3.1等5个I/O口,将其存储在U2中的配置数据下载到电路中的FPGA器件中去。
2.ICR控制电路软件
在图介绍的ICR控制电路中,其存储FPGA配置数据的存储器 AT24C256采用I2C串行总线进行数据交换。其数据交换速度较慢,而FPGA配置数据又比较大,因此如何提高图3介绍的ICR控制电路的配置速度将是软件设计上的一个重点。限制速度的瓶颈主要是从AT24C256读取数据和将数据写入FPGA器件中。从AT24C256读取数据,有读当前地址、随机读和顺序读三种方式。这三种方式中,顺序读最简单、速度最快。因为在同一片AT24C256中,仅需要写入一次读命令就可以按顺序从0地址开始直至读完整片AT24C256中的全部数据。
向FPGA器件写数据时,可以使用串行口的移位寄存器工作方式,即方式0。方式0数据的传送以8位为1帧,无论是发送或是接收都是最低有效位居先。这和FPGA对数据的要求一致,传送的波特率固定为振荡频率的1/12。本系统只需用到输出方式,串行数据通过RXD端输出,而用TXD端输出移位脉冲。当1字节数据写入串行数据缓冲器SBUF时,就开始发送。在此期间,发送控制器送出移位信号,使发送移位寄存器的内容右移1位,直至最高位(D7位)移出后,停止发送数据和移位时钟脉冲。发送完1字节数据后,硬件置发送标志位TI为1,通过判断TI的状态决定是否向SBUF写入数据。采用这种方式比采用普通(I/O)口要快很多。
3.几种常见的FPGA在线配置方法
3.1 动态部分重配置(Partial Reconfiguration, PR)
动态部分重配置允许在不中断整个FPGA工作的情况下,只更新FPGA内部的部分逻辑区域。这意味着,即使系统正在运行,也可以加载新的配置数据来改变FPGA的部分功能。部分重配置的实现通常涉及以下几个关键步骤:
区域划分:首先,FPGA被划分为可重配置区域和固定功能区域。
配置模块设计:为可重配置区域设计独立的配置模块,这些模块可以在运行时加载。
重配置控制器:设计一个控制逻辑,负责管理和协调重配置过程,包括配置数据的加载和验证。
加载配置数据:通过JTAG、PCIe、Ethernet等接口,将新的配置数据加载到FPGA指定的重配置区域内。
3.2 在系统编程(In-System Programming, ISP)
在系统编程是一种较广义的在线配置方法,允许用户在FPGA已经安装到目标板上之后对其进行编程。虽然通常指的是设备出厂后的初次配置,但也可用于某些类型的在线更新。ISP通常通过专用的编程接口(如JTAG)进行,但并不局限于部分重配置,而是可以覆盖整个FPGA。
3.3 多比特流配置(Multi-Bitstream Configuration)
这种配置方法允许FPGA加载并存储多个配置比特流,根据系统运行时的需求切换不同的配置。每个比特流对应FPGA的不同功能配置,通过软件控制选择加载哪个配置,从而实现功能的动态切换。这种方式需要FPGA具有足够的内部存储空间来存放多个配置文件。
3.4 远程更新与配置
现代FPGA设计经常支持通过网络接口(如Ethernet)远程进行在线配置更新。这种方式便于维护和升级,特别是在部署于远程地点或不易访问的设备上。安全性是远程配置中的一个重要考量,通常需要加密通信和认证机制来保护配置数据。
3.5 使用OpenCL或HLS工具
现代FPGA设计工具如OpenCL for FPGA或高层次综合(High-Level Synthesis, HLS)工具,允许开发者使用高级语言(如C/C++)编写算法,然后自动转化为FPGA配置文件。虽然这些工具主要是为了提高开发效率,但它们也支持一定程度的在线重配置,通过编译生成不同的比特流并按需加载。
FPGA的在线配置技术极大地扩展了其应用范围,使得系统能够适应不断变化的需求,实现更高级别的灵活性和效率。选择哪种在线配置方法取决于具体的应用需求、系统架构以及对实时性、资源消耗和安全性的考量。随着FPGA技术和相关工具的不断进步,未来的在线配置将变得更加高效和便捷。