高性能嵌入式系统的 FPGA 硬件资源详解
编者按:随着智能产品设计中先进算法不断涌现,开发者常难以实现满足相关处理需求的嵌入式系统。FPGA 可提供所需性能,但 FPGA 设计长期被视为 FPGA 编程专家领域。如今,更强大的 FPGA 和更有效的开发环境使 FPGA 开发广泛普及。本文摘自《架构高性能嵌入式系统》第 4 章,全面综述 FPGA 器件、实现语言、开发流程,并详细演示如何在自有设计中开始实现 FPGA。
1: 硬件资源(本文)
2: 实现语言
3: 开发流程
4: 构建项目
5: 实现
改编自《架构高性能嵌入式系统》,Jim Ledin 著。
开发您的首个 FPGA 程序
本章从在实时嵌入式系统中有效使用 FPGA 器件切入,继而描述标准 FPGA 内含的功能元素。介绍 FPGA 设计语言范围——含硬件描述语言(HDL)、框图方法、C/C++ 等流行软件编程语言——并概述 FPGA 开发流程。章节以在低成本 FPGA 开发板上从系统需求陈述到全功能系统实现的完整开发周期示例结尾。
读完本章,您将理解 FPGA 在实时嵌入式系统架构中的应用、FPGA 芯片关键组件、FPGA 算法设计编程语言、开发基于 FPGA 应用的分步序列。您还将在低成本开发板上使用免费 FPGA 软件工具,走完完整 FPGA 开发示例。
我们将涵盖以下主题:
- 在实时嵌入式系统设计中使用 FPGA
- FPGA 实现语言
- FPGA 开发流程
- 开发您的首个 FPGA 项目
技术要求
本章文件见 https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems。
在实时嵌入式系统设计中使用 FPGA
如第 1 章FPGA 元素节所述,典型 FPGA 器件包含大量查找表、触发器、块 RAM 元素、DSP 切片及其他组件。了解各组件详细能力固然有用,但最关键的是:特定 FPGA 型号包含有限数量的各类资源,针对该型号的设计不能超出这些限制。
从嵌入式系统需求陈述视角审视开发流程更富成效。可先选型舒适满足需求的型号。设计推进中,可能遇到资源限制或发现缺失所需特性。此时选更强型号继续开发即可。反之,若所选 FPGA 资源过剩,降级到更小器件可降成本、引脚数、封装尺寸、功耗。
同系列内切换目标 FPGA 通常无缝衔接,设计工件完全可复用。跨系列或厂商可能需额外工作。关键点:具体型号无需在启动时确定;先验证 FPGA 作为可行方案,再选定合适厂商和器件系列。
本书示例项目使用 Xilinx Vivado 工具套件。虽部分 Xilinx 系列需 Vivado 许可证,本书用的 Artix-7 器件免费支持。Artix-7 兼具高性能、低功耗、降低系统成本。其他厂商提供类似系列与工具套件。
FPGA 开发涉及多种分析与设计数据。为具体讨论,本书全程使用 Vivado。掌握这些技术后,可迁移至其他厂商工具。
以下章节讨论 FPGA 系列与型号的关键差异化特性,含块 RAM 容量、I/O 信号类型、专用片上资源、嵌入式处理器核心的有无。
块 RAM 与分布式 RAM
块 RAM 在 FPGA 内实现专用存储区域。存储区由位宽(典型 8 或 16 位)和深度(存储位置数)指定。总块 RAM 通常以千比特(Kb)表示,随系列和型号变化。
许多 FPGA 也提供分布式 RAM,由查找表逻辑构建成 16 位小段。需要时可组合成更大块。分布式 RAM 适合存储中间结果等临时数据,块 RAM 用于缓存或 I/O 缓冲。
块 RAM 可为单端口或双端口。双端口 RAM 拥有两个读/写端口,特别适合桥接不同 clock 速度的子系统,实现无干扰数据传输。
块 RAM 可工作在FIFO模式,提供满、空、近满、近空状态信号。仔细控制写读操作防止数据丢失或损坏。
FPGA I/O 引脚及相关特性
FPGA I/O 引脚支持多种高速标准。设计时开发者为特定引脚分配功能并配置各引脚接口标准。信号为单端或差分。
单端信号参考地,历史用 TTL/CMOS 电平。现代 FPGA 支持更低电压范围——LVTTL(0-3.3V)和 LVCMOS 变体(1.2、1.5、1.8、2.5、3.3V)——降低功耗提升速度。高速单端标准含 HSTL 和 SSTL。
差分信号使用引脚对,因共模噪声大幅抵消,是高数据率链路首选。差分标准含 HSTL、SSTL、LVDS。LVDS 1994 年推出,提供恒定 3.5 mA 电流并翻转方向表示数据位。将传输线阻抗(LVDS 为 100 Ω)与终端阻抗匹配对避免反射至关重要。
专用硬件资源
FPGA 常含受益于固定高效实现的功能专用硬件:
- 外部动态 RAM (DRAM) 接口,典型支持 DDR3
- 模数转换器
- 锁相环,生成多倍时钟频率
- 数字信号处理 MAC 硬件
MAC 单元等专用硬件性能远超综合逻辑所能达到。
处理器核心
部分 FPGA 系列集成硬核处理器——如 Xilinx Zynq-7000 结合 ARM Cortex-A9 与 FPGA 结构。设计不需硬核时,可从 FPGA 资源实例化软处理器。软处理器高度可配置但通常性能不及硬核。
下节将介绍开发 FPGA 算法所用的主要编程语言和数据输入方法。
经 Packt Publishing 授权转载。版权所有 © 2021 Packt Publishing
Jim Ledin 是 Ledin Engineering, Inc. CEO。精通嵌入式软硬件设计、开发、测试,亦擅长嵌入式系统网络安全评估与渗透测试。爱荷华州立大学航空航天工程学士,佐治亚理工学院电气与计算机工程硕士。加州注册专业电气工程师、CISSP、CEH、CPT 持证者。
相关内容:
- 开源工具简化 FPGA 编程
- 在 FPGA 或 ASIC 中实现浮点算法
- 利用 FPGA 进行深度学习
- 软件工具将 GPU 代码迁移至 FPGA 用于 AI 应用
- FPGA 在 Subaru Eyesight 视觉 ADAS 中取代 ASIC
- 基于 Flash 的 FPGA 如何简化功能安全需求
- 即时启动 FPGA 的优势
- 使用高速 NOR Flash 配置 FPGA
- FPGA 技术如何演进以满足新型中端系统需求
订阅《Embedded》周刊,获取更多嵌入式技术资讯。
嵌入式
- 联网硬件设计避坑指南:从规格定义到合作伙伴选择的实战策略
- 先进增材制造软件助力产能最大化
- Eclipse IoT:统一开源包加速IoT开发
- 嵌入式系统设计:步骤、原则与现实应用
- 在嵌入式C中用测试驱动开发构建状态机
- 利用嵌入式AI将大数据转化为可执行智能洞察
- 社区驱动硬件CWE:识别设计安全弱点新框架
- 面向 MIPI 摄像头的高性能 FPGA 加速器助力嵌入式视觉
- Cypress 通过 ModusToolbox 全设备到云支持强化物联网开发
- Lattice MachXO3D FPGA内嵌硬件信任根 强化硬件安全
- MAXREFDES220#:基于光学传感器的无袖带血压监测参考设计
- Java 9 try-with-resources 改进:Effectively-final 变量直接使用