深度16,数据宽度16, 地址宽度7bit
//同步双端口ram,位宽16,深度128
module DP_RAM #(
parameter ADDR_WIDTH = 7,
parameter DATA_WIDTH = 16,
parameter DATA_DEPTH = 16
) (
input cs_n,
input [DATA_WIDTH-1:0]wr_data,
input [ADDR_WIDTH-1:0]wr_addr,
input wr_en,
input [ADDR_WIDTH-1:0]rd_addr,
input rd_en,
output [DATA_WIDTH-1:0]rd_data_o,
input clk,rst_n
);
reg [DATA_WIDTH-1:0] mem [DATA_DEPTH-1 : 0];
reg [DATA_WIDTH-1:0]rd_data;
integer i;
//initialization
// synopsys_translate_off
initial begin
for(i=0; i < DATA_DEPTH; i = i + 1) begin
mem[i] = 16'h0000;
end
end
// synopsys_translate_on
always@(posedge clk or negedge rst_n)
begin
if ((~cs_n) && wr_en)
begin
mem[wr_addr] <= wr_data;
end
end
always@(posedge clk or negedge rst_n)
begin
if ((!cs_n) && rd_en)
begin
rd_data

本文详细介绍了如何实现一个深度为16、数据宽度为16位,采用7位地址的双端口RAM。通过深入探讨其工作原理和设计细节,帮助读者理解双端口RAM在存储系统中的应用。
最低0.47元/天 解锁文章
4577

被折叠的 条评论
为什么被折叠?



