module Dual_RAM#(
parameter DATA_WIDTH = 8,
ADDR_WIDTH = 4
)(
input wire sys_rst_n ,
input wire wr_clk ,
input wire rd_clk ,
input wire wr_en ,
input wire rd_en ,
input wire [DATA_WIDTH-1:0] wr_data ,
input wire [ADDR_WIDTH-1:0] wr_addr ,
input wire [ADDR_WIDTH-1:0] rd_addr ,
output reg [DATA_WIDTH-1:0] rd_data
);
//定义存储器数组用于存储数据
reg [DATA_WIDTH-1:0] RAM_MEN[0:2**ADDR_WIDTH - 1];
//写数据
parameter RAM_LENGTH = 2**ADDR_WIDTH;
integer i;
always@(posedge wr_clk or negedge sys_rst_n)
if(!sys_rst_n)
for(i=0;i<RAM_LENGTH;i=i+1)
RAM_MEN[i] <= 0;
else if(wr_en)
RAM_MEN[wr_addr] <= wr_data;
else
Verilog实现任意位宽和深度的双端口RAM
最新推荐文章于 2023-12-15 15:01:21 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)