掌桥专利:专业的专利平台
掌桥专利
首页

基于多片FLASH混合复用的多片FPGA配置加载与重构系统

文献发布时间:2024-04-18 19:58:30


基于多片FLASH混合复用的多片FPGA配置加载与重构系统

技术领域

本发明涉及电子设备与现场总线的技术领域,具体地,涉及基于多片FLASH混合复用的多片FPGA配置加载与重构方法及系统。

背景技术

随着现场可编程门阵列FPGA在高性能数据处理设备领域的广泛应用,FPGA上电阶段,从外部存储器中读取目标程序码流,加载配置后FPGA才能运行。对于目标程序码流的在线更新,需要通过FPGA自身或者其他控制器件更改外部存储器中的程序码流,FPGA复位或者重新上电后加载更新后的程序码流。对于安全关键系统,为了确保系统运行的可靠性,通常存储至少两份程序码流,包括原始黄金版本程序码流和更新的重构程序码流。

目前,通常用SPI接口的NOR FLASH存储FPGA的程序码流。SPI总线是一种高速、全双工、同步通信总线,采用主从式通信,支持一主多从。SPI总线由四根信号线组成,包括:1)CS,片选信号,由SPI主控制输出;2)CLK,时钟信号,由SPI主控制输出;3)MOSI,主输出从输入信号,由SPI主控制输出;4)MISO,主输入从输出信号,由SPI从控制输出。

针对FPGA的配置加载与重构,尤其是Xi linx公司的高性能FPGA配置加载与重构设计已经比较成熟,Xilinx公司提供了多种配置加载方法,开发人员也开展了较多工程应用实践。

经对现有技术检索,目前已提出多种基于SPI NOR FLASH的FPGA程序加载更新方法。申请号为CN112769613《一种FPGA在线升级的系统及其在线升级方法》的发明专利采用控制器+通道切换电路+存储器+FPGA器件的方案,通过通道切换开关先将升级配置文件存储在存储器中,然后出发FPGA器件从存储器取出升级配置文件进行升级。申请号为CN109783434《低代价高可靠的星载单机多片SRAM型FPGA在轨重构系统及方法》的发明专利提出了通过重构接口FPGA构建重构接口电路,每片FPGA配置一片FLASH用于存储原始用户功能配置数据或重构用户功能配置数据,根据重构指令实现重构FPGA的加载和刷新。申请号为CN112732635《一种基于对SPI FLASH在线更新的FPGA重构系统及其方法》的发明专利申请提出了基于四线制SPI FLASH的重构系统。申请号为CN114860650《一种多片SRAM型FPGA在轨配置管理装置》的发明专利申请提出了一种至少三片NOR FLASH、至少两片EEPROM、至少三片PROM和一片反熔丝FPGA组成的装置,在反熔丝FPGA的控制下由三类存储芯片可以对多个SRAM型FPGA进行软件配置。申请号为CN113247308《一种多源重构系统、重构方法、构建方法及应用》的发明专利申请提出了一种PROM、FLASH、NOR FLASH与反熔丝FPGA对SRAM型FPGA进行重构的方法,PROM、FLASH、NOR FLASH存储程序,NOR FLASH可以存储4套程序。

对现有技术进行检索和分析可以发现,存在下述问题:

1)现有方法对于多片FPGA应用场景的配置与重构设计的灵活性、通用性不足,通常针对特定应用场景进行定制化设计;

2)现有方法对于原始程序与重构程序单份存储、三份冗余存储等不同应用需求的兼容性设计尚有不足,无法灵活匹配不同可靠性和重构需求要求的应用场景;

3)现有方法对于FLASH和FPGA串联、并联控制等不同应用需求的兼容性设计尚有不足,无法灵活匹配不同上电和重配置时延容忍需求,同时兼顾管脚资源;

4)现有方法对于多片FPGA下对于多片FLASH的映射关联关系尚未建立通用化描述方式。

因此,需要提出一种新的技术方案以改善上述技术问题。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种基于多片FLASH混合复用的多片FPGA配置加载与重构系统。

根据本发明提供的一种基于多片FLASH混合复用的多片FPGA配置加载与重构系统,包括:N片SRAM型FPGA、M片SPI FLASH和一片通用重构控制器;所述通用重构控制器与FLASH通过四线制SPI总线连接,所述通用重构控制器为SPI主、FLASH为SPI从,所述通用重构控制器与FPGA通过一组GPIO接口连接,支持Slave Serial和Slave SelectMAP两种配置模式;

所述N片SRAM型FPGA用F-x编号表示第x片FPGA,x=1,2,...,N,FPGA通过通用重构控制器加载FLASH中的程序码流后运行;任意FPGA加载运行各不相同的程序码流,也加载运行相同的程序码流;若不同FPGA加载运行相同的程序码流,则在配置加载与重构功能上视为1片FPGA,根据FPGA所加载程序码流,N片SRAM型FPGA在配置加载与重构功能上视为T片,1≤T≤N,用FA-i编号表示,i=1,2,...,T;

所述M片SPI FLASH存储FPGA程序码流,每片FLASH完整存储一片FPGA所需的程序码流,M≥T,M片SPI FLASH用SH-j编号表示,j=1,2,...,M;

所述通用重构控制器通过外部通信接口接收程序码流更新数据和重构控制指令、发送遥测数据,通过SPI总线接口向FLASH写入程序码流进行更新,通过SPI总线接口从FLASH读出程序码流后加载至FPGA。

优选地,所述通用重构控制器与FLASH的信号连接支持FLASH串行读写、FLASH并行读写两种模式,通用重构控制器与FPGA的信号连接支持串行加载、并行加载两种模式;

所述FLASH串行读写:通用重构控制器与M片SPI FLASH通过一组CLK、MOSI、MISO信号以及M根CS信号连接,通用重构控制器通过CS信号选择需要读写的FLASH,同一时间仅能对一片FLASH进行程序码流读写;

所述FLASH并行读写:通用重构控制器与每片SPI FLASH通过一组CS、CLK、MOSI、MISO信号连接,同一时间对多片FLASH进行程序码流读写;

所述FPGA串行加载:通用重构控制器与N片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号,其中通用重构控制器为每片FPGA配置独立的PROGRAM_B、INIT_B、DONE、DOUT、CSI_B、RDWR_B信号,共享CCLK、D[31:00]信号;

所述FPGA并行加载:通用重构控制器与每片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号。

优选地,其特征在于,任意一份程序码流支持单片FLASH存储、三片FLASH冗余存储两种模式,每片FPGA支持原始程序码流加载、重构程序码流加载两种模式;

所述程序码流单片FLASH存储:通用重构控制器向一片FLASH写入程序码流,FPGA加载时从该片FLASH读出程序码流,并向目标FPGA加载;

所述程序码流三片FLASH冗余存储:通用重构控制器向三片FLASH写入程序码流,FPGA加载时从三片FLASH读出程序码流,经三模冗余比对正确后向目标FPGA加载;

所述原始程序码流加载:从存储原始程序码流的FLASH读出程序码流,每片FPGA仅一份原始程序码流;

所述重构程序码流加载:从存储重构程序码流的FLASH读出程序码流,每片FPGA有多份不同的重构程序码流。

优选地,其特征在于,FPGA原始程序码流采用单片FLASH存储或者三片FLASH冗余存储模式,重构程序码流采用单片FLASH存储或者三片FLASH冗余存储模式;

任意FPGA若原始程序码流采用单片FLASH存储、无重构程序码流存储所需FLASH时,需要一片FLASH;当需要更新原始程序码流时,通用重构控制器删除该片FLASH存储的原始程序码流后重新写入重构程序码流;

任意FPGA若原始程序码流采用三片FLASH冗余存储、无重构程序码流存储所需FLASH时,需要三片FLASH;当需要更新原始程序码流时,通用重构控制器删除三片FLASH存储的原始程序码流后写入重构程序码流,或者仅删除其中一片FLASH存储的原始程序码流后写入重构程序码流;

任意FPGA若原始程序码流采用单片FLASH存储、重构程序码流采用单片FLASH存储时,需要两片FLASH,第一片用于存储原始程序码流,第二片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第二片FLASH;

任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用单份存储时,需要四片FLASH,前三片用于存储原始程序码流,第四片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第四片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器删除前三片FLASH中的任一片存储的原始程序码流后写入重构程序码流,此时原始程序码流变为单片FLASH存储;

任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用三片FLASH冗余存储时,需要六片FLASH,前三片用于存储原始程序码流,后三片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入后三片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器删除后三片FLASH中的任一片存储的重构程序码流后写入新的重构程序码流,此时重构程序码流变为单片FLASH存储。

优选地,所述通用重构控制器建立当班配置程序映射表、备份配置程序映射表,将任意编号为F-x的FPGA和其程序码流所存的编号为SH-j的一片FLASH或者三片FLASH相关联;通用重构控制器接收外部通信接口输入的重构控制指令更改当班配置程序映射表、备份配置程序映射表。

优选地,所述系统上电后,根据当班配置程序映射表、备份配置程序映射表加载FPGA程序码流运行;

当FLASH串行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH依次读出程序码流用于配置加载;

当FLASH串行读写、FPGA并行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意编号为F-x的FPGA,检索从编号F-x+1到F-N的FPGA当班配置程序映射表或者备份配置程序映射表,若相关联FLASH与编号为F-x的FPGA相关联FLASH,则一同加载程序码流。

优选地,当FLASH并行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH同步启动读出程序码流用于配置加载;

当FLASH并行读写、FPGA并行加载模式时,所有FPGA同步启动配置,根据当班配置程序映射表或者备份配置程序映射表从相应的FLASH同步启动读出程序码流用于配置加载。

优选地,任意FPGA配置加载与重构时,通用重构控制器根据当班配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续Y次加载失败后,通用重构控制器根据备份配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续P次加载失败后,通用重构控制器停止加载并报错。

优选地,向通用重构控制器发送新的重构程序码流前,应发送重构控制指令,将存储新的重构程序码流所需一片FLASH或者三片FLASH从当班配置程序映射表、备份配置程序映射表中移除。

优选地,所述通用重构控制器的外部通信接口选用RS422、1553B、CAN、SPI、UART。

与现有技术相比,本发明具有如下的有益效果:

1、本发明公开的基于多片FLASH混合复用的多片FPGA配置加载与重构方法,提出了一种通用、灵活、高效的多片FPGA加载配置多源FLASH的方法,建立了多片FPGA与多片FLASH关联关系的通用化描述;

2、本发明公开的基于多片FLASH混合复用的多片FPGA配置加载与重构方法,可以灵活满足程序码流单份存储与三份冗余存储、FLASH串行读写与并行读写、FPGA串行加载与并行加载等需求。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明提出的配置加载与重构方法系统示意图;

图2为FLASH串行读写信号连接示意图;

图3为FLASH并行读写信号连接示意图;

图4为FPGA串行加载信号连接示意图;

图5为FPGA并行加载信号连接示意图;

图6为当班配置程序映射表、备份配置程序映射表示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

实施例1:

根据本发明提供的一种基于多片FLASH混合复用的多片FPGA配置加载与重构系统,包括:N片SRAM型FPGA、M片SPI FLASH和一片通用重构控制器;通用重构控制器与FLASH通过四线制SPI总线连接,通用重构控制器为SPI主、FLASH为SPI从,通用重构控制器与FPGA通过一组GPIO接口连接,支持Slave Serial和Slave SelectMAP两种配置模式;

N片SRAM型FPGA用F-x编号表示第x片FPGA,x=1,2,...,N,FPGA通过通用重构控制器加载FLASH中的程序码流后运行;任意FPGA加载运行各不相同的程序码流,也加载运行相同的程序码流;若不同FPGA加载运行相同的程序码流,则在配置加载与重构功能上视为1片FPGA,根据FPGA所加载程序码流,N片SRAM型FPGA在配置加载与重构功能上视为T片,1≤T≤N,用FA-i编号表示,i=1,2,...,T;

M片SPI FLASH存储FPGA程序码流,每片FLASH完整存储一片FPGA所需的程序码流,M≥T,M片SPI FLASH用SH-j编号表示,j=1,2,...,M;

通用重构控制器通过外部通信接口接收程序码流更新数据和重构控制指令、发送遥测数据,通过SPI总线接口向FLASH写入程序码流进行更新,通过SPI总线接口从FLASH读出程序码流后加载至FPGA。

通用重构控制器与FLASH的信号连接支持FLASH串行读写、FLASH并行读写两种模式,通用重构控制器与FPGA的信号连接支持串行加载、并行加载两种模式;

FLASH串行读写:通用重构控制器与M片SPI FLASH通过一组CLK、MOSI、MISO信号以及M根CS信号连接,通用重构控制器通过CS信号选择需要读写的FLASH,同一时间仅能对一片FLASH进行程序码流读写;

FLASH并行读写:通用重构控制器与每片SPI FLASH通过一组CS、CLK、MOSI、MISO信号连接,同一时间对多片FLASH进行程序码流读写;

FPGA串行加载:通用重构控制器与N片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号,其中通用重构控制器为每片FPGA配置独立的PROGRAM_B、INIT_B、DONE、DOUT、CSI_B、RDWR_B信号,共享CCLK、D[31:00]信号;

FPGA并行加载:通用重构控制器与每片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号。

其特征在于,任意一份程序码流支持单片FLASH存储、三片FLASH冗余存储两种模式,每片FPGA支持原始程序码流加载、重构程序码流加载两种模式;

程序码流单片FLASH存储:通用重构控制器向一片FLASH写入程序码流,FPGA加载时从该片FLASH读出程序码流,并向目标FPGA加载;

程序码流三片FLASH冗余存储:通用重构控制器向三片FLASH写入程序码流,FPGA加载时从三片FLASH读出程序码流,经三模冗余比对正确后向目标FPGA加载;

原始程序码流加载:从存储原始程序码流的FLASH读出程序码流,每片FPGA仅一份原始程序码流;

重构程序码流加载:从存储重构程序码流的FLASH读出程序码流,每片FPGA有多份不同的重构程序码流。

其特征在于,FPGA原始程序码流采用单片FLASH存储或者三片FLASH冗余存储模式,重构程序码流采用单片FLASH存储或者三片FLASH冗余存储模式;

任意FPGA若原始程序码流采用单片FLASH存储、无重构程序码流存储所需FLASH时,需要一片FLASH;当需要更新原始程序码流时,通用重构控制器删除该片FLASH存储的原始程序码流后重新写入重构程序码流;

任意FPGA若原始程序码流采用三片FLASH冗余存储、无重构程序码流存储所需FLASH时,需要三片FLASH;当需要更新原始程序码流时,通用重构控制器删除三片FLASH存储的原始程序码流后写入重构程序码流,或者仅删除其中一片FLASH存储的原始程序码流后写入重构程序码流;

任意FPGA若原始程序码流采用单片FLASH存储、重构程序码流采用单片FLASH存储时,需要两片FLASH,第一片用于存储原始程序码流,第二片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第二片FLASH;

任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用单份存储时,需要四片FLASH,前三片用于存储原始程序码流,第四片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第四片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器删除前三片FLASH中的任一片存储的原始程序码流后写入重构程序码流,此时原始程序码流变为单片FLASH存储;

任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用三片FLASH冗余存储时,需要六片FLASH,前三片用于存储原始程序码流,后三片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入后三片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器删除后三片FLASH中的任一片存储的重构程序码流后写入新的重构程序码流,此时重构程序码流变为单片FLASH存储。

通用重构控制器建立当班配置程序映射表、备份配置程序映射表,将任意编号为F-x的FPGA和其程序码流所存的编号为SH-j的一片FLASH或者三片FLASH相关联;通用重构控制器接收外部通信接口输入的重构控制指令更改当班配置程序映射表、备份配置程序映射表。

系统上电后,根据当班配置程序映射表、备份配置程序映射表加载FPGA程序码流运行;

当FLASH串行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH依次读出程序码流用于配置加载;

当FLASH串行读写、FPGA并行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意编号为F-x的FPGA,检索从编号F-x+1到F-N的FPGA当班配置程序映射表或者备份配置程序映射表,若相关联FLASH与编号为F-x的FPGA相关联FLASH,则一同加载程序码流。

当FLASH并行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH同步启动读出程序码流用于配置加载;

当FLASH并行读写、FPGA并行加载模式时,所有FPGA同步启动配置,根据当班配置程序映射表或者备份配置程序映射表从相应的FLASH同步启动读出程序码流用于配置加载。

任意FPGA配置加载与重构时,通用重构控制器根据当班配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续Y次加载失败后,通用重构控制器根据备份配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续P次加载失败后,通用重构控制器停止加载并报错。

向通用重构控制器发送新的重构程序码流前,应发送重构控制指令,将存储新的重构程序码流所需一片FLASH或者三片FLASH从当班配置程序映射表、备份配置程序映射表中移除。

通用重构控制器的外部通信接口选用RS422、1553B、CAN、SPI、UART。

本发明涉及一种基于多片FLASH混合复用的多片FPGA配置加载与重构方法,由N片SRAM型FPGA、M片SPI FLASH、一片通用重构控制器组成,通用重构控制器与FLASH通过四线制SPI总线连接,通用重构控制器与FPGA通过一组GPIO接口连接,支持Slave Serial、SlaveSelectMAP两种配置模式;通用重构控制器与FLASH的信号连接支持FLASH串行读写、FLASH并行读写两种模式,通用重构控制器与FPGA的信号连接支持串行加载、并行加载两种模式;任意一份程序码流支持单片FLASH存储、三片FLASH冗余存储两种模式,每片FPGA支持原始程序码流加载、重构程序码流加载两种模式;通用重构控制器建立当班配置程序映射表、备份配置程序映射表,将任意FPGA和其程序码流所存的FLASH相关联,任意FPGA配置加载与重构时,通用重构控制器根据当班配置程序映射表或备份配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行。本发明提出的一种基于多片FLASH混合复用的多片FPGA配置加载与重构方法,为具有多片FPGA协同工作的高性能数据处理设备提供一种通用、灵活、高效的配置加载与重构方法。

实施例2:

针对现有技术的缺陷,本发明的目的是提供一种基于多片FLASH混合复用的多片FPGA配置加载与重构方法,为具有多片FPGA协同工作的高性能数据处理设备提供一种通用、灵活、高效的SRAM型FPGA配置加载与重构方法,可以应用于各种场景。

本发明提出的基于多片FLASH混合复用的多片FPGA配置加载与重构方法,以星载应用场景、Xilinx公司的7系列SRAM型FPGA为例,由N片SRAM型FPGA、M片SPI FLASH、一片通用重构控制器组成系统,如图1所示,通用重构控制器通常为反熔丝FPGA,具有较高的可靠性。通用重构控制器与FLASH通过四线制SPI总线连接,通用重构控制器为SPI主、FLASH为SPI从,通用重构控制器与FPGA通过一组GPIO接口连接,支持Slave Serial、SlaveSelectMAP两种配置模式。

用F-x编号表示第x片SRAM型FPGA,x=1,2,...,N,FPGA通过通用重构控制器加载FLASH中的程序码流后运行。任意FPGA可以加载运行各不相同的程序码流,也可以加载运行相同的程序码流;若不同FPGA加载运行相同的程序码流,则在配置加载与重构功能上视为1片FPGA,根据FPGA所加载程序码流,N片SRAM型FPGA在配置加载与重构功能上可以视为T片,1≤T≤N,用FA-i编号表示,i=1,2,...,T。

M片SPI FLASH用于存储FPGA程序码流,每片FLASH完整存储一片FPGA所需的程序码流,M≥T,M片SPI FLASH用SH-j编号表示,j=1,2,...,M。

通用重构控制器通过外部通信接口接收程序码流更新数据和重构控制指令、发送遥测数据,通过SPI总线接口向FLASH写入程序码流进行更新,通过SPI总线接口从FLASH读出程序码流后加载至FPGA。

通用重构控制器与FLASH的信号连接支持FLASH串行读写、FLASH并行读写两种模式,通用重构控制器与FPGA的信号连接支持串行加载、并行加载两种模式。

FLASH串行读写模式下,通用重构控制器与M片SPI FLASH通过一组CLK、MOSI、MISO信号以及M根CS信号连接,通用重构控制器通过CS信号选择需要读写的FLASH,同一时间仅能对一片FLASH进行程序码流读写,如图2所示。

FLASH并行读写模式下,通用重构控制器与每片SPI FLASH通过一组CS、CLK、MOSI、MISO信号连接,同一时间可以对多片FLASH进行程序码流读写,如图3所示。

FPGA串行加载模式下,通用重构控制器与N片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号,其中通用重构控制器为每片FPGA配置独立的PROGRAM_B、INIT_B、DONE、DOUT、CSI_B、RDWR_B信号,共享CCLK、D[31:00]信号,如图4所示。

FPGA并行加载模式下,通用重构控制器与每片FPGA通过一组GPIO接口连接,包括CCLK、PROGRAM_B、INIT_B、DONE、D[31:00]、DOUT、CSI_B、RDWR_B信号,如图5所示。为减少通用重构控制器硬件管脚资源开销,优先选用Slave Serial配置模式。

FLASH串行读写、FPGA串行加载模式下,对通用重构控制器硬件管脚资源开销更小,但是整个系统重构程序码流更新与FPGA配置加载所需时间更长。FLASH并行读写、FPGA并行加载模式下,对通用重构控制器硬件管脚资源开销更大,但是整个系统重构程序码流更新与FPGA配置加载所需时间更短。具体应用时,根据通用重构控制器管脚资源、程序码流存储冗余需求、重构目标FPGA数量、重构程序码流更新与FPGA配置加载要求时间等因素,综合衡量考虑后选择合适的FLASH读写、FPGA加载模式。

任意一份程序码流支持单片FLASH存储、三片FLASH冗余存储两种模式,每片FPGA支持原始程序码流加载、重构程序码流加载两种模式。因此,基于不同的存储模式,有以下几种情况:

(1)程序码流单片FLASH存储模式下,通用重构控制器向一片FLASH写入程序码流,FPGA加载时从该片FLASH读出程序码流,并向目标FPGA加载。

(2)程序码流三片FLASH冗余存储模式下,通用重构控制器向三片FLASH写入程序码流,FPGA加载时从三片FLASH读出程序码流,经三模冗余比对正确后向目标FPGA加载。

(3)原始程序码流加载模式下,从存储原始程序码流的FLASH读出程序码流,每片FPGA仅一份原始程序码流。

(4)重构程序码流加载模式下,从存储重构程序码流的FLASH读出程序码流,每片FPGA可以有多份不同的重构程序码流。

FPGA原始程序码流可以采用单片FLASH存储或者三片FLASH冗余存储模式,重构程序码流可以采用单片FLASH存储或者三片FLASH冗余存储模式。因此,基于不同的存储模式,有以下几种情况:

(1)任意FPGA若原始程序码流采用单片FLASH存储、无重构程序码流存储所需FLASH时,需要一片FLASH;当需要更新原始程序码流时,通用重构控制器可以删除该片FLASH存储的原始程序码流后重新写入重构程序码流。采用这种方式时,产品可靠性较低,风险较大,一般用于非安全关键、设计寿命较短产品中,慎重选用。

(2)任意FPGA若原始程序码流采用三片FLASH冗余存储、无重构程序码流存储所需FLASH时,需要三片FLASH;当需要更新原始程序码流时,通用重构控制器可以删除三片FLASH存储的原始程序码流后写入重构程序码流,或者仅删除其中一片FLASH存储的原始程序码流后写入重构程序码流。采用这种方式的可靠性比第(1)种方式较高,但是一旦需要更新原始程序码流,就无法采用程序码流三取二冗余保护。若FLASH元器件等级较低而产品寿命要求较长时,该方式的风险较大。

(3)任意FPGA若原始程序码流采用单片FLASH存储、重构程序码流采用单片FLASH存储时,需要两片FLASH,第一片用于存储原始程序码流,第二片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第二片FLASH。采用这种方式的可靠性比第(1)种方式较高,原始程序码流、重构程序码流有独立的存储器件,但是无法采用程序码流三取二冗余保护。若FLASH元器件等级较低而产品寿命要求较长时,该方式的风险较大。

(4)任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用单份存储时,需要四片FLASH,前三片用于存储原始程序码流,第四片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入第四片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器可以删除前三片FLASH中的任一片存储的原始程序码流后写入重构程序码流,此时原始程序码流变为单片FLASH存储。采用这种方式时,既确保原始程序码流三取二冗余保护,又有独立的重构程序码流存储空间,产品可靠性较高,适用于大多数星载产品。

(5)任意FPGA若原始程序码流采用三片FLASH冗余存储、重构程序码流采用三片FLASH冗余存储时,需要六片FLASH,前三片用于存储原始程序码流,后三片用于存储重构程序码流;当需要更新原始程序码流时,通用重构控制器将接收到的重构程序码流写入后三片FLASH;当需要存储超过一份重构程序码流时,通用重构控制器可以删除后三片FLASH中的任一片存储的重构程序码流后写入新的重构程序码流,此时重构程序码流变为单片FLASH存储。采用这种方式时,单份的原始程序码流和重构程序码流均具有三取二冗余保护,且可以拓展存储多份重构程序码流以适应不同的任务要求,具有较好的设计可靠性、应用灵活性,适用于安全关键、长寿命产品中。

为了实现系统上电和重加载时,可以自动实现FPGA对应FLASH程序码流加载,在通用重构控制器建立当班配置程序映射表、备份配置程序映射表,将任意编号为F-x的FPGA和其程序码流所存的编号为SH-j的一片FLASH或者三片FLASH相关联。

以N=3、M=6为例,即有3片FPGA需要加载与重构,有6片FLASH。下表为当班配置程序映射表的描述性示例,0表示无关,1表示相关。FPGA-1三取二加载FLASH-1、FLASH-2、FLASH-3中的程序码流,FPGA-2加载FLASH-4中的程序码流,FPGA-3加载FLASH-6中的程序码流

表1当班配置程序映射表

通过当班配置程序映射表、备份配置程序映射表的形式,为FPGA配置加载提供了通用、灵活的范式,如图6所示。通用重构控制器可以接收外部通信接口输入的重构控制指令更改当班配置程序映射表、备份配置程序映射表。

系统上电后,根据当班配置程序映射表、备份配置程序映射表加载FPGA程序码流运行,因为通用重构控制器与FLASH的信号连接模式、通用重构控制器与FPGA的信号连接模式存在多种情况,因此加载处理过程并不一致,包括:

(1)FLASH串行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH依次读出程序码流用于配置加载。该方式的上电配置和重配置时间长,任意管脚失效容易导致整个系统失效,可靠性相对较低。

(2)FLASH串行读写、FPGA并行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意编号为F-x的FPGA,检索从编号F-x+1到F-N的FPGA当班配置程序映射表或者备份配置程序映射表,若相关联FLASH与编号为F-x的FPGA相关联FLASH,则一同加载程序码流。当多片FPGA加载运行相同FLASH所存程序码流且上电配置和重配置时间要求合适的情况下可以采用该方式。

(3)FLASH并行读写、FPGA串行加载模式时,从编号为F-1的FPGA开始依次加载配置直到编号为F-N的FPGA完成配置加载;对于任意FPGA,根据当班配置程序映射表或者备份配置程序映射表从相应的一片FLASH或者三片FLASH同步启动读出程序码流用于配置加载。

(4)FLASH并行读写、FPGA并行加载模式时,所有FPGA同步启动配置,根据当班配置程序映射表或者备份配置程序映射表从相应的FLASH同步启动读出程序码流用于配置加载。通用重构控制器管脚资源足够、系统可靠性要求高、上电配置和重配置时间要求较苛刻的情况下可以采用该方式。

任意FPGA配置加载与重构时,通用重构控制器根据当班配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续Y次加载失败后,通用重构控制器根据备份配置程序映射表从关联的FLASH读取程序码流并加载至FPGA运行,若FPGA加载成功则正常运行,若加载失败则再次从FLASH读取程序码流并加载;连续P次加载失败后,通用重构控制器停止加载并报错。在星载应用环境中,Y和P的次数选择2或者3比较合适,既可以在读写时序偶发错误等原因导致一次加载失败后有再次加载的机会,又可以避免加载过程中因固有不可消除故障导致加载失败后多次加载导致系统长时间处于不可控、不可知状态。

向通用重构控制器发送新的重构程序码流前,为了防止刷新FLASH过程中FPGA重配置而到导致配置失败,应先发送重构控制指令,将存储新的重构程序码流所需一片FLASH或者三片FLASH从当班配置程序映射表、备份配置程序映射表中移除。

通用重构控制器是整个系统功能正常工作的基础,可靠性要求最高,其与外部单机的通信接口的可靠性要求也高,因此外部通信接口可以选用RS422、1553B、CAN、SPI、UART方式,协议简单灵活、相关接口元器件的成熟度、可靠性高,具有广泛的应用适配性。通过RS422、1553B、CAN、SPI、UART接口,以空间数据包的形式,通用重构控制器接收程序码流更新数据和重构控制指令,将相关遥测组为空间数据包发送输出。

本领域技术人员可以将本实施例理解为实施例1的更为具体的说明。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

技术分类

06120116501097