注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
tx_xy的个人空间 https://home.eeworld.com.cn/space-uid-216158.html [收藏] [复制] [分享] [RSS]
日志

【原创】利用excel生成“.MIF”文件的办法

已有 1441 次阅读2010-5-5 18:36

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

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

首先仔细研究下 MIF 文件的格式,例如下面的这个.MIF文件(引自quartus help 文档):

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)

00 : 00000000; -- memory address :

01 : 00000001;

02 : 00000010;

03 : 00000011;

04 : 00000100;

05 : 00000101;

06 : 00000110;

07 : 00000111;

08 : 00001000;

09 : 00001001;

0A : 00001010;

0B : 00001011;

0C : 00001100;

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

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

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文本文件中的数据全部复制到begin与end中间,另存为“.mif”,即可!

作项目,要用到一个很大的ROM,也是第一次用到这么大的ROM,找了许多资料,总不得要领,在研究了MIF文件的格式后,在朋友的提示下,终于用excel解决了问题,很是兴奋,HOHO!

PS: 偶尔的小发现,不敢独享,考虑到从EDN看到了好多朋友介绍的quartus的操作经验,于是大胆的贴出来,期待跟朋友们多多交流,共同探索quartus的简明使用手段。

另: 说实在的,俺自己都觉得这方法挺麻烦的,如果其它朋友还有生成MIF文件的更好的手段,也请不吝赐教,谢谢!

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章