Verilog双端口RAM实现 for FPGA
在FPGA中,随着数字电路的应用越来越广泛,对RAM存储器的需求也越来越大。其中,双端口RAM常常被用来作为存储器或者缓存器。这篇文章将介绍如何使用Verilog编写一个基于FPGA的双端口RAM。
首先,我们需要定义该存储器的容量和数据宽度。在这个例子中,我们将创建一个8192 x 32位的双端口RAM。
module Ram_dual_port
(
input clk,
input wr_en_1,
input wr_en_2,
input [12:0] addr_1,
input [12:0] addr_2,
input [31:0] data_in_1,
input [31:0] data_in_2,
output [31:0] data_out_1,
output [31:0] data_out_2
);
// 定义内部寄存器
reg [31:0] mem [0:8191];
// 双端口RAM的读/写操作
always @(posedge clk) begin
// 端口1写操作
if (wr_en_1) begin
mem[addr_1] <= data_in_1;
end
// 端口2写操作
if (wr_en_2) begin
mem[addr_2] <= data_in_2;