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

FPGA 实现语言:从 VHDL、Verilog 到高层 C/C++

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 逻辑值:

FPGA 实现语言:从 VHDL、Verilog 到高层 C/C++

强 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 框图。

点击查看全尺寸图片
FPGA 实现语言:从 VHDL、Verilog 到高层 C/C++
图 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


FPGA 实现语言:从 VHDL、Verilog 到高层 C/C++Jim Ledin 是 Ledin Engineering, Inc. CEO。精通嵌入式软硬件设计、开发、测试,亦擅长嵌入式系统网络安全评估与渗透测试。爱荷华州立大学航空航天工程学士,佐治亚理工学院电气与计算机工程硕士。加州注册专业电气工程师、CISSP、CEH、CPT 持证者。

相关内容:

订阅《Embedded》周刊,获取更多嵌入式技术资讯。


嵌入式

  1. 先进增材制造软件助力产能最大化
  2. 嵌入式系统编程:语言、架构与应用全景
  3. 嵌入式系统设计:步骤、原则与现实应用
  4. 利用嵌入式AI将大数据转化为可执行智能洞察
  5. 掌握USB-C:高速数据与电力传输的设计挑战与实用方案
  6. 重塑技术未来的嵌入式设计趋势
  7. 面向 MIPI 摄像头的高性能 FPGA 加速器助力嵌入式视觉
  8. Foundries.io志做IoT界Red Hat:处理器无关Linux与Zephyr方案
  9. Clientron PST650:一体化 POS 终端,集成热敏打印机,面向酒店与零售
  10. MAXREFDES220#:基于光学传感器的无袖带血压监测参考设计
  11. Lattice CrossLink-NX FPGA:边缘 AI 场景下功耗降 75%、体积缩 10 倍、可靠性增 100 倍
  12. 微芯科技推出国防级 PolarFire SoC FPGA,启动早期访问计划