1、mif文件
1)、mif文件的概念
mif文件,是FPGA中ROM的初始化文件(Memory Initialization File),用来配置RAM或者ROM。因为FPGA是基于SRAM存储的,是掉电易失性的,所以要实现ROM的功能,我们就需要在FPGA配置的过程中,把相应的存储块初始化,从而在FPGA处在用户状态时,这个存储块在用户看来就相当于一个ROM。
2)、mif文件的格式
mif文件有固定的格式。如下:
DEPTH = XXX;//存储块的深度
WIDTH = XX;//每个存储单元存储数据的宽度
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT
BEGIN
XX : XXX;//冒号前的数表示存储单元在存储块中的位置,后面的数据表示该存储单元中存储的数据。
END;
因为mif文件的格式是固定的,所以要想产生带有我们需要数据的mif文件很简单,只要按照mif文件的格式把BEGIN...END中的数据替换成我们需要的数据即可。
3)、Quartus II 中mif文件里数据产生的方法
①、手工录入法
当mif文件中的数据较少时,我们可以在Quartus II 中新建一个mif文件,然后直接在mif文件中编辑录入所需要的数据。编辑的方法既可以是直接在Quartus II 软件界面中直接输入,也可以打开.mif文件的文本文档直接编辑BEGIN ...END;中的数据
②高级语言生成法
如果mif文件中的数据具有一定的规律,我们可以用高级语言按照这个规律来编写程序来生成这些数据。比如mif文件中的数据是正弦曲线上的数值,那么我们就可以用高级语言编写一个正弦函数来算得这些数值。
高级语言生成,可以用C语言也可以用Matlab 的M语言。比如,用C语言生成一组正弦函数数据:
#include <stdio.h>
#include <math.h>
void main()
{
int t;
int u;
for(t=0;t<=121;t++)
{
u=sin(2*3.1415926*(100*t+59*t*t/7));
printf("%d: %d;\n",t,u);
}
}
这里就是生成122个正弦曲线上的数据的方法,我们只需要把打印输出的数据复制到mif文件的BEGIN ...END;之间替代之前的数据即可。
③高级语言直接生成mif文件
我们也可以直接用高级语言(C语言或者M语言)来生成mif文件,之前两种方法产生的只是mif文件中的数据。
比如,用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);
}
}
把这个生成的mif文件直接导入到Quartus II中即可。
4、参考文件
如何生成mif文件http://www.cnblogs.com/BitArt/archive/2012/12/11/2813503.html
用户403664 2014-4-9 15:56
coyoo 2014-3-3 16:13
coyoo 2014-3-3 16:07