办法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;
DATA_RADIX = HEX;
CONTENT
BEGIN
0000 : 0000;
0001 : 0000;
0002 : 0000;
……(此处省掉一千字*.*)
00FA : 00FF;
00FB : 00FF;
00FC : 00FF;
00FD : 00FF;
00FE : 00FF;
00FF : 00FF;
END;
办法3: 高档言语 生成 C言语
#include
#include
#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
{
/*周期为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);
}
}