FPGA 的 LUT、BRAM、DSP 都是什么?
更新时间:2026-09-21。问题驱动短答页。架构见 FPGA 架构,LUT/FF 深挖见 LUT 与触发器,BRAM 见 BRAM 与分布式 RAM,DSP 见 DSP48 入门。
一句话回答
FPGA 主要由三类可编程资源构成:LUT(查找表)+ FF(触发器)构成可配置逻辑块,能实现任意组合逻辑和时序逻辑;BRAM 是内嵌的专用存储块,用来高效做 RAM/ROM/FIFO;DSP slice(如 Xilinx DSP48)是硬核乘加器,专门高效做乘法、乘累加(MAC)和滤波。 写 RTL 时综合器会自动「推断」该用哪种资源。
三类资源
| 资源 | 本质 | 用来实现 |
|---|---|---|
| LUT | 小查表(常 4/6 输入),本质 SRAM | 任意布尔函数、组合逻辑、少量分布式 RAM/移位寄存器 |
| FF 触发器 | LUT 旁边的寄存器 | 状态、流水线寄存器、时序逻辑 |
| BRAM | 专用大容量存储块(如 18/36Kb) | 双口 RAM、FIFO、大缓冲、查表 ROM |
| DSP slice | 硬核乘法器+累加器+预加 | 乘法、MAC、FIR/FFT、数字信号处理 |
RTL 如何「推断」资源
- 数组/存储:小且异步读可能被铺成分布式 RAM(吃 LUT);同步读、较大、规则地址则推断成 BRAM,见 存储器推断、BRAM vs 分布式 RAM。
a*b且位宽/时序合适会推断 DSP;若用 LUT 搭乘法器会瞬间吃掉大量逻辑,见 DSP48。- 移位寄存器可映射到 LUT 的 SRL 模式,省 FF。
- FIFO 一般直接用厂商 IP(底层就是 BRAM + 控制),见 FIFO 深度计算。
资源利用率怎么估算
- 早期看综合/编译报告里 Slice/LUT、FF、BRAM(块数)、DSP、URAM 的占用百分比。
- 存储按
位宽 × 深度换算需要几块 BRAM(注意拼宽/拼深与浪费)。 - 乘法器按「个数 × 位宽 × 是否每拍都用」估 DSP;位宽超过单 DSP 会级联多个。
- 留余量:别只盯某一项,BRAM/DSP 常先于 LUT 耗尽;布线拥塞时 LUT 利用率过高(>80%)会让时序难收敛,见 资源利用率、资源优化。
- 选型时按峰值资源 + 20%~30% 余量选器件家族,见 FPGA 厂商与家族。
常见坑
- 大数组没写同步读风格,被铺成 LUT:资源爆炸、时序变差。
- 小 FIFO 也硬用 BRAM:浪费块资源,该用分布式 RAM。
- 乘法没推断到 DSP(加了使能/复位等不利属性):逻辑占用飙升。
- 只看 LUT 占用就以为芯片够大,忽略 BRAM/DSP/IO/时钟资源。
- 利用率过高不留布线空间:能综合下但时序收敛失败。
总结
FPGA 用 LUT+FF 搭任意逻辑、用 BRAM 做高效存储和 FIFO、用 DSP slice 做硬核乘加;综合器依据 RTL 风格把数组和乘法自动推断成对应资源,估算时要分别核 LUT/FF、BRAM 块数(位宽×深度)和 DSP 个数,并给 BRAM/DSP 与布线拥塞留余量;典型坑是数组写成分布式 RAM、乘法没上 DSP、以及只看 LUT 不看块资源导致选片失误。