编写一个同步ram。
一个简单的同步ram。
Module ram#(
Parameter WIDTH = 32;
Parameter DEPTH =1024;
)(
Input i_clk,
Input [WIDTH-1:0] i_wr_data,
Input i_wr_en,
Input [$clog2(DEPTH)-1:0]i_wr_addr,
Output [WIDTH-1:0] o_rd_data,
Input i_rd_en,
Input [$clog2(DEPTH)-1:0]i_rd_addr,
);
Parameter ram_depth = $clog2(DEPTH)-1;
Reg[WIDTH-1:0] ram_data [ram_depth:0];
Reg [ram_depth:0] rd_addr_reg;
Reg rd_en_reg;
Aways @ (posedge i_clk)begin
If(i_wr_en)
Ram_data[i_wr_addr] <= i_wr_data;
End
Always @ (posedge i_clk)begin
Rd_addr_reg <= i_rd_addr;
Rd_reg_en <= i_rd_en;
End
Assign o_rd_data = rd_reg_en?ram_data[rd_addr_reg]:0;
endmodule