一、Altera ROM 初始化文件(.mif)
文件格式如下:
width = M;//数据位宽
depth =N ;//数据总量
address_radix = uns;//地址格式,(uns–十进制,bin–二进制,hex–十六进制)
data_radix = dec;//数据格式,同上
content begin
0:0;
1:29;
2:57;
3:86;
4:114;
5:143;
…
end;
注意:.mif文件数据每一行以“;”,结束。最后要加上 end;
生成.mif文件的matlab代码:以生成sin(x)函数为例,将[0,1]扩展为[0:16384]
clear all
close all
clc
t = [0:0.1:90];
x = pi * t/180;
sin_val = sin(x);
fid = fopen('sin.mif','wt');
fprintf(fid,'width = 14;\n');
fprintf(fid,'depth = 1024;\n');
fprintf(fid,'address_radix = uns;\n');
fprintf(fid,'data_radix = dec;\n');
fprintf(fid,'content begin\n');
for j = 1:901
i = j-1;
k = round(sin_val(j)*16384);%round,四舍五入
if(k == 16384)
k = 16383;
end
fprintf(fid,'%d:%d;\n',i,k);
end
fprintf(fid,'end;\n');
fclose(fid)
二、Xilinx ROM初始化文件(.coe)
文件格式如下:
memory_initialization_radix = 10;//数据进制,10为十进制,2为二进制,16为16进制
memory_initialization_vector =
0,
29,
57,
86,
114,
143,
172,
200,
229,
257,
286,
315,
343,
372,
400,
429,
…
16383;
注意:最后的数据将“,”改为“;”
生成.coe文件的matlab代码
clear all
close all
clc
t = [0:0.1:90];
x = pi * t/180;
sin_val = sin(x);
fid = fopen('sin.coe','wt');
fprintf(fid,'memory_initialization_radix = 10;\n');
fprintf(fid,'memory_initialization_vector =\n');
for j = 1:901
k = round(sin_val(j)*16384);%round,四舍五入
if(k == 16384)
k = 16383;
end
if(j<901)
fprintf(fid,'%d,\n',k);
else
fprintf(fid,'%d;\n',k);
end
end
fclose(fid);