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

2009-1-20 16:17 4434 8 10 分类: FPGA/CPLD

        在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软件的序号自动增加的特性; 


ccb1d780-0624-45cd-9322-35e9a8c9509f.JPG




        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文件的更好的手段,也请不吝赐教,谢谢!

文章评论2条评论)

登录后参与讨论

用户377235 2011-11-30 21:10

dear sir, pls send me circuit diagram of digital time/date clock and MCU code. thakyou Shahzad Ismail shahzad@brain.net.pk

用户1366067 2009-1-20 16:14

To: spices 我再详细的描述一下吧,贴图也不大方便。 2的意思:把你想固化到ROM里的数据,先放到一个TXT文档里头,在TXT文档里头把这些数据排成一列,再复制到一个excel表格中去,也就是这么多数据在excel中只有一列。 3的意思:在excel表格中,参考如下输入 0 : 11 1 : 12 2 : 13 3 : 14 4 : 15 5 : 16 6 : 17 7 : 18 说明:第一列是手动输入,方法,输入0和1后,用鼠标把这两个单元格选中,把鼠标往下拉到与数据行对齐的地方即可,这是利用了excel软件的序号自动增加的特性; 第二列都是“:”,输入方法同上; 第三列是要固化到ROM中的值,从TXT文档拷贝而来。 完毕。

用户131467 2009-1-19 20:41

貌似你的描述有点问题。能不能贴图来描述,会更清晰一些。你说的方法里面2和3我都没有看懂。。。。
相关推荐阅读
用户1366067 2010-04-13 10:10
理解Avalon总线的静态地址对齐与动态地址对齐
尽管看了不少资料,但是一直对 Avalon slave 的动态地址对齐和静态地址对齐的理解不是很透彻。前两天自己做了一个SOPC的自定义组件,通过Deprecated这个选项的不同选取,一下子就理解了...
用户1366067 2010-03-31 15:00
国内IC公司,还缺点啥?
俺并不算是IC业内人士,但俺用IC、可算是IC业内人士的客户,就从一个应用IC的工程师的角度来简单说说国内IC公司,还欠缺点啥!前两天拿到EDN杂志,看到了无锡芯朋微电子有限公司的广告,在广告中,极力...
用户1366067 2010-03-27 14:51
俺的FPGA接口学习板
    一直以来,都坚定的认为自己是一个硬件爱好者;也一直想把一个硬件工程师必须掌握的几种常用接口,整个明白。今年,终于下定决心,搞一块自己的FPGA接口学习板,系统学习USB接口、网络接口、SD卡读...
用户1366067 2010-03-25 20:22
Firefox 试用
昨天闲得慌,在IT168看到了年度最流行的开源软件的介绍,其中就有Firefox这款浏览器。挺好奇的,就下载了一个。使用两天咯,感觉超棒,HOHO,比以前用的360安全浏览器速度快,功能还多。可惜就是...
用户1366067 2009-11-08 16:10
嵌套式状态机的描述
     在上周,就有写这个日志的打算咯,今天终于完工。    附件中,用一个简单的例子,描述了嵌套状态机的描述方法,一段式、三段式描述方法(1)和(2),其中包含了所有的源代码(所有源代码用VHDL...
用户1366067 2009-10-30 16:49
USB2.0 描述符小结
描述符(descriptor)是一个数据结构,使主机了解设备的格式化信息。每一个描述符可能包含整个设备的信息,或是设备中的一个组件。所有的USB外围设备,都必须对标准的USB描述符作出响应。<?...
我要评论
2
8
关闭 站长推荐上一条 /2 下一条