📂 分类:FPGA设计📊 经验级别:中级⭐ 难度:★★★☆☆📝 题型:资源选型题
本文概述
FPGA中Block RAM是专用的块状存储器资源,容量大、速度快、不占逻辑资源,适合大容量数据存储;分布式RAM是用查找表LUT搭建的存储器,容量小、分布灵活、可以做很小的FIFO或移位寄存器。选型要考虑容量大小、速度要求、资源利用率、端口数量和深度宽度比等因素。Block RAM可以配置成单口、双口、ROM、FIFO等多种模式,分布式RAM适合小容量零散存储。
核心要点速览
Block RAM是专用存储资源,容量大,不占逻辑资源
分布式RAM用LUT搭建,容量小但分布灵活
大容量存储优先用Block RAM,小容量可以用分布式RAM
Block RAM有固定深度宽度,分布式RAM可以任意配置
两者都可以配置成单口、双口、ROM、移位寄存器等模式

面试官考察点
考察候选人对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综合器都会自动选,不用管
准备动作
了解FPGA中Block RAM和分布式RAM的结构和特点
掌握两种RAM的配置模式:单口、双口、ROM、FIFO、移位寄存器
能根据容量、深度宽度、端口需求等因素做选型判断
熟悉Vivado中查看存储资源利用情况的方法
核心关键词:FPGA,Block RAM,分布式RAM,存储器选型,FPGA资源,FPGA工程师面试,Verilog,Xilinx

扫码关注





























