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;

      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文件,内容如下:

    能成功导入,且数据一致,说明生成正确。

  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/BitArt/p/2813503.html
Copyright © 2011-2022 走看看