一种板卡系统及通信接口卡FPGA在线升级方法
技术领域
本发明涉及通信技术领域,特别涉及一种板卡系统及通信接口卡FPGA在线升级方法。
背景技术
为了灵活应对各行业用户的需求,路由器等通信设备大量采用模块化设计,同一款主板通过配置不同的通信接口卡,可以实现多种接口接入,为客户提供了丰富、快捷、灵活的组网方式。由于通信接口卡的种类众多,并且接口类型丰富,在通信接口板卡设计中常采用FPGA(field-programmable logic device,现场可编程门阵列)芯片来实现接口协议或接口控制等功能。
设计人员使用Verilog或VHDL语言(hardware description language,硬件描述语言)编程,通过编译工具生成配置文件,FPGA加载配置文件后,即可实现设计需要的功能。FPGA内部采用SRAM工艺,由于SRAM的易失性,在断电的情况下FPGA通过配置文件形成的逻辑功能将丢失,故FPGA在使用前需有配置的过程,会首先进行配置文件的加载。设计上通常使用flash(非易失性存储器)来存储FPGA的配置文件。
现有技术中,FPGA加载配置文件方式有两种:主动加载和被动加载;主动加载方式即由FPGA主动读取存储器中的配置文件;被动加载方式即通过外部控制器件,例如CPU(中央处理器)、CPLD(可编程逻辑器件)等,模拟FPGA加载时序,将存储在flash中的配置文件加载到FPGA中。
当使用带FPGA的产品设计完成之后,其配置文件也就固定下来了。通过烧写器编程的方式将FPGA的配置文件烧录到存储器中,在产品生产时焊接带有配置文件的存储芯片。如果需要改变或增加FPGA的逻辑功能,就需要更改FPGA的配置文件,尤其客户正在使用带FPGA的产品也存在升级的需求,因此实现FPGA的配置文件的在线升级功能很有必要。
为了解决FPGA在线升级的问题,在现有技术中主要有以下三种方案进行FPGA配置文件的在线升级:
方案1:其实现系统结构如图1所示,在本方案中将FPGA设置成被动加载方式,其配置管脚和CPLD相连,CPLD和存储配置文件的存储器相连,实现CPLD加载配置FPGA。在上电的时候CPLD读取存储器中的配置文件,再写入FPGA中完成配置。当需要进行FPGA升级的时候,CPU将新的配置文件通过CPLD写入到存储器中覆盖原来的配置文件。复位FPGA重启配置流程或系统断电重启后,CPLD从存储器中读取到的就是更新后的配置文件。
方案2:其实现系统结构如图2所示,在本方案中将FPGA设置成被动加载方式,直接通过CPU的GPIO(通用输入输出)管脚软件模拟FPGA加载时序,对FPGA进行配置。配置文件可存储在CPU挂接下的存储器中,或者与CPU运行的主程序合为一体,在CPU程序运行加载后将配置文件写入FPGA中。如果需要更新FPGA配置文件,可以通过更新存储器中配置文件的方式进行,或跟随CPU主程序的更新一起进行升级。
方案3:其实现系统结构如图3所示,在本方案中将FPGA设置成主动加载方式,CPU和存储器连接到切换开关上,CPU控制切换开关通道选择,切换开关输出连接到FPGA。在上电时候,CPU控制切换开关,将存储器与FPGA选通,FPGA主动读取存储器中的配置文件完成配置,当需要进行FPGA升级的时候,CPU控制切换开关,将存储器与CPU选通,通过CPU将新的配置文件写入到存储器中覆盖原来的配置文件。复位FPGA重启FPGA整个配置流程或系统断电重启后,CPU控制切换开关,将存储器与FPGA选通,FPGA主动读取存储器中更新后的配置文件完成配置。
现有技术中的上述三种解决方案中,存在以下缺陷:1、不适用于主板+多通信接口卡分离方式系统的FPGA在线升级,通信接口卡的功能较单一,一般无控制单元配合FPGA使用,对于多槽位接口卡的设备,由于通信接口卡种类多样化,部分种类通信接口卡上有FPGA芯片,而另外部分种类的通信接口卡上没有FPGA芯片,故通信接口卡上的FPGA芯片适合设置成主动加载方式,将存储器与FPGA相连,存储器不适合挂接在主板的CPLD或CPU上;2、对于FPGA配置文件的升级,需有专门的FPGA配置通道,成本高、可扩展性差。本发明提供的FPGA在线升级方法,不需专门的FPGA配置通道,共享主板对通信接口卡的管理通道,通道资源得到复用,可扩展性好;3、对于FPGA配置文件的升级,可靠性不高,如果升级有问题版本的FPGA程序或升级过程中断电,容易造成FPGA在线升级失败,导致系统相关功能异常。
发明内容
本发明所要解决的技术问题是:提出一种板卡系统及通信接口卡FPGA在线升级方法,解决传统技术中FPGA在线升级方式不适合主板+多通信接口卡分离方式系统的FPGA在线升级,且升级方式存在成本高、可靠性低的问题。
本发明解决上述技术问题所采用的方案是:
一种板卡系统,包括主板、n个接口卡,所述主板包括CPU单元、CPLD单元及n个槽位,各个槽位与所述CPLD单元相连,所述CPLD单元与CPU单元相连,所述n个接口卡通过n个连接器一一对应插接在n个槽位上与主板实现信号互联,所述n≥2且为整数;
所述CPLD单元包括选通模块和计数模块,所述接口卡包括FPGA单元、切换开关、主flash模块、从flash模块;所述主flash模块和从flash模块通过切换开关连接FPGA单元。
具体的,所述接口卡与主板之间的互联信号包括:管理通道信号、FPGA复位信号、FPGA配置结束信号、数据通道信号、切换开关通道信号。
进一步,所述各个槽位与所述CPLD单元之间通过SPI总线建立管理通道。
进一步,所述主flash模块、从flash模块与切换开关之间及切换开关与所述FPGA单元之间通过SPI总线建立配置通道。
进一步,所述FPGA单元包括配置模块,所述配置模块用于将主板送入的管理通道信号时序转化为配置通道时序,从主flash模块或从flash模块中读取配置文件对FPGA进行配置。
进一步,所述CPLD单元中的选通模块用于根据升级需要选通某个槽位与所述CPLD单元中的管理通道;所述CPLD单元中的计数模块用于在开始对FPGA进行配置时进行计时。
进一步,所述主flash模块用于对配置文件进行存储,在收到新的配置文件时将该新的配置文件写入主flash模块中并覆盖原来存储的配置文件;所述从flash模块用于在主flash模块写入新的配置文件之前对原来的配置文件进行备份。
进一步,所述切换开关用于在CPLD单元发出的切换开关通道信号的作用下选通与主flash模块之间的配置通道或者选通与从flash模块之间的配置通道。
此外,本发明的另一目的还在于提出一种通信接口卡FPGA在线升级方法,其包括以下步骤:
A.主板的CPU单元将新的配置文件和需要升级的接口卡所在槽位信息传送给CPLD单元;
B.CPLD单元通过槽位信息选通该槽位对应的管理通道;
C.CPLD单元将该新的配置文件通过管理通道发送给对应接口卡的FPGA单元;
D.该对应接口卡的FPGA单元将管理通道信号时序转化为配置通道信号时序,并将配置通道信号发送给切换开关;
E.切换开关选通主flash模块与切换开关之间的配置通道;
F.FPGA将该新的配置文件发送给主flash模块;
G.主flash模块写入该新的配置文件并覆盖原来存储的配置文件;
H.CPLD单元复位该对应接口卡的FPGA单元;
I.在复位完成后,切换开关选通主flash模块与切换开关之间的配置通道,FPGA单元从主flash模块中读取该新的配置文件,进入配置过程;
J.CPLD单元对配置过程进行计时,判断在预定时间内FPGA单元是否配置成功,如果配置成功,则本次升级流程结束;否则,进入步骤h;
K.CPLD单元复位FPGA单元,在复位完成后控制切换开关选通从flash模块与切换开关之间的配置通道;
L.FPGA单元从从flash模块中读取备份的配置文件,进入配置过程;
M.CPLD单元对配置过程进行计时,判断在预定时间内FPGA单元是否配置成功,如果配置成功,则本次升级流程结束,否则,返回步骤H。
进一步,步骤J和步骤M中,所述CPLD单元判断在预定时间内FPGA单元是否配置成功的方法时:CPLD单元判断在预定的时间内,FPGA发送给CPLD单元的FPGA配置DONE信号是否由低电平变为高电平,如果是,则FPGA单元配置成功;否则,FPGA单元未配置成功。
本发明的有益效果是:本发明实现的板卡系统不需专门的FPGA配置通道,共享主板对通信接口卡的管理通道,通道资源得到复用,可扩展性好;对于通信接口卡设计,无需增加专门的CPLD等控制单元芯片对FPGA进行配置,从而降低了通信接口卡的设计成本,适用于主板+多接口卡分离式的系统;本发明实现的FPGA在线升级方法可以及时地、方便地进行升级维护,使产品应用更灵活,同时由于本发明采用双闪存机制存储配置文件,在升级失败时,选择从flash模块中存储的备份配置文件进行配置,从而保证系统的正常运行,增加了系统的可靠性。
附图说明
图1为现有技术中FPGA配置文件在线升级的方案1的实现系统结构示意图;
图2为现有技术中FPGA配置文件在线升级的方案2的实现系统结构示意图;
图3为现有技术中FPGA配置文件在线升级的方案3的实现系统结构示意图;
图4为本发明的板卡系统实施例的结构示意图;
图5为本发明中FPGA在线升级方法流程图。
具体实施方式
本旨在提出一种板卡系统及通信接口卡FPGA在线升级方法,解决传统技术中FPGA在线升级方式不适合主板+多通信接口卡分离方式系统的FPGA在线升级,且升级方式存在成本高、可靠性低的问题。
参见图4,本例中的板卡系统包括主板,主板上包括CPU单元、CPLD单元及5个槽位,每个槽位上对应设置有一个连接器,各个槽位与所述CPLD单元相连,所述CPLD单元与CPU单元相连;由于该主板具备5个槽位,各个槽位与CPLD之间通过SPI总线建立管理通道,因而其对应支持5个通信接口卡;即5个通信接口卡可以通过5个连接器与主板之间实现信号互联;互联信号包括:管理通道信号、FPGA复位信号(PROG_B信号)、FPGA配置结束信号(DONE信号)、数据通道信号、切换开关通道信号(SEL信号);
本例中的通信接口卡在设计上,每一个接口卡都包括FPGA单元,切换开关、主flash模块、从flash模块;所述主flash模块和从flash模块通过切换开关连接FPGA单元。本发明设计两个flash模块是为了增强系统的可靠性,即在采用主flash模块中的配置文件配置失败后,通过切换开关切换至从flash模块中,读取存储的备份配置文件,保证系统能够正常工作。
在具体实现上,主板上的CPLD单元包括选通模块和计数模块,FPGA单元包括配置模块;其中选通模块用于根据升级需要选通某个槽位与所述CPLD单元中的管理通道;所述CPLD单元中的计数模块用于在开始对FPGA进行配置时进行计时;所述配置模块用于将主板送入的管理通道信号时序转化为配置通道时序,从主flash模块或从flash模块中读取配置文件对FPGA进行配置。
本发明中的通信接口卡FPGA在线升级方法流程参见图5,其包括以下步骤:
A.主板的CPU单元将新的配置文件和需要升级的接口卡所在槽位信息传送给CPLD单元;
B.CPLD单元通过槽位信息选通该槽位对应的管理通道;在本步骤中,CPLD单元利用选通模块通过槽位信息选通该槽位对应的管理通道。
C.CPLD单元将该新的配置文件通过管理通道发送给对应接口卡的FPGA单元;
D.该对应接口卡的FPGA单元将管理通道信号时序转化为配置通道信号时序,并将配置通道信号发送给切换开关;
E.切换开关选通主flash模块与切换开关之间的配置通道;在本步骤中,CPLD默认控制切换开关选通主flash模块与切换开关之间的配置通道;
F.FPGA将该新的配置文件发送给主flash模块;在本步骤中,FPGA将该新的配置文件通过主flash模块与切换开关之间的配置通道发送给主flash模块。
G.主flash模块写入该新的配置文件并覆盖原来存储的配置文件;
H.CPLD单元复位该对应接口卡的FPGA单元;
I.在复位完成后,切换开关选通主flash模块与切换开关之间的配置通道,FPGA单元从主flash模块中读取该新的配置文件,进入配置过程;
J.CPLD单元对配置过程进行计时,判断在预定时间内FPGA单元是否配置成功,如果配置成功,则本次升级流程结束;否则,进入步骤h;在本步骤中,利用CPLD单元中的计时模块对配置过程进行计时,通过判断在预定时间内FPGA送给主板CPLD的DONE信号电平来判断是否配置成功,如果在预定时间内FPGA发送的DONE信号电平由低电平变为高电平,则说明配置成功,由于配置的为新的配置文件,即本次FPGA升级成功;如果在预定时间内FPGA发送的DONE信号电平一直为低电平,则说明未配置成功,即升级失败,为了保证系统正常工作,需要对本次配置升级进行修复,则进入后续步骤。
K.CPLD单元复位FPGA单元,在复位完成后控制切换开关选通从flash模块与切换开关之间的配置通道;在本步骤中,在FPGA单元完成复位后,切换开关在CPLD发送的切换开关通道信号的作用下选通从flash模块与切换开关之间的配置通道;
L.FPGA单元从从flash模块中读取备份的配置文件,进入配置过程;在本步骤中,所述的备份的配置文件是指在主flash模块写入新的配置文件之前对原来的配置文件进行备份的文件。
M.CPLD单元对配置过程进行计时,判断在预定时间内FPGA单元是否配置成功,如果配置成功,则本次升级流程结束,否则,返回步骤H。在本步骤中,同样通过判断DONE信号电平的状态来判断FPGA单元是否配置成功,即如果在预定时间内FPGA发送的DONE信号电平由低电平变为高电平,则说明配置成功,那么此时FPGA中的配置文件为本次升级配置操作以前的配置文件,虽然本次升级未成功,但是仍能保证系统能够正常工作;如果在预定时间内FPGA发送的DONE信号电平一直为低电平,则说明未配置成功,则此时可以返回步骤H循环加载配置文件,直至FPGA加载配置文件成功或者加载超时报错,如果加载超时报错,则主板CPU单元可以打印该错误信息给用户查看。
升级完一个槽位的接口卡后,通过CPLD的通道模块可改变通道选择,连续升级另外槽位有FPGA芯片的通信接口卡。在通信接口卡正常运行时,主板通过管理通道可对接口卡实时管理和访问。
需要说明的是,本发明要求保护的范围包含但不仅限于上述实施例,本领域技术人员根据以上描述在不脱离本发明精神实质的情况下对本发明的技术内容作出的等同修改/替换,均在本发明的保护范围之内。