赛灵思|RAM

Vivado中RAM分为分布式RAM块RAM。两种实现方法在向RAM写入数据时都是采取同步方式,区别在于从RAM读取数据时,分布式RAM采用异步方式,块RAM采用同步方式。

块RAM分为单口RAM和双口RAM. 单口RAM只有一组数据线与地址线,因此读写不能同时进行。而双口RAM有两组数据线与地址线,读写可同时进行。FIFO读写可同时进行,可以看作是双口。

赛灵思官方将双口RAM分为Simple Dual Port RAM(伪双口RAM)和True Dual Port RAM(双口RAM)。

伪双口RAM,一个端口只写,另一个端口只读;而双口RAM两个端口都可以读写。FIFO也是一个端口只读,另一个端口只写。FIFO与伪双口RAM的区别在于,FIFO为先入先出,没有地址线,不能对存储单元寻址;而伪双口RAM两个端口都有地址线,可以对存储单元寻址。

伪双口RAM只有一个写端口,一个读端口。

blk_mem_gen_0 IP_sram (
  .clka(clk),    // input wire clka
  .ena(ena),      // input wire ena
  .wea(wr),      // input wire [0 : 0] wea
  .addra(addr_wr),  // input wire [3 : 0] addra
  .dina(map_in),    // input wire [15 : 0] dina
  .clkb(clk),    // input wire clkb
  .enb(enb),      // input wire enb
  .addrb(addr_rd),  // input wire [3 : 0] addrb
  .doutb(map_out)  // output wire [15 : 0] doutb
);

真双口RAM分别有两个写端口和两个读端口。

无论是简单双口RAM还是真双口RAM,在没有读操作的情况下,应将读使能rden信号拉成低电平,节省功耗。

在两种情况下,都应当避免read-during-write,虽然可在软件中进行设置,但是,作为设计者,应当尽量避免此种情况。

对于真双口RAM,还应当避免两个读端口或者两个写端口同时操作同一个地址,RAM中并没有此种冲突解决电路,设计者应该避免这种冲突。

无论是那种双口RAM,读时序图是相同的。

当读使能有效时,数据会在时钟下一个上升沿从Q端输出。

真双口RAM给设计带来很多便利。在高速存储中,需要对连续的数据同时处理,使用简单双口RAM只能读取一个数据,而使用真双口RAM可以同时读取两个数据,这样明显提高读取速度以及处理速度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值