亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

嵌入式设计与 FPGA:开发流程

编者注:随着用于智能产品设计的高级算法不断涌现,开发人员经常发现自己难以实现能够满足这些算法相关处理需求的嵌入式系统。 FPGA 可以提供所需的性能,但长期以来,使用 FPGA 进行设计一直被认为仅限于 FPGA 编程专家的权限。然而,如今功能更强大的 FPGA 和更有效的开发环境的出现使得 FPGA 开发变得更加容易。在此摘录中,即《架构高性能嵌入式系统》一书中的第 4 章,作者全面回顾了 FPGA 器件、实现语言和 FPGA 开发过程,并详细介绍了如何开始在您自己的环境中实现 FPGA。设计。以下系列文章中提供了完整的摘录:
1:硬件资源
2:实现语言
3:开发过程(本文)
4:构建项目
5:实现

改编自《架构高性能嵌入式系统》,作者:Jim Ledin。


FPGA开发过程

虽然 FPGA 用于各种不同的应用领域,但可以确定一组广泛适用于任何 FPGA 开发项目的开发步骤。本节讨论通常的 FPGA 开发步骤,按它们在项目中通常发生的顺序进行。

定义系统要求

开发新系统或对现有系统进行重大升级时,第一步是对系统应该做什么有一个清晰而详细的了解。需求定义过程从对系统预期功能、操作模式和关键特性的一般描述开始。该信息应以清晰明确的语言写出,并与与开发工作的成功有关的所有各方共享。系统需求共享的目的是为了让各方就描述的完整性和正确性达成共识。

要求描述必须充实以包括所需系统性能水平的规范,例如输入信号的采样率和执行器输出命令的更新率。物理尺寸限制、最短电池寿命和可容忍的环境温度范围等其他细节将指导设计过程。一般来说,必须制定一套全面的规范,描述所有被判断为与整体系统成功相关的系统参数的最低性能阈值。

整套系统要求必须完整,以至于任何符合所有规定规范的设计解决方案都必须是适当的解决方案。如果结果证明满足所有规范的设计由于某种不相关的原因被视为不可接受,则表示未能完整说明系统要求。

例如,如果确定一个技术上足够的解决方案生产成本太高,那么问题的根源很可能是在需求开发过程中未能完全定义成本控制约束。

在定义并同意顶层系统需求之后,通常需要将整个系统配置划分为子系统的集合,每个子系统都有一个内聚的目的和它自己的一组描述性要求和技术规范。在实时嵌入式系统架构中,数字处理能力很可能被表示为具有相应需求集合的子系统

为 FPGA 分配功能

如果系统架构中对数字处理的要求超出了适用于系统的微控制器和微处理器的能力,则考虑在设计中加入 FPGA 可能是合适的。一些系统架构,特别是那些受益于执行并行操作的高速数字硬件的系统架构,是 FPGA 实现的自然候选者。其他系统架构可能能够通过传统数字处理提供足够的性能,但可能有宝贵的机会利用 FPGA 实现在计划生命周期内提供的灵活性和可扩展性,从而预见未来的重大系统升级。

在决定在设计中加入 FPGA 之后,下一步是将整个系统数字处理要求的部分分配给 FPGA 器件。这通常包括 FPGA 输入和输出信号的规范、输入和输出的更新速率以及 FPGA 必须与之交互的组件的标识,包括 ADC 和 RAM 设备等部件。

确定所需的 FPGA 功能

定义了 FPGA 要执行的功能,并了解 FPGA 必须支持的与其他设备的接口后,就有可能开发出候选 FPGA 设备必须提供的功能列表。

一些 FPGA 系列是为低成本、不太复杂的应用而设计的,因此为实现数字逻辑提供了一组有限的资源。这些设备可能使用电池供电,并且只需要被动冷却。其他更强大的 FPGA 系列支持大规模、全功能的数字设计,旨在以最高性能运行,并且可能需要持续的主动冷却。

与嵌入式应用相关的系统要求将指导为应用选择合适的 FPGA 系列。此时,可能无法确定首选系列中的特定 FPGA 模型,因为尚未完全定义 FPGA 实现的资源需求。但是,根据经验,可以识别出少数适合设计的 FPGA 模型。

除了用于数字电路实现的 FPGA 资源外,许多 FPGA 模型还包括可能对系统设计很重要的附加功能。例如,内置 ADC 可能有助于最大限度地减少系统部件数量。所需和期望的 FPGA 特性列表将有助于进一步缩小系统合适 FPGA 器件的选择范围。

实现 FPGA 设计

确定了候选 FPGA 模型并详细定义了分配给手头的 FPGA 的功能后,是时候开始实施 FPGA 设计了。这通常会涉及到 FPGA 开发工具套件的使用,并且通常主要包括使用项目的首选语言开发 HDL 代码。

如果合适,FPGA 实现可以从顶层 FPGA 设计的框图表示开始。必要时,可以将HDL或C/C++开发的组件融入到模块设计中,以完成完整的系统实现。

或者,直接在 HDL 中开发整个系统设计也很常见。对于熟悉该语言并充分了解所用 FPGA 模型的特性和约束的开发人员来说,这可能会带来最资源效率和最高性能的设计结果。

随着初始设计变得更加详细,FPGA 开发分阶段进行,直到生成 FPGA 器件的编程文件。对于一个大型项目,通常会多次迭代这些阶段,在每次通过这些步骤时开发整个设计的一小部分。以下部分将介绍这些阶段。

设计入口

设计入口 是系统开发人员使用 HDL 代码、框图和/或 C/C++ 代码定义系统功能的阶段。代码和其他工件(例如框图)以抽象术语定义系统的逻辑功能。换句话说,设计工件定义了一个逻辑电路,但没有定义它如何与系统的其余部分集成。

I/O 规划

FPGA I/O规划 是识别分配用于执行特定 I/O 功能的引脚并关联任何设备功能(例如用于每个信号的 I/O 信号标准)的过程。作为 I/O 规划过程的一部分,考虑诸如物理设备封装 I/O 引脚位于何处等问题可能很重要。这一步很重要,可以最大限度地减少高速信号的印刷电路板走线长度,并避免迫使电路信号走线不必要地相互交叉。

I/O信号需求的定义是约束的一种形式 在FPGA开发过程中。另一个主要约束类别包括决定 FPGA 解决方案性能的时序要求。 FPGA 综合过程使用 HDL 代码和项目约束来开发满足所有定义约束的功能正确的 FPGA 解决方案。如果工具不能满足所有约束条件,综合就会失败。

合成

合成 将源代码转换为称为网表的电路设计 .网表表示由目标 FPGA 模型的资源构建的电路。网表代表电路的逻辑或原理图版本。它没有定义电路将如何在物理 FPGA 设备中实现。这将发生在下一步中。

地点和路线

地方 过程获取在网表中定义的 FPGA 资源,并将它们分配给所选 FPGA 内的特定逻辑元件。由此产生的资源放置必须满足限制这些元素分配的任何约束,包括 I/O 约束和时序约束。

在布局过程中为逻辑元件分配物理位置后,在路由期间配置逻辑元件之间的一组连接 过程。路由实现了逻辑元件之间的所有连接,并使电路能够按照 HDL 代码中的描述运行。布局布线完成后,FPGA的配置就完全确定了。

比特流生成

FPGA 开发过程的最后一步是生成比特流文件。为了实现最高性能,大多数现代 FPGA 设备使用 静态 RAM 在内部存储其配置 (SRAM ).

您可以将 FPGA 配置 SRAM 视为一个非常大的移位寄存器,可能包含数百万位。该移位寄存器的内容全面规定了 FPGA 器件配置和操作的所有方面。 FPGA 开发期间生成的比特流文件代表移位寄存器的设置,这些设置使设备执行 HDL 和约束指定的预期功能。在传统的软件开发过程中,比特流文件类似于链接器产生的可执行程序。

SRAM 是易失性的,每次移除设备电源时都会丢失其内容。实时嵌入式系统架构必须提供一种在每次上电时将比特流文件加载到 FPGA 中的方法。通常,比特流要么从设备内的闪存加载,要么从在每个开机周期内连接到设备的外部源(例如 PC)加载。

完成 FPGA 比特流的编译后,下一步是测试实现以验证它是否正确运行。此步骤与传统软件构建过程结束时所需的测试没有什么不同。

测试实施

FPGA 开发容易受到困扰传统软件开发工作的所有类型的错误的影响。在 FPGA 开发过程中,您可能会看到许多与错误语法、尝试使用当前无法访问的资源以及许多其他类型的违规相关的错误消息。与任何编程工作一样,您需要确定每个错误的来源并解决问题。

即使在 FPGA 应用程序成功地通过所有阶段进行比特流生成之后,也不能保证设计将按预期执行。为了在合理的时间表上实现成功的设计,在开发的每个阶段进行充分的测试绝对至关重要。

测试的第一阶段应该彻底演练 HDL 代码的行为,以证明它按预期执行。本章末尾的示例项目将演示如何使用 Vivado 工具套件对设计中的 HDL 逻辑进行全面测试。

生成比特流后,无法替代在最终系统配置中实施的 FPGA 综合测试。此测试必须彻底测试 FPGA 的所有特性和模式,包括其对超出范围和错误条件的响应。

在设计、开发和测试过程的每个步骤中,项目人员都必须随时了解在不太可能或罕见的情况下实施易受不当行为影响的系统功能的可能性。此类问题的发生可能代表极难复制的错误,并且可能永远玷污嵌入式系统设计和生产它的组织的看法。如果您的测试工作出色,出现这种结果的可能性将大大降低。

下一节将详细描述使用 Arty A7 开发板和 Xilinx Vivado 工具套件开发、测试和实现简单 FPGA 项目的步骤。

经 Packt Publishing 许可转载。版权所有 © 2021 Packt Publishing


吉姆·莱丁 是 Ledin Engineering, Inc. 的首席执行官。Jim 是嵌入式软件和硬件设计、开发和测试方面的专家。他还擅长嵌入式系统网络安全评估和渗透测试。他拥有学士学位爱荷华州立大学航空航天工程学士学位和硕士学位。佐治亚理工学院电气和计算机工程学士学位。 Jim 是加利福尼亚州的注册专业电气工程师、认证信息系统安全专家 (CISSP)、认证道德黑客 (CEH) 和认证渗透测试员 (CPT)。

相关内容:

  • 使用 FPGA 进行嵌入式设计:硬件资源
  • 使用 FPGA 进行嵌入式设计:实现语言
  • 开源工具有助于简化 FPGA 编程
  • 在 FPGA 或 ASIC 中实现浮点算法
  • 利用 FPGA 进行深度学习
  • 软件工具将 GPU 代码迁移到 FPGA 以用于 AI 应用
  • FPGA 取代了 Subaru Eyesight 基于视觉的 ADAS 中的 ASIC

有关 Embedded 的更多信息,请订阅 Embedded 的每周电子邮件通讯。


嵌入式

  1. 故障安全设计
  2. 什么是嵌入式系统编程及其语言
  3. 什么是聊天机器人:设计流程及其架构
  4. 什么是嵌入式系统设计:设计过程中的步骤
  5. 嵌入式系统和应用基础
  6. 使用测试驱动开发开发状态机
  7. ADI 展示了嵌入式系统设计各个领域的技术
  8. 嵌入式设计与 FPGA:实现语言
  9. Axiomtek:带有集成第 2 层管理型 PoE 交换机的嵌入式系统
  10. IBASE:带有板载 AMD 锐龙嵌入式 V1000 SoC 的超薄 Mini-ITX 系统
  11. MicroSys:采用 NPX LS1028A CPU 和 IEEE TSN 的嵌入式边缘计算
  12. 全加加法