您当前的位置:matlab资源网文章中心资料 → 文章内容

在这里添加日志标题用MATLAB生成*.mif、*.hex(QUARTUS II)文件简介

作者:shining885  来源:转载http://shining885.blog.163.com/blog/static/3704505420085293739566/  发布时间:2008-6-2 21:52:53

做FPGA设计时经常要调用芯片内存。特别对于ROM,内存的初始化就显得比较重要。当然你完全可以手工在QUARTUS II打开mif文件的表格里或是在EXCEL中逐个输入,几十项(字)或是近百项(字)你还可以接受,如果上千项或是更多呢?估计能累的人吐血!

一般内存的初始化数据都是有规律的,符合一定的函数,我们完全可以用MATLAB来完成(如果没规律只能逐项手工输入了)。

首先,我们应该知道*.mif文件的格式。它是文本格式。随便打开一个mif文件,你会发现它具有如下的格式:

 

-- 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;

 

格式很简单吧。首先根据需要设置每个字的位宽WIDTH和总字数DEPTH。然后设置地址和数据的进制基数ADDRESS_RADIX、DATA_RADIX,建议大家不要修改,就使用无符号数(UNS)。然后用MATLAB生成需要的数据(按上边的格式,注意中间“:”,最后“;”),往CONTENT BEGIN和END中间一贴就行了。

 

下边举例说明MATLAB程序的写法,希望对大家有用。

 

%the walue of cosine

function data=makedata

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:\data.txt','w');

fprintf(fid, '%d%c%d%c\n', data);

fclose(fid);

 

在D盘下找到data.txt文件,用写字板打开mif文件,将data.txt中的内容贴到CONTENT BEGIN和END中间,然后保存就可以了。

 

对于hex文件,更简单。大家生成mif文件后,用QUARTUS II打开,然后另存为hex文件就可以了。

 

本人新手上路,自己写的东西水平不高有些幼稚,希望对和我一样的菜鸟们有些用,难免有错误,希望指正,不胜感激。

macro_qian@yahoo.com.cn

文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -