远程升级现场可编程门阵列的系统、接口卡及方法

文档序号:6471305阅读:220来源:国知局
专利名称:远程升级现场可编程门阵列的系统、接口卡及方法
技术领域
本发明涉及远程升级技术领域,具体涉及远程升级现场可编程门阵列的 系统、接口卡及方法。
背景技术
为了灵活应对各行业用户的各种需求,路由器等通信设备已经大量应用 了模块化设计,同一款主板通过配置不同的接口卡,可以实现多种不同的接 口接入,为很多行业用户提供了更为丰富、方便、灵活的组网的方式,节省 了用户的投资并减少了用户网络维护的难度。目前应用的接口卡中,大量使
用了后端为外围部件互联(PCI, Peripheral Component Interconnect)接口 、 局部总线(Local bus )接口的总线方式,后续可能还会使用高速PCI ( PCIE )
总线等。
由于接口卡的种类众多,并且各种接口类型丰富,在板卡设计中会经常 使用到大规模现场可编程门阵列(FPGA, Field Programmable Gate Array ) 芯片来实现接口协议或者接口控制。目前的路由器产品已经在多款接口卡上 应用了FPGA芯片。由于FPGA通常开发复杂度高,经常会涉及到版本的升 级。即便已发放到市场上的FPGA版本也存在版本升级的风险,因此实现 FPGA版本的远程升级功能很有必要。
FPGA的远程升级除了要有一定的数据通道将升级数据传递到FPGA芯 片上之外,还需要若干控制信号的介入,才能控制FPGA实现自我配置。但 对于接口卡这种特殊形式的模块,其同主板的连接往往就是纯粹的Local bus 总线、PCI总线等,没有多余可用的通用输入输出(GPIO, General Purpose Input Output)管脚,如图1所示。因此,要实现FPGA的远程升级就显得格外复杂。
图2为现有的远程升级FPGA的示意图,如图2所示,通常在接口卡上 增加 一 片复杂可编程逻辑器件(CPLD , Complex Programmable Logic Device)。通过CPLD来实现一定的接口配置逻辑,对FPGA进行升级。远 程升级的过程为通过网络将升级数据传输到主板的CPU上,主板的CPU 通过数据通道(PCI总线等)将升级数据传送到CPLD中;然后CPLD按照 一定的配置逻辑来加载FPGA,并激活FPGA,从而实现远程升级。
现有方案的缺点如下
1、 为了能与主板的CPU通信,CPLD必须实现一个复杂的PCI核(PCI core),并且还要完成PCI接口向FPGA配置接口的转换。
2、 为提高升级数据加载效率和避免占用CPU资源,需要CPLD内部的 PCI core工作在Master方式,经PCI桥片仲裁申请到PCI总线后,通过直接 内存访问(DMA, Direct Memory Access )控制器来/人主板内存获取升级数 据( 一般在8Mbits左右)。因为PCI总线以高速Burst方式操作数据,而配 置接口数据率较低,这样就要求CPLD必须自带较多随机访问内存(RAM, Radom Access Memory )资源,设计成内部先入先出(FIFO, First In First Out) 来緩存升级数据块。
3 、接口卡上有CPLD和FPGA两个master设备,必须增加 一级PCI桥 片作为总线仲裁。
4、接口卡上的CPLD和FPGA的PCI core必须同频率设计。但因为CPLD 工艺限制,在CPLD上实现66MHz的PCI core比较困难,因此当FPGA工 作在66MHz时还需要在FPGA和CPLD之间增加 一 级PCI桥片作总线隔离。
总的来说,该方案需要的CPLD规模大、设计复杂,还需增加PCI桥片, 造成整体设计成本偏高。另外,PCI桥片的插入,还会造成FPGA同主板的 通信效率降低。

发明内容
本发明提供远程升级FPGA的系统、接口卡及方法,以降低接口卡的设计 成本。
本发明的技术方案是这样实现的
一种远程升级FPGA的系统,包括主板和接口卡,且,接口卡包括 FPGA、闪存和CPLD,其中
主板,将远程网管发来的升级数据发送给FPGA,并在接收到远程网管发 来的升级指令后,向FPGA发送升级启动指令;
FPGA,将主板发来的升级数据写入闪存,接收主板发来的升级启动指令, 向CPLD输出启动信号;根据CPLD输入的控制信号时序,从闪存读取升级数 据完成配置;
CPLD,接收FPGA发来的启动信号,向FPGA输出一组控制信号时序。 所述FPGA进一步包括用于在配置完成后,向主板发起配置完成中断的 模块,
且,所述主板进一步包括用于接收FPGA上报的配置完成中断,若发现 FPGA版本未更改,则重新向FPGA发送升级启动指令的模块。 一种接口卡,包括FPGA、闪存和CPLD,其中
FPGA,将主板发来的升级数据写入闪存,接收主板发来的升级启动指令, 向CPLD输出启动信号;根据CPLD输入的控制信号时序,从闪存读取升级数 据完成配置;
CPLD,接收FPGA发来的启动信号,向FPGA输出一组控制信号时序。 所述FPGA包括
升级数据加载模块,将主板发来的升级数据写入闪存; 升级启动触发模块,接收主板发来的升级启动指令,向CPLD发送启动 信号;
配置模块,接收CPLD输入的配置启动信号,进入配置模式;接收CPLD输入的配置初始化启动信号,开始配置初始化过程;确定配置初始化完成, 并接收到CPLD输入的配置开始信号,则从闪存读取升级数据进行配置,确 定配置完成,向CPLD输出配置完成信号,检测到CPLD设置的配置完成标 志,产生配置完成中断上报给主板。
所述配置模块进一步包括用于发现从闪存读取升级数据失败,从闪存 中读取备份版本的配置数据完成配置的模块。
所述CPLD包括
启动模块,接收FPGA发来的启动信号,向时序控制模块发送时序启动 指令;
时序控制模块,接收启动模块发来的时序启动指令,产生配置启动信号 输出到FPGA,并开始对配置启动、配置初始化过程计时,根据预设配置启 动时长检测到配置启动过程到时,产生配置初始化启动信号输出到FPGA; 根据预设配置初始化时长检测到配置初始化过程到时,产生配置开始信号输 出到FPGA;接收FPGA输入的配置完成信号,设置配置完成标志。
一种远程升级FPGA的方法,应用在包含主板和接口卡的系统中,其中, 接口卡包括FPGA、闪存和CPLD,该方法包括
FPGA接收主板转发的来自远程网管的升级数据,将该升级数据写入闪存;
FPGA接收主板发来的升级启动指令,向CPLD发送启动信号,根据CPLD 产生的一组控制信号时序从闪存读取升级数据完成配置。
所述FPGA向CPLD发送启动信号之后、FPGA根据CPLD产生的一组控 制信号时序从闪存读取升级数据完成配置之前进一步包括
CPLD接收启动信号,向FPGA发送配置启动信号,并开始对配置启动过 程、配置初始化过程计时;
所述FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据完成 配置包括
FPGA接收配置启动信号,进入配置模式;CPLD根据预设配置启动时长 斗企测到配置启动过程到时时,向FPGA发送配置初始化启动信号,FPGA接收配置初始化启动信号,开始配置初始化过程;CPLD才艮据预设配置初始化时长 检测到配置初始化过程到时时,向FPGA发送配置开始信号,FPGA接收配置 开始信号,从闪存读取升级数据进行配置。
所述FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据完成 配置之后进一步包括
FPGA确定配置完成,向CPLD输出配置完成信号,检测到CPLD设置的 配置完成标志,向主板上报配置完成中断,主板接收该中断后,发现FPGA版 本未更改,则重新向FPGA发送升级启动指令。
所述主板发现FPGA版本未更改之后、重新向FPGA发送升级启动指令之 前进一步包括
主板判断FPGA升级失败次数是否小于预设最大次数,若是,重新向FPGA 发送升级启动指令;否则,向网管上报告警。 预先在闪存中保存备份版本的配置数据;
所述FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据进一 步包括
FPGA发现从闪存读取升级数据失败,则从闪存中读取备份版本的配置 数据完成配置。
与现有技术相比,本发明中,通过FPGA实现升级数据加载,CPLD的 设计只需要简单的控制信号时序,无需在CPLD内设计PCI core,也无需在 CPLD内设计接口转换功能,接口卡内无需PCI桥片,降低了接口卡的设计 成本。同时,接口卡内软硬件接口简单,加载升级速度快(只需几ms), 可靠性高;使用通用的闪存,进一步降低成本。且,本发明中在FPGA升级 时,无需断电重启,可实现在线升级。
本发明实施例中,在闪存中采用双镜像机制,保证了FPGA的可靠性。


图1为现有的接口卡结构示意图;图2为现有的远程升级FPGA的示意图; 图3为本发明实施例提供的远程升级FPGA的系统组成图; 图4为本发明实施例提供的主板的结构示意图; 图5为本发明实施例提供的FPGA的结构示意图; 图6为本发明实施例提供的CPLD的结构示意图; 图7为本发明提供的远程升级FPGA的流程图; 图8为本发明实施例提供的远程升级FPGA的流程图; 图9为本发明实施例提供的CPLD产生控制信号时序PROGRAMn、 INITn和DONE的示意图10为本发明实施例提供的主板对配置完成中断的处理流程图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进 一 步详细的说明。
图3为本发明实施例提供的远程升级FPGA的系统组成图,如图3所示,
该系统包括主板31和接口卡32,其中,接口卡可包括FPGA321、闪存
322和CPLD 323。
主板31与FPGA 321之间的接口可为PCI接口, FPGA 321与闪存322 之间的接口可为串行外围设备接口 ( SPI, Serial Peripheral Interface )。 各部分的功能如下
主板31:接收远程网管发来的升级数据,将升级数据发送到FPGA321; 在接收到远程网管发来的升级指令后,向FPGA 321发送一个升级启动指令。
FPGA 321:接收主板31发来的升级数据,将该升级数据写入闪存322; 接收主板31发来的升级启动指令,向CPLD 323发送一个启动信号;根据 CPLD 323输入的控制信号时序,从闪存322读取升级数据完成配置。
闪存322:保存升级数据。
CPLD 323:接收FPGA 321发来的启动信号,产生用于控制升级过程的 控制信号时序输出到FPGA 321。如图4所示,其中,主板31可包括升级数据传输模块311、升级启 动指示模块312和配置完成中断处理模块313,其中
升级数据传输模块311:接收远程网管发来的升级数据,将升级数据发 送到FPGA321。
升级启动指示模块312:接收远程网管发来的升级指令或接收配置完成 中断处理模块313发来的重启升级指令,向FPGA321发送一个升级启动指令。
配置完成中断处理模块313:接收FPGA 321上报的配置完成中断,在 中断服务程序中从FPGA版本寄存器中读取FPGA版本,若FPGA版本更改, 则对FPGA进行业务配置,并根据业务需要决定是否对接口卡进行复位;若 FPGA版本未更改,则判断FPGA升级次数是否小于最大升级次数,若小于, 则向升级启动指示模块312发送重启升级指令;否则,向网管上报告警。
如图5所示,FPGA321可包括升级数据加载模块3211 、升级启动触 发模块3212和配置模块3213,其中
升级数据加载模块3211:接收主板31发来的升级数据,将该升级数据 写入闪存322。
升级启动触发模块3212:接收主板31发来的升级启动指令,向CPLD 323发送一个启动信号。
配置模块3213:检测到CPLD 323输入的PROGRAMn信号的下降沿, 从正常工作模式进入配置模式,并产生DONE信号的下降沿;检测到CPLD 323输入的PROGRAMn信号的上升沿,开始配置初始化过程;确定配置初 始化完成,并检测到CPLD 323输入的INITn高电平信号,则产生INITn信 号的上升沿,从闪存读取升级数据,根据升级数据进行配置;确定配置完成, 向CPLD 323输出DONE信号的上升沿,检测到CPLD323的配置完成标志, 产生一个配置完成中断上报给主板。
配置模块3213进一步用于,在发现从内存322读取升级数据失败时,
从内存322读取备份版本的配置数据完成配置。这里,闪存322中设置有两个完全对称的配置数据区域, 一个区域用于存放新版本的配置数据(即升级 数据),另一个区域用于存放备份版本的配置数据,该备份版本通常为升级 前的版本。
如图6所示,CPLD 323可包括启动模块3231、时序控制模块3232 和配置完成检测模块3233,其中
启动模块3231:接收FPGA321发来的启动信号,向时序控制模块3232 发送时序启动指令。
时序控制模块3232:预先设置配置启动时长、配置初始化时长;接收 启动模块3231发来的时序启动指令,产生PROGRAMn信号的下降沿输出 到FPGA321,打开配置启动定时器,同时控制INITn信号输出低电平,打 开配置初始化定时器;检测到配置启动定时器到时,产生PROGRAMn信号 的上升沿输出到FPGA 321;检测到配置初始化定时器到时,产生INITn高 电平信号沿输出到FPGA321。
配置完成检测模块3233:检测到FPGA 321输入的DONE信号的上升 沿,设置配置完成标志。
图7为本发明提供的远程升级FPGA的流程图,如图7所示,其具体步 骤如下
步骤701:远程网管通过网络将升级数据传输到主板上,主板通过数据 通道如PCI接口将升级数据传送到接口卡上的FPGA。
步骤702: FPGA通过逻辑接口如SPI接口将升级数据写入接口卡上 的闪存。
步骤703:远程网管向主板发送升级指令,主板接收升级指令,向FPGA 发送升级启动指令,FPGA接收升级启动指令后向接口卡上的CPLD发起一
个启动信号。
此时,FPGA处于User mode (正常工作模式)下。
为了提高启动信号的抗干扰性,FPGA可以将启动信号设计成一个序列。步骤704: CPLD接收FPGA发来的启动信号,产生一组控制信号时序 输出到FPGA, FPGA根据该控制信号时序从闪存读取升级数据完成配置。
图8为本发明实施例提供的远程升级FPGA的流程图,如图8所示,其 具体步骤如下
步骤801:在CPLD上设置配置启动时长、配置初始化时长,将FPGA 的配置完成中断的使能位默认为打开。
由于FPGA在配置完成后需要向主板上报中断,因此,本步骤中需要将 FPGA的配置完成中断的使能位默认为打开。
步骤802:主板通过PCI接口将远程网管发来的升级数据传送到FPGA, FPGA将升级数据写入闪存。
本步骤中,FPGA将升级^:据写入闪存时,FPGA工作在user mode下。
FPGA与闪存间的连接管脚为多用途管脚。该管脚在FPGA工作在不同 模式时,其用途是不同的。在配置模式下,FPGA内部硬件会自动将该连接 管脚设置为配置专用的SPI接口 ,当FPGA工作在user mode下时,该连接 管脚由代码设计编程为SPI接口,以用于FPGA向闪存写入数据。
步骤803:主板接收远程网管发来的升级指令,向FPGA发送一个升级 启动指令,FPGA收到该指令通过SPI接口向CPLD发送一个启动信号。
步骤804: CPLD接收启动信号,产生PROGRAMn信号的下降沿输出 到FPGA,打开配置启动定时器,同时控制INITn信号输出低电平,打开配 置初始化定时器。
配置启动定时器的定时时长等于配置启动时长,配置初始化定时器的定 时时长等于配置初始化时长。
图9给出了 CPLD产生控制信号时序PROGRAMn、 INITn和DONE
的示意图。
步骤805: FPGA检测到PROGRAMn信号的下降沿,从User mode切 换到Configuration mode (配置模式),同时产生DONE信号的下降沿。
步骤806: CPLD ^r测到配置启动定时器到时,产生PROGRAMn信号的上升沿输出到FPGA。
步骤807: FPGA检测到PROGRAMn信号的上升沿,开始配置初始化 过程。
步骤808: CPLD检测到配置初始化定时器到时,产生INITn高电平信 号输出到FPGA。
步骤809: FPGA确定配置初始化完成,并;f企测到INITn高电平信号, 则产生INITn信号的上升沿,从闪存读取升级数据,根据升级数据进行配置。 步骤810: FPGA确定配置完成,产生DONE信号的上升沿。 步骤811: CPLD检测到DONE信号的上升沿,设置配置完成标志。 步骤812: FPGA检测到配置完成标志,产生一个配置完成中断上报给 主板。
例如可利用CPLD上的一个管脚来输出配置完成信号,FPGA检测到 该信号,则产生配置完成中断。
由于在线升级过程的异常断电等原因,FPGA升级会失败,从而导致 FPGA无法正确配置。为了避免升级失败而造成的FPGA配置异常,本发明 实施例中,可以在闪存中采用双镜像机制,即在闪存中设置两个完全对称的 配置数据区域, 一个区域用于存放新版本的配置数据(即升级数据),另一 个区域用于存放备份版本的配置数据。当FPGA在升级过程中,发现升级数 据无法读取时,则切换到另一个区域读取备份版本的配置数据完成配置,这 样,FPGA就可正常启动,并可在启动后重新进行升级。
以下给出主板对配置完成中断的处理
图10为本发明实施例提供的主板对配置完成中断的处理流程图,如图 IO所示,其具体步骤如下
步骤1001:主板接收FPGA上报的配置完成中断,在中断服务程序中 从FPGA版本寄存器中读取FPGA版本。
步骤1002:主板判断FPGA版本是否更改,若是,执行步骤1003;否 则,执行步骤1004。升级成功后,寄存器中的FPGA版本会自动更改为新版本;若升级失败, 则FPGA版本不会发生更改。
步骤1003:主板对FPGA进行业务配置,根据业务需要决定是否对接 口卡进行复位,本流程结束。
步骤1004:主板确定本次升级失败,记录升级失败次数n。
步骤1005:主板判断n〈Nmax是否成立,若是,执行步骤1006;否贝'J, 执行步骤1007。
Nmax为预设最大升级次数。
步骤1006:主板重新向FPGA发送升级启动指令,并在接收到FPGA 发来的配置完成中断后,返回步骤1001。 步骤1007:主板向网管上报告警。
本发明实施例中的FPGA可以采用Lattice ECP2系列FPGA。 以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在
本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在
本发明的保护范围之内。
权利要求
1、一种远程升级现场可编程门阵列FPGA的系统,其特征在于,该系统包括主板和接口卡,且,接口卡包括FPGA、闪存和复杂可编程逻辑器件CPLD,其中主板,将远程网管发来的升级数据发送给FPGA,并在接收到远程网管发来的升级指令后,向FPGA发送升级启动指令;FPGA,将主板发来的升级数据写入闪存,接收主板发来的升级启动指令,向CPLD输出启动信号;根据CPLD输入的控制信号时序,从闪存读取升级数据完成配置;CPLD,接收FPGA发来的启动信号,向FPGA输出一组控制信号时序。
2、 如权利要求l所述的系统,其特征在于,所述FPGA进一步包括用于 在配置完成后,向主板发起配置完成中断的;f莫块,且,所述主板进一步包括用于接收FPGA上报的配置完成中断,若发现 FPGA版本未更改,则重新向FPGA发送升级启动指令的模块。
3、 一种接口卡,其特征在于,该接口卡包括FPGA、闪存和CPLD,其中FPGA,将主板发来的升级数据写入闪存,接收主板发来的升级启动指令, 向CPLD输出启动信号;根据CPLD输入的控制信号时序,从闪存读取升级数 据完成配置;CPLD,接收FPGA发来的启动信号,向FPGA输出一组控制信号时序。
4、 如权利要求3所述的接口卡,其特征在于,所述FPGA包括 升级数据加载模块,将主板发来的升级数据写入闪存; 升级启动触发模块,接收主板发来的升级启动指令,向CPLD发送启动信号;配置模块,接收CPLD输入的配置启动信号,进入配置模式;接收CPLD 输入的配置初始化启动信号,开始配置初始化过程;确定配置初始化完成,并接收到CPLD输入的配置开始信号,则从闪存读取升级数据进行配置,确定配置完成,向CPLD输出配置完成信号,检测到CPLD设置的配置完成标志,产生配置完成中断上报给主板。
5、 如权利要求4所述的接口卡,其特征在于,所述配置模块进一步包 括用于发现从闪存读取升级数据失败,从闪存中读取备份版本的配置数据 完成配置的模块。
6、 如权利要求3至5任一所述的接口卡,其特征在于,所述CPLD包括启动模块,接收FPGA发来的启动信号,向时序控制模块发送时序启动 指令;时序控制模块,接收启动模块发来的时序启动指令,产生配置启动信号 输出到FPGA,并开始对配置启动、配置初始化过程计时,根据预设配置启 动时长检测到配置启动过程到时,产生配置初始化启动信号输出到FPGA; 根据预设配置初始化时长检测到配置初始化过程到时,产生配置开始信号输 出到FPGA;接收FPGA输入的配置完成信号,设置配置完成标志。
7、 一种远程升级FPGA的方法,应用在包含主板和接口卡的系统中, 其中,接口卡包括FPGA、闪存和CPLD,其特征在于,该方法包括FPGA接收主板转发的来自远程网管的升级数据,将该升级数据写入闪存; FPGA接收主板发来的升级启动指令,向CPLD发送启动信号,根据CPLD 产生的一组控制信号时序从闪存读取升级数据完成配置。
8、 如权利要求7所述的方法,其特征在于,所述FPGA向CPLD发送启 动信号之后、FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据 完成配置之前进一步包括CPLD接收启动信号,向FPGA发送配置启动信号,并开始对配置启动过 程、配置初始化过程计时;所述FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据完成 配置包括FPGA接收配置启动信号,进入配置模式;CPLD根据预设配置启动时长 检测到配置启动过程到时时,向FPGA发送配置初始化启动信号,FPGA接收 配置初始化启动信号,开始配置初始化过程;CPLD根据预设配置初始化时长 检测到配置初始化过程到时时,向FPGA发送配置开始信号,FPGA接收配置 开始信号,从闪存读取升级数据进行配置。
9、 如权利要求7或8所述的方法,其特征在于,所述FPGA根据CPLD 产生的一组控制信号时序从闪存读取升级数据完成配置之后进一步包括FPGA确定配置完成,向CPLD输出配置完成信号,检测到CPLD设置的 配置完成标志,向主板上报配置完成中断,主板接收该中断后,发现FPGA版 本未更改,则重新向FPGA发送升级启动指令。
10、 如权利要求9所述的方法,其特征在于,所述主板发现FPGA版本未 更改之后、重新向FPGA发送升级启动指令之前进一步包括主板判断FPGA升级失败次数是否小于预设最大次数,若是,重新向FPGA 发送升级启动指令;否则,向网管上报告警。
11、 如权利要求7或8所述的方法,其特征在于,预先在闪存中保存备份 版本的配置数据;所述FPGA根据CPLD产生的一组控制信号时序从闪存读取升级数据进一 步包括FPGA发现从闪存读取升级数据失败,则从闪存中读取备份版本的配置数 据完成配置。
全文摘要
本发明公开了远程升级现场可编程门阵列的系统、接口卡及方法。系统包括主板和接口卡,且,接口卡包括FPGA、闪存和CPLD,其中主板,将远程网管发来的升级数据发送给FPGA,并在接收到远程网管发来的升级指令后,向FPGA发送升级启动指令;FPGA,将主板发来的升级数据写入闪存,接收主板发来的升级启动指令,向CPLD输出启动信号;根据CPLD输入的控制信号时序,从闪存读取升级数据完成配置;CPLD,接收FPGA发来的启动信号,向FPGA输出一组控制信号时序。本发明降低了接口卡的设计成本。
文档编号G06F9/445GK101420328SQ20081022797
公开日2009年4月29日 申请日期2008年12月3日 优先权日2008年12月3日
发明者谢世成, 赵恒卓 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1