图6&mdash&mdash项目小组为循环周期中的每个&ldquoSprint&rdquo确定&ldquoSprint待办事项&rdquo任务义务,并对其停止扩展和分配。然后,项目小组在日常的&rdquoScrum&ldquo会议上评价进程,并消弭相关妨碍。小组在每个&ldquoSprint&rdquo终止时向客户交付产品功用。
在 Scrum/Sprint流程中,我们仅要求初级零碎架构和标准即可启动项目。我们将项目细分为4~6个星期长的&ldquoSprint&rdquo。在每个 &ldquoSprint&rdquo中,我们可确定我们以为流程将会要求的一切义务,并将其置于&ldquo燃尽&rdquo列表(burn-down list)中。图5与图6显示了相关流程图。HEI在全公司范围内运用Scrum/Sprint开发流程,不只将我们的开发进程放慢了30%,而且还使我们提早数月完成了新产品的施行。表1对瀑布式开发与Srum/Sprint开发方案停止了比拟。
医疗设备开发的第三阶段,也是最初一个阶段,属于产品整个生命周期的前期(图7)。这个阶段要求的工程设计任务十分少,不过客户反应和市场成功将有助于推进新一代产品的概念构成,这样生命周期又进入新的循环。
图7&mdash产品生命周期前期任务是将产品推向市场,获取反应,协助确定新一代产品的功用。这样就完成了本周期的任务,并将其带入新的构思阶段。
采用Scrum/Sprint产品开发流程,再结合运用基于FPGA的套装硬件以及涵盖从研发到制造进程的初级FPGA软件设计工具,HEI就可以迅速地开收回将来产品的衍生技术。我们发如今众多状况下都可以运用我们在多种产品开发中采用的通用内核架构。例如,可调整IV与输液泵的泵控制器架构,异样也能用于可控制电机以完成输血管理的其它设计项目中。
为何硬件优于软件
为了无效地运用这种办法,并进一步放慢设计流程,就必需改动构思设计的方式,即从以软件为中心转变为更多地以硬件为中心。正如人们所认识到的,医疗设备的召回在2008年到达新高,比2007年上升43%。FDA专家以为,发作召回成绩的次要缘由有两个:消费中采用的原资料存在缺陷;软件开发任务存在成绩。企业对原资料质量的管理绝对容易一些,不过处理软件的质量成绩难度则要大得多。随着设备软件的代码量迅速添加,成绩只会日益严重。在FDA的消费者安康平安部表示医疗设备设计方要承当众多平安责任后,这个成绩尤为突出。
在HEI,我们以为该成绩具有一个潜在的处理方案,不过不是停止更多的测试、代码反省和引入更多的流程,相反,我们仅是尽量少编写软件,将更多的逻辑交给诸如赛灵思FPGA这样的硬件元件来执行。让我们来看看发作软件毛病的罕见缘由,以及我们将如何运用FPGA来处理这些成绩。
消弭死锁
大少数古代化设备都需求可以同时处置多个义务,而大少数嵌入式处置器的处置内核依然只要一个。这意味着处置器每次只能执行一个指令。同时,并行处置也好不到那里去,由于他们依然必需共享主零碎CPU。此外,诸如通讯驱动器、硬盘和用户接口元件等其他共享资源也会引发死锁&mdash&mdash两个或两个以上的处置进程互相等候对方释放资源。
由于死锁情况常常有赖于多个进程,并且通常要求事情在顺序上呈现同步,因此死锁十分难以复制和调试。仅仅停止单元测试很难发现大少数死锁成绩。它们往往被代码反省人员、纯熟的零碎测试人员所发现,甚至有时靠运气发现。
相比之下,采用FPGA,互相独立的进程拥有其本人的物理电路零碎,因此不存在共享资源。在每个时钟信号报时的时分,组合逻辑不只在每个电路中闭锁,而且还会在独立的存放器中存储相关值。由于进程不依赖其他资源,因此也不会发作死锁成绩。这样您就能更多地置信仿真和单元测试的后果,由于诸如资源竞争这样的未知要素不再是个成绩。
互不兼容的两头件
在开发嵌入式软件时,您根本上无需从头开端编写每一行代码。有许多工具都可协助固件设计人员提升任务效率,如复杂的驱动器、网络协议栈、操作零碎、乃至代码生成工具等。虽然这些零碎通常都停止过片面的独立测试,但软件还是会存在缺陷。由于工具和库的组合方式多种多样,将组件以全新的方式组合在一同运用的能够性十分大。
基于此种缘由,FDA 要求对在医疗设备中运用的一切套装软件,企业必需依据其详细设计的详细运用状况对软件协议栈停止审验。这是什么意思呢?例如,若我们正在运用包括定点疾速傅立叶变换的信号处置库,并需求检测能否存在特定的频率组分,我们就无需验证关于一切能够的输出,FFT能否都会前往正确的值。但是,我们需求验证的是,关于契合标准的一切无效输出,FFT能否前往我们希冀的值。例如,假如我们只检测人耳能听到的音调,就没有必要测试输出超越20KHz以上时前往的值能否正确。
#p#分页标题#e#不过,看上去互相独立的软件组件并不一定如此。因而,假如我们将软件协议栈与SPI驱动器结合起来运用,并配以实时操作零碎(RTOS),我们就需求对一切这些组件停止验证才干对FFT充溢决心。假如FFT将无效输入传递到SPI驱动器,但SPI驱动器呈现零碎性毛病,那么成绩显然不可防止。然后,假如我们决议调整SPI驱动器,就需求再次验证整个软件协议栈。这十分费事,而且一个存在毛病的组件会拖累整个零碎的开发进程。基于此缘由,在HEI,我们尽能够多地反复应用经检验具有良好特性的两头件和RTOS驱动器组合。例如,我们可运用NI单板RIO平台上的两头件驱动器。
除了依照每种详细运用状况审验软件以外,我们还需求审验我们在我们基于FPGA的设计中运用的一切第三方知识产权 (IP)。不过,一旦我们完成我们一切运用状况的审验任务,我们就会疑神疑鬼:IP在和其它组件集成后,任务状况会好像预期一样。让我们再来看看我们下面举的FFT示例。假如我们运用FPGA,我们就可和运用软件一样,获取或许生成FFTIP内核,依据每个运用状况验证其数字的正确性。不过,间发毛病的风险可大幅降低,由于我们不需求以软件为中心的设计所需求的一切处置器两头件。这样,RTOS及SPI驱动器就不再是其本身IP内核了,由于其任务不会直接影响FFT。另外,假如我们调整SPI驱动器的施行,我们就不需求对零碎未影响的局部再停止审验。
缓冲器溢出管理
我们如何运用FPGA来增加以软件为中心的零碎通常会发生的错误的另一个示例就是缓冲器溢出管理。当顺序试图存储超越为其存储分配的存储器末端的数据时,顺序就会反复写入本不该写入的某些相邻数据,这样就会发生缓冲器溢出。这是个很难发觉的缺陷,由于在未来任何时分都可拜访被重写的存储器,而且这种状况能够会形成分明的错误,也能够不会。嵌入设计中一种比拟罕见的缓冲器溢出状况是某种高速通讯形成的,或许来自网络、磁盘或许A/D转换器。假如通讯中缀工夫过长,缓冲器就会溢出,因而我们需求处理这个成绩来避免各种抵触。
我们可以以两种方式采用FPGA来管理缓冲器溢出。在第一种示例中,我们采用FPGA管理循环传输或许双缓冲传输,这样可卸载实时处置器的负荷。在这种状况下,FPGA可用作协处置器,降低主处置器的中缀负载。这是一种通用配置,特别是在高速A/D转换器中。
在第二种示例中,我们将FPGA用作维护功用的平安维护层,让针对病人的I/O在抵达处置器之前,先经过FPGA。在这种状况下,您可以为FPGA添加额定的平安逻辑,这样在处置器上的软件解体时,您可将一切的输入置于已知的平安形态下。FPGA可发扬看门狗的作用,其逻辑可以在软件发互联网电子商务和移动商务消费渠道的普及,使得支付市场将在不久的将来继续呈现更加美好的增长前景。作毛病的时分保证对病人的风险降低到最低水平。经过在架构设计中将FPGA引入设备的主信号链,您可以运用这两种办法中的一种或许两种来应对缓冲器溢出,以便在发作情况的时分可以更好地处置。
现实上,越多地将软、硬件总体零碎功用移至FPGA中,就能越快地完成设计流程,并最终越快地完成我们的设计在客户最终产品上的验证任务。假如我们能更快地验证我们设计方案在总体零碎上运转的牢靠性,那么我们的客户就能更快地验证整个最终产品,进而将其交付 FDA审批。这一进程意味着我们的客户可以明显减速其产品的上市进程,改善患者的生活质量,甚至解救生命。
假如我们采用 ASIC工艺来施行设计,我们需求为代工厂消费出硬件等上好几个月。验证ASIC的物理设计、创立掩膜并将设计投产等额定的步骤会形成更多出错和呈现缺陷的几率。假如设计在任何这些步骤中呈现错误,后果都会招致产品上市工夫被大大拖延。由于已消费出FPGA且经过片面的测试,因而我们只需关怀我们的设计和软件,并确保设计可以契合客户的标准要求。片面结合&ldquoScrum/Sprint&rdquo办法、以硬件为中心的构思、运用高度牢靠的工具并在FPGA与ASIC中选择FPGA,我们便能使客户完成差别化,进而也能为客户的客户,即患者带来改动。