FPGA中Block RAM和分布式RAM怎么选?

浏览量:8
时间: 2026-08-11 11:24:48

📂 分类:FPGA设计📊 经验级别:中级⭐ 难度:★★★☆☆📝 题型:资源选型题

本文概述

FPGA中Block RAM是专用的块状存储器资源,容量大、速度快、不占逻辑资源,适合大容量数据存储;分布式RAM是用查找表LUT搭建的存储器,容量小、分布灵活、可以做很小的FIFO或移位寄存器。选型要考虑容量大小、速度要求、资源利用率、端口数量和深度宽度比等因素。Block RAM可以配置成单口、双口、ROM、FIFO等多种模式,分布式RAM适合小容量零散存储。

核心要点速览

  • Block RAM是专用存储资源,容量大,不占逻辑资源

  • 分布式RAM用LUT搭建,容量小但分布灵活

  • 大容量存储优先用Block RAM,小容量可以用分布式RAM

  • Block RAM有固定深度宽度,分布式RAM可以任意配置

  • 两者都可以配置成单口、双口、ROM、移位寄存器等模式

下载 (8).jpg

FPGA工程师进行时序约束分析

面试官考察点

考察候选人对FPGA存储资源的理解和选型能力,判断是否了解两种RAM的结构差异和适用场景,而不是只会用IP核而不懂底层资源。

回答思路

要点

第一,先看容量需求

Block RAM每个块有固定的容量,比如7系列FPGA每个Block RAM是36K位,可以拆成两个18K位。如果需要的存储容量比较大,比如几KB以上,用Block RAM比较划算。如果只是几十个字节或者几百比特的小存储,用分布式RAM更灵活,不会浪费整块的Block RAM资源。

要点

第二,看深度和宽度比例

Block RAM有固定的深度宽度配置,比如36K的Block RAM可以配成64K乘1位、32K乘2位,一直到512乘72位。如果你的存储深度和宽度刚好和某个配置接近,用Block RAM效率很高。如果宽度特别窄或者深度特别浅,Block RAM利用率很低,这时候用分布式RAM可能更合适。

要点

第三,看端口数量和类型

Block RAM支持真双端口,两个端口可以独立读写不同地址,适合做数据交换或者双时钟FIFO。分布式RAM虽然也可以做双端口,但资源会增加很多。如果需要真双端口操作,优先用Block RAM。单端口的话两种都可以,看容量和其他因素。

要点

第四,看时序和速度要求

Block RAM因为是专用资源,时序性能好,能跑更高的频率。分布式RAM用LUT搭建,路径相对长一些,速度会稍慢。但两者的差异一般是纳秒级,对于低速设计影响不大。高速设计中Block RAM的时序更容易收敛。

要点

第五,看资源整体利用率

选型还要考虑整个设计的资源情况。如果设计逻辑资源很紧张但Block RAM还剩很多,就尽量用Block RAM,把LUT留给逻辑。如果反过来,Block RAM用完了但逻辑还有富余,就可以用分布式RAM凑。要从整体资源平衡的角度考虑。

要点

第六,特殊功能需求

Block RAM可以做字节写使能、内置FIFO控制器、级联成更大容量等特殊功能。分布式RAM可以做移位寄存器SRL、小容量的ROM等。还有一些特殊的应用场景,比如做非常小的异步FIFO,分布式RAM可能用起来更方便。

面试官追问

Block RAM的18K和36K是什么关系?

参考回答:Xilinx 7系列每个Block RAM是36K位,可以配置成一个36K的RAM,也可以拆成两个独立的18K RAM来用。拆成两个18K之后,每个都是独立的端口,可以做不同的功能。设计时如果用不到36K那么大,可以拆成两个18K提高利用率。

什么情况下分布式RAM比Block RAM好?

参考回答:几种情况:容量非常小,用Block RAM浪费;需要的深度很浅宽度很窄,Block RAM利用率低;Block RAM资源用完了但LUT还有富余;做移位寄存器SRL的时候,分布式RAM可以直接配置成SRL,比用Block RAM灵活。

FPGA中ROM一般用什么实现?

参考回答:ROM两种都可以实现。大的ROM用Block RAM,初始化数据在配置时写入,运行时只读。小的ROM可以用分布式RAM,甚至用寄存器。还有一种方式是用case语句写查找表,综合器会自动选择用寄存器或LUT来实现,容量小的时候也很常用。

怎么看设计用了多少存储资源?

参考回答:综合和实现后的报告里都会有资源利用报告,会分别列出Block RAM的使用数量和分布式RAM使用的LUT数量。Vivado里还可以用report_utilization命令查看详细的资源分布。如果要优化存储资源,可以从报告里看到哪些模块占用了多少,然后针对性优化。

失分表达

  • RAM都一样,用哪个都行

  • Block RAM越大越好,越大越高级

  • 分布式RAM就是寄存器堆

  • 所有RAM综合器都会自动选,不用管

准备动作

  1. 了解FPGA中Block RAM和分布式RAM的结构和特点

  2. 掌握两种RAM的配置模式:单口、双口、ROM、FIFO、移位寄存器

  3. 能根据容量、深度宽度、端口需求等因素做选型判断

  4. 熟悉Vivado中查看存储资源利用情况的方法

核心关键词:FPGA,Block RAM,分布式RAM,存储器选型,FPGA资源,FPGA工程师面试,Verilog,Xilinx


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉
相关推荐HOT
开班信息