下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 matlab生成mif、hex文件及注意事项

matlab生成mif、hex文件及注意事项.doc

matlab生成mif、hex文件及注意事项

周脱然
2017-09-17 0人阅读 举报 0 0 暂无简介

简介:本文档为《matlab生成mif、hex文件及注意事项doc》,可适用于IT/计算机领域

matlab生成mif、hex文件及注意事项在网上找的分享一下感谢这些作者们。depth=存储单元数widths=数据宽度为位N=::s=sin(pi*N)计算~pi的Sin值fidc=fopen('ddsmif','wt')以"wt"的形式打开,n为换行写入ddsmiffprintf(fidc,'depth=dn',depth)fprintf(fidc,'width=dn',widths)fprintf(fidc,'addressradix=decn')fprintf(fidc,'dataradix=decn')fprintf(fidc,'ContentBeginn')for(x=:depth)fprintf(fidc,'d:dn',x,round(*sin(pi*(x))))endfprintf(fidc,'end')fclose(fidc)再点RUN就生成所要的MIF文件了保存在C:MATLABwork当然程序是老师写的本人对这东东一无所知不怕读者笑话。(也正是因为对这个程序的茫然不知导致后面严重的错误。)然后在QuartusII调用一个位宽位深度的LPMROM,指定路径C:MATLABwork我已为大功告成。可接下来问题来了在QII里面编译时出现如下错误:Error:Dataatlineexceedsthespecifiedwidth()intheMemoryInitializationFile"C:MATLABworkddsmif"Error:MemoryInitializationFileorHexadecimal(IntelFormat)FileC:MATLABworkddsmifcontainsillegalsyntaxatlineError:Can'treadMemoryInitializationFileorHexadecimal(IntelFormat)FileC:MATLABworkddsmifforROMinstanceIfthefileexists,itisnotincorrectformatError:Can'telaborateuserhierarchy"lpmrom:inst|altsyncram:altsyncramcomponent|altsyncramc:autogenerated"Error:QuartusIIAnalysisSynthesiswasunsuccessfulerrors,warning第一个错误是说我生成的MIF文件第六行数据已经超过的指定的数据位宽。后面的大概就是QII里面的一些VHDL语法错误了(我认为因为英文不好)。可是我想不通的是调用LPMROM明明是位宽的深度怎么会不对呢,问老师说不知道且说MATLAB程序没问题。于是本人只好百度一下了结果找到一篇这样的文章:用MATLAB生成*mif、*hex(QUARTUSII)文件简介macroqianyahoocomcn做FPGA设计时经常要调用芯片内存。特别对于ROM内存的初始化就显得比较重要。当然你完全可以手工在QUARTUSII打开mif文件的表格里或是在EXCEL中逐个输入几十项(字)或是近百项(字)你还可以接受如果上千项或是更多呢,估计能累的人吐血~一般内存的初始化数据都是有规律的符合一定的函数我们完全可以用MATLAB来完成(如果没规律只能逐项手工输入了)。首先我们应该知道*mif文件的格式。它是文本格式。随便打开一个mif文件你会发现它具有如下的格式:Copyright(C)AlteraCorporationYouruseofAlteraCorporation'sdesigntools,logicfunctionsandothersoftwareandtools,anditsAMPPpartnerlogicfunctions,andanyoutputfilesfromanyoftheforegoing(includingdeviceprogrammingorsimulationfiles),andanyassociateddocumentationorinformationareexpresslysubjecttothetermsandconditionsoftheAlteraProgram******SubscriptionAgreement,AlteraMegaCoreFunction******Agreement,orotherapplicable******agreement,including,withoutlimitation,thatyouruseisforthesolepurposeofprogramminglogicdevicesmanufacturedbyAlteraandsoldbyAlteraoritsauthorizeddistributorsPleaserefertotheapplicableagreementforfurtherdetailsQuartusIIgeneratedMemoryInitializationFile(mif)WIDTH=DEPTH=ADDRESSRADIX=UNSDATARADIX=UNSCONTENTBEGIN:::…………:::END格式很简单吧。首先根据需要设置每个字的位宽WIDTH和总字数DEPTH。然后设置地址和数据的进制基数ADDRESSRADIX、DATARADIX建议大家不要修改就使用无符号数(UNS)。然后用MATLAB生成需要的数据(按上边的格式注意中间“:”最后“”)往CONTENTBEGIN和END中间一贴就行了。下边举例说明MATLAB程序的写法希望对大家有用。thewalueofcosinefunctiondata="makedata"index=linspace(,*pi,^)cosvalue=cos(index)cosvalue=cosvalue*(^)cosvalue=fix(cosvalue)cosvalue=abs(cosvalue)fori=":"cosvalue(i)=cosvalue(i)end上边的用来生成数据下边的用于控制格式输出(对大家有用的)number=:fori=":"comer(i)=':'endfori=":"semi(i)=''enddata=numbercomercosvaluesemifid=fopen('d:datatxt','w')fprintf(fid,'dcdcn',data)fclose(fid)在D盘下找到datatxt文件用写字板打开mif文件将datatxt中的内容贴到CONTENTBEGIN和END中间然后保存就可以了。对于hex文件更简单。大家生成mif文件后用QUARTUSII打开然后另存为hex文件就可以了。我注意到下面这两行:ADDRESSRADIX=UNSDATARADIX=UNS和老师的程序有点出入于是把MATLAB生成的MIF文件里面的DEC改成UNS,就是把有符号进制改成无符号十进制的整数再重新调用LPMROM编译就顺利通过了:这里要感谢这位仁兄所以也将自己的一点体会摆出来一起交流有什么不对的地方还请大家批评指正。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/6

matlab生成mif、hex文件及注意事项

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利