CN102609287B - 一种通过cpu远程更新fpga的装置及其方法 - Google Patents

一种通过cpu远程更新fpga的装置及其方法 Download PDF

Info

Publication number
CN102609287B
CN102609287B CN201210029563.4A CN201210029563A CN102609287B CN 102609287 B CN102609287 B CN 102609287B CN 201210029563 A CN201210029563 A CN 201210029563A CN 102609287 B CN102609287 B CN 102609287B
Authority
CN
China
Prior art keywords
module
fpga
configuration
pin
controller module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210029563.4A
Other languages
English (en)
Other versions
CN102609287A (zh
Inventor
肖家博
莫云
杨卫峰
宁侨
蒋国涛
吴文慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuzhou CRRC Times Electric Co Ltd
Original Assignee
Zhuzhou CSR Times Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuzhou CSR Times Electric Co Ltd filed Critical Zhuzhou CSR Times Electric Co Ltd
Priority to CN201210029563.4A priority Critical patent/CN102609287B/zh
Publication of CN102609287A publication Critical patent/CN102609287A/zh
Application granted granted Critical
Publication of CN102609287B publication Critical patent/CN102609287B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种通过CPU远程更新FPGA的装置及其方法,装置包括:控制器模块、FPGA模块、配置模块和缓冲器模块。控制器模块通过有线或无线方式与上位机相连,控制器模块的第二GPIO接口与缓冲器模块的使能端相连,控制器模块的SPI接口与缓冲器模块的数据输入端相连,控制器模块的第一GPIO接口与FPGA模块的配置信号端相连,缓冲器模块的数据输出端分别与FPGA模块和配置模块的SPI接口相连,基于MPC5200B与实时操作系统VxWorks实现FPGA配置文件的远程更新。该装置及其方法能够节省成本,提高系统的可操作性,降低设计难度,易于实现FPGA的在线升级,提高FPGA配置的效率和灵活性。

Description

一种通过CPU远程更新FPGA的装置及其方法
技术领域
本发明涉及一种FPGA的配置装置及其方法,尤其是涉及一种通过CPU进行FPGA远程更新的装置及其方法。
背景技术
随着铁路科技的高速发展,铁路建设的大量投入,国内外各大铁路电气设备供应商为了增强产品的功能、提高的产品的质量、缩短产品的研发周期,纷纷采用了各种先进的产品开发技术,如嵌入式实时操作系统、高速处理器技术,特别是产品模块化技术。国内为了快速的响应市场需求,提高自己的产品能力,满足电力机车、城市轨道列车、内燃车等的需求,自主研发了分布式网络控制系统DTECS。DTECS系统采用模块化分布式控制技术,由若干个分散布置在机车各个控制现场的模块通过TCN 网络联接而成,通过对DTECS系统模块的组合配置,可以满足不同的市场需求,满足客户的定制需求,通过模块的重用,减少产品工程复杂程度,提高产品工程管理质量和产品的可靠性。DTECS系统中每个模块的机械结构采用独立模块方式,所有电路都密封在一个防尘、防潮、防振、耐热以及EMC性能良好的金属外壳之中,并通过模块前面板上的连接器提供电源和通信接口。
虽然DTECS系统产品模块化给我们带来很多的好处,但在DTECS系统模块现场应用的过程中,有的时候需要更新模块的FPGA程序,通常需要拧开安装螺丝、打开模块,连接JITG口,通过FPGA下载电缆来下载程序。通常,DTECS系统现场应用环境复杂,下载条件往往很难满足。目前,在大多数系统的设计过程中,根据FPGA器件类型和应用范围,实现FPGA的程序配置方法一般采用如下二种配置方法:调试阶段产用专用下载电缆JTAG下载方式进行配置,通过专用的配置芯片(非易失性存储器)。
其中通过专用的配置芯片下载FPGA配置的方法,首先需要有FPGA专用的配置芯片(非易失性存储器),通过FPGA自动下载专用的配置芯片中保存的FPGA配置程序,实现FPGA的配置。至于通过JTAG口下载方式下载到FPGA进行配置的方法,通过专有的下载电缆直接下载到FPGA芯片进行配置,一般只适用于FPGA程序的调试阶段。
目前,通过专用的配置芯片下载FPGA配置的方法由于需要专用的配置芯片,成本比较高,同时对FPGA器件还有一定的要求,设计灵活度不够,其次,在需要进行FPGA逻辑程序更新时,依旧需要通过专用下载电缆、JTAG接口进行下载,非常的不灵活,并且下载电缆的传输距离也有一定的限制。而通过JTAG口下载方式下载到FPGA进行配置的方法,一般只适用于FPGA程序的调试阶段。这种方法同样需要通过电路板上JTAG接口进行程序下载,并要求外接PC设备以及专用软件、下载电缆才能实现对FPGA的下载。
通过专用的配置芯片下载FPGA配置的方法与通过JTAG口下载方式下载到FPGA进行配置的方法这两种方案在现场应用中都必须将模块打开,通过JTAG接口进行下载的缺点,并且PC机上必须有专用的下载软件、采用专用下载电缆,才能完成FPGA 配置文件的更新。
为了有效的解决DTECS系统中各模块FPGA程序下载困难的问题,避免打开模块,避免安装特殊的下载软件,避免使用FPGA专有下载电缆,研究一种通过CPU远程更新FPGA配置的装置及其方法成为现有技术亟待解决的技术问题。
发明内容
本发明的目的是提供一种通过CPU远程更新FPGA的装置及其方法,该装置及其方法能够节省成本,提高系统的可操作性,降低设计难度,易于实现FPGA 的在线升级,提高FPGA 配置的效率和灵活性。
为了实现上述发明目的,本发明具体提供了一种通过CPU远程更新FPGA的装置的技术实现方案,一种通过CPU远程更新FPGA的装置,包括:控制器模块、FPGA模块、配置模块和缓冲器模块,控制器模块通过有线或无线方式与上位机相连,控制器模块的第二GPIO接口与缓冲器模块的使能端相连,控制器模块的SPI接口与缓冲器模块的数据输入端相连,控制器模块的第一GPIO接口与FPGA模块的配置信号端相连,缓冲器模块的数据输出端分别与FPGA模块的SPI接口和配置模块的SPI接口相连。
作为本发明一种通过CPU远程更新FPGA的装置技术方案的进一步改进,上位机向控制器模块发送更新FPGA配置文件命令,控制器模块接收到命令后,自动下载上位机上的FPGA配置文件,将FPGA配置文件存储到控制器模块的保留内存中,然后通过控制器模块的第一GPIO接口向FPGA模块发送控制命令,使FPGA模块的SPI接口输出高阻,同时通过第二GPIO接口使能缓冲器模块,并通过控制器模块的SPI接口将FPGA配置文件按块写入到配置模块中,当FPGA配置文件写完后,再通过第二GPIO接口禁用缓冲器模块,同时向FPGA模块发送重新配置命令并重新启动装置;装置重新启动后,FPGA模块通过SPI接口将存储在配置模块中新的FPGA配置文件自动下载至 FPGA模块中,新的FPGA配置文件生效。
作为本发明一种通过CPU远程更新FPGA的装置技术方案的进一步改进,控制器模块与上位机之间通过基于TCP/IP的标准以太网协议进行通信。
作为本发明一种通过CPU远程更新FPGA的装置技术方案的进一步改进,缓冲器模块包括两片总线缓冲器芯片,两片总线缓冲器芯片相互并联,控制器模块采用基于FreeScale的MPC5200B芯片,FPGA模块采用Xilinx的XC3S200AN芯片,配置模块采用SPI Flash芯片,通过CPU远程更新FPGA的装置采用基于VxWorks的操作系统。
本发明还另外具体提供了一种利用上述通过CPU远程更新FPGA的装置进行FPGA远程更新的方法的技术实现方案,一种通过CPU远程更新FPGA的方法,包括以下步骤:
S100:上位机向控制器模块发送更新FPGA配置文件命令,控制器模块接收到命令后,自动下载上位机上的FPGA配置文件,并将FPGA配置文件存储到控制器模块的保留内存中;
S101:通过控制器模块的第一GPIO接口向FPGA模块发送控制命令,使FPGA模块的SPI接口输出高阻,并通过第二GPIO接口使能缓冲器模块;
S102:通过控制器模块的SPI接口将FPGA配置文件按块写入到配置模块中;
S103:当FPGA配置程序数据写完后,再通过第二GPIO接口禁用缓冲器模块;
S104:控制器模块向FPGA模块发送重新配置命令,并重新启动装置;
S105:装置重新启动后,FPGA模块通过SPI接口将存储在配置模块中新的FPGA配置文件自动下载至 FPGA模块中,新的FPGA配置文件生效。
作为本发明一种通过CPU远程更新FPGA的方法技术方案的进一步改进,步骤S100还包括以下过程:通过CPU远程更新FPGA的装置通过上位机有线端口或无线端口连接上控制器模块,在控制器模块的内存中开辟一块保留内存空间,选择好FPGA配置文件,并将FPGA配置文件下载到保留内存中,下载完成后,对FPGA配置文件进行CRC校验,检验下载FPGA配置文件的正确性,若不正确,则重新下载FPGA配置文件。
作为本发明一种通过CPU远程更新FPGA的方法技术方案的进一步改进,步骤S101还包括以下过程:控制器模块初始化SPI接口,并配置好合适的波特率,并通过控制器模块的第二GPIO接口使能连接至缓冲器模块,使控制器模块的SPI接口通过缓冲器模块连接至配置模块的SPI接口,同时通过控制器模块的第一GPIO接口控制FPGA模块的配置信号端,使FPGA模块处于编程状态,此时FPGA模块的SPI接口输出为高阻态,从而保证只有控制器模块的SPI接口控制配置模块。
作为本发明一种通过CPU远程更新FPGA的方法技术方案的进一步改进,步骤S102还包括以下过程:控制器模块去掉FPGA配置文件的校验位,取出有效数据,并求出有效数据的长度,并将有效数据的长度存储到FPGA模块的片外存储器的最高四个字节中,同时读出有效数据长度,校验有效数据的长度是否与写数据的长度保持一致,以验证控制器模块是否能够对配置模块进行正常的读写操作;如果控制器模块能够对配置模块进行正常的读写操作,控制器模块根据FPGA配置文件的长度,求出总共要写的页长度N,然后从第0页开始,按页循环擦除配置模块的前N页,操作完成后,按页循环读出前N页的数据,并校验每一字节的数据是否都为FF,以验证数据擦除是否成功。
作为本发明一种通过CPU远程更新FPGA的方法技术方案的进一步改进,步骤S102还包括以下过程:控制器模块从第0页开始,按页循环将FPGA配置程序数据写到配置模块中,操作完成后,将前N页数据读出和原来待写入的数据进行比较,校验数据是否完全一致,以确保写入配置模块中的数据完全正确。
作为本发明一种通过CPU远程更新FPGA的方法技术方案的进一步改进,步骤S103还包括以下过程:控制器模块通过第二GPIO接口控制缓冲器模块输出使能信号为无效电平,关断缓冲器模块输出,禁止控制器模块的SPI接口连接到配置模块的SPI接口,同时向FPGA模块的配置信号端送出高电平,使能FPGA模块的配置信号端,FPGA模块通过Master SPI模式读出配置模块中的配置信息,使新的FPGA配置文件生效。
通过实施上述本发明一种通过CPU远程更新FPGA的装置及其方法的技术方案,具有以下技术效果:
(1)节省了装置的成本,不再需要专用下载电缆和专有的配置芯片等;
(2)提高装置的可操作性,不需要打开模块,不需要插入下载电缆等,可随时更新FPGA的配置文件;
(3)降低了装置的设计难度,易于实现FPGA 的在线升级,提高FPGA 配置的效率和灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明通过CPU远程更新FPGA的装置一种具体实施方式的电路连接示意图。
图2是本发明通过CPU远程更新FPGA的装置一种具体实施方式的系统结构框图。
图3是本发明通过CPU远程更新FPGA的装置一种具体实施方式的电路原理图。
图4是本发明通过CPU远程更新FPGA的装置一种具体实施方式的程序配置模式电路原理图。
图5是本发明通过CPU远程更新FPGA的装置一种具体实施方式在间接在系统配置模式下的电路原理图。
图6是本发明通过CPU远程更新FPGA的装置一种具体实施方式在Master SPI配置模式下的上电配置时序图。
图7是本发明通过CPU远程更新FPGA的方法一种具体实施方式的程序流程图。
图中:1-控制器模块,2-FPGA模块,3-配置模块,4-缓冲器模块,5-上位机,X1-JTAG接口插座,X2-SPI接口插座。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如附图1至7所示,给出了本发明一种通过CPU远程更新FPGA的装置及其方法的具体实施例,下面结合附图和具体实施例对本发明作进一步说明。
如附图1和附图2所示的一种通过CPU远程更新FPGA(Filed-Programmable Gate Array,现场可编程逻辑门阵列)的装置的具体实施方式,包括:控制器模块1、FPGA模块2、配置模块3和缓冲器模块4,控制器模块1通过有线或无线方式与上位机5相连,控制器模块1的第二GPIO接口与缓冲器模块4的使能端相连,控制器模块1的SPI接口与缓冲器模块4的数据输入端相连,控制器模块1的第一GPIO接口与FPGA模块2的配置信号端相连,缓冲器模块4的数据输出端分别与FPGA模块2的SPI接口和配置模块3的SPI接口相连。在附图5的具体实施方式中,虽然采用PC机作为上位机5进行技术方案的描述,但是可以想到,便携式计算机、工业计算机或控制器、各种智能终端、工作站或工作台等其他任何具有终端处理功能设备都可作为上位机5来实现本发明的技术方案。
上位机5向控制器模块1发送更新FPGA配置文件命令,控制器模块1接收到命令后,自动下载上位机5上的FPGA配置文件,将FPGA配置文件存储到控制器模块1的保留内存中。其中,保留内存为系统的一块保留内存区域。然后通过控制器模块1的第一GPIO接口向FPGA模块2发送控制命令,使FPGA模块2的SPI接口输出高阻,同时通过第二GPIO接口使能缓冲器模块4,通过控制器模块1的SPI接口将FPGA配置文件按块写入到配置模块3中,当FPGA配置文件写完后,再通过第二GPIO接口禁用缓冲器模块4,同时向FPGA模块2发送重新配置命令并重新启动装置;装置重新启动后,FPGA模块2通过SPI接口将存储在配置模块3中新的FPGA配置文件自动下载至 FPGA模块2中,新的FPGA配置文件生效。控制器模块1与上位机5之间进一步通过基于TCP/IP的标准以太网协议进行通信。
如附图3所示,缓冲器模块4进一步包括两片总线缓冲器芯片,两片总线缓冲器芯片采用74LVC2G125DP芯片,两片总线缓冲器芯片之间相互并联。控制器模块1进一步采用基于FreeScale的MPC5200B芯片,FPGA模块2采用Xilinx的XC3S200AN芯片,配置模块3进一步采用ATMEL的AT45DB161D SPI Flash芯片,通过CPU远程更新FPGA的装置采用风河公司基于VxWorks的操作系统。当然,可以实现本发明目的的各种功能模块包括但并不局限于采用具体实施方式当中列举的芯片型号,也可以采用功能相同,但公司不同、型号不同的其他芯片。控制器模块1可以采用MCU(Micro Control Unit,微控制器),也可以采用DSP(Digital Signal Processor,数字信号处理器)、PLD(Programmable Logic Device,可编程逻辑器件)、PLC(Programmable Logic Controller,可编程逻辑控制器)、通用型CPU(Central Processing Unit,中央处理器)、单片机等具有处理和控制功能的CPU器件。
如附图4所示为Xilinx FPGA Master SPI配置模式原理图,图中描述为Xilinx推荐的Master SPI模式典型原理图。图中用于存储配置文件的配置模块3选用Atmel的AT45DB161D型芯片作为SPI Flash。该芯片存储容量为16Mbit;供电电压范围是2.5~3.6V,最高时钟频率66MHz,支持多种擦写模式。如图3所示有两处插座JTAG接口插座X1和SPI接口插座X2,设计人员可使用下载器连接到这两处插座,将配置程序烧写入配置模块3中。在实际应用中,根据选择连接的插座不同在电路的配置和下载软件的设置上也应做相应的调整。该电路可分为两个部分,虚线框中部分为FPGA模块2在选择Master SPI配置模式的基本应用电路图,配置程序可通过如附图5所示的间接在系统编程(Indirect In-System SPI Programming)的方式,即通过FPGA模块2的JTAG链为SPI存储器编程。该种编程方式对于Spartan-3AN系列器件不适用。因为Spartan-3AN内部有ISF,内部有ISF的FPGA芯片只支持直接在系统编程(Direct In-system SPI Programming)方式,即通过附图2中的SPI接口插座X2利用下载器对配置模块3进行直接编程,该编程方式对于所有支持Master SPI配置模式的FPGA器件都适用。实线框部分为缓冲器模块4(Buffer),缓冲器模块4采用两片74LVC2G125DP双总线缓冲器芯片。缓冲器模块4将用于存储配置程序的配置模块3通过缓冲器模块4挂到控制器模块1上,控制器模块1可以方便的访问配置模块3。实际操作中,控制器模块1只是完成一个将上位机5传输来的配置文件写入配置模块3的操作过程。需要说明的是,缓冲器模块4的作用是用来隔离控制器模块1与配置模块3之间的联系,在控制器模块1需要访问配置模块3时缓冲器模块4才会打开,其他时段,缓冲器模块4都是关断的,而缓冲器模块4的通断是由控制器模块1来控制的。这样做,主要是防止在FPGA模块2从配置模块3中下载配置程序时,控制器模块1会对其有干扰。同理,控制器模块1访问配置模块3时,也需要避免FPGA模块2对这一过程造成影响,这可以通过控制FPGA模块2的PROG_B管脚来实现目的。
为了进一步降低FPGA模块2和控制器模块1分别与配置模块3通讯时,它们之间的相互干扰问题。在控制器模块1需要访问配置模块3时,控制器模块1控制缓冲器模块4开通,FPGA模块2的管脚处于高阻态;在其他时段,控制器模块1控制缓冲器模块4关断。具体连接如图3所示,该问题是通过控制FPGA模块2的PROG_B和OE管脚来解决的。在控制器模块1访问配置模块3时,拉低PROG_B、OE管脚,使能Buffer,FPGA所有管脚呈高阻态;当控制器模块1向配置模块3烧写程序结束后,PROG_B、OE管脚释放或拉高,关断缓冲器模块4即断开控制器模块1与配置模块3的联系,PROG_B由低到高的跳变会启动FPGA模块2自动加载配置程序。一般公司内部模块产品面板上都留有与控制器模块1通讯的接口,设计人员只需要准备好FPGA配置文件,通过这些接口便可以很方便的在线更新板上FPGA功能。在每次对配置模块3进行访问时,出于可靠性的考虑最好将其复位一次,防止“卡死”情况发生。在控制器模块1加载完配置程序之后,可不用重上电或重启,只需控制FPGA模块2的PROG_B管脚便可实现FPGA模块2重新配置的目的。控制器模块1控制整个更新配置程序和FPGA模块2重新加载配置程序的过程,如果操作意外失败,可重新配置一次,保证设计的可靠性。另外,在控制器模块1不执行烧写配置程序操作的时间段,PROG_B、OE、ROM_RST管脚要保证为高电平状态,ROM_WP管脚为低电平,这样是为了保证其它电路正常工作,不受干扰,以上管脚都应加4.7K上拉电阻处理。
其中,将Xilinx Spartan-3AN系列FPGA芯片的管脚配置情况说明如下:
(1)M[2:0]:输入引脚,模式选择管脚,用来定义FPGA芯片的配置模式。
M[2:0]=001:主动SPI模式;
   M[2:0]=011:内部SPI模式;
   M[2:0]=101:JTAG模式。
(2)VS[2:0]:输入引脚,用于确定FPGA芯片发出哪条SPI Flash 命令来启动读操作以及在FPGA芯片预期收到来自配置模块3的有效数据之前需要插入的虚拟字节数。
VS[2:0]=101(0X03):读;
VS[2:0]=111(0X0b):快速读;
VS[2:0]=110(0Xe8):读阵列。
(3)DONE:FPGA芯片配置过程中,DONE引脚输出低电平,正确配置结束后,FPGA芯片可以驱动该引脚输出高电平,也可以使其“浮高”(在生成配置程序前,ISE软件General Options选项中置时选择),对于后一种情况,需在该引脚上加上拉电阻,在芯片内部或外部均可,推荐做法是无论内部是否有上拉电阻,外部都加一个上拉电阻。
(4)PROG_B:FPGA芯片的异步控制输入信号。将其拉低,复位FPGA芯片,初始化配置寄存器,释放即开始FPGA芯片配置过程。FPGA芯片上电时,内部复位电路会将该引脚拉低一段时间然后释放。若外部驱动该引脚持续拉低,则FPGA芯片的所有I/O管脚处于高阻态,直到释放配置才会开始,否则FPGA芯片的I/O管脚会一直处于高阻态。
(5)INIT_B:配置过程中有多种功能:上电后,FPGA芯片驱动INIT_B为低表明清空内部配置寄存器,待其返回为高时采集M[2:0]管脚上的信息,并开始配置过程;配置过程中,若出现错误,INIT_B管脚输出低电平,指示配置不成功。配置过程中,INIT_B是双向的OD门,内部有可选择的上拉电阻,配置结束后可作为通用I/O来使用。
如附图6所示为FPGA模块2上电配置时序图。FPGA模块2上电后,内部复位电路会将PROG_B管脚拉低,复位FPGA模块2,初始化配置寄存器。PROG_B管脚释放即开始FPGA模块2配置过程。若外部驱动该引脚持续拉低,则FPGA模块2的所有I/O管脚处于高阻态,直到释放PROG_B管脚配置过程才会开始,否则FPGA模块2的I/O管脚会一直处于高阻态。PROG_B管脚释放后,FPGA模块2立刻驱动INIT_B为低,此时表明开始清空内部配置寄存器,待其返回为高时FPGA模块2采集M[2:0]、VS[2:0]管脚上的信息,开始启动配置过程(startup),下载数据流(bitstream)。期间若出现CRC校验错误,INIT_B管脚输出低电平,表明配置不成功。配置过程中,INIT_B是双向的OD门,内部有可选择的上拉电阻,配置结束后可作为通用I/O来使用。配置过程结束后,FPGA模块2驱动DONE管脚输出高电平,表明配置成功,在整个配置过程中,DONE管脚输出低电平信号。
如附图7所示的一种利用上述通过CPU远程更新FPGA的装置进行FPGA远程更新的方法的具体实施方式,包括以下步骤:
S100:上位机5向控制器模块1发送更新FPGA配置文件命令,控制器模块1接收到命令后,自动下载上位机5上的FPGA配置文件,并将FPGA配置文件存储到控制器模块1的保留内存中;
S101:通过控制器模块1的第一GPIO接口向FPGA模块2发送控制命令,使FPGA模块2的SPI接口输出高阻,并通过第二GPIO接口使能缓冲器模块4;
S102:通过控制器模块1的SPI接口将FPGA配置文件按块写入到配置模块3中;
S103:当FPGA配置程序数据写完后,再通过第二GPIO接口禁用缓冲器模块4;
S104:控制器模块1向FPGA模块2发送重新配置命令,并重新启动装置;
S105:装置重新启动后,FPGA模块2通过SPI接口将存储在配置模块3中新的FPGA配置文件自动下载至 FPGA模块2中,新的FPGA配置文件生效。
步骤S100还进一步包括以下过程:通过CPU远程更新FPGA的装置通过上位机5有线端口或无线端口连接上控制器模块1,在控制器模块1的内存中开辟一块足够大的保留内存空间,选择好FPGA配置文件,并通过以太网网口和标准的以太网协议将FPGA配置文件下载到保留内存中,下载完成后,对FPGA配置文件进行CRC(Cyclic Redundency Check,循环冗余校验,一种常用的数据差错校验方式)校验,检验下载FPGA配置文件的正确性,若不正确,则重新下载FPGA配置文件。也可以通过串口和无线通信端口传输FPGA配置文件至控制器模块1中。
步骤S101还进一步包括以下过程:控制器模块1初始化SPI(Serial Peripheral Interface,串行外设接口)接口,并配置好合适的波特率,并通过控制器模块1的第二GPIO接口使能连接至缓冲器模块4,使控制器模块1的SPI接口通过缓冲器模块4连接至配置模块3的SPI接口,同时通过控制器模块1的第一GPIO接口控制FPGA模块2的配置信号端,使FPGA模块2处于编程状态,此时FPGA模块2的SPI接口输出为高阻态,从而保证只有控制器模块1的SPI接口控制配置模块3。
步骤S102还进一步包括以下过程:控制器模块1去掉FPGA配置文件的校验位,取出有效数据,并求出有效数据的长度,并将有效数据的长度存储到FPGA模块2的片外存储器的最高四个字节中,同时读出有效数据长度,校验有效数据的长度是否与写数据的长度保持一致,以验证控制器模块1是否能够对配置模块3进行正常的读写操作。
如果上述步骤能够正常执行,则说明控制器模块1能够对配置模块3进行正常的读写操作,控制器模块1根据FPGA配置文件的长度,求出总共要写的页长度N,然后从第0页开始,按页循环擦除配置模块3的前N页,操作完成后,按页循环读出前N页的数据,并校验每一字节的数据是否都为FF,以验证数据擦除是否成功。
步骤S102还进一步包括以下过程:控制器模块1从第0页开始,按页循环将FPGA配置程序数据写到配置模块3中,操作完成后,将前N页数据读出和原来待写入的数据进行比较,校验数据是否完全一致,以确保写入配置模块3中的数据完全正确。
步骤S103还进一步包括以下过程:控制器模块1通过第二GPIO接口控制缓冲器模块4输出使能信号为无效电平,关断缓冲器模块4输出,禁止控制器模块1的SPI接口连接到配置模块3的SPI接口,同时向FPGA模块2的配置信号端送出高电平,使能FPGA模块2的配置信号端,FPGA模块2通过Master SPI模式读出配置模块3中的配置信息,使新的FPGA配置文件生效,通过CPU远程更新FPGA配置文件的过程成功完成。
该装置及其方法可以避免通过JTAG接口操作的繁琐,只需输入下载FPGA配置文件的指令,其它操作完全由软件自动完成,不需要模块的打开操作、不需要下载电缆的插拔、不需要专有软件。特别是在基于以太网通信系统中,通过远程下载命令完成整个FPGA配置文件的下载。当系统需要更新升级FPGA 配置文件时,通过以太网网口、串口或无线网口或直接从文件系统将配置文件发送给控制器模块1,由控制器模块1程序更新完成FPGA配置文件的下载。这种方法可以不需要任何硬件操作和专业软件的配合,只需要输入更新FPGA配置文件的命令操作就可以更新FPGA的配置文件。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同替换、等效变化及修饰,均仍属于本发明技术方案保护的范围内。

Claims (10)

1.一种通过CPU远程更新FPGA的装置,其特征在于,包括:控制器模块(1)、 FPGA模块(2)、配置模块(3)和缓冲器模块(4),控制器模块(1)通过有线或无线方式与上位机(5)相连,当需要更新升级FPGA 配置文件时,所述控制器模块(1)从所述上位机(5)下载FPGA配置文件,所述控制器模块(1)将FPGA配置文件写入至所述配置模块(3)中;控制器模块(1)的第二GPIO接口与缓冲器模块(4)的使能端相连,控制器模块(1)的SPI接口与缓冲器模块(4)的数据输入端相连,控制器模块(1)的第一GPIO接口与FPGA模块(2)的配置信号端相连,缓冲器模块(4)的数据输出端分别与FPGA模块(2)的SPI接口和配置模块(3)的SPI接口相连;所述缓冲器模块(4)用于隔离所述控制器模块(1)与配置模块(3)之间的联系,所述缓冲器模块(4)的通断由所述控制器模块(1)控制,在所述控制器模块(1)需要访问所述配置模块(3)时,所述控制器模块(1)控制所述缓冲器模块(4)开通,所述FPGA模块(2)的管脚处于高阻态;在其他时段,所述控制器模块(1) 控制所述缓冲器模块(4)关断;当所述控制器模块(1)向所述配置模块(3)烧写程序结束后,关断所述缓冲器模块(4),断开所述控制器模块(1)与配置模块(3)之间的联系,不用重上电或重启,通过控制所述FPGA模块(2)的管脚实现所述FPGA模块(2)的重新配置。
2.根据权利要求1所述的一种通过CPU远程更新FPGA的装置,其特征在于:所述的上位机(5)向控制器模块(1)发送更新FPGA配置文件命令,控制器模块(1)接收到命令后,自动下载上位机(5)上的FPGA配置文件,将FPGA配置文件存储到控制器模块(1)的保留内存中,然后通过控制器模块(1)的第一GPIO接口向FPGA模块(2)发送控制命令,使FPGA模块(2)的SPI接口输出高阻,同时通过第二GPIO接口使能缓冲器模块(4),并通过控制器模块(1)的SPI接口将FPGA配置文件按块写入到配置模块(3)中,当FPGA配置文件写完后,再通过第二GPIO接口禁用缓冲器模块(4),同时向FPGA模块(2)发送重新配置命令并重新启动装置;装置重新启动后,FPGA模块(2)通过SPI接口将存储在配置模块(3)中新的FPGA配置文件自动下载至 FPGA模块(2)中,新的FPGA配置文件生效;所述FPGA模块(2)包括M[2:0]管脚、VS[2:0]管脚、DONE管脚、OE管脚、PROG_B管脚和INIT_B管脚,在所述控制器模块(1)访问所述配置模块(3)时,通过拉低所述PROG_B管脚和OE管脚的电平使能所述缓冲器模块(4),所述FPGA模块(2)的所有管脚呈高阻态;当所述控制器模块(1)向所述配置模块(3)烧写程序结束后,所述PROG_B管脚和OE管脚释放或拉高,关断所述缓冲器模块(4),断开所述控制器模块(1)与配置模块(3)之间的联系,所述PROG_B管脚由低到高的跳变启动所述FPGA模块(2)自动加载配置程序;在所述控制器模块(1)加载完配置程序之后,不用重上电或重启,通过控制所述FPGA模块(2)的PROG_B管脚实现所述FPGA模块(2)的重新配置。
3.根据权利要求2所述的一种通过CPU远程更新FPGA的装置,其特征在于:当所述FPGA模块(2)上电后,所述PROG_B管脚的电平拉低,复位所述FPGA模块(2),初始化配置寄存器,所述PROG_B管脚释放开始所述FPGA模块(2)配置过程,若外部驱动所述PROG_B管脚的电平持续拉低,则所述FPGA模块(2)的所有I/O管脚处于高阻态,直到释放所述PROG_B管脚,配置过程开始,否则所述FPGA模块(2)的I/O管脚一直处于高阻态;所述PROG_B管脚释放后,所述FPGA模块(2)驱动所述INIT_B管脚为低电平,清空配置寄存器,待所述INIT_B管脚返回为高电平时,所述FPGA模块(2)采集M[2:0]、VS[2:0]管脚上的信息,开始启动配置过程,下载数据流;配置期间若出现CRC校验错误,则所述INIT_B管脚输出低电平,表明配置不成功;配置过程中,所述INIT_B管脚为双向的OD门,配置过程结束后,所述FPGA模块(2)驱动DONE管脚输出高电平,表明配置成功,在整个配置过程中,所述DONE管脚输出低电平。
4.根据权利要求1至3中任一项所述的一种通过CPU远程更新FPGA的装置,其特征在于:所述的控制器模块(1)与上位机(5)之间通过基于TCP/IP的标准以太网协议进行通信;所述的缓冲器模块(4)包括两片总线缓冲器芯片,两片总线缓冲器芯片相互并联,所述的控制器模块(1)采用基于FreeScale的MPC5200B芯片,所述的 FPGA模块(2)采用Xilinx的XC3S200AN芯片,所述的配置模块(3)采用SPI Flash芯片,所述通过CPU远程更新FPGA的装置采用基于VxWorks的操作系统。
5.一种利用权利要求1至4中任一项所述装置通过CPU远程更新FPGA的方法,其特征在于,包括以下步骤:
S100:上位机(5)向控制器模块(1)发送更新FPGA配置文件命令,控制器模块(1)接收到命令后,自动下载上位机(5)上的FPGA配置文件,并将FPGA配置文件存储到控制器模块(1)的保留内存中;
S101:通过控制器模块(1)的第一GPIO接口向FPGA模块(2)发送控制命令,使FPGA模块(2)的SPI接口输出高阻,并通过第二GPIO接口使能缓冲器模块(4);
S102:通过控制器模块(1)的SPI接口将FPGA配置文件按块写入到配置模块(3)中;
S103:当FPGA配置程序数据写完后,再通过第二GPIO接口禁用缓冲器模块(4);
S104:控制器模块(1)向FPGA模块(2)发送重新配置命令,并重新启动装置;
S105:装置重新启动后,FPGA模块(2)通过SPI接口将存储在配置模块(3)中新的FPGA配置文件自动下载至 FPGA模块(2)中,新的FPGA配置文件生效。
6.根据权利要求5所述的一种通过CPU远程更新FPGA的方法,其特征在于:所述的步骤S100还包括以下过程:通过CPU远程更新FPGA的装置通过上位机(5)有线端口或无线端口连接上控制器模块(1),在控制器模块(1)的内存中开辟一块保留内存空间,选择好FPGA配置文件,并将FPGA配置文件下载到保留内存中,下载完成后,对FPGA配置文件进行CRC校验,检验下载FPGA配置文件的正确性,若不正确,则重新下载FPGA配置文件。
7.根据权利要求6所述的一种通过CPU远程更新FPGA的方法,其特征在于:所述的步骤S101还包括以下过程:控制器模块(1)初始化SPI接口,并配置好合适的波特率,并通过控制器模块(1)的第二GPIO接口使能连接至缓冲器模块(4),使控制器模块(1)的SPI接口通过缓冲器模块(4)连接至配置模块(3)的SPI接口,同时通过控制器模块(1)的第一GPIO接口控制FPGA模块(2)的配置信号端,使FPGA模块(2)处于编程状态,此时FPGA模块(2)的SPI接口输出为高阻态,从而保证只有控制器模块(1)的SPI接口控制配置模块(3)。
8.根据权利要求7所述的一种通过CPU远程更新FPGA的方法,其特征在于:所述的步骤S102还包括以下过程:控制器模块(1)去掉FPGA配置文件的校验位,取出有效数据,并求出有效数据的长度,并将有效数据的长度存储到FPGA模块(2)的片外存储器的最高四个字节中,同时读出有效数据长度,校验有效数据的长度是否与写数据的长度保持一致,以验证控制器模块(1)是否能够对配置模块(3)进行正常的读写操作;如果控制器模块(1)能够对配置模块(3)进行正常的读写操作,控制器模块(1)根据FPGA配置文件的长度,求出总共要写的页长度N,然后从第0页开始,按页循环擦除配置模块(3)的前N页,操作完成后,按页循环读出前N页的数据,并校验每一字节的数据是否都为FF,以验证数据擦除是否成功。
9.根据权利要求8所述的一种通过CPU远程更新FPGA的方法,其特征在于:所述的步骤S102还包括以下过程:所述的控制器模块(1)从第0页开始,按页循环将FPGA配置程序数据写到配置模块(3)中,操作完成后,将前N页数据读出和原来待写入的数据进行比较,校验数据是否完全一致,以确保写入配置模块(3)中的数据完全正确。
10.根据权利要求9所述的一种通过CPU远程更新FPGA的方法,其特征在于:所述的步骤S103还包括以下过程:所述的控制器模块(1)通过第二GPIO接口控制缓冲器模块(4)输出使能信号为无效电平,关断缓冲器模块(4)输出,禁止控制器模块(1)的SPI接口连接到配置模块(3)的SPI接口,同时向FPGA模块(2)的配置信号端送出高电平,使能FPGA模块(2)的配置信号端,FPGA模块(2)通过Master SPI模式读出配置模块(3)中的配置信息,使新的FPGA配置文件生效。
CN201210029563.4A 2012-02-10 2012-02-10 一种通过cpu远程更新fpga的装置及其方法 Active CN102609287B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210029563.4A CN102609287B (zh) 2012-02-10 2012-02-10 一种通过cpu远程更新fpga的装置及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210029563.4A CN102609287B (zh) 2012-02-10 2012-02-10 一种通过cpu远程更新fpga的装置及其方法

Publications (2)

Publication Number Publication Date
CN102609287A CN102609287A (zh) 2012-07-25
CN102609287B true CN102609287B (zh) 2015-08-05

Family

ID=46526685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210029563.4A Active CN102609287B (zh) 2012-02-10 2012-02-10 一种通过cpu远程更新fpga的装置及其方法

Country Status (1)

Country Link
CN (1) CN102609287B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3226130A1 (en) * 2016-03-28 2017-10-04 Simmonds Precision Products, Inc. Reconfigurable control of digital sensors

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866900B (zh) * 2012-08-03 2016-04-13 浙江昱能科技有限公司 更新fpga控制单元的配置程序的方法及系统
CN102868734B (zh) * 2012-08-30 2015-09-16 长春迪瑞医疗科技股份有限公司 一种用于全自动生化分析仪的在线升级方法及其系统
CN103809717B (zh) * 2012-11-09 2017-04-12 华为技术有限公司 复位方法和网络设备
CN103019786A (zh) * 2012-12-12 2013-04-03 上海派芬自动控制技术有限公司 一种控制器升级方法及系统
CN103902303A (zh) * 2012-12-26 2014-07-02 中国航空工业集团公司第六三一研究所 基于配置表的程序固化方法
CN103049944B (zh) * 2012-12-31 2016-03-23 株洲南车时代电气股份有限公司 内燃机车运行数据记录装置
CN103136028A (zh) * 2013-03-11 2013-06-05 西北工业大学 一种基于fpga的flash存储器远程在线升级方法
CN103617056B (zh) * 2013-11-25 2017-02-01 广东威创视讯科技股份有限公司 Fpga逻辑代码的在线升级方法和装置
CN105278976B (zh) * 2014-07-08 2019-05-17 南车株洲电力机车研究所有限公司 一种fpga重构装置、系统及方法
CN105467921A (zh) * 2014-09-11 2016-04-06 沈阳机床(集团)设计研究院有限公司上海分公司 一种软plc模块的远程在线数据更新系统及方法
CN104199707A (zh) * 2014-09-12 2014-12-10 武汉精测电子技术股份有限公司 对fpga进行升级的系统和方法
CN104503813A (zh) * 2015-01-19 2015-04-08 中国人民解放军国防科学技术大学 一种fpga远程加载大容量配置位流文件的方法
CN104572211B (zh) * 2015-01-23 2017-10-10 武汉精测电子技术股份有限公司 基于arm的fpga程序多镜像加载方法
CN104636302A (zh) * 2015-03-09 2015-05-20 清华大学 实验装置、实验客户端、实验系统及其实验方法
CN104881312B (zh) * 2015-06-02 2017-11-03 嘉应学院 一种fpga逻辑代码迭代升级的方法及电路
CN105159731B (zh) * 2015-10-12 2018-09-28 中国电子科技集团公司第五十四研究所 一种fpga配置文件远程升级的装置
CN105573798B (zh) * 2015-12-22 2019-03-01 北京华峰测控技术有限公司 一种可快速重新配置fpga的方法及电路
CN105550004B (zh) * 2016-01-05 2018-11-23 新达通科技股份有限公司 一种多系统的升级装置及方法
CN105677358A (zh) * 2016-01-25 2016-06-15 深圳市同创国芯电子有限公司 一种可编程逻辑器件配置方法及系统
CN105760189B (zh) * 2016-01-29 2019-03-12 北京润科通用技术有限公司 一种fpga配置数据下载装置及方法
CN105955783A (zh) * 2016-05-09 2016-09-21 浙江大学 一种基于fpga控制的远程fpga逻辑代码的下载方法
CN106445613B (zh) * 2016-10-11 2020-01-31 武汉虹信通信技术有限责任公司 一种代码升级方法及系统
CN106598650A (zh) * 2016-11-25 2017-04-26 积成电子股份有限公司 基于光纤通信的fpga程序在线升级的装置及方法
CN107643902A (zh) * 2017-09-20 2018-01-30 安徽皖通邮电股份有限公司 一种存储器烧录装置
CN108170490A (zh) * 2017-12-07 2018-06-15 中国航空工业集团公司西安航空计算技术研究所 一种ima系统数据加载架构及加载方法
CN107908418B (zh) * 2017-12-12 2021-03-30 上海赛治信息技术有限公司 光纤通道节点卡的逻辑程序升级方法及光纤通道总线设备
CN108572831B (zh) * 2017-12-26 2021-07-30 中车株洲电力机车研究所有限公司 一种软件在线更新升级系统及方法
CN109039736A (zh) * 2018-07-31 2018-12-18 郑州合撷亨商贸有限公司 一种多级无线异步更新配置程序的系统
CN108664264A (zh) * 2018-08-16 2018-10-16 成都爱斯顿科技有限公司 一种基于cpu通过jtag方式远程更新fpga的装置和方法
CN110162321B (zh) * 2019-05-06 2023-07-28 晶晨半导体(上海)股份有限公司 一种引导加载程序的更新方法
CN111414182B (zh) * 2020-03-30 2023-09-19 郑州智驱科技有限公司 一种基于spi的fpga远程升级方法
CN111756858B (zh) * 2020-07-03 2023-05-26 潍柴动力股份有限公司 嵌入式设备的远程开发处理系统、方法及装置
CN112181460B (zh) * 2020-09-27 2024-01-16 深圳市豪恩声学股份有限公司 程序固件升级方法、装置、电子设备及存储介质
CN112732635A (zh) * 2021-01-11 2021-04-30 中国船舶重工集团公司第七0七研究所 一种基于对spi flash在线更新的fpga重构系统及其方法
CN116088363B (zh) * 2022-11-25 2023-11-14 合肥中科深谷科技发展有限公司 一种基于模型设计的机器人驱控一体化控制系统
CN117171097A (zh) * 2023-08-31 2023-12-05 中科驭数(北京)科技有限公司 一种现场可编程门阵列远程加载方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987787A (zh) * 2006-12-06 2007-06-27 华为技术有限公司 一种在线升级逻辑器件的方法和系统
CN101431441A (zh) * 2008-12-12 2009-05-13 北京邮电大学 一种内部植入cpu的fpga系统在线升级的方法
CN201349208Y (zh) * 2008-12-23 2009-11-18 康佳集团股份有限公司 一种fpga多模式配置电路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987787A (zh) * 2006-12-06 2007-06-27 华为技术有限公司 一种在线升级逻辑器件的方法和系统
CN101431441A (zh) * 2008-12-12 2009-05-13 北京邮电大学 一种内部植入cpu的fpga系统在线升级的方法
CN201349208Y (zh) * 2008-12-23 2009-11-18 康佳集团股份有限公司 一种fpga多模式配置电路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3226130A1 (en) * 2016-03-28 2017-10-04 Simmonds Precision Products, Inc. Reconfigurable control of digital sensors

Also Published As

Publication number Publication date
CN102609287A (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
CN102609287B (zh) 一种通过cpu远程更新fpga的装置及其方法
CN102609286B (zh) 一种基于处理器控制的fpga配置程序远程更新系统及其方法
CN103559053B (zh) 一种板卡系统及通信接口卡fpga在线升级方法
CN102999350B (zh) 一种数字信号处理平台中fpga程序升级在线下载方法
CN107479913A (zh) 一种fpga配置多启动低资源占用更新方法及实施系统
CN105320531A (zh) 一种基于MicroBlaze软核的FPGA软件在线升级方法
CN102855146A (zh) 固件更新系统及方法
CN110941444B (zh) 一种升级配置逻辑电路、方法、系统及可编程逻辑器件
CN104424044A (zh) 伺服器系统
CN101211266A (zh) 一种实现fpga自动下载和在线升级的方法
CN106874054A (zh) 一种直放站内模块程序在线升级方法与系统
CN102520961B (zh) 片外在线可编程的soc系统及其控制方法
CN102622257B (zh) 电表在线自更新方法及其装置
CN103268243A (zh) 一种链式变流器的就地执行单元远程在线升级系统
CN108664264A (zh) 一种基于cpu通过jtag方式远程更新fpga的装置和方法
CN102253844B (zh) 一种启动处理器的方法和设备
CN104077166A (zh) 基于fpga中ip核的epcs与epcq存储器在线升级方法
CN102377423A (zh) Fpga在线配置方法
CN102043636B (zh) 现场可编程门阵列位文件下载的方法及装置
JP6175788B2 (ja) マイクロプログラムを更新可能な電子機器
CN102253845B (zh) 服务器系统
CN105446937A (zh) 基于可编程芯片的电路板及其控制方法
CN110096291A (zh) 电源管理芯片升级电路、方法及网络设备
CN211015473U (zh) 一种升级配置逻辑电路、可编程逻辑器件及升级配置系统
CN1677346A (zh) 可编程器件程序更新方法及可更新程序的板卡

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169

Patentee after: ZHUZHOU CRRC TIMES ELECTRIC Co.,Ltd.

Address before: 412001 Hunan Province, Zhuzhou Shifeng District Tian Xin era Road No. 169

Patentee before: ZHUZH CSR TIMES ELECTRIC Co.,Ltd.