当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]在Xilinx UltraScale+系列FPGA中,片上存储器分为BRAM(Block RAM)和URAM(Ultra RAM)两类。BRAM容量18/36Kb,URAM容量288Kb,但URAM延迟略高且占用更多布线资源。合理分配两者是平衡容量、时序与功耗的关键。本文总结BRAM与URAM的选型原则与优化策略。



在Xilinx UltraScale+系列FPGA中,片上存储器分为BRAM(Block RAM)和URAM(Ultra RAM)两类。BRAM容量18/36Kb,URAM容量288Kb,但URAM延迟略高且占用更多布线资源。合理分配两者是平衡容量、时序与功耗的关键。本文总结BRAM与URAM的选型原则与优化策略。


一、BRAM vs URAM 关键参数对比


特性 BRAM (36Kb) URAM (288Kb)


单块容量 36 Kbits(可配2×18Kb) 288 Kbits


最大频率 通常 ~500 MHz ~450 MHz(略低)


读延迟 1 cycle(简单双口) 2~3 cycles(需流水)


物理尺寸 小 大(布线更拥塞)


级联能力 通过级联逻辑(CASCADE) 内部自带级联链


典型用途 小FIFO、寄存器堆、系数表 大缓存、行缓冲、帧缓冲


二、分配策略:何时用BRAM,何时用URAM


1. 优先用BRAM的场景


• 深度 ≤ 1024 的单口/简单双口RAM


• 需要1-cycle读延迟(如查找表、状态机寄存器堆)


• 小FIFO(深度 ≤ 512)


• 资源充足时优先BRAM,因其布线灵活、时序易收敛


2. 必须或优先用URAM的场景


• 深度 ≥ 4096 的大缓存(如视频行缓冲、雷达回波缓存)


• 需要级联成大容量(URAM自带级联,BRAM级联需额外逻辑)


• 芯片BRAM已用尽(BRAM数量通常远少于URAM)


3. 避免用URAM的场景


• 小深度(<512):URAM浪费容量且延迟高


• 高频设计(>450MHz):URAM时序更难收敛


• 需要大量独立小RAM:URAM粒度大,利用率低


三、Verilog例化对比


BRAM(简单双口,深度512,位宽32)


// 用XPM(Xilinx Parameterized Macro)例化

xpm_memory_sdpram #(

   .MEMORY_SIZE(512 * 32),

   .MEMORY_PRIMITIVE("block"),  // block = BRAM

   .READ_LATENCY(1)

) u_bram (

   .clka(clk), .ena(1'b1), .wea(wr_en),

   .addra(wr_addr), .dina(wr_data),

   .clkb(clk), .enb(1'b1),

   .addrb(rd_addr), .doutb(rd_data)

);



URAM(深度8192,位宽64)


xpm_memory_sdpram #(

   .MEMORY_SIZE(8192 * 64),

   .MEMORY_PRIMITIVE("ultra"),   // ultra = URAM

   .READ_LATENCY(3)              // URAM需至少2~3 cycle

) u_uram (

   .clka(clk), .ena(1'b1), .wea(wr_en),

   .addra(wr_addr), .dina(wr_data),

   .clkb(clk), .enb(1'b1),

   .addrb(rd_addr), .doutb(rd_data)

);



四、性能优化技巧


1. 利用URAM内部级联(减少外部MUX)


URAM支持Cascade Input/Output,多个URAM可自动拼接成更大深度,无需外部MUX。在XPM中设置MEMORY_SIZE超过单块容量即可自动级联。


2. BRAM拆分与合并


• 小位宽(≤18bit)用单块BRAM,大位宽(≥36bit)用两块拼(MEMORY_PRIMITIVE="block"自动处理)


• 若需同时读写不同地址,用真双口(True Dual Port)BRAM,避免冲突


3. 时序优化


• BRAM读延迟固定1 cycle,URAM建议设为2~3 cycle,并在读地址路径上加一级FF


• 在XDC中对URAM路径放宽约束:

set_max_delay -from [get_cells -hier u_uram_inst] -to [all_registers] 2.5



4. 功耗优化


• 禁用未使用的BRAM/URAM端口(ena=0)


• 对URAM使用Sleep Mode(sleep=1)在空闲时降功耗


五、资源分配决策树


需求:深度D × 位宽W


D × W ≤ 36Kb 且 读延迟要求1 cycle?

   └─→ 用BRAM


D × W > 36Kb 且 D ≥ 4096?

   └─→ 用URAM(级联)


D × W 中等(1024~4096)?

   ├─ BRAM充足 → BRAM(级联)

   └─ BRAM紧缺 → URAM


高频 (>450MHz) 且 深度适中?

   └─→ 优先BRAM



六、常见坑与调试


现象 原因 解决


URAM读数据延迟不符合预期 未设足够READ_LATENCY 至少设2,最好3


BRAM级联后时序违例 级联链过长 在级联路径中间插FF


URAM利用率低(<50%) 深度太小,浪费容量 合并多个小RAM或改用BRAM


综合报"Unable to pack into URAM" 位宽或深度不匹配URAM原生配置 检查URAM原生位宽(72bit)×深度(4096)


七、结语


BRAM与URAM的分配本质是容量、延迟、资源利用率的三方权衡。小容量/低延迟用BRAM,大容量/高深度用URAM。通过XPM统一例化并设置正确的MEMORY_PRIMITIVE与READ_LATENCY,可让工具自动选择最优实现,同时保留手动微调空间。掌握此策略,你的FPGA设计将在存储密集型应用中既高效又稳健。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在FPGA/ASIC设计中,跨时钟域(CDC,Clock Domain Crossing) 是时序违例与功能Bug的高发区。单比特信号、多比特总线、脉冲需采用不同同步策略。本文给出三种经典CDC方案的RTL实现,并对比S...

关键字: 跨时钟域 FPGA

在高速ADC采集系统中,数字下变频(Digital Down Converter, DDC) 负责将高中频采样信号搬移到基带(或低中频),并完成降采样(Decimation)与抗混叠滤波,是雷达、软件无线电接收链路的标配...

关键字: FPGA DDC

在FPGA中例化DDR4 SDRAM控制器(如Xilinx MIG或Intel UniPHY)后,正确的时序约束(SDC)是让控制器通过时序签核、稳定跑在目标频率(如2400MT/s)的前提。很多"初始化失败"或"校准不...

关键字: FPGA DDR4 时序约束

在FPGA开发中,“时序不收敛”(Timing Closure Failed)是让工程师最头疼的问题之一。当WNS(最差负余量)为负时,设计无法在目标频率下稳定运行。本文总结五大系统性排查思路,帮助你在Vivado/Qu...

关键字: FPGA 时序收敛

在FPGA网络中,以太网MAC(Media Access Control)负责CSMA/CD退避、帧校验(FCS)、与PHY通过MII/RGMII/SGMII接口交互。根据项目对灵活性、开发周期、资源的要求,通常有三种实...

关键字: FPGA 以太网

我最初在博客上发布了这个项目。在这里,我将更详细地讲解每一步。边缘端的硬件加速正在彻底改变我们处理计算机视觉、机器学习和高性能计算的方式。然而,弥合软件开发与FPGA硬件之间的鸿沟,往往令人感到任务艰巨。

关键字: 硬件 加速器 AI FPGA

我们很高兴宣布,AMD Spartan UltraScale+ SU200P FPGA 将于 2026 年 7 月正式投入量产。SU200P 是 Spartan UltraScale+ 系列中规模最大、性能最强的器件,采...

关键字: FPGA GTH 收发器 交换机

Soan Papdidi 改变了这种体验。它是一款紧凑、易于上手的纯FPGA开发板——无需MCU,也无隐藏式微控制器,只需掌握原始的FPGA功能即可。该板配备8个DIP开关、8个LED灯和10个I/O引脚,非常适合用于学...

关键字: FPGA 开发板 数字电路 Python

当一个嵌入式项目进入方案设计阶段,工程师面临的第一个关键决策往往是:“该选什么芯片?” DSP、FPGA、MCU三者之间的边界在数据手册上看似清晰,但当面对中等算力场景——算力要求介于简单控制和超高性能计算之间的“灰色地...

关键字: DSP FPGA MCU

作为领先的嵌入式处理器模组厂商,米尔将携安路FPGA核心板和开发板亮相。我们诚邀您共聚西子湖畔,一同探索FPGA技术在边缘计算、工业控制与AI加速等领域的最新技术突破与落地实践。

关键字: FPGA 核心板 开发板
关闭