matlab输出mif文件

/r/n

N=linspace(0,2*pi,101);
M=127.5*(sin(N)+1);
number=[0:100];
for i=1:101
comer(i)=':';
end
for i=1:101
semi(i)=';';
end
data=[number; comer; M; semi];
f1=fopen('d:/sin.txt','w');
 fprintf(f1,'%d%c%d%c/r/n',data);
fclose(f1)

 

 

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 文件就可以了。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值