1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > matlab 如何生成mif 用matlab生成mif文件(示例代码)

matlab 如何生成mif 用matlab生成mif文件(示例代码)

时间:2024-02-21 15:26:03

相关推荐

matlab 如何生成mif 用matlab生成mif文件(示例代码)

a=0:255miffile(‘rom_ipp.mif‘,a,8,256)

这是在matlab中调用的miffile函数来生成mif文件

‘’单引号里面为所生成文件的名字 注:所生成的文件在matlab所编译的文件夹内

a 为产生的数据

8为位宽

256为深度

代码内容为functionmiffile(filename,var,width,depth)% functionmiffile(filename,var,width,depth)% It creates a ‘mif‘file called filename,which be written with var.% The ‘mif‘ file is a kind of file formats which is uesed in Altera‘s

%EDA tool,like maxplus II ,quartus II,to initialize the memory%models,just like cam,rom,ram.% Using this function,you can easily produce the ‘mif‘file written%with all kinds of your data.% If the size of ‘var‘ is shorter than ‘depth‘,0 will be written forthe% lefts.If the size of ‘var‘ is greater than ‘depth‘,than only ‘depth‘former% data of ‘var‘will be written;% the radix of address anddata is hex% filename --the name of the file to be created,eg,"a.mif",string;% var ----the data to be writed to the file, can be 3D or less ,int orother fittable;% width --the word size of the data,width>=1,int;% depth --the number of the data to be writed,int;%

% because matlab read the matrix is colum first,ifyou want to write% the ‘var‘ data in row first mode, just set var to var‘;

%

%example:% a=uint8(rand(16,16)*256);% miffile(‘randnum.mif‘,a,8,256);if(nargin~=4) %% be tired to do more inupts check!error(‘Need 4 parameters! Use help miffile for help!‘);end,

fh=fopen(filename,‘w+‘);

fprintf(fh,‘--Created by xxxx.\r\n‘);

fprintf(fh,‘‘);

fprintf(fh,‘--%s.\r\n‘,datestr(now));

fprintf(fh,‘WIDTH=%d;\r\n‘,width);

fprintf(fh,‘DEPTH=%d;\r\n‘,depth);

fprintf(fh,‘ADDRESS_RADIX=HEX;\r\n‘);

fprintf(fh,‘DATA_RADIX=HEX;\r\n‘);

fprintf(fh,‘CONTENT BEGIN\r\n‘);%%%%%%

%%%%%%var=rem(var,2^width);%%clip to fit the width;

[sx,sy,sz]=size(var);%% can only fit 3D orless;

value=var(1,1,1);

sametotal=1;

idepth=0;

addrlen=1;

temp=16;while(temp

temp=temp*16;

addrlen=addrlen+1;end,

datalen=1;while(temp

temp=temp*16;

datalen=datalen+1;end,for k=1:sz,for j=1:sy,for i=1:sx,if(~((i==1 ) &&( j==1) &&( k==1)))if(idepth

idepth=idepth+1;if(value==var(i,j,k))

sametotal=sametotal+1;

continue;else

if(sametotal==1)

fprintf(fh,[‘\t%‘ num2str(addrlen) ‘X:%‘ num2str(datalen) ‘X;\r\n‘],idepth-1,value);elsefprintf(fh,[‘\t[%‘ num2str(addrlen) ‘X..%‘ num2str(addrlen) ‘X]:%‘ num2str(datalen) ‘X;\r\n‘],idepth-sametotal,idepth-1,value);end,

sametotal=1;

value=var(i,j,k);end,elsebreak;end,end,end,end,end,if(idepth

fprintf(fh,[‘\t%‘ num2str(addrlen) ‘X:%‘ num2str(datalen) ‘X;\r\n‘],idepth,value);elsefprintf(fh,[‘\t[%‘ num2str(addrlen) ‘X..%‘ num2str(addrlen) ‘X]:%‘ num2str(datalen) ‘X;\r\n‘],idepth-sametotal+1,idepth,value);end,end,if(idepth

fprintf(fh,[‘\t%‘ num2str(addrlen) ‘X:%‘ num2str(datalen) ‘X;\r\n‘],idepth+1,0);elsefprintf(fh,[‘\t[%‘ num2str(addrlen) ‘X..%‘ num2str(addrlen) ‘X]:%‘ num2str(datalen) ‘X;\r\n‘],idepth+1,depth-1,0);end,end,%%%%%%%%%%

%%%%%%%%%%fprintf(fh,‘END;\r\n‘);

fclose(fh);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。