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);%關閉文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM