双口RAM最大的特点是存储数据共享。一个
存储器配备两套独立的地址、数据和控制线,允许两个独立的CPU或控制器同时异步地访问
存储单元。因为数据共享,就必须存在访问仲裁控制。内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;
存储单元
数据块的访问权限分配;信令交换逻辑(例如中断信号)等。
下面是一个128*8的双口RAM
module ram_dual(
q,
addr_in,
addr_out,
d,
we,
clk1,
clk2
)
input [7:0]d;
input [6:0]addr_in;
input [6:0]addr_out;
input we;
input clk1;
input clk2;
output [7;0]q;
reg [7:0]q;
reg[6:0]addr_out_reg;
reg[7:0]mem[127:0];
always@(posedge clk1)
begin
if(we)
mem[addr_in]<=d;
end
always@(posedge clk2)
begin
q <= mem[addr_out_reg];
addr_out_reg <= addr_out;
end
endmodule