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

http://www.ed-china.com/ART_8800019781_400012_500013_TS_498D2B7E.HTM?click_from=2100001450,8000008671,2007-04-09,EDCOL,ARTICLEALERT

文章分为两部分,第一部分中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自动转换并作为外设器件添加到标准化的处理器总线上。设计系统将会控制硬件产生,甚至可以添加必要的代码让处理器利用该硬件。

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

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

在本文的第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内部实现的系统组件。

图3: 统一硬件和可编程硬件设计后,板级设计师可以使用熟悉的基于元件的图形设计方法,有效地使用大规模FPGA器件构建嵌入式系统。

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

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

图 4: Altium Designer以组件形式构成的现成易用的、预先综合与预先验证的IP扩展库简化了FPGA系统开发,提供硬件构建在FPGA器件和基础结构间的移植性。

同样,如果各种FPGA结构的元件块都经过预先综合与验证,那么设计师就可以创建独立于目标FPGA器件的应用。这可以实现设计的可移植性,并且设计师无需特别熟悉特定的FPGA结构。

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

统一硬件和软件设计

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

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

在设计师看来这一流程完全透明的– 他们只需选上复选框,决定在处理器上或直接在硬件上执行何种特定功能。在代码开发阶段,令程序员迅速有效地创建专用的协处理器。实际的好处是开发人员可以交互地尝试不同实现方法,无需硬件工程师干预或忍受无穷无尽的等待,等待生产出更新的原型板卡却只是为了查看是否有性能改进。在本质上,硬件和软件生成变成了统一编译器的输出选项。

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

在早期转向开发

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

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

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

图 6: 在 Altium Designer的统一设计环境中,关键设计参数如外设和内存地址映射等,可在硬件和软件开发过程中自动配置。

关键是系统硬件不再固定。可以在一个缺省的平台下进行开发,然后随着系统发展不断进行,满足不断变化的需求。这就无需在开发初始阶段就严格定义硬件– 此时系统需求还不完全明确,其后随着开发进程的进行可自由修改硬件以满足软件需求。

嵌入式智能的兴起

高性价、大容量FPGA的出现为嵌入式开发人员开创了一个时代,允许他们充分利用可编程器件所具有的潜力。在适当的开发环境和统一的设计方法下,当前 FPGA提供的大型可重构的设计空间为嵌入式系统带来了新方法,设计师能够以革新的方式创建电子产品。这种革命甚至可与几十年前引入微处理器后带来的软件设计革命相提并论。

类似Altium Designer的统一设计环境让开发人员结合了软件和可编程硬件,更快地创建智能产品。开发人员不再把产品智能完全置于软件之中,而是利用可重构逻辑创建包含软件和硬件部分的嵌入式智能。

设计师可以自由选择任意算法的最佳实现路径,无需为信号处理功能专门定义固定的硬件,即可控制功能如何执行。此外,他们可以在开发时在线自由修改代码执行的方式,甚至改变底层的处理器。

可能最重要的是,嵌入式开发人员通过统一设计系统,无需成为硬件设计师就能利用可编程器件的优点。就像C曾经为所有工程师打开嵌入式开发大门一样,统一设计环境也把基于FPGA的‘软’系统设计带给所有嵌入式开发人员。

 

作者简介

Rob Irwin 获得澳大利亚悉尼大学工程(电气)学士学位。他在电子设计领域具有20多年的经验,其中包括澳大利亚消费协会的高级电子测试工程师经验和几年的澳大利亚电子工程编辑经验。Rob 目前是Altium 有限公司的产品经理。如果有问题或建议,请发email到 Rob 的电子信箱: rob.irwin@altium.com.au。

Advertisements