新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA原型设计 能为您做些什么?

基于FPGA原型设计 能为您做些什么?

作者:时间:2011-09-27来源:网络收藏

作为基于 原型方法的拥护者,有人可能会认为我们只片面地看到了这种方法的优点,而对其缺陷视而不见。但那绝非我们的本意。我们这本《基于 的原型方法手册》旨在全面揭示基于 的原型的利弊,因为最终我们并不想看到有人本来可以使用其他方法更好地达到目的(比如说用基于System C的虚拟原型),却行进在这种方法的漫漫征途上。

让我们来更深入地研究一下基于FPGA原型方法的目的和局限性,以及其对于系统级验证和其他目的的适用性。把重点始终放在原型项目的目的上,让我们在平台、IP 使用、设计导出、调试及其他设计方面更容易地做出决策。这样,我们就能够通过分析世界上其他团队的案例,从他们的项目中汲取经验。

基于FPGA的原型可满足不同目的需求

不是一个按几个按钮就能完成的过程,在它不同的阶段需要仔细的关注和思考。除说明这个过程需要完成的工作和涉及到的专业知识外,我们还应解释在 SoC 项目中该进行(或者不该进行)的原因。在与原型设计人员多年交谈中,我们最常问到的一个问题是“为什么您这么做?”。答案有多种多样,我们把它们总结成了表 1 中几条常见的理由。举例来说,“真实环境中的数据效应”,这可能指的是某个团队的工作是通过原型设计得到某个系统全速运行时的模型,并将其与其他系统或外设相连,目的可能是为了测试对某个新接口标准的合规情况。他们进行原型设计的大致理由是“与真实环境接口”,而且原型设计也确实在真正的芯片器件面世之前,提供了实现这个目的的最快、最准确的途径。

基于FPGA原型设计 能为您做些什么?
表 1 采用基于 FPGA 原型的常见目的与原因

系统了解这些项目的目的和我们进行原型设计的原因,将有助于我们判断基于 FPGA 的原型设计是否能为我们的下一个项目提供帮助。

因此,让我们探究一下表 1 所述的目的以及基于 FPGA 的原型方法如何能帮助实现这些目的。在许多情况下,我们还会给出真实环境中的一些实例,笔者藉此提前感谢那些奉献自己经验、指导他人走向成功的人士。

高性能与准确度

只有基于 FPGA 的原型才能提供正确测试设计各个方面所需的速度和准确度。我们把这个理由放在首位的原因是,虽然项目有许多需要实现的给定目的,但对需要进行原型设计的团队来说,这可能是所有理由中最根本的原因。举例来说,这个团队的目的可能是验证某些 SoC 的嵌入式软件,观察其在真实硬件上全速运行的情况,但使用原型的根本原因是为了确保高性能与准确度。我们在虚拟系统中可以在更高的性能水平下验证该软件,但我们无法达到使用真实的 RTL 所能实现的准确度。

实时数据流

难以验证 SoC 的原因之一是因为其状态取决于许多变量,包括其之前的状态、输入的次序以及更广泛的 SoC 输出系统效应(以及可能的反馈)。将 SoC 设计与系统的其他部分相连并以实时速度运行,可以让我们立即观察到实时条件、输入和系统反馈的变化带来的效应。

葡萄牙波尔图市 Synopsys 公司 IP 团队开发的 HDMI 原型中的实时数据流就是一个很好的例子。在本实例中,高清(HD)媒体数据流经处理内核的原型输出到高清显示器上,如图 1 的方框图所示。注意方框图底部显示的是实时音频和高清视频数据流,从接收器(从外部源)接收,流经原型,输出到与外部监控器相连的实时HDMI PHY 的整个流程。
通过使用投片前的原型,我们可以立即看到和听到不同的高清数据在我们的设计上的效果,反之亦然。只有采用基于 FPGA 的原型方法才支持这种实时数据流,不仅给此类多媒体应用带来极大好处,也能给许多其他要求对输入数据流做出实时响应的应用带来诸多裨益。

基于FPGA原型设计 能为您做些什么?
图 1 HDMI 原型方框图

软硬件集成

在上述实例中,读者可能已经注意到原型使用了一块小型 MicroBlazeTM CPU,并备有外设和存储器,从而体现了一个 SoC 的所有常见模块。在这个设计中,运行在 CPU 上的软件主要用于加载和控制 A/V 处理。然而,在许多SoC 设计中,软件最耗精力。

鉴于软件已成为 SoC 开发工作的主体部分,软件工作在项目日程中占据关键位置越来越常见。当 SoC 能够有效达到量产标准的时候,决定项目实际完成日期的是软件开发和验证工作。在这种情况下,系统开发团队如何才能提升软件开发和验证工作的效率呢?要回答这个问题,我们需要查看软件开发团队把时间都花在什么地方。

为软件开发建立 SoC 的模型软件由于自身的复杂性,很难做到完美。对我们在日常使用计算机的过程中遇到的软件升级、服务包和漏洞修补的情况,我们都已经司空见惯。但是,具体到嵌入 SoC 中的软件,这种无休止的软件改进方法就遇到了障碍。另一方面,相比于通用的计算机软件而言,与嵌入式软件互动的系统,其设定的使用模式和环境条件都更容易确定。而且,为较简单的系统开发的嵌入式软件可以比较简单,也就更易于全面验证。

举例来说,控制车辆子系统或电子玩具的 SoC 比在实时操作系统 (RTOS) 上运行许多应用和流程的智能手机更容易
进行全面测试。

如果我们更加仔细地观察运行在这类智能手机上的软件,例如图 2 所示的 Android 软件,我们可以看到一种多层布置,这称为软件协议栈。(该图基于软件设计师 Frank Abelson 在其所著的《Unlocking Android》一书中的原始图。

基于FPGA原型设计 能为您做些什么?
图 2 Android 软件协议栈

在观察软件协议栈时,我们会发现,协议栈的最底层——也就是那些最接近硬件的部分,主要是为了满足将软件映射到 SoC 硬件上的需求。这就需要对硬件有绝对的了解,甚至包括地址和时钟周期等。软件协议栈最底层的设计人员往往称自己为平台工程师,他们的工作就是准确描述硬件,以便协议栈的更高层次能够识别和重复使用。这种描述被某些 RTOS 厂商称为板支持包(BSP),与我们日常使用的 PC 的基本输入/输出系统 (BIOS) 类似。

协议栈从下往上第二层包含 RTOS的内核以及将较高层次的软件与被描述的硬件相连的必要驱动程序。在这些协议栈的最底层中,平台工程师和驱动程序开发人员需要在真实的 SoC 或完全准确的SoC 模型上验证他们的代码。这个层面的软件开发人员需要全面了解各时钟周期软件的行为。

作为软件开发人员的另一极,在协议栈的顶层,我们可以看到用户空间,在这里可以同时运行多个应用,比如像智能电话中的联系人管理器、视频显示器、互联网浏览器和实际呼叫的电话子系统。这些应用中的每一个都不能直接访问 SoC 硬件,而且实际上在某种程度上违背了所有硬件考虑事项。这些应用依赖运行在协议栈较低层的软件代表自己与 SoC 硬件及系统其他部分通信。

我们可以归纳为:在协议栈的每一层,软件开发人员只需要一个足够准确的模型来让自己的代码认为自己运行在目标 SoC 上即可。超过必要的准确度只会让模型在模拟器上的运行速度下降。实际上,任何层面的 SoC 建模,都要求我们把硬件和协议栈描述为比当前层面更低的一层,以便进行验证。而且在理想的情况下,我们应该只要求够用的准确度,以实现最高性能。

举例来说,协议栈顶层的应用开发人员可以在真实的SoC或 SoC 模型上测试代码。在这种情况下,模型的准确度只要能够让应用认为自己运行在真正的 SoC 上就足够,它不需要精确到时钟周期,也不需要了解硬件的细致结构。但这里速度非常重要,因为在许多情况下有多个应用会同时运行,并与真实环境中的数据接口。

这种只为软件层提供“够用的准确度”的建模方法为不同的软件开发人员提供了多种不同的建模环境,供他们在SoC 项目的不同阶段使用。可以采用SystemC 这样的语言进行事务处理层面的建模,创建出一个准确度低但速度足够快的仿真器模型,用来同时运行许多应用。如果实时的真实数据的处理不是很重要,那么考虑采用虚拟原型方法比较好。

不过,必须完整运行整个软件协议栈或必须处理真实环境中的数据时,最适合采用基于 FPGA 的原型方法。

使用原型验证软件的实例只有采用基于 FPGA 的原型方法才能够打破建模方法中准确度与性能之间内在的相互牵制关系。采用 FPGA,我们既能实现实时的速度,又能以完全的 RTL 周期精度建模。这样,单个原型不仅能供低层软件验证要求的准确模型使用,又能供高层应用开发人员需要的高速模型使用。实际上,整个 SoC软件协议栈都可以在单个基于 FPGA的原型上建模。德克萨斯州奥斯汀市Freescale Semiconductor公司移动产品部的 Scott Constable 及其团队开展的项目就是采用 FPGA 验证软件的一个很好的例子。

Freescale非常想加快 SoC 开发进程,因为手机市场上产品生命周期短,需要产品尽快打入市场。这不仅是为了赢得竞争,也是为了避免迅速过时。通过分析流程中耗时最多的环节,Freescale发现通过加快手机3G协议测试工作可以带来最明显的效果。如果测试工作能够在流片前完成,Freescale就可以将项目时间缩短数月。与通常只有一到两年的产品生命周期而言,这非常重要。

协议测试是一个复杂的过程,就算以较高的实时速度进行,也需要一天才能完成。使用 RTL 级仿真需要花上数年,而在较快的仿真器上运行也要数周时间,这都不切合实际。采用 FPGA 是因为这是实现必要的时钟速度,及时完成测试的唯一途径。

协议测试需要开发产品的各种软件特性,包括硬件驱动程序、操作系统和协议栈代码。虽然如前所述主要的目的是协议测试,通过使用 FPGA,所有这些软件开发工作都能够在流片前完成,从而大大加快各种最终产品的开发进度。

Freescale 构建了一个多芯片系统的原型,其中包括一个双核 MXC2 基带处理器和一个 RF收发器芯片的数字部分。基带处理器内置一个用于调制解调器处理的 Freescale StarCore DSP内核、一个用于用户应用处理的ARM®926 内核,以及 60 多个外设。

Synopsys HAPS-54 原型板用来实现原型(如图 3 所示)。该基带处理器有 500 多万个 ASIC门,Scott 的团队使用 Synopsys Certify 工具将其在原型板上划分给三个赛灵思 Virtex-5FPGA,同时把数字 RF 设计布置在第四个 FPGA 中。Freescale 决定不构建模拟部分的原型,而是直接从 Antritsu协议测试盒中以数字形式提供移动网络数据。

基于FPGA原型设计 能为您做些什么?
图3 Freescale 的 SoC 设计在 HAPS-54 原型板上的分区

较早的内核使用的某些设计技术对ASIC 来说非常有效果,但对 FPGA 来说却不太好用。另外,RTL 的一部分是从系统级设计代码中自动生成的,由于其过于复杂的时钟网络,对 FPGA 来说也是相当不利。因此,必须对 RTL 进行一些调整,使其更加兼容 FPGA,这样做的成效非常显著。


上一页 1 2 下一页

关键词: FPGA 原型设计

评论


相关推荐

技术专区

关闭