QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1760|回复: 0
打印 上一主题 下一主题

[其他资源] 用MATLAB 生成*.mif和*.hex(QUARTUS II)文件

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2015-1-20 13:52 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    MATLAB生成*.mif、*.hex2008-08-31 03:06做FPGA设计时经常要调用芯片内存。特别对于ROM,内存的初始化就显得比较重要。当然你完全可以手工在QUARTUS II打开mif文件的表格里或是在EXCEL中逐个输入,几十项(字)或是近百项(字)你还可以接受,如果上千项或是更多呢?估计能累的人吐血!
    " z" p: J# b- c$ i% c& B, B9 _! h6 F4 |
    4 _( Z" q+ \& z  O. H一般内存的初始化数据都是有规律的,符合一定的函数,我们完全可以用MATLAB来完成(如果没规律只能逐项手工输入了)。
    ! d$ G, f- h; Y; p( C( ]9 t( G, G- J0 b# W3 V
    首先,我们应该知道*.mif文件的格式。它是文本格式。随便打开一个mif文件,你会发现它具有如下的格式:
    ; I6 q, h- B6 a) @% O; ?' d  q! X
    " ~* b( I/ O, }% B0 ]7 E/ ]8 u# k4 Q1 ?
    • -- Copyright (C) 1991-2007 Altera Corporation
    • -- Your use of Altera Corporation's design tools, logic functions
    • -- and other software and tools, and its AMPP partner logic
    • -- functions, and any output files from any of the foregoing
    • -- (including device programming or simulation files), and any
    • -- associated documentation or information are expressly subject
    • -- to the terms and conditions of the Altera Program ******
    • -- Subscription Agreement, Altera MegaCore Function ******
    • -- Agreement, or other applicable ****** agreement, including,
    • -- without limitation, that your use is for the sole purpose of
    • -- programming logic devices manufactured by Altera and sold by
    • -- Altera or its authorized distributors. Please refer to the
    • -- applicable agreement for further details.
    • -- Quartus II generated Memory Initialization File (.mif)
    • WIDTH=8;
    • DEPTH=256;
    • ADDRESS_RADIX=UNS;
    • DATA_RADIX=UNS;
    • CONTENT BEGIN
    •        0:127;
    •        1:126;
    •        2:126;
    •        ……
    •        ……
    •        253:126;
    •        254:126;
    •        255:127;
    • END;
      * w) N% c# ]* f$ H* s7 W# g9 g1 ]
    格式很简单吧。首先根据需要设置每个字的位宽WIDTH和总字数DEPTH。然后设置地址和数据的进制基数ADDRESS_RADIX、DATA_RADIX,建议大家不要修改,就使用无符号数(UNS)。然后用MATLAB生成需要的数据(按上边的格式,注意中间“:”,最后“;”),往CONTENT BEGIN和END中间一贴就行了。! h: K9 G: C7 d6 B9 M; C3 d
    / P$ l1 ~) t+ y3 y
    下边举例说明MATLAB程序的写法,希望对大家有用
    * V# C' L, S4 Z7 A$ l$ z( o) ]9 O/ L$ a$ i7 X
    • function data=makedata
    • %使用MATLAB生成MIF & HEX2文件
    • %see also http://www.matlabsky.com
    • %2009.1.10
    • %
    • index = linspace(0,2*pi,2^8);
    • cos_value = cos(index);
    • cos_value = cos_value * (2^7 -1 );
    • cos_value = fix(cos_value);
    • cos_value =abs(cos_value);
    • for i=65:192
    •     cos_value(i)=cos_value(i)+128;
    • end
    • %上边的用来生成数据,下边的用于控制格式输出(对大家有用的)
    • number=[0:255];
    • for i=1:256
    •     comer(i)=':';
    • end
    • for i=1:256
    •     semi(i)=';';
    • end
    • data=[number; comer; cos_value; semi];
    • fid=fopen('d:\mif_data_matlabsky.txt','w');
    • fprintf(fid, '%d%c%d%c\n', data);
    • fclose(fid);
      $ x' K% ~8 A! u- V/ d) I8 n1 q" X
    在d:\下找到mif_data_matlabsky.txt'文件,用写字板打开mif文件,将data.txt中的内容贴到CONTENT BEGIN和END中间,然后保存就可以了。或者将CONTENT BEGIN和END两边的内容分别贴于data.txt文件的前后,然后保存为.mif文件。
    : \7 W5 e2 z0 W. j# x/ L8 s0 D; d) j5 ]+ T% b& A4 Y/ O8 c
    对于hex文件,更简单。大家生成mif文件后,用QUARTUS II打开,然后另存为hex( V9 d2 ]) r' Z/ D. n

    7 N) @" i# F5 d8 W/ Q! @
    , y6 @: i: `* k, q* f4 P' B
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-21 23:21 , Processed in 1.429508 second(s), 51 queries .

    回顶部