在路上,为了人类视觉的享受而努力!

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

上一篇 / 下一篇  2008-09-11 16:22:40 / 天气: 晴朗 / 心情: 高兴 / 个人分类:学习笔记

查看( 58 ) / 评论( 8 )
  在FGPA的设计中,经常会对ROM进行初始化操作,如果内存数据不是很大(比如几十个),完全可以在quartus II 中逐个输入,但如果输入的数据较多,且数据的位数较大,如果依然采用逐个手工输入的方法的话,会遇到两个问题,一是工作量激增,二是容易出错。EDA中国门户网站 K$h6OC"]%W"d*MT

%m%is5nyE.`0        通常情况下,需要初始化的数据都已知,可以在TXT文本中,把所有的数据排成一列,再借助excel就可以很轻松的得到“.MIF”文件。 EDA中国门户网站7C QM8c6{ sIV

DK9U4@:F~d0        首先仔细研究下 MIF 文件的格式,例如下面的这个.MIF文件(引自quartus help 文档): EDA中国门户网站(eaGaT7NN1f"m
EDA中国门户网站gz V3|0xd Y2z-e
DEPTH = 32; -- The size of data in bits
2`]2z_6c|Xp0WIDTH = 8; -- The size of memory in words EDA中国门户网站2^0v^!Z"V
ADDRESS_RADIX = HEX; -- The radix for address values
y)Je {'a1nb#J0DATA_RADIX = BIN; -- The radix for data values CONTENT -- start of (address : data pairs)
~)k3~ i-\Gp0BEGIN
I2O1N N ~*fC0\v-c&z000 : 00000000; -- memory address : data
i"fuz{A&y ?[4sq1s001 : 00000001; EDA中国门户网站L(i.W R8xjUPDD,V3\
02 : 00000010; EDA中国门户网站0|Q#]3d+dK(J8d3G
03 : 00000011;
QG0ax!q}D ^P6Si004 : 00000100; EDA中国门户网站E u!KFP
05 : 00000101; EDA中国门户网站/Oo2[CyneR2D5D
06 : 00000110; EDA中国门户网站;TZ;q[l(VW B4pq
07 : 00000111;
%h SY){ [/J/fc)p008 : 00001000;
uQ'A$Cr``U+EW0[&D009 : 00001001;
6G)H(b7W/{00A : 00001010; EDA中国门户网站Tm rPN$ckE
0B : 00001011;
]-A z'D1T `)k00C : 00001100; EDA中国门户网站@"C,x U)}(os
END;
{1IY,kP2|^0EDA中国门户网站?d_w*l
        我们可以看到MIF文件分两部分,一部分是格式说明部分 DEPTH 就是地址深度, WIDTH 就是字宽, 而ADDRESS_RADIX 和 DATA_RADIX 通常用 UNS;而另一部分则是 begin与end中间的"00 : 00000000; " 是一一对应的地址与数据。 EDA中国门户网站K;~'F#J8h!@R

!N9U Y3vl0|q0        因此,要得到MIF文件,只需要把begin与end中间的这段换成所需要的即可,具体步骤如下: EDA中国门户网站A.rs$P F e

dv&JH'^?-x|0        1. 打开TXT文本文件,打开excel软件; EDA中国门户网站q1@r*O3E&Q A
EDA中国门户网站8yyoMm6_5Eg/w_Q%r
        2. 将TXT文件中一列数据全部复制到 excel 表格的第二列; EDA中国门户网站.A1Y#?6kDn#I
EDA中国门户网站c6M;{D_Dv|
        3. 在excel的第一列第二行输入“0 :”,(注意:此处是0,是因为地址总是从0开始),在第一列第二行输入“1 :”,把这两个单元格选中,鼠标往下拉到与数据行对齐的地方即可,这是利用了excel软件的序号自动增加的特性;
]:Y_hb\C0H;I0
O*?B'KTa!o0        4. 将得到的excel文件另存为“Unicode文本(*.txt)”文件,此时会有一些提示出现,一律确定,不影响使用; EDA中国门户网站,T D B*B!@h
EDA中国门户网站eSf9F;h Y\v
        5. 打开quartus,新建一个TXT文件(file-new-other file-txt文件),将MIF文件的格式说明拷贝过来,再将第4步得到的TXT文本文件中的数据全部复制到begin与end中间,另存为“.mif”,即可! EDA中国门户网站| L4Pu KEl

g&@8eL#iw0        作项目,要用到一个很大的ROM,也是第一次用到这么大的ROM,找了许多资料,总不得要领,在研究了MIF文件的格式后,在朋友的提示下,终于用excel解决了问题,很是兴奋,HOHO!
zS-w2Q[$m-H0
6s:k)o4`{!Jl@5p4d0PS:        偶尔的小发现,不敢独享,考虑到从EDN看到了好多朋友介绍的quartus的操作经验,于是大胆的贴出来,期待跟朋友们多多交流,共同探索quartus的简明使用手段。EDA中国门户网站t2b,wpg8QL q

J? MWO R2C0另: 说实在的,俺自己都觉得这方法挺麻烦的,如果其它朋友还有生成MIF文件的更好的手段,也请不吝赐教,谢谢!
j?&A7cR6Ls+Gy0EDA中国门户网站} \^#Om%Bn#N1{"^
[ 本帖最后由 ql_smbj 于 2008-9-11 16:21 编辑 ]

TAG:

tangguoge发布于2008-09-11 16:52:23
我一般直接matlab生成
射门不进的个人空间 ql_smbj 发布于2008-09-11 16:55:09
俺这次的ROM初始化数据 是同事给的  哎  懒得麻烦别人修改程序  'G0nKdE;H"l
www.edacn.net$?zw9L
ms        p P-wx

并且MATLAB把程序运行一次 得将近20分钟 所以就自己给作了  黑黑
rickeyline发布于2008-09-11 18:10:20
谢谢分享,回头试验一下。
vfdff的个人空间 vfdff 发布于2008-09-18 11:57:38
wo 用C代码生成
zheng694的个人空间 zheng694 发布于2008-09-18 17:25:08

eject发布于2008-09-18 20:24:34
用 HEXEDITOR 作0?9l*R.S7S/_r*\
16bits 會多一行空白就是
yinfun的个人空间 yinfun 发布于2008-09-18 20:46:07
如果格式固定,可以采用脚本文件处理一下应该还是比较方便的!
submars发布于2008-09-21 02:05:11
这个方法不错,在别人的机器上临时用用就不需要再安装其他软件了。
我来说两句

(可选)

我的栏目

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 1015
  • 日志数: 7
  • 建立时间: 2008-04-06
  • 更新时间: 2008-09-11

RSS订阅

Open Toolbar