【IP分析】BRAM的实用功能

  • 最早的时候发现读取bram的addr必须+4而不是+1。

主要就在是否勾选“Byte Write Enable”,即是否按字节来操作。

在BRAM Controller模式下,默认勾选,PortA和PortB都是32bit位宽的,按照字节就是4个byte,所以会有we[3:0]共4个we信号。

在Stand Alone模式下,默认是不勾选的;如果选择了“Generate address interface with 32 bits”,这个enable就再次被默认勾选。

Byte-Writes

【IP分析】BRAM的实用功能

按照bytes操作数据,比如32bit位宽,是4个byte,对应4个we信号。比如使能we[3:0]=4'b0010,那么只有第二byte会被写入数据,其他位不变。

【IP分析】BRAM的实用功能

Optional Output Registers 

这种output reg的作用就是改善输出路线上的delay和latency。

primitive output register:原语之后的reg就是用ram做的,所以默认就有配置。

core output register:需要单独勾选。

如果都没选,在原语上也会有个latch,在原语reg之前。

【IP分析】BRAM的实用功能

【IP分析】BRAM的实用功能

 Optional Pipeline Stages
如上图,当用户bram是由多个bram拼凑的,在输出口就会有MUX负责处理共用。但这样的组合结构对数据不好,所以也在会前面加几级pipeline来优化结构。

只有当core output register被勾选的时候,才能选择这个属性。

但是这些reg属性都会增加input与output之间的节拍。erg1即primitive,reg2和3是pipeline,dout是core output reg。

【IP分析】BRAM的实用功能

如果primitive和core以及pipeline的reg都没有的话,din和dout之间只相差一个节拍。

 【IP分析】BRAM的实用功能

 Optional Set/Reset Pins
rst信号控制最后一个output reg,结合上面的reg设置。

【IP分析】BRAM的实用功能

 【IP分析】BRAM的实用功能

 Memory Output Flow Control
把en、rst、regce结合起来,可以控制不同的输出方式。

The LATCH signal is the data at the output of the primitive

 【IP分析】BRAM的实用功能