1、mif文件

1)、mif文件的概念

mif文件,是FPGA中ROM的初始化文件(Memory Initialization File),用来配置RAM或者ROM。因为FPGA是基于SRAM存储的,是掉电易失性的,所以要实现ROM的功能,我们就需要在FPGA配置的过程中,把相应的存储块初始化,从而在FPGA处在用户状态时,这个存储块在用户看来就相当于一个ROM。

2)、mif文件的格式

mif文件有固定的格式。如下:

DEPTH = XXX;//存储块的深度

WIDTH = XX;//每个存储单元存储数据的宽度

ADDRESS_RADIX = HEX;

DATA_RADIX = HEX;

CONTENT

BEGIN

XX        :       XXX;//冒号前的数表示存储单元在存储块中的位置,后面的数据表示该存储单元中存储的数据。

END;

因为mif文件的格式是固定的,所以要想产生带有我们需要数据的mif文件很简单,只要按照mif文件的格式把BEGIN...END中的数据替换成我们需要的数据即可。

3)、Quartus II 中mif文件里数据产生的方法

①、手工录入法

当mif文件中的数据较少时,我们可以在Quartus II 中新建一个mif文件,然后直接在mif文件中编辑录入所需要的数据。编辑的方法既可以是直接在Quartus II 软件界面中直接输入,也可以打开.mif文件的文本文档直接编辑BEGIN ...END;中的数据

②高级语言生成法

如果mif文件中的数据具有一定的规律,我们可以用高级语言按照这个规律来编写程序来生成这些数据。比如mif文件中的数据是正弦曲线上的数值,那么我们就可以用高级语言编写一个正弦函数来算得这些数值。

高级语言生成,可以用C语言也可以用Matlab 的M语言。比如,用C语言生成一组正弦函数数据:

#include

#include

void main()

{

int t;

int u;

for(t=0;t<=121;t++)

{

u=sin(2*3.1415926*(100*t+59*t*t/7));

printf("%d:                    %d;\n",t,u);

}

}

这里就是生成122个正弦曲线上的数据的方法,我们只需要把打印输出的数据复制到mif文件的BEGIN ...END;之间替代之前的数据即可。

③高级语言直接生成mif文件

我们也可以直接用高级语言(C语言或者M语言)来生成mif文件,之前两种方法产生的只是mif文件中的数据。

比如,用C语言来产生一个正弦波的数据波形,保存在“TestMif.mif”文件中:

#include

#include

#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

{

/*周期为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 II中即可。

4、参考文件

c语言正弦波的mif文件,【原创】ROM的初始化文件-mif文件相关推荐

  1. linux7inittab文件不存在,Linux下修复inittab文件丢失的两种方法

    /etc/inittab文件是linux系统初始化配置文件,该文件出现错误或者丢失时,可能导致无法启动系统,启动系统时会提示出"INIT No inittab file fonud" ...

  2. Matlab生成Xilinx Rom IP CORE的初始化内容coe文件

    在进行FPGA设计时,经常要对rom模块进行初始化.ISE或Quartus II软件本身具备的初始化功能对于较小的rom是行之有效的,但面对大容量的rom时就显得捉襟见肘了.而matlab作为一神器, ...

  3. c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...

  4. R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息

    R语言sys方法:sys.getpid函数获取R会话的进程ID.sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件.sys.info函数获取系统和用户信息 目录

  5. Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略

    Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略 目录 Python与文件夹那些事 1.创建/删除文件/文件夹 1.创建文件夹

  6. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  7. c语言lua读文件,file-io – 在Lua中逐行读取文件

    Lua使用相同的底层C实现模型管理文件(此模型也被其他编程语言使用,这是相当常见的).如果您不熟悉这种查看文件的方式,那么术语可能不清楚. 在该模型中,文件表示为具有所谓的当前位置的字节流.当前位置是 ...

  8. C语言之文件读写探究(七):随机读写文件

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  9. python语言源程序文件类型_浅谈Python的文件类型

    Python的文件类型主要分为3种:源代码(source file).字节码(byte-code file).优化的字节码(optimized file).这些代码都可以直接运行,不需要编译或者连接. ...

最新文章

  1. Redis配置主从数据,实现主从库之间数据同步
  2. [已经完美解决]IE下 'document.getElementById(...)' is null
  3. fatal error C1001的一个解决心得
  4. PHP5异常处理,PHP5异常处理分析实例
  5. 让这三个月来的更猛烈些吧,前端react同构项目
  6. golang 上下文 Context
  7. 充电枪cp信号控制板_新能源汽车充电头气密性检测是怎么做的呢?
  8. 2018-2019-1 20189218《Linux内核原理与分析》第二周作业
  9. 视觉SLAM入门十四讲
  10. 电商产品设计:购物车管理
  11. PHP PDF转图片:设置图像的色彩空间 RGBCMYK互转
  12. 学计算机的人可以定位找人吗,电脑如何实现查找“附近的人”?
  13. 引气管理计算机失效,TAT信号无效导致ND上TAS-显示消失B737系列机务在线 - 认真、负责、细致 我们秉承的理念...
  14. Revit模型轻量化方法
  15. 安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0
  16. 计算机毕业设计Java河池市旅游信息系统(源码+系统+mysql数据库+lw文档)
  17. Pandas的panel结构
  18. Opencascade 开发 1章
  19. 语音怎么在线转文字,语音转文字的小技巧
  20. Cesium常用事件,包括点击事件,鼠标事件,相机移动事件

热门文章

  1. CRM能给企业带来什么价值
  2. 射频微波PCB板材信息
  3. 冯.诺伊曼体系结构的计算机工作原理是,冯诺依曼体系结构计算机的要点和工作过程.doc...
  4. [WSDL]WSDL(web service document language)简介
  5. python实现对简单的运算型验证码的识别【不使用OpenCV】
  6. 模仿淘宝-导航式订单跟踪css简单实现
  7. java河南省农村多元化养老服务管理系统设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  8. 使用redis-shake工具迁移云Redis数据(二十一)
  9. 项目管理系统助力汽车行业APQP高效落地︱奥博思软件总经理黎学文
  10. 计算机网络第六章学习通题目及答案