新闻中心

EEPW首页>汽车电子>设计应用> 基于C的设计方式简化FPGA/协处理器混合平台软硬件协同设计

基于C的设计方式简化FPGA/协处理器混合平台软硬件协同设计

——
作者:David Pellerin,Impulse Accelerated Technologies公司C 时间:2005-09-04 来源:EDN电子设计技术 收藏
基于C的设计方式简化混合平台软硬件协同设计
在最近几年中日益流行在高性能嵌入式应用中使用现场可编程门阵列(FPGA)。FPGA已经被证明有能力处理各种不同的任务,从相对简单的控制功能到更加复杂的算法操作。虽然FPGA在某些功能上比设计专用ASIC硬件具有时间和成本上的优势,但在面向软件应用中FPGA比传统处理器和DSP的优势并没有体现出来。这很大程度上是由于过去割裂了硬件和软件开发工具和方法之间的关系。
  然而最近FPGA在面向软件设计工具方面的发展,及器件容量的持续增加为软件开发者创造了新的环境。在这种环境下,FPGA可视为软件编译器的一个可能的目标(连同传统和非传统处理器架构)。现在,工具能够帮助软件工程师利用FPGA平台,同时在结合了传统处理器(或处理器核)和FPGA的单一目标平台上,帮助这些开发者利用其所具有的高度算法并行性。
  基于FPGA的计算平台,尤其是那些具有嵌入式“软”处理器的平台,有能力实现非常高性能的应用,而没有建立专用定点功能硬件的前期风险。通过使用最新一代的硬件/软件协同设计工具,有可能使用多种面向软件(图形和基于语言)设计方式作为FPGA设计过程的一部分。
  使用基于FPGA的参考平台
  FPGA中使用嵌入式处理器的优势之一是能够在单个可编程器件上建立硬件/软件开发对象——等效硬件参考平台,这常常被忽视。即使终端产品不包括嵌入式处理器(将替换外部处理器或其他硬件子系统的接口),快速下载和测试新的软件/硬件配置(试验可改变软件/硬件划分方案)的能力也能大大地提高设计生产率。通过使用嵌入式处理器作为测试生成器,单独的硬件部件(或硬件编译的软件过程)也可以快速地验证功能。
  这种快速原型平台的典型例子是Altera公司提供的Nios开发包。Cyclone或Stratix FPGA中都包括这个工具包,除了高性能的Nios 32位软核处理器核之外还包括多种硬件和软件外设接口。在设计过程中可以选择这种核,使用Altera SOPC Builder工具配置并下载到相应的FPGA中。板上本身的连接容许直接和各种不同的外部部件连接,从串口(RS232和USB)到Flash存储器和网络接口。
  在开发过程中使用这种板并结合Altera工具,容许嵌入式系统设计者用应用原型所需的部件(包括嵌入式处理器)组成目标平台。然后,软件开发者能够关注应用本身,分析和试验不同的硬件/软件划分方案。
 权衡硬件和软件资源
  在一些高性能嵌入式应用中,从产品构建费用和开发成本考虑最佳的资源使用方案是混合处理器方案。在这种方案中应用非关键性能的部件位于主处理器(它们可能是或不是嵌入式处理器核),而大计算量的部件是一个或多个DSP芯片、其它标准硬件或专用ASIC或FPGA硬件。这种的解决方案通常需要硬件设计方式和工具的知识,但是在性能和成本方面上具有最佳的收益。
  对于系统中的每个处理单元(即标准处理器、DSP、FPGA或ASIC),需要不同水平的专用技能。例如,虽然DSP是软件可编程的,在工具上的初期投入小,但他们需要在DSP专门的设计技术方面有一些专门经验,通常需要汇编级的编程技能。在另一方面,FPGA在设计和工具经验上需要相对高的投入,在硬件设计语言作为主要的设计输入方式时尤其如此。
  然而FPGA和专用ASIC设计所需的经验和工具投入相比,显然FPGA在开发专用硬件上具有更低的风险。的确,相对于专用ASIC方案的简单性和低风险的设计过程是为任何产品选择FPGA的关键因素是。最近基于软件的FPGA设计工具使这种设计过程具有甚至获得更大的生产效率。这反过来让系统设计者和软件应用开发者在实际的硬件上能够更快地尝试新的算法方式和测试设想,使用迭代方式进行设计。
  这种迭代方式重要好处是能够一次改变一个单元(例如将关键的算法移至FPGA)的设计。应用最初是完全用软件进行原型设计,并验证其正确性,然后由FPGA完成特定的功能,这是在每个步骤都要对系统重新进行验证的硬件过程。这种方式被证实能大大地缩短调试时间,降低引入难以调试的系统错误的风险。
  你如何在考虑“将应用的哪部分以硬件实现”上做出最明智的选择?一个普遍采用的方式是从用C,Matlab,SystemC或其它一些软件编程语言的软件模型开始。随着应用模型和部件算法的发展,设计者确定并发挥设计中粗略的并行性(或重新设计算法)利用可编程硬件在建立并行结构方面的独有能力。增加并行度通常转化为增加硬件资源,它必须在降低大I/O量的算法性能增益上取舍。使用软件模型验证假设,建立可重复的测试组,这些测试组可以作为模型,进一步提炼为某些可以进行软件和硬件编译的内容。
 混合软硬件设计方法
  现今如何开发混合软件和硬件应用呢?如果应用是软件驱动的(现今越来越多的设计是这样),软件或系统工程师从编写代码(如上所述)来建立系统原型。另一种是,工程师用更高级的工具如Simulink(来自Mathworks),基于UML的工具或其它系统设计环境开始设计。在这个过程中,系统设计者或软件工程师将采用更高级的设计抽象以获得最大的生产率,但是可能获得很低的性能结果。因为以这种方式自动选用的处理器类型是受限的,为性能目标转换低级代码的机会相对更少。有经验的嵌入式开发者可能会进一步用汇编语言优化应用的各个部分,或使用专用处理器(即DSP芯片)来提高性能。硬件工程师可以参与优化面向FPGA和ASIC实现的设计中的那部分接口。
  初始系统设计和划分完成之后,应用中需要最高性能的各个部分可以手工描述出来,交给硬件工程师。这个工程师为FPGA或ASIC部分编写低层的HDL代码,他们的设计生产率通常非常低(软件工程师1/10或更少)。结果是应用速度增加了,但是代码和最初的软件代码无法对应,设计周期不再一致,系统规格的改变可能很痛苦。
  在这种情况下,系统设计者必须作为硬件/软件仲裁者,指定硬件/软件接口,锁定设计反映设计的前期时间。一旦硬件开发认真地展开,可能几乎没有机会再次从整体上把握应用和它的组成算法。
 基于C的设计和原型工具加速开发

  在上述的方式中,最终的软件/硬件应用是软件和硬件源文件的组合,一些需要软件编译/调试工具流程,其它需要硬件为主的工具流程和专业知识。然而,随着基于C的FPGA设计工具的出现,使得在大部分的设计中采用熟悉的软件设计工具和标准C语言成为可能,尤其在那些本身就是算法的硬件部分。后面的性能转换可能会引入手工的硬件描述语言(HDL)取代自动生成的硬件(正如面向DSP处理器的源代码通常用汇编重新编写),但是因为设计直接从C代码编译成最初的FPGA实现,硬件工程师要参与性能转换的时间会进一步提早至设计阶段,系统作为整体可以用更高生产率的软件设计模式来设计。


关键词:FPGA/协处理器

评论


相关推荐

技术专区

关闭