让FPGA为嵌入式开发人员工作(待续)

[复制链接]
1338|0
手机看帖
扫描二维码
随时随地手机跟帖
wangjun88|  楼主 | 2010-8-25 11:27 | 显示全部楼层 |阅读模式
本帖最后由 wangjun88 于 2010-8-25 11:43 编辑

让FPGA为嵌入式开发人员工作

**分为两部分,第一部分中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为嵌入式系统设计提供多功能可重构的硬件平台,提供“软”器件和分立系统器件的通用接口,方便地实现处理器和外设间的互换。

这种系统的优点是无需“事先”选定处理器。可以使用一种处理器来开发系统,然后在开发过程中需要更高性能时再换成更快的器件。由于有了包裹层(Wrapper Layer),处理器可以是软、硬、甚至是FPGA内部的硬处理器内核,对周围硬件不会产生影响,因为转换层仅创建一个对所连外设的标准接口。实际上外设器件本身的连接也可通过相同方式进行抽象。
采用这种方案,FPGA变成为嵌入式系统所有部件提供通用连接性的系统互连结构。换句话说,是标准的接口“骨干”,让硬件和软件方便地与处理器和外设交流。
硬件还是软件? –取决于您的选择对FPGA 内部的系统硬件实现抽象化,以及对系统硬件和软件开发的统一使得嵌入式开发人员可以更加无缝、方便和易用地实现从C代码到硬件的转换。有了设计工具支持,这样的系统可让嵌入式开发人员无需特殊的硬件级设计,就可以改变下层的系统硬件设计。
由于统一设计环境可通过FPGA访问所有连接到处理器的硬件,因此软外设可由系统自动添加,用于执行特定功能。开发人员想要转换为硬件的任何 C函数或算法,都可以从C自动转换并作为外设器件添加到标准化的处理器总线上。设计系统将会控制硬件产生,甚至可以添加必要的代码让处理器利用该硬件。
程序员在真正意义上可自动生成面向应用的硬件协处理器,甚至无需直接编辑任何硬件即可将其添加进系统。
程序员仍处于算法领域,可选择某个特定算法是否要在硬件或软件上执行–其他的都交给系统来做!

在本文的第2部分,Altium有限公司的产品经理Rob Irwin建议可编程器件的设计必须与嵌入式设计流程更好地集成,以便在嵌入式领域充分利用 FPGA的潜力。然而,把软件和硬件集成在一起并不容易,需要有非常智能的系统才能为所有嵌入式开发人员带来基于FPGA的“软”系统设计。
打破障碍
发掘FPGA潜力的关键在于打破传统软件和硬件设计间的障碍。目前FPGA设计流程仍被视为与软件开发流程相分离,而实际上两个流程都隔离在板级设计流程之外。业界仍然按照板卡设计、FPGA设计和软件设计几个相互分隔的方面来认识整个电子产品设计,而且我们使用的设计工具正反映了这种分隔。
FPGA设计发展成为专业的设计学科,其工作流程是从芯片设计方法演变过来的。从嵌入式角度来看,这就把FPGA放到了硬件设计领域,这就使FPGA很少被用于创建嵌入式系统的真正智能,即软件。然而, FPGA跨越了软件和硬件之间的障碍,具有成为电子产品嵌入式智能一部分的潜力,而不仅仅是成为嵌入式智能的平台。实际上,只有把电子产品开发视作一个单一过程,我们才能看出可编程硬件技术所代表的‘宏伟蓝图’。
可编程器件技术并不是把嵌入式软件开发从硬件设计分割开,而是让开发人员在开发软件时可以交互地改变系统硬件。硬件也不再是一个固定的平台。在本质上,系统优化可包括硬件和软件,平台和运行在平台上的软件都可以在线重构。
统一化设计是关键
当然,实现硬件/软件的统一不是简单地改变我们对设计流程的看法即可。为了让开发人员发掘出可编程设计的潜力,我们使用的设计工具必须支持这种流程。为了实现传统分隔设计领域间的自动化,设计系统本身必须支持硬件、软件和可编程硬件开发的统一。


图2:硬件设计和软件开发的统一,使嵌入式开发人员无需成为硬件设计师即可在软件开发阶段影响及修改底层系统硬件。

这超越了对分隔的设计编辑器的简单集成。设计系统必须在根本上支持设计硬件和软件的所有流程。既能有效地对嵌入式开发人员隐含硬件设计流程,但又要允许他们更改底层硬件平台,设计工具必须将代码开发和硬件描述紧密结合。从另一方面,板级设计师必须能够利用可编程器件抽象出处理器和外设器件间的连接,以便创建出一个物理平台,而无需涉及到FPGA器件本身的复杂特性。
然后需要做的就是必须将目前支持硬件、软件和可编程硬件的分立式设计工具统一在单一的环境中 ,以便充分利用FPGA作为嵌入式开发平台的潜力。但统一设计需要什么以及如何在设计工具层进行实现?
统一的硬件设计框架
设计工具厂商 ——Altium Limited在其业界首个统一电子产品开发系统——Altium Designer中实现了这一目标。在Altium Designer中将硬件和软件开发被统一在平台内,从而加快了软件/硬件共同设计的进程。所提供的 基于FPGA的处理器和处理器打包内核可以让设计师轻易地运用Altium Designer或任何支持的第三方处理器,同时保留设计的全部功能,包括方便与FPGA外设的连接。Altium 卓越的Viper编译器保证了该系统支持的所有处理器结构间完全的C级别代码兼容性。
像Altium Designer这样的统一设计系统,其根本需求是开发人员能方便一致地操作分立和基于FPGA的“软”硬件。这通过把传统HDL方法转为FPGA设计,并将现成易用的、 基于组件的设计 用于可编程器件来实现。在这种环境下,使用描述板级电路相同的方法和语言来描述FPGA内部实现的系统组件。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

251

帖子

5

粉丝