什么是比特流(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
... (重复几百万次)
实际例子:
// Verilog 代码
assign out = a & b;
// 综合后变成 LUT2
// .INIT(4'b1000) // 这 4 位就会编码到比特流中
lut_inst (.I0(a), .I1(b), .O(out));
为什么要烧录?
FPGA vs 单片机对比
| 特性 | FPGA | 单片机 (MCU) |
|---|---|---|
| 硬件 | 空白的可重构逻辑单元 | 固定的 CPU+ 外设 |
| 程序 | 比特流=重新配置硬件 | bin 文件=CPU 执行的指令 |
| 本质 | 改变电路结构 | 改变程序流程 |
形象类比:
单片机(执行 bin 文件):
你雇了一个厨师 (CPU),给他一份菜谱 (bin 文件)
厨师按菜谱步骤做菜:
. 切菜 (执行指令 )
. 炒菜 (执行指令 )
. 装盘 (执行指令 )

