Matlab把图片数据/波形数据生成.mif文件

在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把图片数据/波形数据生成.mif文件_第1张图片

先把这个文件放在这里,下边进行第二步。

第二步:用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

生成后的数据格式如下:

Matlab把图片数据/波形数据生成.mif文件_第2张图片

第三步把第二步生成的数据复制到myrom.mif文件中的BEGINEND;之间

如图:

Matlab把图片数据/波形数据生成.mif文件_第3张图片

<此处省略N行>

Matlab把图片数据/波形数据生成.mif文件_第4张图片

保存之后,再用Quartus II打开myrom.mif文件就可以了。笔者的图片上是一个“6”,共有32*32像素.查看.mif文件并没出错。

Matlab把图片数据/波形数据生成.mif文件_第5张图片

注意:利用Matlab生成.txt文件时,不要将所有的格式文本都写下来,这样QuarttusII将不会正确读取.mif文件,最后一行会出现错误。最好的方法是创建一个.mif文件,把里边的数据替换掉!波形数据/灰度图片生成.mif文件也是此原理,只是位数长短不一样。

若有不详地方欢迎指出讨论,若转载请注明出处。——By:Zwy

你可能感兴趣的:(Matlab,FPGA,ROM,二值图)