AG32 FPGA 的 Block RAM 资源:M9K 使用

1. 概述

AG32 FPGA 包含了 4 个 M9K 块,每个 M9K 块的容量为 8192 bits,总计为 4 个 M9K(4K bytes)。这使得 AG32 的内部存储非常适合嵌入式应用,能够有效地利用片上资源。

M9K 参数

参考自《AGRV2K_Rev2.0.pdf》。

2. M9K 的全同步存储限制

在M9K 参数介绍中提到,M9K 不支持异步或非寄存器化的存储输入。这意味着,M9K 块只能用于全同步(fully-synchronous)的 SRAM 操作模式,所有读写操作必须依赖于时钟信号,而不能在没有时钟控制的情况下进行。这有助于确保操作的时序稳定性和数据的正确性。

同步操作

同步操作依赖时钟信号的边沿(通常是上升沿)来触发数据传输。所有存储的写入和读取操作都需要时钟的参与。

示例代码:

verilog 复制代码
always @(posedge clk) begin
    if (write_enable)
        my_ram[addr] <= data_in;  // 写操作发生在时钟上升沿
    else
        data_out <= my_ram[addr]; // 读操作发生在时钟上升沿
end

异步操作

异步操作则不依赖时钟信号,数据的传输随时可以进行。这种操作方式在 M9K 中是不支持的。

示例代码:

verilog 复制代码
always @(*) begin
    if (write_enable)
        my_ram[addr] = data_in;  // 写操作异步进行
    else if (read_enable)
        data_out = my_ram[addr]; // 读操作异步进行
end

3. M9K 的使用模式

Altera官方文档指出,M9K 支持多种操作模式,具体模式可在官方链接中找到。常见的两种使用方式如下:

方式1:通过 IP 核进行存储控制

使用 IP 核(如 FIFO、RAM 等)可以灵活配置 M9K 资源。

可以在设置过程中选择不同的资源类型。例如下图中FIFO IP的配置:

方式2:使用 ramstyle 合成属性

Verilog 中的 ramstyle 属性允许我们通过 HDL 代码来指定 FPGA 内部的存储资源。通过设置该属性,我们可以将寄存器数组映射到特定的 BRAM(Block RAM)资源上。

官方关于 ramstyle 的文档可以在这里找到,截图如下:

示例代码:

  1. 在以下代码中,指定了my_ram应使用M144K内存块实现:
verilog 复制代码
(* ramstyle = "M144K" *) reg [0:7] my_ram[0:63]; 
  1. 另外,也可以在推断RAM的变量声明之后的注释中嵌入合成属性:
verilog 复制代码
reg [0:7] my_ram[0:63] /* synthesis ramstyle = "M144K" */;

在上面两个例子中,my_ram 数组被指定为使用 M144K 块。

此外,Altera FPGA其他可用的存储类型包括(具体与FPGA型号有关):

通过这种方式,我们可以精确控制存储资源的使用,确保设计的存储需求与 FPGA 的硬件资源相匹配。

4. Block RAM存储设计的注意事项

  1. 在使用 M9K 存储时,需要确保操作是同步的。由于 M9K 不支持异步操作,因此我们必须确保读写操作与时钟同步,即使用合适的时钟信号控制数据传输。
  2. 在实际使用中,发现AG32的M9K只能通过IP核的形式进行调用,不支持ramstyle 合成属性。
相关推荐
s090713611 小时前
【FPGA实战】基于Verilog的MCP2515 CAN控制器SPI驱动详解 | 附完整代码
fpga开发·硬件设计·can通信·mcp2515
szxinmai主板定制专家11 小时前
基于 ARM+FPGA 数据机床实时工业控制设计--以雕刻机为例
arm开发·人工智能·嵌入式硬件·fpga开发
XMAIPC_Robot12 小时前
基于RK3588 ARM+FPGA电火花数控机床控制系统设计,兼顾ethercat软硬件实时
linux·arm开发·人工智能·嵌入式硬件·fpga开发
XMAIPC_Robot12 小时前
基于 ARM+FPGA 数据机床控制系统设计--以雕刻机为例
arm开发·fpga开发
GateWorld12 小时前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之点屏一
fpga开发·lcd显示·fpga点亮屏幕·minilvds·fpga点屏
風清掦1 天前
【STM32学习笔记-14】WDG看门狗 - 14.2 WWDG窗口看门狗
笔记·stm32·单片机·嵌入式硬件·学习·fpga开发
尤老师FPGA1 天前
HDMI数据的接收发送实验(十二)
fpga开发
坏孩子的诺亚方舟1 天前
FPGA神经网络数学基础0
人工智能·神经网络·线性代数·fpga开发
熠速1 天前
PolarBox高性能实时仿真系统
arm开发·fpga开发·嵌入式实时数据库·硬件在环半实物仿真
南檐巷上学1 天前
基于Zynq-7020的带有正弦波发生器的8051软核设计
单片机·嵌入式硬件·fpga开发·fpga