生成mif文件的幾種方法總結

mif文件就是存儲器初始化文件,即memory initialization file,用來配置RAM或ROM中的數據。生成QuartusII11.0可用的mif文件,有以下幾種方式:html

方法1:利用Quartus自帶的mif編輯器編輯器

優勢:對於小容量RAM能夠快速方便的完成mif文件的編輯工做,不須要第三方軟件的編輯;spa

缺點:一旦數據量過大,一個一個的輸入會令人崩潰;code

使用方法:quartus中,【file/new】,選擇Memory  Initialization file,彈出以下窗口:htm

Number of words:可尋址的存儲單元數,對於8bit地址線,此處選擇256blog

words size:存儲單元寬度,8bitget

而後點擊「OK」.it

  • 在表格中輸入初始化數據;
  • 右鍵單擊左側地址值,能夠修改地址和數據的顯示格式;
  • 表中任一數據的地址=列值+行值,如圖中藍色單元的地址=24+4=28

對每一個單元填寫初始值以後,將文件保存便可。io

 

方法2:利用mif軟件來生成class

不管使用什麼編輯器,必須保證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中。

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 #define PI 3.141592
 5 #define DEPTH 128     /*數據深度,即存儲單元的個數*/
 6 #define WIDTH 8       /*存儲單元的寬度*/
 7 
 8 int main(void)
 9 {
10     int i,temp;
11     float s;
12 
13     FILE *fp;
14     fp = fopen("TestMif.mif","w");   /*文件名隨意,但擴展名必須爲.mif*/
15     if(NULL==fp)
16         printf("Can not creat file!\r\n");
17     else
18     {
19         printf("File created successfully!\n");
20         /*
21         *    生成文件頭:注意不要忘了「;」
22         */
23         fprintf(fp,"DEPTH = %d;\n",DEPTH);
24         fprintf(fp,"WIDTH = %d;\n",WIDTH);
25         fprintf(fp,"ADDRESS_RADIX = HEX;\n");
26         fprintf(fp,"DATA_RADIX = HEX;\n");
27         fprintf(fp,"CONTENT\n");
28         fprintf(fp,"BEGIN\n");
29 
30         /*
31         * 以十六進制輸出地址和數據
32         */
33         for(i=0;i<DEPTH;i++)
34         {
35              /*週期爲128個點的正弦波*/ 
36             s = sin(PI*i/64);   
37             /*將-1~1之間的正弦波的值擴展到0-255之間*/ 
38             temp = (int)((s+1)*255/2);
39             /*以十六進制輸出地址和數據*/
40             fprintf(fp,"%x\t:\t%x;\n",i,temp);
41         }//end for
42         
43         fprintf(fp,"END;\n");
44         fclose(fp);
45     }
46 }

 

驗證生成的數據是否正確:用記事本打開生成的mif文件,同時用Quartus打開mif文件,內容以下:

能成功導入,且數據一致,說明生成正確。

【注】:爲尊重版權,特標註引用的地址:http://www.cnblogs.com/BitArt/archive/2012/12/11/2813503.html

相關文章
相關標籤/搜索