mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据。常见生成方法:

  • Quartus自带的mif编辑器生成
  • mif软件生成
  • 高级编程语言生成
  • 前两种方法都有一定的缺陷,主要介绍第三种方法,按照mif文件格式,使用高级编程语言(Matlab、C)编写生成。

    注意: mif文件都是ASCⅡ码,负数应该是用补码处理,否则负数在mif文件中会变成0。

    Matlab参考代码如下:

    
    
    clc;clear;close all;
    width = 10;
    depth = 2^width;
    t = linspace(0,6.28,depth);
    sin_val = sin(t);
    %cos_val = cos(t);
    sin_val = fix(sin_val*(2^width-1)/2 + 0.5);  %四舍五入
    %cos_val = fix(cos_val*(2^width-1)/2 + 0.5);
    sin_val(find(sin_val<0))=sin_val(find(sin_val<0)) + 2^width; %求补码 
    addr = [0:depth - 1];
    file = fopen('sin.mif','wt');
    fprintf(file,'WIDTH=%d;\n',width);      %该格式对应于mif格式,最后不要变
    fprintf(file,'DEPTH=%d;\n',depth);
    fprintf(file,'\n');
    fprintf(file,'ADDRESS_RADIX=UNS;\n');
    fprintf(file,'DATA_RADIX=HEX;\n');
    fprintf(file,'\n');
    fprintf(file,'CONTENT BEGIN\n');
    for i=1:depth
        fprintf(file,'    %d  :  %X;\n',addr(i), sin_val(i));
    end
    fprintf(file,'\n');
    fprintf(file,'END;\n');
    fclose(file);
    

    相关文章: