原创 两种简单生成“.MIF”文件的办法

2009-2-19 20:37 6485 14 16 分类: FPGA/CPLD

有一篇文章被人转到论坛中,没有什么技术含量,就是一些技巧总结,归到此处。


 


工程师进行FIR设计的时候,需要初始化系数,经常抱怨QuartusII直接生成MIF文件感觉比较麻烦。给工程师找了一些生成MIF文件的小工具,但是对于内存数据很大且随机无规律但是已知的初始化数据工具无法产生,摸索了两种简单生成MIF文件方法。一种是通过excel生成,另一种就是利用Uedit的列选功能生成。下面简单进行介绍。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


一、利用excel生成MIF文件


FGPA设计中,经常会对ROM进行初始化操作,如果内存数据不是很大(比如几十个),完全可以在quartus II 中逐个输入,但如果输入的数据较多,且数据的位数较大,如果依然采用逐个手工输入的方法的话,会遇到两个问题,一是工作量激增,二是容易出错。


通常情况下,需要初始化的数据都已知,可以在TXT文本中,把所有的数据排成一列,再借助excel就可以很轻松的得到“.MIF文件


首先仔细研究下 MIF 文件的格式,例如下面的这个.MIF文件:


DEPTH = 32; -- The size of data in bits


WIDTH = 8; -- The size of memory in words


ADDRESS_RADIX = HEX; -- The radix for address values


DATA_RADIX = BIN; -- The radix for data values


CONTENT -- start of (address : data pairs)


BEGIN


00 : 00000000; -- memory address : data


01 : 00000001;


02 : 00000010;


03 : 00000011;


04 : 00000100;


05 : 00000101;


06 : 00000110;


07 : 00000111;


08 : 00001000;


09 : 00001001;


<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0A : 00001010;


0B : 00001011;


0C : 00001100;


END;


我们可以看到MIF文件分两部分,一部分是格式说明部分:DEPTH 就是地址深度, WIDTH 就是字宽,而ADDRESS_RADIX DATA_RADIX 通常用 UNS;而另一部分则是 beginend中间的"00 : 00000000; " 是一一对应的地址与数据。


因此,要得到MIF文件,只需要把beginend中间的这段换成所需要的即可,具体步骤如下:


1.       打开TXT文本文件,打开excel软件


2.       TXT文件中一列数据全部复制到 excel 表格的第二列;


3.       excel的第一列第一行输入“0 ,(注意:此处是0,是因为地址总是从0开始),在第一列第二行输入“1 ,把这两个单元格选中,鼠标往下拉到与数据行对齐的地方即可,这是利用了excel软件的序号自动增加的特性;


4.       将得到的excel文件另存为“Unicode文本(*.txt文件,此时会有一些提示出现,一律确定,不影响使用;


5.       打开quartus,新建一个TXT文件(file-new-other file-txt文件),将MIF文件的格式说明拷贝过来,再将第4步得到的TXT文本文件中的数据全部复制到beginend中间,另存为“.mif”,即可!


 二、利用Uedit编译器生成MIF文件


主要思想跟用excel方法一样,利用Uedit编译器可以列选的功能进行编序以及添加“:”。具体步骤如下:


1、  打开Uedit软件,并新建一个文件-New File


2、  将已知初始化数据编排成一列数据全部复制到刚创建的新文件中(同excel方法第二步);



图一:创建一个新文件并将初始化数据copy到其中


3、  “列选”第一列,如图二所示



图二,列选每行数据的起始


4、  通过Column菜单中的“Insert Number”命令在每行加入序号。


5、  给每行加入序号后,再次通过列选功能,选中序号后面一列,加入“:”,MIF文件的格式说明拷贝过来再另存为MIF文件即可。



图三:列选序号后一列



图四:列选行号后一列,输入“:”


PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户234619 2010-5-31 15:18

好文章,先顶后赞!

coyoo 2009-2-19 20:21

图片怎么都成红叉叉了?!!
相关推荐阅读
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
EE直播间
更多
我要评论
2
14
关闭 站长推荐上一条 /1 下一条