您的位置: 嵌入式在线 > 技术中心 > FPGA > 让FPGA为嵌入式开发人员工作 – 第一部分

让FPGA为嵌入式开发人员工作 – 第一部分

2007-06-29      嵌入式在线      收藏 | 打印

 文章分为两部分,第一部分中Altium有限公司的产品经理Rob Irwin将介绍当今可编程器件开发技术为嵌入式系统开发带来的无限可能,并真正普遍用于电子设计中。

 FPGA技术出现于20世纪80年代中期。在嵌入式系统开发中, FPGA作为大量胶联逻辑的载体长期被用作微处理器应用的外围设计。最近几年,FPGA作为通用DSP 芯片的替代品已经被用在快速信号处理领域。目前存在一些关于用FPGA作为嵌入式平台的不实之词, 只有在采用ASIC开发将耗资巨大的应用中,才可以将软处理器用在FPGA片上系统(SoC)设计上。

 毫无疑问,在这些多用途的可编程器件产品化应用方面,不断增加的功能和容量以及不断降低的价格正改变着其性价比。但目前为止所有应用还只是定位在设计流程的硬件开发末期。FPGA设计流程沿袭了芯片设计的方法,往往需要具备专业的RTL级设计经验,至少精通一门硬件描述语音如VHDL和Verilog。通常的嵌入式设计人员并不具备这些技能。

 虽然FPGA技术可以加快嵌入式开发进程并可以带来全新的整体设计方式,但多数嵌入式软件开发人员仍然倾向于象以前一样工作 – 在设计周期之初选取一种分立的硬件处理器,创建了物理平台之后,再编制应用于该平台的软件。嵌入式系统开发中较少采用“软性”硬件开发主要归因于很少有工具能够让C程序员可以在可编程硬件级利用他们的经验。可编程器件的设计必须更好地与当前嵌入式设计流程进行集成,并让主流嵌入式工程师和软件开发人员接受,才能在嵌入式领域发挥FPGA的全部潜力。

 全局性描述

 在外行人眼中, 学习FPGA设计对于嵌入式开发人员应该是件轻而易举的。 FPGA传统的设计流程是以硬件描述语言如VHDL或Verilog为中心。虽然HDL实现的结果是硬件,但采用的方法是软件,这正是嵌入式开发人员非常擅长的领域。

 当然,实际情况完全不同。虽然HDL是种编程语言,只要有时间,任何称职的程序员都能很容易掌握其技巧和语法,但HDL中的对象完全不同于传统软件中的对象。HDL在其本质上是定义硬件。因此它们天生就是处理并行性和异步问题的。另一方面,传统嵌入式软件往往被缩减为一个指令集,最终在微处理器上顺序和同步执行。

 所以传统FPGA设计流程并不能吸引嵌入式开发人员,因为即便它们是建立在软件基础上,它们仍然需要设计人员熟悉并乐意采用硬件的原理去设计。嵌入式开发人需要的是在算法层面处理问题。

 软件转化为硬件

 人们尝试一些让嵌入式开发人员更易于接受硬件描述的方式。如基于C的语言System C,就是利用了C的语法和基本结构开发出的。虽然这样可以使初学变得简单些,但这些语言基本上还是另外一种形式的HDL,因此与传统的HDL设计一样,需要嵌入式开发人员在硬件级考虑问题。

 另外一种更有希望的方法是基于标准ANSI C代码,通过编译器传递但不将其转换为对象代码,而是转换为RTL硬件描述,以便被综合并被用于对一个FPGA进行编程。很多公司,事实上包括FPGA厂商最近都已经自行开发出了这样的系统。

 通过C-到-RTL的转换,嵌入式开发人员可以用C写算法,然后创建硬件直接执行该算法。虽然这一步方向正确,但把生成的硬件集成进系统,编写必要代码让处理器利用生成硬件,这仍然会降低而非提高整体开发流程效率。把C转换成RTL仅仅是开始。为了让嵌入式开发人员易于接受这种流程,就要求设计工具能成为连接设计流程中硬件和软件的桥梁。

 不只有胶联逻辑

 从一种工具的角度来看,显而易见,要充分利用诸如FPGA等可编程器件所带来的机遇,所需要的系统应当提升开发流程的抽象级别,使人们可以利用已经熟悉的设计技术和流程轻松改变设计的核心元素(硬件和软件)。这样的系统必须统一整个电子产品开发流程,将硬件、软件和可编程硬件开发集成在单一、相互紧密关联的设计环境中。

 要想了解这将如何给嵌入式设计带来好处,我们需要超越当前决大多数开发人员将FPGA仅视作胶联逻辑应用的固化性思维。用更广阔的视野,充分利用可编程器件的优点,把尽可能多的硬件引入软领域。这可以包括处理器功能本身,而且今天FPGA中的软处理器作为嵌入式平台也越来越普遍。在根本上,转入FPGA内的软处理器将带来结构灵活性方面的优点,生产出更小、更简单的板卡。当然更深入的利用会带来更多好处。

 抽象化的处理器系统

 当利用FPGA的可编程特性,在处理器上提供不仅在软件而且也在硬件上实现的抽象层时,嵌入式开发人员就获得了无限可能性。看看一个系统,其处理器通过一个可配置硬件(本质上是一个抽象处理器接口的硬件包)连接到内存和外设。系统设计人员简单地对FPGA重新编程即可改变硬件包,更改处理器,甚至无需修改其他系统硬件即可在硬处理器和软处理器间切换。从系统角度来看所有处理器都是一样的,这简化了硬件设计流程。当然,扩展到应用软件领域时需要提供处理器间C级别兼容性的编译器。

图1: 大型 FPGA为嵌入式系统设计提供多功能可重构的硬件平台,提供“软”器件和分立系统器件的通用接口,方便地实现处理器和外设间的互换。

 图1: 大型 FPGA为嵌入式系统设计提供多功能可重构的硬件平台,提供“软”器件和分立系统器件的通用接口,方便地实现处理器和外设间的互换。

 这种系统的优点是无需“事先”选定处理器。可以使用一种处理器来开发系统,然后在开发过程中需要更高性能时再换成更快的器件。由于有了包裹层(Wrapper Layer),处理器可以是软、硬、甚至是FPGA内部的硬处理器内核,对周围硬件不会产生影响,因为转换层仅创建一个对所连外设的标准接口。实际上外设器件本身的连接也可通过相同方式进行抽象。

 采用这种方案,FPGA变成为嵌入式系统所有部件提供通用连接性的系统互连结构。换句话说,是标准的接口“骨干”,让硬件和软件方便地与处理器和外设交流。

 硬件还是软件? –取决于您的选择

 对FPGA 内部的系统硬件实现抽象化,以及对系统硬件和软件开发的统一使得嵌入式开发人员可以更加无缝、方便和易用地实现从C代码到硬件的转换。有了设计工具支持,这样的系统可让嵌入式开发人员无需特殊的硬件级设计,就可以改变下层的系统硬件设计。

 由于统一设计环境可通过FPGA访问所有连接到处理器的硬件,因此软外设可由系统自动添加,用于执行特定功能。开发人员想要转换为硬件的任何 C函数或算法,都可以从C自动转换并作为外设器件添加到标准化的处理器总线上。设计系统将会控制硬件产生,甚至可以添加必要的代码让处理器利用该硬件。

 程序员在真正意义上可自动生成面向应用的硬件协处理器,甚至无需直接编辑任何硬件即可将其添加进系统。程序员仍处于算法领域,可选择某个特定算法是否要在硬件或软件上执行–其他的都交给系统来做!


 
 

本文来源:电子工程专辑    作者:Rob Irwin
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴