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中。

     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!
    ");
    17     else
    18     {
    19         printf("File created successfully!
    ");
    20         /*
    21         *    生成文件头:注意不要忘了“;”
    22         */
    23         fprintf(fp,"DEPTH = %d;
    ",DEPTH);
    24         fprintf(fp,"WIDTH = %d;
    ",WIDTH);
    25         fprintf(fp,"ADDRESS_RADIX = HEX;
    ");
    26         fprintf(fp,"DATA_RADIX = HEX;
    ");
    27         fprintf(fp,"CONTENT
    ");
    28         fprintf(fp,"BEGIN
    ");
    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	:	%x;
    ",i,temp);
    41         }//end for
    42         
    43         fprintf(fp,"END;
    ");
    44         fclose(fp);
    45     }
    46 }

    验证生成的数据是否正确:用记事本打开生成的mif文件,同时用Quartus打开mif文件,内容如下:

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

    【注】:为尊重版权,特标注引用的地址:http://www.cnblogs.com/BitArt/archive/2012/12/11/2813503.html

  • 相关阅读:
    第4月第1天 makefile automake
    第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
    第3月第27天 uitableviewcell复用
    learning uboot fstype command
    learning uboot part command
    linux command dialog
    linux command curl and sha256sum implement download verification package
    learning shell script prompt to run with superuser privileges (4)
    learning shell get script absolute path (3)
    learning shell args handing key=value example (2)
  • 原文地址:https://www.cnblogs.com/xd-elegant/p/4520727.html
Copyright © 2011-2022 走看看