1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > matlab产生mif 文件 用matlab生成mif文件

matlab产生mif 文件 用matlab生成mif文件

时间:2020-01-31 18:28:52

相关推荐

matlab产生mif 文件 用matlab生成mif文件

在FPGA中,rom模塊的初始化文件分為兩種,一種是hex文件,另外一種是mif文件,這兩種文件都可以通過Quartus進行手工創建,進行手工輸入數據,也可以借助於專用的文件編輯器完成編輯。

在此介紹使用matlab生成mif文件的方法。

miffile.m文件的源程序如下:

function miffile(filename,var,width,depth)

%輸入4個參數:

% filename: 所要生成的.mif文件的文件名,即目標文件名

% var :數據輸入的文件,即源文件

% width :數據位寬

% depth : 數據深度

%

% example:

% a=unit8(rand(16,16),*255);

% miffile('randnum.mif',a,8,255);

%

if(nargin~=4) %輸入必須是四個參數!

error('Need 4 parameters! Use help miffile for help!');

end,

%模擬輸出mif文件的格式

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

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

fprintf(fh,'--xxxx@.\r\n');

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

[sx,sy,sz]=size(var);

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

else

fprintf(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,

else

break;

end,

end,

end,

end,

end,

if(idepth

if(sametotal==1)

fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth,value);

else

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

end,

end,

if(idepth

if(idepth==(depth-2))

fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth+1,0);

else

fprintf(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);

使用miffile函數的例程如下,將一幅RGB圖片的R基色轉換為灰度值后,存入到mif文件中:

clc;

clear all;

%注釋

RGBImage=imread('test.JPG');

RImage=RGBImage(:,:,1);

[row,col]=size(RImage);

OutDate=zeros(1,row*col);

for i=1:row

for j=1:col

OutData((i-1)*col+j)=RImage(i,j);

end

end

miffile('data.mif',OutData,8,row*col)

imshow(RImage);

disp('OK!');

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