VIVADO中的RAM_STYLE

最近在阅读别人的verilog代码的时候,看到了这样的一条语句。

在这里插入代码片
parameter TYPE       = "block";
 (* ram_style = TYPE *)
  reg  [DATA_WIDTH   -1 : 0 ] mem[0:RAM_DEPTH-1];

其中的ram_style是指定RAM的类型,如果 TYPE 参数设置为 “block”,则 RAM 使用块内存实现。这意味着 ram 数组会存储在 FPGA 的片上存储器资源中。如果 TYPE 参数设置为 “distributed”,则 RAM 使用分布式内存实现。这意味着 ram 数组会使用 FPGA 的逻辑资源来实现。例如:

module ExampleRAM #(
  parameter TYPE = "block"
) (
  input wire clk,
  input wire [7:0] address,
  input wire write_enable,
  input wire [7:0] write_data,
  output reg [7:0] read_data
);

  reg [7:0] ram [0:255];

  (* ram_style = TYPE *)
  always @(posedge clk) begin
    if (write_enable)
      ram[address] <= write_data;
    read_data <= ram[address];
  end
endmodule

上面所说的片上FPGA储存器资源和逻辑资源的区别是什么呢?RAM的块内存和分布式内存又是指什么呢?
FPGA储存器资源和逻辑资源
1.功能上
片上存储器资源:片上存储器用于存储和读取数据,通常以多个位宽的存储单元组成,可以用于实现寄存器、缓存、RAM 等数据存储结构。
逻辑资源:逻辑资源是 FPGA 中的可编程逻辑单元(Lookup Tables,LUTs),用于实现布尔逻辑运算、组合逻辑和时序逻辑等。
2.存储能力上:
片上存储器资源:片上存储器具有较大的存储容量,可以存储大量数据,常用于存储大规模数据、图像、视频等。
逻辑资源:逻辑资源是 FPGA 中的可编程逻辑单元,用于实现布尔逻辑和计算功能,存储能力较小,主要用于存储和处理逻辑运算结果。
3.访问速度:
片上存储器资源:片上存储器资源通常具有低延迟和高带宽,可以实现快速的数据存取。
逻辑资源:逻辑资源的延迟和带宽受到 FPGA 架构和逻辑电路的限制,通常比片上存储器资源较低。
4.使用方式:
片上存储器资源:片上存储器资源通常用于存储大量数据,如缓存数据、图像数据等,并且可以实现并行存取和读写操作。
逻辑资源:逻辑资源用于实现布尔逻辑运算和计算功能,如逻辑门、状态机、算法等。
分布式内存和块内存
1.分布式内存(Distributed RAM):
分布式内存是使用 FPGA 的逻辑资源来实现的存储器结构。
分布式内存的存储单元直接嵌入到逻辑资源中,不需要额外的存储器块。
分布式内存的存储容量较小,适合存储局部数据或临时变量。
分布式内存的访问延迟较低,可以实现较快的读写操作。
分布式内存的位宽和数量可以灵活配置,可以根据设计的需要进行调整。
2.块内存(Block RAM):
块内存是 FPGA 中的片上存储器资源,通常由存储块(Block)组成。
块内存具有较大的存储容量,适合存储大规模数据、缓存和数据结构。
块内存通常具有较低的访问延迟和较高的带宽,可以实现快速的数据读写操作。
块内存的位宽和数量在 FPGA 中是固定的,取决于 FPGA 设备的架构和配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值