verilog写出可综合的真双端口RAM;
以下是一个可综合的真双端口RAM的Verilog代码:
module true_dual_port_ram (
input clk,
input [9:0] addr1,
input [9:0] addr2,
input [15:0] data1,
input [15:0] data2,
input we1,
input we2,
output reg [15:0] q1,
output reg [15:0] q2
);
reg [15:0] mem [0:1023];
always @(posedge clk) begin
if (we1) mem[addr1] <= data1;
if (we2) mem[addr2] <= data2;
q1 <= mem[addr1];
q2 <= mem[addr2];
end
endmodule
该RAM有两个地址端口(addr1和addr2)和两个数据端口(data1和data2),并且可以同时读写。当we1或we2为高电平时,对应的数据将被写入到内存中。在每个时钟上升沿时,内存中的数据被读回并存储在输出寄存器q1和q2中。这个RAM有1024个内存地址(0到1023),每个地址可以存储16位数据。
原文地址: http://www.cveoy.top/t/topic/4uT 著作权归作者所有。请勿转载和采集!