编者按——尽管协处理器架构因其数字处理性能和吞吐量而闻名,但也为嵌入式系统设计者提供了实现项目管理策略的机会,从而降低了开发成本并加快了上市速度。本文重点介绍分立式微控制器 (MCU) 和分立式现场可编程门阵列 (FPGA) 的组合,展示了这种架构如何适合高效和迭代的设计过程。利用研究资料、实证结果和案例研究,探讨这种架构的好处,并提供示范性的应用。读完本文,嵌入式系统设计者将对何时以及如何实现这种多功能硬件架构有个更好的理解。
引言
嵌入式系统设计者经常会发现自己被卡在设计限制、性能期望以及进度和预算问题上。事实上,甚至现代项目管理中有一些像”快速失败”、“敏捷”、“面向未来”和“颠覆性!”这样的流行语或短语,进一步突出了这一角色的不稳定性。即使试图满足这些期望,所涉及的手法也可能是令人痛苦的,同时这些期望一直在整个市场上传播着并持续被强化。我们需要的是一种设计方法,能够实现一个不断演进的迭代过程,就像大多数嵌入式系统一样,从硬件架构开始。
协处理器架构是一种以结合了微控制器单元 (MCU) 和现场可编程门阵列 (FPGA) 技术优势而著称的硬件架构,它可以为嵌入式设计者提供一个能够满足最苛刻要求的过程,而且它还可以为解决已知和未知挑战提供必要的灵活性。通过提供能够迭代调整的硬件,设计者可以展示进展,达到关键里程碑,并充分利用快速原型设计过程。
在这个过程中,有一些关键的项目里程碑,每一个里程碑都有其独特的价值,可以为开发工作带来好处。在本文中,我们将提到以下术语:用微控制器进行数字信号处理里程碑、用微控制器进行系统管理里程碑以及产品部署里程碑。
本文结束时,我们将证明灵活的硬件架构可以比一个较僵硬的方法更适合现代嵌入式系统设计。此外,这种方法可以使项目成本和产品上市速度都得到改善。这一立场将通过论据、所提供实例和案例研究获得佐证。通过观察该架构所提供设计灵活性中每个里程碑的价值,我们可以清楚地看到,自适应硬件架构是推动嵌入式系统设计发展的强大动力。
探索协处理器架构的优势:设计灵活性和高性能处理
FPGA 设计的一个常见应用是直接与高速模数转换器 (ADC) 连接。信号数字化后,读入 FPGA,然后将一些数字信号处理器 (DSP) 算法应用于该信号。最后,FPGA 再根据这些结果做出决策。
本文通篇将以这样一个应用将作为实例。此外,图 1 展示了一个通用的协处理器架构,其中 MCU 和 FPGA 通过 MCU 的外部存储器接口进行连接。FPGA 被当作是一块外部静态随机存取存储器 (SRAM)。信号从 FPGA 返回 MCU,充当硬件中断线路和状态指示。这允许 FPGA 向 MCU 指示关键的状态,例如通知 ADC 转换准备好了,或发生了故障,或发生了其他值得注意的事件。
图 1:通用协处理器示意图 (MCU + FPGA)。(图片来源:CEPD)
从上述每个里程碑的交付成果来看,可能最能看出协处理器方法的优势。价值不仅要评估一项任务或阶段的成就,而且还评估这些成就所带来的用处。通过回答以下问题有助于评估一个里程碑的交付成果的整体价值。
随着项目依赖性和瓶颈的消除,其他团队成员的进展现在能否更迅速地继续进行下去?
里程碑成就如何让进一步的并行操作成为可能?
用微控制器进行数字信号处理的里程碑
图 2:架构——用微控制器进行数字信号处理。(图片来源:CEPD)
这种硬件架构所允许的第一个开发阶段将 MCU 放在前期和中期。在同等条件下,MCU 和可执行软件的开发比 FPGA 和硬件描述语言 (HDL) 的开发更节省资源和时间。因此,通过启动以 MCU 为主要处理器的产品开发,算法可以更迅速地实现、测试和验证。这使得算法和逻辑错误可以在设计过程的早期被发现,也使得信号链的实质部分可以被测试和验证。
在这个最初的里程碑中,FPGA 的作用是作为一个高速数据的收集接口。它的任务是可靠地管理来自高速 ADC 的数据,提醒 MCU 有数据可用,并在 MCU 的外部存储器接口上提供这些数据。虽然这个角色不包括实现基于 HDL 的 DSP 过程或其他算法,但它仍然是非常关键的。
在这个阶段进行的 FPGA 开发为产品的最终成功奠定了基础,无论是在产品开发过程中还是在向市场发布时。通过只关注低级别的接口,就可以有足够的时间来测试这些基本操作。只有当 FPGA 可靠、有把握地履行这一接口作用时,才能有把握地完成这一里程碑。
这个最初的里程碑的主要交付成果包括以下好处:
整个信号路径——所有的放大、衰减和转换——都将被测试和验证。
通过最初在软件 (C/C++) 中实现算法,项目开发的时间和精力将有所减少;这对管理层和其他利益相关者来说具有相当大的价值,他们必须在批准未来设计阶段之前看到这个项目的可行性。
在 C/C++ 中实现算法的经验将直接转移到 HDL 实现中——通过使用“软件到 HDL”工具,例如 Xilinx HLS。
系统管理与微控制器的里程碑
图 3:架构——用微控制器进行系统管理。(图片来源:CEPD)
由这种协处理器方法提供的第二个开发展阶段是由 DSP 过程和算法实现从 MCU 转移到 FPGA 来界定的。FPGA 仍然负责高速 ADC 接口,但通过承担这些其他角色,FPGA 提供的速度和并行性得到了充分的利用。此外,与 MCU 不同,可以实现多个 DSP 进程和算法通道实例,并同步运行。
基于从 MCU 的实现中获得的经验,设计者会将这种信心带入下一个里程碑。诸如前面提到的 Xilinx Vivado HLS 这样的工具提供了从可执行 C/C++ 代码到可综合的 HDL 的功能转换。现在,仍然必须定义和实现时序约束、工艺参数和其他用户偏好,但核心功能被坚持下来并转化为 FPGA 架构。
对于这个里程碑,MCU 的角色就是一个系统管理者。FPGA 内的状态和控制寄存器由 MCU 监控、更新和报告。此外,MCU 还管理着用户界面 (UI)。这个用户界面可以采取通过以太网或 Wi-Fi 连接访问网络服务器的形式,也可以是一个工业触摸屏界面,让用户在使用点进行访问。从 MCU 的新的、更精细的角色中得到的关键启示是:通过将其从计算密集型的处理任务中解脱出来,现在可将 MCU 和 FPGA 运用到其最适合的任务中来。
关键的可交付成果构成了这个里程碑,并包括以下好处:
FPGA 所提供 DSP 进程和算法实现的快速、并行执行。MCU 提供了一个反应灵敏的精简 UI,并管理着产品的执行过程。
由于首先在 MCU 内进行了开发和验证,算法风险得到了缓解,这些缓解措施被转换为可综合的 HDL。像 Vivado HLS 这样的工具使得这种转换变得更加容易。此外,通过集成的仿真工具,如 Vivado 设计套件,可以减轻 FPGA 特有的风险。
利益相关者不会因为将过程转移到 FPGA 上而面临重大风险。相反,他们可以看到并享受到 FPGA 的速度和并行性带来的好处。观察到明显的性能改进后,现在可以把工作重点放在为该设计的制造做好准备。
产品部署里程碑
随着计算密集型处理在 FPGA 内得到解决,MCU 就能很地处理其系统管理和用户界面角色,产品部署亦因此而准备就绪。现在,本文不主张绕过 Alpha 和 Beta 版本;但是,本里程碑的重点是协处理器架构为产品部署提供的能力。
MCU 和 FPGA 都是现场可更新器件。目前已经取得了多项进展,使得 FPGA 的更新与软件更新一样容易。此外,由于 FPGA 在 MCU 的可寻址存储器空间内,MCU 可以作为整个系统的存取点:同时为自已和 FPGA 接收更新。更新可以在每个最终用户的基础上有条件地安排、分发和定制。最后,可以进行用户和用例日志维护并使之与特定构建实现关联。有了这些数据集,即使在产品进入现场后,性能也能继续得到完善和提高。
也许这种整体系统更新能力的优势在天基应用中得到了最充分的体现。一旦产品推出,维护和更新必须在远程进行。这可以是一个简单的逻辑条件改变,或复杂到更新一个通信调制方案。FPGA 技术提供的可编程性和协处理器架构可以满足这一系列能力的全部要求,同时提供防辐射的元件选择。
这个里程碑的最后一个关键收获是逐步减少成本。成本降低、材料清单 (BOM) 的变化和其他优化也可能出现在这个里程碑。在现场部署时,可能会发现使用价格较低的 MCU 或性能较差的 FPGA 也能很好地运行产品。由于协处理器的存在,架构设计者不会拘泥于使用那些能力超出其应用需求的组件。此外,如果一个组件无法使用,该架构允许新的组件被整合到设计中。单芯片、片上系统 (SoC) 架构,或试图处理所有产品处理的高性能 DSP 或 MC,都不是这种情况。协处理器架构是能力和灵活性的良好组合,给设计者在开发阶段和向市场发布时提供了更多选择和自由。
支持调查和相关案例研究
卫星通信实例
简而言之,协处理器的价值在于帮助主处理单元减负,让任务在硬件上执行,其中可以利用加速和精简优势。这种设计选择的好处是计算速度和能力的净增加,而且正如本文所认为的那样,开发成本和开发时间也会减少。也许这些好处最引人注目的一面就在空间通信系统领域。
在《作为协处理器的 FPGA 式硬件》一书中,G. Prasad 和 N. Vasantha 详细介绍了在 FPGA 中数据处理如何混合卫星通信系统的计算需求,而没有特定应用集成电路 (ASIC) 的高非经常性工程 (NRE) 成本或硬体系架构处理器的特定应用限制。正如在用微控制器进行数字信号处理里程碑中所描述的那样,其设计从应用处理器开始,执行大部分的计算密集型算法。从这一出发点着手,他们确定了消耗中央处理单元 (CPU) 时钟大部分周期的软件关键部分,并将这些部分迁移到 HDL 实现。以下图形表示与到目前为止所介绍的高度相似,然而,他们选择将应用程序作为自己的独立块来表示,因为它可以在主机(处理器)或基于 FPGA 的硬件中实现。
图 4:应用程序、主机处理器和基于 FPGA 的硬件——用于卫星通信实例。
通过利用外设组件互连 (PCI) 接口和主机处理器的直接存储器访问 (DMA) ,外设性能得到了极大的提高。这主要体现在对去随机化过程的改进上。当这一过程在主机处理器的软件中进行时,系统的实时响应显然出现了瓶颈。然而,当转移到 FPGA 时,我们可以看到以下好处:
去随机化过程实时执行,不会造成瓶颈
主机处理器的计算开销大大减少,现在它可以更好地发挥所需的记录角色。
整个系统的总性能就提升了。
所有这些都是在没有 ASIC 相关开销的情况下实现的,同时还享有可编程逻辑的灵活性 [5]。卫星通信带来了相当大的挑战,而这种方法可以可靠地满足这些要求,并继续提供设计灵活性。
汽车信息娱乐系统实例
车车娱乐系统是挑剔的消费者看重的功能。与大多数汽车电子产品不同的是,这些设备是高度可见的,人们预期很高,希望能拥有出色的响应时间和性能。然而,设计者往往在当前的设计需求和未来功能所需的灵活性之间受到挤压。在这个例子中,我们将使用信号处理和无线通信的实现需求来强调协处理器硬件架构的优势。
所使用的主要汽车娱乐系统架构之一是由 Delphi Delco 电子系统公司发布的。该架构采用了一个 SH-4 MCU 和一个配套的 ASIC,即日立的 HD64404 Amanda 外设。这个架构满足了汽车市场 75% 以上的基本娱乐功能;但它缺乏解决视频处理应用和无线通信的能力。通过在这个现有的架构中加入 FPGA,就可以为这个已经存在的设计增加进一步的灵活性和能力。
图 5:信息娱乐系统 FPGA 协处理器架构实例 1。
图 5 的架构同时适用于视频处理和无线通信管理。通过将 DSP 功能推给 FPGA,Amanda 处理器可以起到系统管理的作用,并被释放出来以实现无线通信堆栈。由于 Amanda 和 FPGA 都可以访问外部存储器,数据可以在系统的处理器和组件之间快速交换。
图 6:信息娱乐系统 FPGA 协处理器架构实例 2。
图 6 中的第二个信息娱乐系统突现了 FPGA 的能力,同时解决了高速模拟数据的传入和视频应用所需的压缩和编码处理。事实上,所有这些功能都可以推给 FPGA,通过使用并行处理,这些都可以实时处理。
通过在现有的硬件架构中加入 FPGA,现有硬件的成熟性能就可以获得灵活性和未来适用性。即使在现有系统中,协处理器架构也为设计者提供了选择,否则将无法使用 [6]。
快速原型开发优势
快速原型开发过程的核心是就要覆盖大量产品开发领域,因此要能并行执行任务、快速识别“错误”和设计问题以及验证数据和信号路径,特别是项目关键路径内的数据和信号路径。然而,要使这一过程真正产生精简、高效的结果,必须在所需的项目领域有足够的专业知识。
传统上,这意味着必须有一个硬件工程师,一个嵌入式软件或 DSP 工程师,以及一个 HDL 工程师。现在,有很多跨学科的专业人员,他们可能能够满足多种角色;然而在协调这些工作时,仍然涉及大量的项目开销。
在《用于小波协处理器的基于 FPGA 的快速原型开发平台》一文中,作者提倡使用协处理器架构可以让一个 DSP 工程师高效地完成所有这些角色。对于这项研究,该团队开始在 MATLAB 的 Simulink 工具中设计和仿真所需的 DSP 功能。这有两个主要功能,即:1) 通过仿真验证所需的性能;2) 作为基准,用以比较和参考未来的设计选择。
仿真之后,关键功能被确定下来,并被划分为不同的核心——这些是可以在 FPGA 内合成的软核组件和处理器。这项工作中最重要的一步是定义这些核心和组件之间的接口,并将数据交换性能与期望的、仿真的性能进行比较。这一设计过程与 Xilinx 的嵌入式系统设计流程紧密结合,具体汇总见下图 7。
图 7:实现设计流程
通过将系统划分为可整合的内核,DSP 工程师可以专注于信号处理链中最关键的方面。她/他不需要成为硬件或 HDL 方面的专家,就可以在 FPGA 内修改、路由或实现不同的软核处理器或组件。因此,只要设计者了解接口和数据的格式,他们就能完全控制信号路径,并能完善系统的性能。
实证结果——离散余弦变换案例研究
实证结果不仅证实了协处理器架构为嵌入式系统设计者提供的灵活性,而且还展示了现代 FPGA 工具的性能增强选项。像下面提到的增强功能,对于其他硬件架构来说,可能无法使用或影响较小。离散余弦变换 (DCT) 被选为计算密集型算法,其从基于 C 的实现到基于 HDL 的实现的进展是这些结果的核心。选择 DCT 是因为这种算法可用于数字信号处理的模式识别和筛选 [8]。该实证结果基于一项实验室工作,由作者及其同事完成,获得了 2020-2021 年的 Xilinx 联盟合作伙伴认证。
在这项工作中,使用了以下工具和设备:
Vivado HLS 2019 版
用于评估和仿真的设备是 xczu7ev-ffvc1156-2-e
从基于 C 语言的实现开始,DCT 算法接受两个 16 位数的数组;数组 “a” 是 DCT 的输入数组,数组 “b” 是 DCT 的输出数组。因此,数据宽度 (DW) 被定义为 16,而数组内的元素数 (N) 为 1024/DW,即 64。最后,DCT 矩阵的大小 (DCT_SIZE) 被置为 8,这意味着使用了一个 8×8 的矩阵。
在本文前提之下,基于 C 语言的算法实现允许设计者快速开发和验证算法的功能。尽管这是一个重要的考虑因素,但这种验证将功能置于了比执行时间更高的权重。这种加权是允许的,因为该算法的最终实现将在 FPGA 中进行,硬件加速、循环展开和其他技术都是现成的。
图 8:Xilinx Vivado HLS 设计流程。
一旦 DCT 代码在 Vivado HLS 工具中作为一个项目被创建,下一步就是开始为 FPGA 的实现进行设计整合。在接下来的步骤中,将算法的执行从 MCU 转移到 FPGA 的一些最具影响力的好处变得更加明显——作为参考,这一步相当于上面讨论的微控制器的系统管理里程碑。
现代 FPGA 工具允许进行一系列的优化和增强,从而极大地提高复杂算法的性能。在分析结果之前,有一些重要的术语需要牢记。
表 2:FPGA 算法执行优化结果(资源利用)。
默认
默认的优化设置来自于将基于 C 语言的算法转换为可综合 HDL 的未改变结果。没有启用任何优化,这可以作为性能参考,以更好地了解其他优化。
流水线内循环
PIPELINE 指令指示 Vivado HLS 展开内循环,这样新的数据就可以开始被处理,而现有的数据仍在流水线中。因此,新数据不必等待现有数据完成后再开始处理。
流水线外循环
通过对外循环应用 PIPELINE 指令,外循环的操作现在被流水线化了。但内循环的操作现在是同步进行的。通过将其直接应用于外循环,延迟和间隔时间都减少了一半。
阵列划分
这条指令将循环的内容映射到阵列中,从而将所有的存储器访问扁平化到这些阵列中的单个元素。这样做,会消耗更多的 RAM,但同样的,这个算法的执行时间也会减少一半。
数据流
这条指令允许设计者指定每个输入读数之间的目标时钟周期数。这条指令只支持顶层函数。只有暴露在这个级别的循环和函数才能从这个指令中受益。
内联
INLINE 指令平坦了所有循环,包括内循环和外循环。行和列进程现在都可以并发执行。所需的时钟周期的数量被保持在最低水平,即使这样也会消耗更多的 FPGA 资源。
结语
协处理器的硬件架构为嵌入式设计者提供了一个高性能的平台,在整个开发过程中以及在产品发布后都能保持其设计灵活性。通过先在 C 或 C++ 中验证算法,进程、数据和信号路径以及关键功能都可以在相对较短的时间内得到验证。然后,通过将处理器密集型算法转换到协处理器 FPGA 中,设计者可以享受到硬件加速和更加模块化设计的好处。
如果零件过时或需要优化,相同的架构可以允许这些变化。新的 MCU 和新的 FPGA 可以安装到设计中,而所有的接口都可以保持相对不变。此外,由于 MCU 和 FPGA 都是可现场更新的,因此用户的特定改变和优化可以在现场和远程应用。
最后,这种架构将 MCU 的开发速度和可用性与 FPGA 的性能和可扩展性融合到了一起。由于每个开发步骤都有优化和性能提升,协处理器架构可以满足最具挑战性的需求——无论是今天的设计还是以后的设计。
评论
查看更多