FPGA 实现语言:从 VHDL、Verilog 到高层 C/C++
编者按:智能产品中的先进算法要求嵌入式系统承担繁重处理负载。FPGA 提供所需性能,但许多开发者视 FPGA 设计为专家领域。现代硬件配合强大开发环境,已普及 FPGA 编程。本文摘自《架构高性能嵌入式系统》第 4 章,全面综述 FPGA 器件、实现语言及开发流程,并提供构建自有 FPGA 设计的实战指南。
1: 硬件资源
2: 实现语言(本文)
3: 开发流程
4: 构建项目
5: 实现
改编自《架构高性能嵌入式系统》,Jim Ledin 著。
FPGA 实现语言
FPGA 设计归根结底是选择一种或多种高层、类 HDL 语言描述器件行为。
传统选择为 VHDL 和 Verilog。现代工具链通常同时支持两者,加上框图配置,许多现接受 C/C++ 作为自动 HDL 生成源。
VHDL
VHSIC 硬件描述语言(VHDL)——VHSIC 即超高速集成电路——1983 年在美军资助下开发。其语法酷似 Ada,冗长且强类型。语言提供固定基础类型如 boolean、bit、bit_vector、character、string、integer、real、time、array,所有其他类型构建于这些原语之上。
IEEE 1164 定义 VHDL 标准库,含无处不在的 std_logic 类型表示单比特信号。下表列出 std_logic 逻辑值:

强 0/1 表示驱动二进制状态,弱信号指示总线争用。Z 表高阻态(CMOS 输出断开),U 为默认未初始化态,X 表示无驱动,- 标记未用输入。
典型 VHDL 设计以导入 IEEE 1164 库开始:
library IEEE;
use IEEE.std_logic_1164.all;
本章以 VHDL 为例,但 VHDL 和 Verilog 均可完整表达任何可综合 FPGA 设计。
Verilog
1984 年推出,2005 年标准化为 IEEE 1364,Verilog 仿照 C 设计以降低学习曲线。2009 年与 SystemVerilog 合并形成 IEEE 1800-2009,在核心 HDL 结构上增加大量验证特性。
Verilog wire 类型表示信号状态 0、1、不关心(x)、高阻(z),各具强弱驱动强度。VHDL 和 Verilog 都有用于硬件设计的可综合子集,额外结构支持仿真。
例如,不可综合 for 循环表现为软件循环,顺序迭代。可综合 for 循环展开为并行硬件副本,镜像迭代次数。
框图
除文本 HDL,现代 FPGA 套件提供图形化框图编辑器,让设计者无需编写底层代码即可组装复杂系统——如微处理器和高级 I/O。图 4.2 展示含 MicroBlaze 软处理器的 Xilinx Vivado 框图。
点击查看全尺寸图片
图 4.2 – 含 MicroBlaze 软微处理器的框图
MicroBlaze 是 Xilinx 面向 Artix-7 等系列的软核处理器。框图简化系统布局,工具最终在后台生成 VHDL 或 Verilog。检查生成代码——如 design_1_microblaze_0_0_stub.vhdl——可见 HDL 实体接口:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity design_1_microblaze_0_0 is
Port (
Clk: in STD_LOGIC;
Reset: in STD_LOGIC;
Interrupt: in STD_LOGIC;
Interrupt_Address: in STD_LOGIC_VECTOR (0 to 31);
Interrupt_Ack: out STD_LOGIC_VECTOR (0 to 1);
Instr_Addr: out STD_LOGIC_VECTOR (0 to 31);
Instr: in STD_LOGIC_VECTOR (0 to 31);
注意此文件仅定义处理器接口;核心逻辑作为授权 IP 提供,常为编译形式以保护知识产权。
C/C++
多家厂商现提供高层综合(HLS)工具将 C 或 C++ 转为 HDL,使开发者能将现有算法移植至 FPGA 硬件。虽底层 FPGA 并行运行,生成设计常将顺序 C/C++ 语句映射为状态机。源代码提供并行机会处,FPGA 可较传统处理器显著加速。
现代工具链允许 VHDL、Verilog、框图、HLS 衍生 HDL 在单项目共存。团队可按技能组合语言,但须审慎规划以避免维护开销并确保未来可维护性。
下节将演示标准 FPGA 开发流程,从概念到实现。
经 Packt Publishing 授权转载。版权所有 © 2021 Packt Publishing
Jim Ledin 是 Ledin Engineering, Inc. CEO。精通嵌入式软硬件设计、开发、测试,亦擅长嵌入式系统网络安全评估与渗透测试。爱荷华州立大学航空航天工程学士,佐治亚理工学院电气与计算机工程硕士。加州注册专业电气工程师、CISSP、CEH、CPT 持证者。
相关内容:
- 嵌入式 FPGA 设计:硬件资源
- 开源工具简化 FPGA 编程
- 在 FPGA 或 ASIC 中实现浮点算法
- 软件工具将 GPU 代码迁移至 FPGA 用于 AI 应用
- FPGA 在 Subaru Eyesight 视觉 ADAS 中取代 ASIC
- 基于 Flash 的 FPGA 如何简化功能安全需求
- 即时启动 FPGA 的优势
- 使用高速 NOR Flash 配置 FPGA
- FPGA 技术如何演进以满足新型中端系统需求
订阅《Embedded》周刊,获取更多嵌入式技术资讯。
嵌入式
- 先进增材制造软件助力产能最大化
- 嵌入式系统编程:语言、架构与应用全景
- 嵌入式系统设计:步骤、原则与现实应用
- 利用嵌入式AI将大数据转化为可执行智能洞察
- 掌握USB-C:高速数据与电力传输的设计挑战与实用方案
- 重塑技术未来的嵌入式设计趋势
- 面向 MIPI 摄像头的高性能 FPGA 加速器助力嵌入式视觉
- Foundries.io志做IoT界Red Hat:处理器无关Linux与Zephyr方案
- Clientron PST650:一体化 POS 终端,集成热敏打印机,面向酒店与零售
- MAXREFDES220#:基于光学传感器的无袖带血压监测参考设计
- Lattice CrossLink-NX FPGA:边缘 AI 场景下功耗降 75%、体积缩 10 倍、可靠性增 100 倍
- 微芯科技推出国防级 PolarFire SoC FPGA,启动早期访问计划