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) |
|---|

