当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA的无缝安全升级(hitless)

时间:2024-07-29      来源:网络搜集 关于我们 0

由于FPGA设计的灵活性、高定制型,决定了FPGA在产品设计中的重要位置,在此就不再啰嗦。

但是在FPGA的升级过程中,需要有refresh的过程,该过程会导致FPGA的逻辑重新跑,从而导致GPIO的状态会发生异常变化。

为了解决该问题,lattice和Altera的FPGA均提出了一种无缝升级的解决方案---Hitless.

先来学习一下Lattice的解决方案,Altera的解决方案有所出入,但大体意思是一致的。

如下图是整体的逻辑实现框图,大体分为三个模块: IO模块、Hitless Feature和User Design.其中,IO模块使用了Lattice硬件管脚的特性;Hitless Feature是Hitless功能实现的控制灵魂;User Design是用户自己的设计逻辑。

IO模块

Altera的方案实现还是有差距的,后续有机会再学习一下。如下图所示,是FPGA的IO管脚示意图。FPGA的IO管脚可以通过IP核或者库文件进行配置,Lattice的FPGA使用BB模块进行例化处理,而Altera的FPGA使用GPIO lite intel FPGA IP模块来例化。

上图各个信号的理解如下:

T: enable signal,buffer的使用信号;

B: inout,对应着FPGA的pin脚;

O: output signal,输出信号给用户逻辑;

I: input signal, 用户逻辑输出信号给该模块;

逻辑关系是:

assign B = I;

assign O = B;

在要求管脚锁定时,可以设置assign I = O; 从而使整个模块形成一个闭环系统,如下图所示

其中,Hitless Feature模块就是控制 I(Input) 信号输入逻辑的灵魂控制模块;

同时,借助于Lattice的TransFR功能,可以有效地缩短更新RAM的时间,避免在刷新RAM过程中导致上述逻辑失效;

Hitless Feature:

该灵魂模块其实也是靠用户自行设计的,基本逻辑是当FPGA被刷新重启时,内部逻辑自行先把I(Input)信号引导O(ouput)端,实现在refresh时GPIO管脚状态的自动锁存;等到定义时间timeout后,然后切换到用户逻辑中。

大家可以考虑一下,refresh过程其实分为上电过程的refresh和升级后的refresh两个过程,如果上电过程的refresh也用上述操作,就会存在上电的一段时间内GPIO的电平不能随用户逻辑来变动,所以就存在功能异常的情况。为了避免这种情况,需要有硬件信号来区分当前是上电过程的refresh还是刷新过程的refresh,该方案的实现可以简单应用RC延时电路来实现。

再回到这个逻辑框图,了解到IO模块的原理后,就可以清晰的定义Hitless Feature这个灵魂模块了,该模块也可以参考Lattice官网提供的解决方案,在此就不赘述了。

Altera的方案实现还是有差距的,后续有机会再学习一下。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言