module asyn_ram
#(
parameter DATA_WIDTH = 8,
parameter DATA_DEPTH = 16
)
(
input csen,
input clk_a,//写时钟
input write_en,//写使能
input [3:0]addr_we,//写地址
input [DATA_WIDTH-1:0]data_in,//写数据
input clk_b,//读数据
input read_en,//读使能
input [3:0]addr_rd,//读地址
output {DATA_DEPTH-1:0]data_out//读数据
);
reg [DATA_DEPTH-1:0] mem[DATA_DEPTH-1:0];
always@(posedge clk_a)
begin
if((write_en == 1'b1)&&(csen == 1'b1))
mem[addr_we] <= data_in;
end
always@(posedge clk_b)
begin
if((read_en == 1'b1)&&(csen == 1'b1))
data_out <= mem[addr_rd];
end
endmodule
异步双口RAM
于 2022-07-11 22:06:48 首次发布