具体参考Xilinx文档,pg058-blk-mem-gen Version8.4。
一、Block Memory Generator有什么用?
Block Memory Generator是Vivado中的IP核,即块存储器生成器。
Block Memory Generator IP核是一种高级内存构造器,可使用Xilinx fpga中的嵌入式块RAM资源来生成面积和性能优化的内存空间。
Block Memory Generator支持(Native)本地接口和AXI4接口。
二、Block Memory Generator怎么用?
基本参数设置
Interface Type: 接口类型。Native(本地): 实现一个本地块存储器生成器核心,可兼容先前发布版本的本地块存储器生成器核心;AXI4:实现AXI4接口块存储器生成器内核。
Generate address interface with 32 bits: 选中该项,则地址输入端口(addra和addrb)的位宽固定为32位。
Memory Type: 存储器类型。选择五个选项之一:Single-port RAM(单端口RAM),Single Dual-port RAM(单双口RAM),True Dual-port RAM(真双口RAM),Single-port ROM(单端口ROM), Dual-port ROM(双端口ROM)。
Common Clock: 公共时钟。当输入时钟 (clka和clkb) 由同一时钟缓冲器驱动时,可选择Common Clock选项。
ECC Options: ECC选项。当选择简单双端口RAM存储器类型时,ECC类型选项变为可用。
可供选择的ECC类型有:
No ECC: 不使用ECC。
Soft ECC: 软ECC。当选择的ECC类型是Soft ECC时,启用软错误校正 (使用汉明码)。
Built-In ECC: 内置ECC 。当选择的ECC类型为BuiltIn ECC时,启用内置汉明纠错。
Write Enable: 写入启用功能。
Byte Write Enable: 选择是否使用字节写入启用功能。
Byte Size(bits): 字节大小。当使用字节写入启用(Byte Write Enable)功能时,可以选择字节大小。字节大小为8位 (无奇偶校验) 或9位 (包括奇偶校验)。存储器的数据宽度是所选字节大小的倍数。
Algorithm Options: 算法选项。
选择用于实现内存的算法,分别为:
Minimum Area Algorithm: 最小面积算法。使用最少数量的基元,生成核。
Low Power Algorithm: 低功率算法。在读或写操作期间启用最小数量的块RAM基元的情况下,生成核。
Fixed Primitive Algorithm: 固定原语算法。连接单个原语类型来实现内存,进而生成核。
Primitive: 选择原语类型,可选16kx1、8kx2、4kx4、2kx9、1kx18、512x36、256x72。
端口A/B参数设置
Memory Size: 存储器大小。
Write width: 写入位宽。指定端口A/B的写入宽度(1-4608bits)。
Read width: 读取位宽。从有效选项的下拉列表中选择端口A/B的读取宽度(下拉列表中,可选位宽均是写入位宽的2的正整数幂或负整数幂倍)。
Write Depth: 写入深度。指定端口A/B的写入深度(2-1048576)。
Read Depth: 读取深度。读取深度是自动计算的。(前三项设置好后,自动计算得到)
Operating Mode: 操作模式。指定端口A/B的操作模式。
Read First: 读优先。
Write First: 写优先。
No Change: 不变。
Enable Port Type: 启用端口类型。选择启用类型:
Always enabled: 始终启用 (无可用的ENA/ENB引脚)。
Use ENA/ENB pin: 使用ENA/ENB引脚。
Port [A|B] Optional Output Registers: 端口A/B的可选输出寄存器。
选择要使用的输出寄存器级:
Primitives Output Register: 基元输出寄存器 。选择该项,则在存储器之后插入输出寄存器,分别用于端口A和端口B的原语。在独立模式下,该选项被设置为默认选项。如果您选择寄存存储器的输出,则使用块RAM原语中的嵌入式输出寄存器原语。
Core Output Register: 核心输出寄存器。选中该项,则为每个端口 (A或B) 在该端口的内存核心的输出上插入一个寄存器。选中时,使用FPGA片实现寄存器以寄存核心输出。
REGCE[A|B] Pin: REGCE[A|B] 引脚。选择该项,则使用单独的