FPGAシミュレーション必須(1)——Matlab生成.mifファイル——JPGピクチャ転送.mifファイル——Matlab生成.txtファイル


1.mifファイル
MIF(Memory Initialization File)は、Altera/IntelのFPGAデバイスのRAMまたはROM構成に使用されるメモリ初期化ファイルである.例えば、(1)画像処理では、ROMを用いてピクチャやフォント情報を記憶し、画像の先閉処理やVGA表示のフォント、固定ピクチャ等を行う.(2)デジタル信号処理では、ROMを用いてFIRフィルタ等に必要なフィルタ係数を記憶する.(3)DDS信号発生器において、一部の実現方式はROMを用いて1周期のサンプリング波形を記憶し、異なる間隔の読み取り方式で異なる周波数の波形を出力する.
mifファイル
WIDTH=8;				%     8 
DEPTH=4;				%       44   

ADDRESS_RADIX=UNS;		%                
DATA_RADIX=UNS;			%                  	

CONTENT BEGIN			
0:245;					%  0  245
1:245;
2:0;
3:6;
END;

2.matlab作成mifファイル
.jpgピクチャを例に.mifファイルに変換します.まず.jpgピクチャを読み出して階調化(sobelアルゴリズム処理が必要)する場合、image_1配列に格納されているのは0~255の間のデータであり、符号なしの8ビットバイナリデータで表すことができ、その後フォーマットでデータを書き込むことができる.
他のデータについても、この方法ではimage_1のデータを書き込むデータに変更します.
clear all
close all

image_1 = imread('T2.jpg');         %     
image_1 = rgb2gray(image_1);        %      (Sobel             )
figure;
imshow(image_1);                    %     

fid=fopen('T2.mif','W' );           %   T1.mif        ,           ,         
fprintf(fid,'WIDTH=8;
'
); % 80-255,8fprintf(fid,'DEPTH=32400;

'
); %180*18032400fprintf(fid,'ADDRESS_RADIX=UNS;
'
);%unsignedfprintf(fid,'DATA_RADIX=UNS;

'
); % fprintf(fid,'CONTENT BEGIN
'
); for x = 1:32400 % 32400 fprintf(fid,'%d:%d;
'
,x-1,image_1(x)); % end fprintf(fid,'END;'); % fclose(fid); %

3.matlab txtファイルを作成する
txtファイルはmatlabとFPGAの連携シミュレーションに広く応用されており、特にTestBenchでは、シミュレーション対象の入力データをMatlabを用いて.txtファイルとして作成した後、TestBenchでそのtxtファイルを入力データとして読み出し、モジュールの出力データを新しいtxtファイルに書き込む必要があり、Matlabを用いて出力データを読み出して図面、データ比ピア性能分析など.
%           txt   
data = ...;					%    
fid =fopen('s1.txt','w'); 
fprintf(fid,'%8d\r
'
,data); fprintf(fid,';'); fclose(fid);

4.matlab txtファイルを読み込む
%          
%        data    
fid=fopen('E:\FPGA\s2.txt','r');
[data, count] = fscanf(fid,'%lg',inf);
fclose(fid);