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

一种FPGA芯片在线更新配置电路及方法

文献发布时间:2023-06-19 09:47:53


一种FPGA芯片在线更新配置电路及方法

技术领域

本发明涉及芯片技术领域,尤其涉及一种FPGA芯片在线更新配置电路及方法。

背景技术

现代电子产品整体向小型化、易维护、易操作及高可靠性等方向发展,因此对于电路设计者来说,在电路的可靠性、简捷性、易升级、易维护等方面提出了更高的要求。FPGA(现场可编程门阵列)以其卓越的功能和灵活性在现代电子电路中得到了越来越广泛的应用。

FPGA本身是一种空白的芯片,需要将程序配置写入才能够实现具体功能。传统PFGA配置方式已经有了非常成熟的方案,总结基本属于如下三种:

(1)、通过传统的专用JTAG下载线缆来进行程序更新;

(2)、FPGA采用主(串/并)配置模式,通过读取非易失性存储器来配置加载程序;

(3)、FPGA采用从(串/并)配置模式,通过外部处理器来配置加载程序;

上述方法的优缺点如下所示:

方式(1)

优点:1、可直接对FPGA进行编程,而不需要烧录FLASH;

2、可通过仿真观察FPGA内部情况;

3、外围电路简单;

缺点:1、需要专用的JTAG下载电缆;

2、需要搭载FPGA的电路板外露,或者至少电路板上的JTAG接口外露;

3、需要专业的开发软件才能对FPGA进行编程;

4、断电后FPGA会清空,重新上电后需要再次编程;

5、不能实现在线升级;

方式(2)

优点:1、上电自动从非易失性存储区中读取配置程序;

2、当不需要在线升级时,外围电路相对简单;

3、可实现在线升级;

缺点:1、当不具备在线升级功能时,更新FPGA程序同样需要用到JTAG下载线;

2、当需要具备在线升级功能时,需外挂处理器,电路相对复杂;

3、当需要具备在线升级功能时,外挂处理器软件程序较复杂;

方式(3)

优点:1、上电后由处理器来完成对FPGA的配置;

2、方便重新配置FPGA;

3、可实现在线升级;

缺点:1、需要外挂处理器,电路相对复杂;

2、需要较高性能的处理器及较大的存储空间;

3、外挂处理器软件程序较复杂;

在实际应用中,难免需要更新FPGA程序来进行性能优化、添加功能、修复BUG等,通过拆解机身的方式来进行FPGA程序的更新是不可能也不现实的,所以需要一种能够提供在线升级的电路,然而传统的FPGA在线升级配置电路(如上所述)总是存在着一些不足之处,所以设计一种简捷、高效、可靠的配置电路以满足现代产品的小型化、易维护、易操作等特性就显得尤为重要。

发明内容

对于现有技术所存在的不足,本发明提供了一种FPGA配置电路,包括:

FPGA模块,用于被配置以实现具体电路功能,

控制器模块,用于接收上位机的指令,并控制FPGA配置电路的各模块,该控制器模块还包括内存模块,

FLASH模块,用于存储FPGA模块的配置程序以及配合控制器模块配置FPGA模块,

缓冲器模块,用于控制FPGA模块的配置时钟的通断,

其中,控制器模块连接到所述FLASH模块,并且FLASH模块连接到FPGA模块,FPGA模块使用从动模式,

控制器模块的第一信号端连接到FPGA模块的复位端,

控制器模块的第二信号端连接到缓冲器的使能端,控制器模块的时钟信号输出端连接到缓冲器的时钟输入端,并且缓冲器模块连接到FPGA模块并为FPGA模块提供所述配置时钟。

优选地,控制器模块与FLASH模块使用SPI总线进行通信。

优选地,缓冲器模块连接有上拉电阻,上拉电阻使得缓冲器模块在默认情况下处于关闭状态。

优选地,上位机包括PC、SoC系统、移动终端以及虚拟终端。

优选地,控制器模块具有无线通信模块,能够与上位机进行无线通信。

优选地,控制器模块具有有线通信模块,能够与上位机进行有线通信。

本发明还提供了一种用于上述FPGA配置电路的在线更新方法,包括以下步骤:

S1:上位机向控制器模块发送更新FPGA模块的配置命令以及配置程序,控制器模块接收到配置命令后,将接收到的全部或者部分的配置程序缓存在内存模块中;

S2:控制器模块向缓冲器模块发送控制信号,以关闭缓冲器模块的输出通道,来隔断FPGA模块的配置时钟;

S3:控制器模块将缓存在内存模块中的配置程序写入FLASH模块;

S4:控制器模块复位FPGA模块,清空FPGA模块的内容;

S5:控制器模块向缓冲器模块发送控制信号,以开启缓冲器模块的输出通道。

优选地,在上述步骤S3中,当所述内存模块不足以缓存全部所述配置程序时,所述配置程序分多次缓存在所述内存模块中,并分多次写入所述FLASH模块中。

优选地,在所述步骤S5之后还包括:

S6:控制器模块对FLASH模块进行读数据操作,以完成FPGA模块的配置更新。

优选地,上述在线更新方法还包括:写入到FLASH模块中的更新后的配置程序通过FLASH模块输出到FPGA模块,并配合经过缓冲器模块的时钟输出信号作为FPGA模块的配置时钟信号而实现了对FPGA模块的配置更新。

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质存储有可执行计算机程序,所述计算机程序运行时可实现上述在线更新方法。

本发明所提供的技术方案具有以下有益效果:

(1)节省了系统成本,只需要一个普通性能的MCU,一片SPI FLASH和一个缓冲器;

(2)降低了电路复杂度,电路简捷、连接关系清晰;

(3)极大的压缩了电路板面积,便于设备的小型化;

(4)降低了处理器软件的复杂度;

(5)增加了稳定性及可靠性,省去了一些不必要的中间环节;

(6)提高了系统的可操作性和可维护性,无需打开机身,可随时更新配置;

本发明通过使用SPI FLASH模块和一个缓冲器模块极大的简化了电路设计及软件开发难度,这两个模块的配合使用使得该配置方案不再需要高性能的处理器及大容量的存储器(ROM、RAM)。极大的压缩了系统成本和所需电路板面积。减少了中间环节,间接提高了系统稳定性和可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的一种FPGA配置电路的结构示意图。

图2是本申请提供的一种FPGA配置电路的缓冲器模块与FLASH模块的电路连接图。

图3是本申请提供的一种用于FPGA配置电路的在线更新方法的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本发明的一个实施例中,提供了一种能够在线升级的FPGA配置电路,相较于现有技术的FPGA配置电路,其结构更为简洁,电路设计难度更低,维护成本也得到了降低。本实施例提供的FPGA配置电路,包括用于被配置以实现具体电路功能的FPGA模块、用于接收上位机的指令并且控制FPGA配置电路的各个模块的控制器模块、用于存储上述FPGA模块的配置程序以及配合上述控制器模块配置上述FPGA模块的FLASH模块、以及用于控制上述FPGA模块配置时钟通断的缓冲器模块。在本发明中,控制器模块使用MCU(单片机,Micro-Controller Unit)模块作为示例,上述控制器模块也可以使用控制电路、SoC系统等的能够对配置电路进行控制的芯片或者电路板。

其中,MCU模块用于控制配置电路的整体操作,其具有与上位机通信的模块,用于接收上位机发送的更新FPGA模块的配置命令以及配置程序,该通信模块可以是有线的,如通过以太网、USB或者RS-232串行接口与上位机进行连接,或者上位机与上述FPGA配置电路直接集成在同一块PCB板上。该通信模块也可以是无线的,使用WiFi、蓝牙等无线协议与上位机进行连接。MCU模块与上位机建立通信连接之后,可以通过TCP/IP等的协议传输数据。此外,上述上位机可以是PC、SoC系统、移动终端以及虚拟终端。MCU模块自身还具有内存/缓存模块,用于暂存用于更新FPGA模块的配置程序。

参见图1,MCU模块连接到FLASH模块,并且FLASH模块连接到FPGA模块,FPGA模块使用从动模式,MCU模块连接到FPGA模块的复位端,MCU模块连接到缓冲器的使能端以及配置时钟端,并且缓冲器模块连接到所述FPGA模块并为FPGA模块提供所述配置时钟。

具体地,上述模块之间的连接使用SPI总线结构,MCU模块的SPI接口信号端与FLASH模块相对应的接口信号端相连,上述接口信号端包括SCK(Serial Clock,时钟信号)、MOSI(Master Output Slave Input,主设备数据输出,从设备数据输入)、CS(Chip Select,从设备使能信号),其中SCK端口用于发送时钟信号,MOSI信号端用于传输MCU模块向FLASH模块发送的数据,CS信号端用于MCU模块使能FLASH模块;同时,MCU模块的SPI接口SCK信号端与缓冲器模块的数据输入端A信号相连;MCU模块的GPIO1控制信号端与FPGA模块的PROGRAM_B信号端相连,上述PROGRAM_B信号端用于复位FPGA模块;MCU模块的GPIO2控制信号端与缓冲器模块的使能端信号OE相连;缓冲器模块的数据输出端信号Y与FPGA模块的CCLK信号相连;FLASH模块的数据输出信号端MISO与FPGA模块的DIN信号相连。

应当指出,上述模块之间连接所使用的SPI通信协议仅作为示例,还可以使用其他的通信协议/总线,如I2C、UART、CAN等,只要是可以使用在单片机系统中的通信协议/总线,都可以进行替换。

具体参考图2,缓冲器模块(即图2中的U12)的信号输入端A连接到上述MCU模块的SPI接口SCK信号端,并且缓冲器模块的数据输出端信号Y连接到FPGA模块的CCLK信号端,即是,MCU模块提供的时钟信号经由缓冲器模块而输入到FPGA模块。此外,MCU模块的GPIO2信号端与缓冲器模块的使能信号端OE相连,MCU模块通过GPIO2信号端控制缓冲器模块的输入(连接到上述MCU模块的SPI接口SCK信号端)/输出(连接到FPGA模块的CCLK信号端)通道的开启与关闭,也即是,MCU模块通过控制缓冲器模块来控制发送到FPGA模块的时钟信号的开启和关闭。

在一个优选的实施例中,缓冲器模块连接有上拉电阻R,该上拉电阻使得缓冲器模块在默认情况下处于关闭状态。

参见图2,上述FPGA模块的CCLK端口连接到上述缓冲器模块的Y端口,接收经由缓冲器模块转发的来自MCU模块的SCK端口输出的时钟信号。由于FPGA模块自身不保存配置程序,因此实现具体功能所需的配置程序存储在上述FLASH模块,FPGA模块的DIN接口连接到FLASH模块的MISO输出端口SO,存储在FLASH模块FPGA数据通过MISO管脚输出到FPGA模块的DIN接口。

以下将示例性地说明本发明提供的一个实施例的具体步骤,需要注意的是,以下的示例性说明仅作为说明本发明的一种实施方式,将本实施例中的步骤进行调整或者替换,只要能实现本发明所达到的技术效果,都应当视为落入本发明的保护范围之内。

参见图3,图3是本申请提供的一种用于FPGA配置电路的在线更新方法的流程图,包括以下步骤:

S1:上位机向MCU模块发送更新FPGA模块的配置命令以及配置程序,MCU模块接收到配置命令后,将收到的全部或者部分配置程序缓存在内存模块中;

S2:上述MCU模块向缓冲器模块发送控制信号,以关闭缓冲器模块的输出通道,来隔断FPGA模块的配置时钟;

S3:确认需要写入的配置程序是否已全部缓存到所述内存模块中;

S3-1:若需要写入的配置程序已全部缓存到所述内存模块中,则MCU模块将缓存在内存模块中的配置程序写入FLASH模块;

S3-2:若需要写入的配置程序未全部缓存到所述内存模块中,MCU模块将缓存在内存中的部分配置程序写入FLASH模块,并且再次从上位机缓存剩余的配置程序并再次写入FLASH模块,直至写入全部配置程序;

S4:MCU复位FPGA模块,清空FPGA模块的内容;

S5:上述控制器模块向缓冲器模块发送控制信号,以开启所述缓冲器模块的所述输出通道。

在步骤S1中,上位机通过有线或者无线的方式与MCU模块建立通信连接,发送更新FPGA模块的配置命令以及配置程序,在一个具体的示例中,上述上位机是PC,通过以太网与上述MCU模块建立通信连接,并在PC上运行专用软件与上述MCU模块进行通信,通过TCP/IP协议向MCU模块发送数据包,该数据包包括上述配置命令以及配置程序。MCU模块接收到配置命令后,将收到的配置程序缓存在内存模块中,准备写入到FLASH模块。在某些具体的实施例中,由于内存模块的容量是一定的,因此有可能无法一次性将全部配置程序缓存到内存模块,在这些实施例中,MCU模块可以先缓存一部分配置程序缓存到内存模块,在写入该部分配置程序到FLASH模块中之后,再次从上位机缓存剩余部分的配置程序,并且再次写入部分配置程序到FLASH模块中,如此反复直至全部配置程序写入FLASH模块。

上述MCU模块将由上位机发送的上述及配置程序缓存在其自身的内存模块之后,进入步骤S2,MCU模块的GPIO2信号端向缓冲器模块的使能信号端OE发送命令,关闭缓冲器模块的输出通道,来隔断供给FPGA模块的配置时钟信号。此时,FPGA模块停止工作。

然后,进入步骤S3,MCU模块通过MOSI信号端与FLASH模块建立通信连接,将缓存在内存模块中的配置程序写入FLASH模块。由于FPGA模块自身不保存配置程序,因此实现具体功能所需的配置程序需要存储在上述FLASH模块。如上所述,在上述内存模块无法一次性缓存全部的配置程序时,上述配置程序分多次缓存在所述内存模块中,并分多次写入所述FLASH模块中。

MCU模块的GPIO1信号端与FPGA模块的PROGRAM_B信号端相连,上述PROGRAM_B信号端用于复位FPGA模块。上述配置程序写入FLASH模块之后,进入步骤S4,MCU模块通过GPIO1信号端向FPGA模块的PROGRAM_B信号端发送复位信号,使FPGA模块复位。此时,由于在S2中缓冲器模块的输出通道被关闭,因此经由缓冲器模块供给FPGA模块的配置时钟信号也被隔断,FPGA模块尚未开始工作。

上述FPGA模块复位后,进入步骤S5,MCU模块的GPIO2信号端再次向缓冲器模块的使能信号端OE发送命令,以开启缓冲器模块的输出通道,恢复向FPGA模块供给配置时钟信号。

根据使用的FPGA模块的不同,在步骤S5之后,还可选地包括步骤S6,MCU模块对FLASH模块进行读数据操作,以完成所述FPGA模块的配置更新。MCU模块通过自身SPI接口对FLASH模块进行读数据操作,这样就将存储到FLASH模块中更新后的FPGA数据通过FLASH模块的MISO管脚输出到FPGA的配置数据输入信号DIN,并配合经由缓冲器模块的SCK输出信号作为FPGA模块的配置时钟信号CCLK实现了对FPGA模块的配置更新。

上述在线更新方法可以通过计算机程序执行,该计算机程序记录在计算机可读取媒介上。

此外,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种FPGA芯片在线更新配置电路及方法
  • 基于总线的FPGA芯片配置方法和配置电路
技术分类

06120112308897