1+1=10

记记笔记,放松一下...

FPGA小记

接前面EDA软件小记,继续学习。

FPGA(Field Programmable Gate Array 现场可编程门阵列)是一种高度灵活的数字集成电路,广泛应用于多种行业和技术领域。

知名厂家

一些知名的FPGA厂家:

  • AMD Xilinx:/ˈzaɪ.lɪŋks/
  • Intel (前Altera):/ˈæl.tɛr.ə/
  • Microchip Technology(前 Microsemi, 前Actel):
  • Lattice Semiconductor:
  • Achronix:

列个表格:

FPGA 厂家 FPGA 系列 开发环境
AMD Xilinx /ˈzaɪ.lɪŋks/ Virtex, Kintex, Artix, Zynq Vivado /vɪˈvɑː.doʊ/ Design Suite, Vitis /ˈvaɪ.tɪs/
Intel (前 Altera /ˈæl.tɛr.ə/) Stratix, Arria, Cyclone Intel Quartus Prime
Microchip (前 Microsemi, 前 Actel) PolarFire, SmartFusion2, IGLOO2, RTG4 Libero SoC Design Suite
Lattice Semiconductor Mach, LatticeECP3, iCE40 Lattice Diamond, Radiant Software
Achronix Speedster7t Achronix CAD Environment (ACE)

Intel

对于Intel,FPGA的几个系列:

系列名称 发布时间 描述 特点 常见应用领域
Agilex 2019 最新一代的高性能FPGA系列 超高性能、能效优化 数据中心加速、高速网络、AI加速
Stratix /ˈstræ.tɪks/ Stratix: 2002
Stratix II: 2004
Stratix III: 2007
Stratix IV: 2008
Stratix V: 2010
Stratix 10: 2016
高端FPGA系列,提供最高性能 高性能、高集成度 数据中心、高性能计算、网络基础设备、军事系统
Arria /ˈɑː.ri.ə/ Arria GX: 2008
Arria II: 2009
Arria V: 2011
Arria 10: 2013
Arria V GZ: 2013
中高端FPGA系列,性能与成本平衡 性能优良、成本效益较高 无线通信、广播、数据处理
Cyclone Cyclone: 2002
Cyclone II: 2004
Cyclone III: 2007
Cyclone IV: 2009
Cyclone V: 2012
Cyclone 10: 2017
成本和功耗敏感的低端FPGA系列 成本效益高、低功耗 消费电子、工业控制、汽车电子
MAX MAX 7000: 1996
MAX 3000A: 1997
MAX II: 2004
MAX V: 2010
MAX 10: 2013
CPLD系列,适用于简单的逻辑集成 小型化、低功耗 简单逻辑控制、I/O扩展、设备管理
SoC FPGA Cyclone V SoC: 2012
Arria V SoC: 2013
Arria 10 SoC: 2016
结合ARM处理器和FPGA的产品 处理器功能强大、可编程灵活 嵌入式系统、需要硬件加速的应用

Quartus Prime Lite是 Intel 提供的免费 FPGA 设计软件版本,主要支持低成本 FPGA 设备。它包括设计和编程的基本功能,但在某些高级功能和设备支持方面有所限制。它支持的系列:

  • Arria II
  • Cyclone IV
  • Cyclone V
  • Cyclone 10 LP
  • MAX II, MAX V
  • MAX 10

FPGA 组成

FPGA的主要组成部分:可配置逻辑块,输入输出块、互联网络

组件分类 英文名称 功能描述 特点或组成元素
可配置逻辑块/逻辑阵列块 CLBs (Configurable Logic Blocks) / LABs (Logic Array Blocks) 核心组成部分,执行各种逻辑功能 包括查找表(LUTs)、寄存器、逻辑门等
输入/输出块 IOBs (Input/Output Blocks) 链接FPGA与外界,负责数据输入和输出 支持不同电压和信号标准
互连网络 Interconnection Network 连接FPGA内部的各个逻辑和功能块,传输数据 路由通道、交叉开关、可编程连接点
时钟管理模块 Clock Management Modules 提供和管理时钟信号,同步操作 包括PLLs和时钟分配网络
特定功能块 Specialized Function Blocks 优化特定应用的性能和资源使用 如DSP块、高速串行接口、内置RAM块
配置与控制逻辑 Configuration and Control Logic 管理配置过程,包括加载配置数据至逻辑和功能块 确保FPGA按设计运行

FPGA 开发流程

fpga-development-process.png

开发阶段 Intel 使用的工具 Xilinx 使用的工具
设计输入 Intel Quartus Prime Vivado Design Suite
功能仿真 ModelSim-Intel Edition Vivado Simulator
合成(Synthesis) Intel Quartus Prime Vivado Design Suite
布局布线( Placement/Routing) Intel Quartus Prime Vivado Design Suite
时序分析 Intel Quartus Prime Vivado Timing Analyzer
生成比特流 Intel Quartus Prime Vivado Design Suite
硬件加载(配置) Intel Quartus Programmer Vivado Hardware Manager
调试与优化 SignalTap II Logic Analyzer Vivado Logic Analyzer
文档与发布 - -

设计输入

  • 硬件描述语言(HDL)编程:
    • 常用的 VHDL和Verilog
    • 以及更先进的SystemVerilog
  • 高级综合工具:
    • 高级综合工具HLS(High-Level Synthesis):比如 AMD Xilinx Vivado HLS,Intel HLS Compiler 允许C/C++,而后转成HDL代码。
    • 模型驱动开发:比如Matlab或Simulink,通过模型或仿真来生成可在FPGA上运行的代码
  • 图形化设计
    • FPGA设计软件:通过拖动不同的模块来创建设计
    • 封装好的IP核
  • 嵌入式软件开发
    • 软核处理器:比如AMD Xilinx的MicroBlaze和Intel的Nios II,是FPGA内实现的软核,可以运行C/C++代码,实现软件与硬件集成
    • 操作系统支持:在FPGA上运行精良及系统比如FreeRTOS

合成(Synthesis)

合成 又分为几个阶段:

  • 编译 (Compilation) - 这一步骤涉及将设计者使用硬件描述语言(如VHDL或Verilog)编写的代码,转换为更低级的表示形式(例如,门级网表)。这是合成过程的一部分,目的是解析和优化源代码,准备进行下一步的逻辑映射。
  • 逻辑合成 (Logic Synthesis) - 在这个阶段,编译后的代码被进一步转换为逻辑门和电路的集合。这包括优化逻辑以减少所需资源的使用和提高性能。
  • 映射 (Mapping) - 映射步骤涉及将合成后的门级网表映射到FPGA的具体逻辑资源上,如查找表(LUTs)、触发器(Flip-Flops)和其他可配置逻辑块(CLBs)。这个过程需要 考虑FPGA的物理架构,确保设计有效利用FPGA的资源,并满足时序和功能要求。

开发环境

首先,各家有自己的IDE环境

  • AMD Xilinx Vivado: 针对 Xilinx FPGA 设计的开发环境,包括合成、放置和布线、仿真等工具。
  • Intel Quartus Prime: 用于 Intel FPGA 设计的开发平台,同样提供全套设计、仿真和优化工具。
  • Microsemi Libero: 针对 Microsemi FPGA 设计的软件工具。
  • Lattice Diamond: 用于 Lattice FPGA 设计的软件环境。

仿真环境

ModelSim 是一款广泛使用的硬件仿真工具,由 Mentor Graphics(现为 Siemens EDA 的一部分)开发。它支持 VHDL、Verilog 和 SystemVerilog 等硬件描述语言,用于在 FPGA 和 ASIC 设计流程中模拟和验证数字系统的行为。

合成

一些高级综合工具,它专门为 FPGA 设计提供支持,但它本身并不限定于特定品牌的 FPGA:

  • Synopsys Synplify:高性能合成工具,适用于 FPGA 和 ASIC。支持 Verilog和VHDL语言。
  • Candence Genus Snthesis Solution,提供高级综合和优化功能,适用于复杂的ASIC和FPGA设计。支持Verilog、VHDL和SystemVerilog语言。

合成完成后,仍然需要使用 厂家的EDA来完成后续的布局和布线(Place and Route)以及生成可用于 FPGA 编程的最终文件。确保了设计在特定硬件上的最优性能和资源利用。

开源工具

有些命令行工具:

工具名称 支持语言 主要用途 优点 缺点
Icarus Verilog Verilog 仿真 - 免费开源
- 跨平台支持
- 社区支持良好
- 只支持 Verilog
- 功能相对基础
GHDL VHDL 编译和仿真 - 完全开源,使用 GCC 技术
- 提供良好的 VHDL 语言覆盖和符合性
- 支持多种操作系统
- 没有集成的图形用户界面(GUI)
- 只支持 VHDL
Verilator Verilog 将 Verilog 转换为 C++/SystemC - 生成的仿真速度非常快
- 支持大规模复杂的设计
- 可与其他测试框架集成
- 只支持 Verilog 的子集
- 缺少图形化界面和高级调试工具
Yosys Verilog 逻辑综合 - 强大的综合工具,支持 RTL Verilog
- 适用于 FPGA 和 ASIC 设计
- 可以与其他工具链集成
- 主要支持 Verilog
- 可能缺乏一些先进的优化和分析功能

配置(烧写)

不会编程,先了解下烧写还是可以的...

各个厂家配置文件(待烧写文件)后缀均有不同

制造商 比特流文件后缀 烧写器工具
AMD Xilinx .bit, .bin Vivado Hardware Manager, Xilinx Platform Cable USB
Intel .sof, .pof, .jic Quartus Prime Programmer, USB-Blaster, USB-Blaster II
Microsemi .stp FlashPro, Libero SoC
Lattice .bin, .jed Lattice Diamond Programmer, ispVM System

具体看一下Intel的比特流文件后缀:

  • .sof (SRAM Object File) - 用于将配置直接加载到FPGA的SRAM中。
  • .pof (Programmable Object File) - 用于永久存储配置到FPGA连接的外部设备(例如,EPROM或闪存)。
  • .jic (JTAG Indirect Configuration File) - 用于通过JTAG接口对外部配置设备进行编程。
  • .hex- 虽然用于记录二进制数据,Intel HEX 文件本身是文本格式,使用ASCII字符表示,便于阅读和编辑。每一行Intel HEX文件都称为一条“记录”。这条记录包括长度、地址、记录类型、数据和校验和等字段。

hex文件示例:

1
2
3
:10010000214601360121470136007EFE09D2190140
:100110002146017E17C20001FF5F16002148011928
:00000001FF

烧写方式(配置模式)

FPGA有多种方式进行配置:

  • JTAG接口。需要JTAG线缆(烧写器)连接FPGA和计算机主机
  • USB编程器。许多FPGA开发版会配备USB接口,允许适用USB连接进行配置。
  • SD卡或其他存储介质。一些FPGA支持从SD卡或其他介质自动加载配置文件。
  • 通过外部设备(如微控制器)。FPGA 也可以通过外部微控制器进行烧写,该微控制器将配置文件从某种存储介质(如 SPI 闪存)加载到 FPGA。

以Intel FPGA为例,软件Quartus Prime Programmer有4种编程(programming)模式:

  • JTAG:同上
  • In-Socket:将设备物理放置到有多个电气接触点的座中,这些触点和设备引脚对应,直接对设备配置存储器进行编程。用于批量编程或者设备安装到最终产品之前进行编程。使用专用设备(APU:Altera Programming Unit)
  • Passive Serial:串行编程模式。通过几个信号线(DATA、CLOCK、nCONFIG、nSTATUS)顺序发送。速度慢,但硬件简单,成本低。发送方可以是Quartus Prime Programmer或者其他MCU设备。
  • Active Serial:使用外部闪存来存储配置文件,FPGA上电时,自动加载配置。

烧写工具与步骤

每个FPGA制造商都提供了配套的配置软件,用于烧写和调试FPGA。对于Intel FPGA:

  • Quartus Prime Programmer - Quartus软件的一部分,用于配置和编程Intel FPGA。
  • USB-Blaster 和 USB-Blaster II - 官方的JTAG下载电缆,支持配置和调试。

烧写主要步骤:

  • 连接FPGA开发板到计算机主机
  • 打开配置软件,并选择正确的配置文件
  • 选择目标设备,并确认所有连接和设置无误。
  • 启动烧写过程,并关注过程中的状态,确保无错误
  • 烧写完成后,重启FPGA设备以加载新的配置。

关于JTAG

JTAG (Joint Test Action Group) 是一种广泛使用的标准,正式名称为 IEEE 1149.1,最初设计用于测试印刷电路板(PCB)上的连接故障,后来发展为一个功能强大的工具,用于芯片的编程、调试和测试。JTAG 不仅用于 FPGA 编程,也广泛应用于微处理器、微控制器等集成电路的调试。

JTAG 使用一组标准化的信号线来传输数据至目标设备。通常包括:

  • TCK(时钟)
  • TMS(模式选择)
  • TDI(数据输入)
  • TDO(数据输出)
  • TRST(可选的复位线)

通过这些线,可以直接向 FPGA 内部的配置存储器发送配置数据。

参考

EE FPGA