FPGA 片上存储器入门:LUT RAM、Block RAM 与推断
myfpga.com.cn 编辑部 · 2026-10-05
FPGA 片上存储器可用于缓存、中间数据、查找表、队列和小容量状态数据。理解 RTL 如何映射到器件存储资源,有助于估算资源并检查实现是否符合预期。
常见片上存储资源
许多 FPGA 提供由逻辑单元构成的分布式 RAM,以及专用嵌入式存储块。具体名称因厂商和器件系列而异,例如 AMD 器件中的 Distributed RAM 与 Block RAM;某些器件还提供更大容量的专用存储资源。可用容量、端口数、宽度组合和时钟能力必须查阅目标器件资料。
| 类型 | 常见用途 | 设计时关注 |
|---|---|---|
| 分布式 RAM | 小型、分散的存储结构或查找表 | 会占用逻辑阵列资源,深度与端口结构受器件限制 |
| 专用嵌入式 RAM | 缓冲区、数据块、较大查找表 | 关注端口模式、读延迟、写使能和容量颗粒度 |
| ROM / 初始化存储 | 常量表、系数或启动数据 | 初始化支持和配置行为依器件及工具而异 |
RTL 推断不是“声明数组就一定得到 RAM”
综合工具会根据 RTL 的读写方式、时钟、端口数量和目标器件资源,判断能否将数组映射到专用存储器。不同写法或不受支持的行为可能导致实现落入逻辑单元,或映射成与预期不同的结构。
编写存储逻辑时,应按目标工具的推断模板描述同步读写、写使能和端口结构。不要仅凭 RTL 代码外观判断资源类型;综合后应检查资源报告和原理图,并确认存储器的位宽、深度及端口使用情况。
读写行为需要明确
双端口存储器在同一地址发生读写时,输出可能表现为旧数据、新数据或保持原值。具体行为与器件、端口模式和综合模板有关。若逻辑依赖某种行为,应在 RTL 中明确处理,并核对器件文档及仿真模型。
存储器的同步读写也会带来时钟周期级延迟。设计数据通路时,要把地址、使能、有效信号和输出数据的周期关系一起考虑。异步复位能否作用于存储阵列本身也有器件限制,逐项复位大型数组可能妨碍 RAM 推断。
从资源需求到实现核对
设计前先估算数据位数:深度 × 位宽,并考虑所需读写端口、字节使能、初始化和读延迟。随后:
- 选择目标器件并阅读其嵌入式存储器章节。
- 按工具支持的 RAM 模板描述逻辑。
- 运行综合,查看分布式与专用存储资源的实际映射。
- 检查端口模式、冲突行为、时序和剩余逻辑资源。
- 在仿真和板级验证中覆盖地址边界、读写交叠及复位场景。
存储器不足时,也可以评估外部 DDR 等方案;它需要控制器、物理接口和板级设计共同支持,参见 FPGA 外部 DDR 存储接口入门。
继续了解 FPGA 内部架构与常见资源。