FPGA的现场逻辑更新功能 赋予产品新的生命
2008-12-17
作者:Steve Stark
一个复杂的系统设计拥有5年或10年市场生命的日子已经一去不复返了。系统要求正以爆炸式的速度在改变。I/O" title="I/O">I/O标准、数据通信标准、系统性能要求及对系统功能性的需求呈现出前所未有的快速变化。系统设计者有以下两种选择:
(1)当系统在市场上不再具有竞争力时,只有重新设计具有确定功能的系统以满足新的市场要求。
(2)设计基于FPGA的系统并使之能不断更新,可采用在系统重构" title="重构">重构或者现场逻辑更新。延长目前系统的寿命,扩展已安装在现场设备的功能和性能,排除故障而不需要改动硬件。无需停止系统的运行,就能以可靠和安全的方式重构已应用在现场的FPGA。充分利用FPGA能赋予产品新生命的特点。
现实世界的需求
越来越多的系统设计者正在利用FPGA的重构功能,在开始系统设计和开发之后,解决各种问题,扩展系统的生命周期和功能。例如一个主流服务器供应商应该可以支持其FPGA现场逻辑更新硬件系统。开发、应用和维护成千上万个分布在各地的服务器并进行远距离的系统更新是一个基本要求。现在技术人员不再需要从系统中替换或更新FPGA。所有的工作都可以远距离地进行而不需要技术人员亲临现场。
一家中国领先的电信供应商(提供基站、网络服务器、路由器等产品)要求能够支持远距离的现场更新来排除故障,并增加新的特性和服务。终端客户要求所有系统在更新时的系统停机时间小于50ms。
基于PC的产品、广播视频附加卡的制造商利用FPGA具有现场逻辑更新的特点来实现视频算法和提供增强的特性并支持用户对设计进行更新。制造商所关注的是远距离更新过程" title="更新过程">更新过程的可靠性。嵌入在这些视频算法中的知识产权(IP)需要严密保护,因此现场逻辑更新期间FPGA的代码也是非常重要的。
FPGA现场逻辑更新需求
为了有效地进行FPGA的现场逻辑更新,有4个方面的基本要求:
(1)嵌入式编程。系统微处理器必须能对FPGA编程。系统微处理器能够对FPGA供应商提供的C代码程序进行编译并执行,于是微处理器提供外界与目标FPGA的通信链接(通过Ethernet、Internet、RF和陆线)。微处理器可以访问新的FPGA编程文件,下载这个新的位流至专门的存储器芯片,或者至FPGA的片上Flash存储器,然后控制FPGA本身的重构。
(2)最小的系统停机时间。越来越多的用户对“5个9”(99.999%)系统感兴趣。FPGA被再次编程时,系统是不工作的,因此这个过程必须尽可能地短。这是FPGA系统设计者必须仔细研究的问题。对基于SRAM的FPGA,从专门的SPI Flash或E2PROM引导存储器下载新的位流所需的时间大约是数十到数百毫秒。如果设计者利用单片、非易失" title="非易失">非易失、具有专门Flash配置存储器的基于SRAM的FPGA,最长的时间是2ms。
引导PROM(基于SRAM的FPGA)的实际配置或者片上Flash存储器(SRAM/Flash FPGA)将采用后台模式,同时系统仍然工作,因此实际下载新位流到FPGA SRAM所需的时间唯一决定了在用新的配置工作之前,系统将停止工作多久。
(3)必须控制I/O的状态。FPGA的输出通常驱动系统内的关键控制信号(芯片复位、电源使能等)。FPGA配置期间,非常关键的是这些信号仍然驱动在正确的状态。这些信号中的干扰会引起系统的复位、再引导。对于FPGA设计者来说,这是另外一个必须仔细评估的问题。一旦进入编程模式,许多FPGA结构默认I/O为三态,这会引起中断系统运行。市场上其他FPGA解决方案允许用户对I/O的状态逐个预定义(即高、低、高阻或采样,然后驱动到电流值),支持透明和有序的系统暂停。
(4)必须控制器件的状态。退出配置过程之前控制FPGA内的逻辑状态是基本的要求。在器件配置完成之后,使器件的逻辑立即输出正确的电平。如果必要的话,锁相环(PLL)也必须再次锁定。这些功能都是基本的,使系统从短暂的休眠状态过渡到唤醒,使FPGA复原进入正常工作状态。FPGA设计者会发现市场上大多数易失(基于SRAM)的FPGA不支持这些关键的功能。然而,单片非易失SRAM/Flash FPGA确实支持这些要求。
作为现场逻辑更新的过程,图1列举了莱迪思" title="莱迪思">莱迪思“透明现场重构”的4个步骤。莱迪思的FPGA结构支持这个流程。
以上是访问FPGA的基本步骤,可以通过它们刷新和延长基于FPGA设计的生命。然而,还应当考虑现场逻辑更新的可靠性和安全性:
· 如果新的以及更新的FPGA位流在远距离的配置过程中损坏,系统将发生什么情况?
· 嵌入于FPGA位流中的知识产权核(IP)在现场逻辑更新过程中是如何保护的?
针对现场逻辑更新可靠性的双引导方案
更新存储的FPGA配置时,总是会有风险。电源和通信的故障导致损坏配置和系统不能正常运行。防止这种情况发生的一种方法是使用双引导方式,将第二个或“正确的”配置存储在引导存储器中,专门用来应对配置失败的情况。采用这种方法,系统总是能够恢复。一些基于SRAM的FPGA结构在单片SPI Flash引导存储器中支持多引导映射(或配置位流)。有些非易失SRAM/Flash FPGA在片内存储有效的引导映射,在专门的SPI Flash引导存储器中含有正确的引导映射。
作为双引导实现的例子,图2展示了LatticeXP2系列非易失、嵌入式闪存的功能。
针对设计安全性的加密
现在市场上有一些FPGA支持位流加密(128位AES加密)。FPGA系统设计者设立了一个密钥,这个密钥编程至FPGA,且合并入位流。加密位流传入FPGA,器件具有解密引擎,与存储的密钥组合在一起,在下载至SRAM配置存储器之前对加密的位流解密。这样在现场逻辑更新过程中敏感的设计数据得到了保护。
作为128位AES加密流的实例,图3展示了非易失、嵌入式闪存LatticeXP2 FPGA的加密功能。
总 结
越来越多的系统设计者要求能在现场更新基于FPGA的系统,延长设计的寿命以免设计很快被废弃。针对现场逻辑更新,这个挑战是用支持4个基本要求的FPGA进行设计来应对,此外还要满足现场更新可靠和安全的要求。幸运的是现在市场上已有多款FPGA支持所有这些要求。