SRAM和基于闪存的空间级FPGA可以在轨道进行重新编程,从而提供最大的灵活性,以响应不断变化的需求来更改功能并提高系统性能。对于技术演示卫星,可以使用单个有效载荷实现多个实验,从而最大程度地减少机载处理硬件。FPGA固件可以在需要时进行上空链接和部署,就可以提早启动任务以利用较短的行星轨道。
通常,赛灵思的空间级和耐辐射FPGA以主SPI和BPI模式配置。为了实现在轨可重新配置性,诸如嵌入式微处理器之类的外部设备可以通过以从属串行或从属SelectMap模式运行的FPGA控制SelectMap接口。MPU或FPGA可以在预先存储在外部闪存中的多个配置位流之间进行选择,然后使用诸如SpaceWire或Can。
以Xilinx的XQRKU060 FPGA为例,在Slave SelectMap模式下,INIT_B变高后,可以在CCLK的每个上升沿(通过bank 65的多个功能引脚)将并行数据加载到FPGA的配置存储器中,并使用MPU(或非易失性FPGA)生成后者。
在从串行模式下,INIT_B变为高电平后,在CCLK的每个上升沿(通过存储体0中的D01_DIN引脚)将一位数据加载到FPGA的配置存储器中,而MPU则产生后者。配置完成后,通常不使用与外部闪存的SPI接口,但是Xilinx的STARTUPE3原语允许对该端口进行读写访问,从而可以上传新的比特流。如果有备用容量,也可以写入多个图像或应用程序数据。
Xilinx的XQRKU060 FPGA还提供了MultiBoot功能,使您可以将多个比特流存储在外部闪存中,然后在这些在轨存储器之间进行选择。支持主SPI和BPI模式,并通过使用内部的
PROGRAM(IPROG)命令重新配置FPGA来启动MultiBoot 。这类似于脉冲PROGRAM_B引脚,但是IPROG不会复位专用配置逻辑,也不会擦除用于启动MultiBoot的WBSTAR,TIMER,BSPI和BOOTSTS寄存器。该IPROG可以通过由用户逻辑控制的ICAP发出命令,也可以将其嵌入位流中,从而允许系统在轨重新编程。所述IPROG命令指示FPGA以从指定的地址装入新的图像WBSTAR寄存器,并且如果存在问题,诸如IDCODE,CRC,或者超时错误,一个备用设施存在,以恢复原始的金色的比特流。
主要配置(上面蓝色显示)使用静态的顶级布局和路由实现,并且导入的分区必须遵守这一点。这使FPGA可以在不同任务之间进行时分复用,部分位文件可以小到一帧,也可以大到完整的位流。与其他在轨重编程方法不同,部分重配置不会完全破坏整个FPGA的运行。
对于XQRKU060,启用PERSIST位流选项后,在进行回读访问配置后,将保持对SelectMAP端口的配置逻辑访问。PERSIST选项可用于使用外部设备(例如微控制器)重新配置FPGA,而无需对PROGRAM_B引脚施加脉冲或使用JTAG接口。
对于基于Flash的Microchip ProASIC3,RTG4和RTPolarFire FPGA,外部微处理器可以控制其JTAG接口,以重新配置在轨设备。Microchip的DirectC软件管理MPU和目标FPGA之间的握手以及配置数据的传输。DirectC可以免费下载,并且需要主机MPU上256个字节的存储空间。
通常,NanoXplore的空间级FPGA使用主SPI模式配置,但是,也存在许多并行从模式以及JTAG接口,以允许诸如微处理器之类的外部设备控制I / O并生成配置时钟。 此外,程序库内存在一个专用的SpaceWire端口,以使用该航空电子标准直接在轨更新FPGA的比特流。