QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1755|回复: 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中逐个输入,几十项(字)或是近百项(字)你还可以接受,如果上千项或是更多呢?估计能累的人吐血!
    ' d; ~+ L1 S. q$ a; Z" m4 B; s3 N7 \9 v" Y" j# }5 Z( q9 H
    一般内存的初始化数据都是有规律的,符合一定的函数,我们完全可以用MATLAB来完成(如果没规律只能逐项手工输入了)。
    ( z3 X: y$ }0 j# R  i( U8 A; a6 t+ |& ]) @8 v
    首先,我们应该知道*.mif文件的格式。它是文本格式。随便打开一个mif文件,你会发现它具有如下的格式:
    & q$ J" \6 a9 {. o! D' U4 [6 X2 P/ D$ {8 a3 W) W& ~9 D/ h

    + W# J) V& i& q  N5 g5 H
    • -- 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;
      ( p5 v# \( W) l: T; d. l- [: o* i
    格式很简单吧。首先根据需要设置每个字的位宽WIDTH和总字数DEPTH。然后设置地址和数据的进制基数ADDRESS_RADIX、DATA_RADIX,建议大家不要修改,就使用无符号数(UNS)。然后用MATLAB生成需要的数据(按上边的格式,注意中间“:”,最后“;”),往CONTENT BEGIN和END中间一贴就行了。
    * o1 ^0 J; [0 M( ~8 V( d$ J, U) h, I; `& O
    下边举例说明MATLAB程序的写法,希望对大家有用5 _; ~$ H: c; F6 |5 `

    2 }/ L. u8 G- ~
    • 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);2 b$ ]; ~) T' U7 r! B- m  d
    在d:\下找到mif_data_matlabsky.txt'文件,用写字板打开mif文件,将data.txt中的内容贴到CONTENT BEGIN和END中间,然后保存就可以了。或者将CONTENT BEGIN和END两边的内容分别贴于data.txt文件的前后,然后保存为.mif文件。1 C4 l8 Z" Z) ~2 k- |

    ) X) R, G7 q1 n' X: O2 C: C对于hex文件,更简单。大家生成mif文件后,用QUARTUS II打开,然后另存为hex0 ?5 d! D9 J1 B3 l# n. y5 x
    ' [- j6 |4 W# V0 X) l$ m% e4 W
    % H0 g& K9 l; T+ 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-20 03:11 , Processed in 0.637543 second(s), 51 queries .

    回顶部