您的位置:通用技术>>可编程逻辑>>嵌入式操作系统>>从业者说>>正文

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

推荐给好友
打印
加入收藏
更新于2007-09-25 01:08:03

在嵌入式系统开发中,FPGA作为大量胶联逻辑的载体长期被用作微处理器应用的外围设计。最近几年,FPGA作为通用DSP芯片的替代品已经被用在快速信号处理领域。但目前仍存在一些关于用FPGA作为嵌入式平台的不实之词,认为只有在采用ASIC开发将导致耗资巨大的应用中,才可以将软处理器用在FPGA片上系统(SoC)设计上。
FPGA设计流程沿袭了芯片设计的方法,设计师往往需要具备专业的RTL级设计经验,至少精通一门硬件描述语音如VHDL或Verilog,一般的嵌入式设计人员并不具备这些技能。

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

要充分发掘FPGA潜力的关键在于打破传统的软件和硬件设计间的障碍。目前FPGA设计流程与软件开发流程仍被视为是互相分离的。业界习惯从板卡设计、FPGA设计和软件设计等几个相互分隔的方面来认识整个电子产品设计,而且我们使用的设计工具也反映了这种分隔。实际上FPGA跨越了软件和硬件之间的障碍,具有成为电子产品嵌入式智能一部分的潜力,而不仅仅只是成为嵌入式智能的平台。

可编程器件技术就没有把嵌入式软件开发和硬件设计分割开,而是让开发人员在开发软件时可以交互地改变系统硬件,硬件也不再是一个固定的平台。在本质上,系统优化囊括了硬件和软件,平台和运行在平台上的软件都可以在线重构。

统一化设计是关键

当然,仅仅改变我们对设计流程的看法还不足以实现硬件/软件的统一。为了让开发人员发掘出可编程设计的潜力,设计工具也必须支持这种流程。要实现一直以来彼此分隔的设计领域间的自动联系,设计系统本身必须支持硬件、软件和可编程硬件开发的统一。

这不仅仅是对分隔的设计编辑器的简单集成。设计系统必须从根本上支持硬件和软件的所有流程。既要能有效地对嵌入式开发人员隐含硬件设计流程,但又要允许他们更改底层硬件平台,设计工具必须将代码开发和硬件描述紧密结合。从另一方面,板级设计师必须能够利用可编程器件抽象出处理器和外设器件间的连接,以便创建出一个物理平台,而无需涉及到FPGA器件本身的复杂特性。

接下来要做的是必须将目前支持硬件、软件和可编程硬件的分立式设计工具统一在单一的环境中,以便充分利用FPGA作为嵌入式开发平台的潜力。大型FPGA为嵌入式系统设计提供多功能可重构的硬件平台,提供“软”器件和分立系统器件的通用接口,方便地实现处理器和外设间的互换(图1)。现在我们知道统一化设计是关键所在,但统一设计需要什么,又如何在设计工具层进行实现呢?


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


统一的硬件设计框架

Altium在其电子产品开发系统(Altium Designer)中实现了这一目标。在Altium Designer中,硬件和软件开发被统一在一个平台内,加快了软件/硬件共同设计的进程。所提供的基于FPGA的处理器和处理器封装器内核(wrapper cores)可以让设计师轻易地运用Altium Designer或任何支持的第三方处理器,同时保留设计的全部功能,包括与FPGA外设的方便连接。Altium的Viper编译器保证在该系统支持的所有处理器结构间实现完全的C级别代码兼容。

像Altium Designer这样的统一设计系统,其最终目的是使开发人员能够方便一致地操作分立和基于FPGA的“软”硬件。而将传统HDL方法转变为FPGA设计,并将现成易用的、基于组件的设计用于可编程器件能够实现这样的目的。在这种环境下,使用与描述板级电路相同的方法和语言来描述FPGA内部实现的系统组件。

统一硬件和可编程硬件设计后,板级设计师可以使用熟悉的基于元件的图形设计方法,有效地使用大规模FPGA器件构建嵌入式系统。开发人员使用大量预先综合并验证过的、“软元件”形式的IP器件库,通过图形化块状图或原理图方法在FPGA内部定义系统功能。在统一环境中一个原理图编辑器可用于输入板卡电路和FPGA级电路,节省为分立可编程电路设计原理图输入系统的开销。

在开发时使用预先合成的逻辑块(元件)而不是基于HDL的源库,具有几个优点。首先,在硬件综合时把块视为“黑盒”,从而加快进程的处理。第二,与板级的分立组件的使用一样,在无需了解底层的代码结构的情况下,即可使用基于FPGA的组件块。尽管,组件背后的原理很复杂,但设计者只需要知道基本的功能就可以了。

Altium Designer通过以组件形式构成的现成易用、预先综合与预先验证的IP扩展库简化FPGA系统开发,并在FPGA器件和基础结构间通过硬件构建可移植性。同样,如果各种FPGA结构的元件块都经过预先综合与验证,那么设计师就可以创建独立于目标FPGA器件的应用。这可以实现设计的可移植性,并且设计师不需要特别熟悉特定的FPGA结构。

通过为分立硬件和可编程硬件提供的单一设计环境,使两种类型的项目具有紧密联系,可以带来其他的优势。例如,I/O定义和管脚分配可自动合成,板级布线的开发人员可直接利用FPGA管脚的可编程特性优化布线器件。

统一硬件和软件设计

从嵌入式设计师角度看,统一环境、直接把软件开发连接到底层的硬件平台设计非常重要。因为这样,FPGA内部实现的器件可以在开发阶段以类似传统软件的方式方便地升级。嵌入式开发人员可以轻松地选择硬件和软件方案解决设计问题。

Altium在06慕尼黑电子展览会上展出了最新的统一硬件/软件编译器技术,该技术可同时从标准C代码中生成高度优化的可执行代码和在FPGA中并行执行的硬件电路,随后在运行时生成需要的代码将二者连接起来。实际的实施中需要引入FPGA硬件系统元件,在编译时通过嵌入式软件指定其功能。开发人员只需指定在硬件和统一编译器上执行的C函数,然后创建综合所需的硬件描述文件,并编译剩余代码,自动添加必要的指令,即可实现把功能转移到硬件中。

在设计师看来这一流程是完全透明的。他们只需选上复选框,就可决定要在处理器上或直接在硬件上执行某种特定功能。在代码开发阶段,令程序员迅速有效地创建专用的协处理器。使开发人员可以交互地尝试不同的实现方法,不再需要硬件工程师干预或忍受长时间等待。在本质上,硬件和软件生成变成了统一编译器的输出选项。

对于嵌入式开发人员来说,在使用大规模FPGA时,最令他们激动的是Altium Designer可以透明地在软件和硬件间切换选定的C函数功能,可以快速重新分配应用功能和随时实施硬件加速。

在早期转向开发

将设计师从在设计早期就必须锁定关键设计元素的困境中解脱出来,可能是Altium Designer统一平台嵌入式开发最重要的优点。在开发阶段,可以相对容易地改变处理器、外设器件和目标FPGA,软件和硬件功能的划分也是如此。整个设计流程能够以全新的方式进行。

比如我们设计一个应用,将移动的3D图像(比如一个公司的标志)显示在屏幕上。在Altium Designer的统一环境中,硬件工程师可以使用库中的FPGA元件,在原理图中进行连接,创建由处理器、通用协处理器、内存、键盘输入驱动和显示驱动组成的基本硬件平台。

在统一环境中我们可以把嵌入式项目连接到硬件设计,并从原理图自动转换I/O和内存映射,自动装载包含外设驱动代码的软件库。代码编写完成后,可以把硬件和软件下载到合适的FPGA开发板进行调试。如果觉得图形渲染太慢,还可以配置协处理器,从元件配置对话框列表中选择相应的功能去执行3D到2D的映射。必要的话,也可以回到原理图,把处理器类型从软内核改为分立器件,以获得更高速度。

在Altium Designer的统一设计环境中,关键的设计参数如外设和内存地址映射等,可在硬件和软件开发过程中自动配置。关键是系统硬件不再固定。可以在一个缺省的平台下进行开发,然后随着系统发展不断进行完善,以满足不断变化的需求。这就无需在开发初始阶段就严格定义硬件,因为此时系统需求还不完全明确,其后随着开发进程的进行可自由修改硬件以满足软件需求。

高性价比、大容量FPGA的出现为嵌入式开发人员开创了一个时代,允许他们充分利用可编程器件所具有的潜力。最重要的是,嵌入式开发人员通过统一设计系统,无需成为硬件设计师就能够利用可编程器件的优点。就像C曾经为所有工程师打开嵌入式开发大门一样,统一设计环境也把基于FPGA的“软”系统设计带给了所有的嵌入式开发人员。

作者:Rob Irwin
Altium有限公司的产品经理

文章出处:《电子系统设计》