FPGA :基础概念详解(Xilinx平台)
1. FPGA 是什么
FPGA = Field Programmable Gate Array(现场可编程门阵列)
简单理解:一块芯片,你可以用代码重新配置它的内部电路结构。不像CPU是固定的,FPGA的逻辑电路可以根据你的需求重新组织。
类比:
- CPU:固定的工厂流水线,只能按设计好的方式工作
- FPGA:可重新配置的工厂,你可以改变流水线的结构来做不同的事
2. FPGA 内部结构
FPGA 由以下基本单元组成:
┌─────────────────────────────────────┐
│ FPGA 芯片内部 │
├─────────────────────────────────────┤
│ ┌──────────────────────────────┐ │
│ │ 可配置逻辑块 (CLB) │ │
│ │ - 查找表 (LUT) │ │
│ │ - 触发器 (Flip-Flop) │ │
│ │ - 多路选择器 │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ 块RAM (BRAM) │ │
│ │ - 内存存储 │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ DSP 块 │ │
│ │ - 乘法器、加法器 │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ I/O 块 │ │
│ │ - 与外部通信 │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ 互连网络 │ │
│ │ - 连接各个模块 │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────┘
关键概念:
- LUT(查找表):FPGA的基本逻辑单元,可以实现任何组合逻辑
- 触发器:存储1比特数据,用于时序逻辑
- BRAM:块内存,用于存储数据
- DSP:数字信号处理块,加速乘法等运算
3. FPGA 工作原理
3.1 编程流程
你的代码 (Verilog/VHDL)
↓
综合 (Synthesis) - 转换为逻辑门
↓
布局布线 (Place & Route) - 映射到物理芯片
↓
生成比特流 (Bitstream)
↓
下载到FPGA芯片
↓
FPGA 重新配置,电路生效
3.2 与CPU的根本区别
| 特性 | CPU | FPGA |
|---|---|---|
| 架构 | 固定的指令集 | 可重新配置的逻辑 |
| 执行方式 | 顺序执行指令 | 并行执行 |
| 灵活性 | 低(硬件固定) | 高(可编程) |
| 开发周期 | 短 | 长 |
| 功耗 | 中等 | 低(针对特定任务) |
| 成本 | 低 | 高 |
4. 为什么用 FPGA
4.1 FPGA 的优势
-
并行处理
- CPU 逐条执行指令
- FPGA 可以同时处理多个任务
- 例:处理1000个数据,FPGA可以1000个并行处理
-
低延迟
- 没有指令解码、缓存等开销
- 直接硬件实现
- 适合实时系统
-
功耗效率
- 只激活需要的电路
- 针对特定任务优化
- 比通用CPU省电
-
灵活性
- 可以快速修改设计
- 不需要重新制造芯片
- 支持快速原型设计
4.2 FPGA 的应用场景
- 通信:5G基站、网络处理
- 图像处理:实时视频处理、机器视觉
- 科学计算:高性能计算加速
- 工业控制:实时控制系统
- 汽车:自动驾驶、ADAS
- 金融:高频交易
5. FPGA vs GPU vs CPU
┌─────────────────────────────────────────────────────┐
│ 计算能力对比 │
├─────────────────────────────────────────────────────┤
│ │
│ CPU: ████░░░░░░ (通用,灵活) │
│ GPU: ██████████ (并行计算强) │
│ FPGA: ██████████ (低延迟,功耗低) │
│ │
│ 延迟: CPU > GPU > FPGA │
│ 功耗: CPU > GPU > FPGA │
│ 灵活性: FPGA > GPU > CPU │
│ 开发难度: CPU < GPU < FPGA │
└─────────────────────────────────────────────────────┘
6. Xilinx 平台介绍
6.1 Xilinx 产品线
主要系列:
-
Artix-7 ⭐ 推荐初学者
- 入门级,成本低
- 资源足够做学习项目
- 开发板便宜(100-300元)
-
Zynq-7000
- ARM CPU + FPGA 结合
- 适合需要操作系统的项目
-
Kintex/Virtex
- 高端产品
- 资源多,性能强
- 价格贵
-
Ultrascale
- 最新工艺
- 高性能、低功耗
6.2 Xilinx 开发工具
Vivado - Xilinx 官方 IDE(推荐)
Vivado 工作流程:
┌──────────────────────────────────────┐
│ 1. 创建项目 │
│ - 选择芯片型号 │
│ - 配置开发板 │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 2. 编写代码 │
│ - Verilog/VHDL │
│ - 约束文件 (.xdc) │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 3. 仿真 │
│ - 验证逻辑正确性 │
│ - 使用 Vivado Simulator │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 4. 综合 │
│ - 代码转换为逻辑门 │
│ - 检查语法错误 │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 5. 布局布线 │
│ - 映射到物理芯片 │
│ - 优化性能 │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 6. 生成比特流 │
│ - 生成 .bit 文件 │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 7. 下载到开发板 │
│ - 通过 JTAG 或 USB │
│ - FPGA 重新配置 │
└──────────────────────────────────────┘
7. 开发环境准备清单
7.1 硬件需求
-
开发板(选一个):
- Artix-7 开发板(推荐):Nexys A7、Arty A7
- 价格:200-500 元
- 包含 USB 下载接口
-
USB 线:用于下载程序
7.2 软件需求
-
Vivado Design Suite(免费版本)
- 下载地址:https://www.xilinx.com/products/design-tools/vivado/vivado-webpack.html
- 大小:约 50GB(包括所有工具)
- 支持 Windows/Linux/Mac
-
系统要求:
- 硬盘空间:≥100GB
- RAM:≥8GB(推荐16GB)
- 网络:下载需要时间
7.3 安装步骤
1. 注册 Xilinx 账号
https://www.xilinx.com/
2. 下载 Vivado WebPACK(免费版)
- 选择最新版本(如 2023.2)
- 选择你的操作系统
3. 安装
- 运行安装程序
- 选择 WebPACK 版本
- 选择 Artix-7 支持
- 等待安装完成(1-2小时)
4. 获取许可证
- 免费版本需要激活
- 在线激活(需要网络)
8. 关键术语速查表
| 术语 | 解释 |
|---|---|
| HDL | 硬件描述语言(Verilog/VHDL) |
| 综合 | 将代码转换为逻辑门 |
| 布局布线 | 将逻辑映射到物理芯片 |
| 比特流 | 配置 FPGA 的二进制文件 |
| 时钟 | 同步所有操作的信号 |
| 约束 | 指定引脚、时序等要求 |
| 仿真 | 在计算机上测试代码 |
| JTAG | 下载程序到 FPGA 的接口 |
9. 学习检查清单
- 理解 FPGA 的基本概念
- 了解 FPGA 内部结构(CLB、LUT、BRAM等)
- 明白 FPGA 工作流程
- 知道 FPGA 的应用场景
- 选择了开发板型号
- 下载了 Vivado(或计划下载)
- 理解了关键术语
10. 推荐资源
官方文档:
- Xilinx 用户指南:https://docs.xilinx.com/
- Vivado 快速入门:https://www.xilinx.com/support/documentation.html
学习资源:
- Xilinx 官方教程
- 开发板配套教程