用文件初始化RAM

`timescale 1ps/1ps
/*
从文件中读入RAM的值
2013-4-14
*/

module FILERAM(
	iCLK,
	iRST_N,
	iREAD,
	iADDR,
	oDATA,
	iWRITE,
	iDATA
);

parameter DATA_WIDTH=8;		//数据位宽
parameter ADDR_WIDTH=8;		//地址位宽
parameter ADDR_START=0;		//地址起始
parameter ADDR_END  =255;	//地址尾
parameter FILE_NAME="file.txt";		//文件名

input iCLK;
input iRST_N;
input iREAD;
input [ADDR_WIDTH-1:0] iADDR;
output [DATA_WIDTH-1:0] oDATA;
input iWRITE;
input [DATA_WIDTH-1:0] iDATA;

reg [DATA_WIDTH-1:0] oDATA;
reg [DATA_WIDTH-1:0] rMem[ADDR_END:ADDR_START];

integer fp;
integer i;
integer n;

initial begin
	fp=$fopen(FILE_NAME,"r");
	i=ADDR_START;
	while(!($feof(fp)) && i<=ADDR_END) begin
		n=$fscanf(fp,"%x",rMem[i]);
		i=i+1;
	end
	$fclose(fp);
end

//oDATA
always@(posedge iCLK or negedge iRST_N)begin
	if(!iRST_N) oDATA<=0;
	else if(iWRITE) rMem[iADDR]<=iDATA;
	else if(iREAD) oDATA<=rMem[iADDR];
end

endmodule


你可能感兴趣的:(用文件初始化RAM)