ROM初始化文件(.mif/.coe)

一、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);

你可能感兴趣的:(FPGA)