在Altera系列的FPGA中.mif文件可以设计一个ROM。这个ROM里可以存放数据波形,产品ID,甚至还可以是简单的灰度图像库。但不建议ROM的深度超过10000,这样会影响ROM的性能。
创建.mif文件可分为以下几个流程:
1.先利用Quartus II创建一个.mif文件,例如myrom.mif;
2.Matlab创建一个.txt文件,写入相应的地址和数据;
3.复制.txt中的地址数据到myrom.mif中相应的地方;
下边笔者创建一个二值化图片的一个.mif。
第一步:利用Quartus II创建一个.mif文件,用记事本或者其他阅读器查看它的格式,笔者用Notepad++打开这个文件,格式如下:
先把这个文件放在这里,下边进行第二步。
第二步:用Matlab创建一个.txt文件,将图片(二值化,32*32像素)的数据按照像素为单位写入.txt;
程序如下:
%平台:Matlab2015b
j=1;%the j_st image
image=imread(strcat('F:\FPGAexp\HandwrittenDigitRecognition\FPGA_MyLIB\StandardLib\StandardPic',num2str(j),'.jpg'));
[a,b,c]=size(image);
if(c==3)
ImageGray=rgb2gray(image);
end
if(c==1)
ImageGray=image;
end
ImageBw=im2bw(ImageGray,0.6);
for k=1:32
ImageBw32(:,k)=ImageBw(1:6:192,(k-1)*6+1);
end
for pix=1:1024
ss=mod(pix,32);
if(ss==0)
ss=32;
end
if (pix~=1024)
PictureBit=ImageBw32(1+floor(pix/32),ss);
else
PictureBit=0;
end
addr=(j-1)*1024+pix-1;
fprintf(f_id,'\t%d:',addr);%strcat('\t',num2str('%x',addr),':',num2str('%x',PictureBit),';\r\n')
fprintf(f_id,'%d;\r\n',PictureBit);
end
生成后的数据格式如下:
第三步:把第二步生成的数据复制到myrom.mif文件中的BEGIN和END;之间
如图:
<此处省略N行>
保存之后,再用Quartus II打开myrom.mif文件就可以了。笔者的图片上是一个“6”,共有32*32像素.查看.mif文件并没出错。