MIF文件生成说明

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MIF文件生成说明相关的知识,希望对你有一定的参考价值。

mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据。生成QuartusII11.0可用的mif文件,有如下几种方式:

方法1:利用Quartus自带的mif编辑器

优点:对于小容量RAM可以快速方便的完成mif文件的编辑工作,不需要第三方软件的编辑;

缺点:一旦数据量过大,一个一个的输入会使人崩溃;

使用方法:在quartus中,【file】/【new】,选择Memory Initialization file,弹出如下窗口:

Number of words:可寻址的存储单元数,对于8bit地址线,此处选择256;

words size:存储单元宽度,8bit;

然后点击“OK”.

在表格中输入初始化数据;
右键单击左侧地址值,可以修改地址和数据的显示格式;
表中任一数据的地址=列值+行值,如图中蓝色单元的地址=24+4=28;
对每个单元填写初始值之后,将文件保存即可。

方法2:利用mif软件来生成

无论使用什么编辑器,必须保证mif文件的格式如下:冒号左边是地址,右边是数据;分号结尾;

以下为必要信息:

DEPTH = 256;  //数据深度

WIDTH = 8;  //数据宽度

ADDRESS_RADIX = HEX; //地址类型:HEX-16进制,UNS-无符号整型,DEC-一种数据类型

DATA_RADIX = HEX;  //数据类型:HEX-16进制,UNS-无符号整型,DEC-一种数据类型

CONTENT  //必须

BEGIN  //必须

0000 : 0000;  //地址:数据

0001 : 0000;

0002 : 0000;

……(此处省略一千字*.*)

00FA : 00FF;

00FB : 00FF;

00FC : 00FF;

00FD : 00FF;

00FE : 00FF;

00FF : 00FF;

END;  //必须

这里推荐一款mif生成器:Mif_Maker2010.exe,可以百度下载;软件使用方法见《Mif Maker2010的使用方法》。

方法3:使用高级语言

用C语言或者matlab语言等来生成,C语言生成代码如下:本代码生成一个正弦波的数据波形,保存在TestMif.mif中。

复制代码
复制代码
#include <stdio.h>
#include <math.h>

#define PI 3.141592
#define DEPTH 128 /数据深度,即存储单元的个数/
#define WIDTH 8 /存储单元的宽度/

int main(void)

int i,temp;
float s;

FILE *fp;
fp = fopen("TestMif.mif","w");   /*文件名随意,但扩展名必须为.mif*/
if(NULL==fp)
    printf("Can not creat file!\\r\\n");
else

    printf("File created successfully!\\n");
    /*
    *    生成文件头:注意不要忘了“;”
    */
    fprintf(fp,"DEPTH = %d;\\n",DEPTH);
    fprintf(fp,"WIDTH = %d;\\n",WIDTH);
    fprintf(fp,"ADDRESS_RADIX = HEX;\\n");
    fprintf(fp,"DATA_RADIX = HEX;\\n");
    fprintf(fp,"CONTENT\\n");
    fprintf(fp,"BEGIN\\n");

    /*
    * 以十六进制输出地址和数据
    */
    for(i=0;i<DEPTH;i++)
    
         /*周期为128个点的正弦波*/ 
        s = sin(PI*i/64);   
        /*将-1~1之间的正弦波的值扩展到0-255之间*/ 
        temp = (int)((s+1)*255/2);
        /*以十六进制输出地址和数据*/
        fprintf(fp,"%x\\t:\\t%x;\\n",i,temp);
    //end for
    
    fprintf(fp,"END;\\n");
    fclose(fp);


复制代码
复制代码

方法4,使用MATLAB生成mif文件!!

以下是mif文件的必要部分!

           WIDTH=8; //数据位宽为8位 

           DEPTH=256; //存储深度为256

           ADDRESS_RADIX=UNS; //地址类型为无符号整型

           DATA_RADIX=UNS; //数据类型为无符号整型

           CONTENT BEGIN

           0:1;   //地址0的存储器内容为1

           1:3;   //地址为1的存储器内容的3

           [2:255]:0;//地址为2~255的存储器内容为0

           END;

这样,即可利用matlab构造类似的文件存储方式。利用matlab将上述的图像数据转换成.mif。代码如下所示:

复制代码
1 clear;
2 clc;
3 close all;
4 fid=fopen(‘data_8bits.txt’);%打开待转换数据的.txt文件
5 temp=fscanf(fid,’%x’);%扫描文件
6 n=1024;
7 fid=fopen(‘convert_data.mif’,‘w’);%打开待写入的.mif文件
8 fprintf(fid,‘WIDTH=8;\\n’);%写入存储位宽8位
9 fprintf(fid,‘DEPTH=1024;\\n’);%写入存储深度1024
10 fprintf(fid,‘ADDRESS_RADIX=UNS;\\n’);%写入地址类型为无符号整型
11 fprintf(fid,‘DATA_RADIX=HEX;’);%写入数据类型为16进制
12 fprintf(fid,‘CONTENT BEGIN\\n’);%起始内容
13 for i=0:n-1
14 fprintf(fid,’\\t%d:%x;\\n’,i,temp(i+1));
15
16 end
17 fprintf(fid,‘END;\\n’);
18 fclose(fid);%关闭文件

以上是关于MIF文件生成说明的主要内容,如果未能解决你的问题,请参考以下文章

hex转mif文件 verilog

用matlab生成mif文件

用matlab生成mif文件

C2MIF软件使用说明

在 MATLAB 中生成要保存在 .mif 文件中的正弦波

针对Quartus IP Core的MIF文件格式小记