zoukankan      html  css  js  c++  java
  • 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!
    ");
        else
        {
            printf("File created successfully!
    ");
            /*
            *    生成文件头:注意不要忘了“;”
            */
            fprintf(fp,"DEPTH = %d;
    ",DEPTH);
            fprintf(fp,"WIDTH = %d;
    ",WIDTH);
            fprintf(fp,"ADDRESS_RADIX = HEX;
    ");
            fprintf(fp,"DATA_RADIX = HEX;
    ");
            fprintf(fp,"CONTENT
    ");
            fprintf(fp,"BEGIN
    ");
    
            /*
            * 以十六进制输出地址和数据
            */
            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	:	%x;
    ",i,temp);
            }//end for
            
            fprintf(fp,"END;
    ");
            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;
    ');%写入存储位宽8位
     9 fprintf(fid,'DEPTH=1024;
    ');%写入存储深度1024
    10 fprintf(fid,'ADDRESS_RADIX=UNS;
    ');%写入地址类型为无符号整型
    11 fprintf(fid,'DATA_RADIX=HEX;');%写入数据类型为16进制
    12 fprintf(fid,'CONTENT BEGIN
    ');%起始内容
    13 for i=0:n-1
    14 fprintf(fid,'	%d:%x;
    ',i,temp(i+1));
    15  
    16 end
    17 fprintf(fid,'END;
    ');
    18 fclose(fid);%关闭文件
  • 相关阅读:
    css之hover改变子元素和其他元素样式
    css实现俩端对齐的3种方法
    iOS开发——高级技术&内购服务
    iOS开发——高级技术&iCloud服务
    iOS开发——高级技术&PassBook服务
    iOS开发——高级技术&本地化与国际化详解
    iOS开发——高级技术&GameCenter服务
    iOS开发——高级技术&签名机制
    UIKit中的几个核心对象的介绍:UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
    Runtime之字典转模型实战
  • 原文地址:https://www.cnblogs.com/qidaiymm/p/6007704.html
Copyright © 2011-2022 走看看