双端口RAM可以看成是:两个相互独立的单端口RAM(A 和B),但这两个单端口RAM是在同一地址区域上操作的。

 

        双端口RAM可以等效为:

(1)、可以边读边写的单端口RAM(普通的单端口RAM是不能在同一个时钟即写又读的)。

wea置1(写有效),addra作为写入的地址,dina作为写入的数据。web置0(读有效),addrb为读取数据的地址,doutb为输出的数据。从A的写入端口dina写,从B的读端口dout读,两都不影响。

现在介绍一下48bit输入,12bit输出的双端口RAM的设置(边输入边输出的)。可以这样配置RAM,DOUTA一定也是48bit,否则DOUTB输出会出错。

 

addra地址单位以48bit递增,addrb地址单位以12bit递增,如图2所示

 

总结:要想边读边写,只能A 和B 相互操作,从dina(或dinb)写入,从doutb(或douba)读出。写入和读出数据位宽可以不同。

 (2)、看作两个独立的单端口RAM。但所拥有的地址不要相同(写入时担心覆盖或冲突),可以给A 分配0-127的地址区域(即addra的取值范围),给B分配128-255的地址区域(即addrb的取值范围)。