⑴ 如何生成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;
DATA_RADIX = HEX;
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);
}
}
驗證生成的數據是否正確:用記事本打開生成的mif文件,同時用Quartus打開mif文件,內容如下:
能成功導入,且數據一致,說明生成正確。
⑵ 如何生成mif文件
mif文件就是存儲器初始化文件,即memory initialization file,用來配置RAM或ROM中的數據。生成QuartusII11.0可用的文件,有如下幾種方式:
方法1:利用Quartus自帶的mif編輯器
優點:對於小容量RAM可以快速方便的完成mif文件的編輯工作,不需要第三方軟體的編輯;
缺點:一旦數據量過大,一個一個的輸入會使人崩潰;
使用方法:在quartus中,【file】/【new】,選擇Memory Initialization file,彈出如下窗口:
能成功導入,且數據一致,說明生成正確。