FPGA 比特流 (Bitstream) 深度解析
什么是比特流 (Bitstream)
简单理解:比特流是 FPGA 的"配置数据",就像给一块空白的可编程电路板"装配零件"的指令清单。
形象比喻
Verilog 代码 → 综合/布局布线 → 比特流
(逻辑描述) (设计过程) (施工指令)
比特流的本质
1. FPGA 内部结构
FPGA 由数百万个可配置单元组成:
┌─────────────────────────────────┐
│ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │
│ │LUT│──│FF │──│LUT│──│FF │ │
│ 查找表(LUT) 触发器(FF) │
│ │ │
│ 可编程互连矩阵(Switch) │
│ ┌───────────────────────────┐ │
│ │ │ │
│ └───────────────────────────┘ │
│ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │
│ │LUT│──│MUX│──│LUT│──│RAM│ │
│ └───┘ └───┘ └───┘ └───┘ │
└─────────────────────────────────┘
2. 比特流就是配置这些单元的"开关指令"
每个比特控制:
比特 [0] = 1 → LUT0 配置为:输入 A&B 输出 1
比特 [1] = 0 → 开关 S1 断开
比特 [2] = 1 → 触发器 F3 连接到 LUT5 的输出
比特 [3] = 0 → MUX 选择通道 0
...
实际例子:
// 你的代码
assign out = a & b;
// 综合后变成 LUT2
// .INIT(4'b1000) 这 4 位就会编码到比特流中
lut_inst (.I0(a), .I1(b), .O(out));
为什么要烧录?
FPGA vs 单片机对比
| 特性 | FPGA | 单片机 (MCU) |
|---|---|---|
| 硬件 | 空白的可重构逻辑单元 | 固定的 CPU+ 外设 |
| 程序 | 比特流=重新配置硬件 | bin 文件=CPU 执行的指令 |

