[verilog]用文件初始化ROM

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

module FILEROM(
	iCLK,
	iRST_N,
	iREAD,
	iADDR,
	oDATA
);

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;
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(iREAD) oDATA<=rMem[iADDR];
end

endmodule


  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值