RAM的分类
RAM,随机存取存储器,有单口和双口之分,单口RAM只有一个数据线和地址线,不能同时进行读取操作,双口RAM有读和写两个地址线和数据线。因此双口RAM使用要比单口RAM广泛。
双口RAM有真双口和简单双口之分,真双口有两个读端口和两个写端口,简单双口只有一个读端口和一个写端口,一般读写要求不高时,简单双口RAM就能满足我们的需求。另外根据时钟的不同,RAM还有同步异步之分,同步RAM是指读写采用同一个时钟,异步RAM是指读写的时钟不同。
异步简单双口RAM的实现
实现的双口RAM的功能是:建立一个宽度为8bit深度为8的RAM,然后把0-7写入,并在尚未完全写完时就开始读取数据,最终全部读出。程序如下:
module single_dualram(
input wire clk1,//写时钟
input wire clk2,//读时钟
input wire we,//写使能
input wire rd,//读使能
input wire [2:0] we_addr,//写地址
input wire [2:0] rd_addr,//读地址
input wire [7:0] datain,//写数据
output reg [7:0] dataout//读数据
);
reg [7:0]mem[7:0];
always @(posedge clk1) begin
if (we == 1'b1) begin
mem[we_addr] <= datain;
end
end
always @(posedge clk2) begin
if (rd == 1'b1) begin
dataout <= mem[rd_addr];
end
end
endmodule