FPGA片内RAM读写测试 Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。
imescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
module ram_test(
input clk, //50MHz时钟
input rst_n //复位信号,低电平有效
);
//-----------------------------------------------------------
reg[8:0] w_addr; //RAM写地址
reg[15:0] w_data; //RAM写数据
reg wea; //RAM PORTA 使能
reg[8:0] r_addr; //RAM读地址
wire[15:0] r_data; //RAM读数据
//产生RAM地址读取数据测试
always @(posedge clk or negedge rst_n)
if(rst_n==1'b0)
r_addr <= 9'd0;
else
r_addr <= r_addr+1'b1;
///产生RAM写入的数据
always@(posedge clk or negedge rst_n)
begin
if(rst_n==1'b0) begin
wea <= 1'b0;
w_addr <= 9'd0;
w_data <= 16'd0;
end
else begin
if(w_addr==511) begin //ram写入完毕
wea <= 1'b0;
end
else begin
wea<=1'b1; //ram写使能
w_addr <= w_addr + 1'b1;
w_data <= w_data + 1'b1;
end
end
end
//-----------------------------------------------------------
//实例化RAM
ram_ip ram_ip_inst (
.wrclock (clk ), // input wrclock
.wren (wea ), // input [0 : 0] wren
.wraddress (w_addr ), // input [8 : 0] wraddress
.data (w_data ), // input [15 : 0] data
.rdclock (clk ), // input rdclock
.rdaddress (r_addr ), // input [8 : 0] rdaddress
.q (r_data ) // output [15 : 0] q
);