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ファイル
2.matlab作成mifファイル
.jpgピクチャを例に.mifファイルに変換します.まず.jpgピクチャを読み出して階調化(sobelアルゴリズム処理が必要)する場合、image_1配列に格納されているのは0~255の間のデータであり、符号なしの8ビットバイナリデータで表すことができ、その後フォーマットでデータを書き込むことができる.
他のデータについても、この方法ではimage_1のデータを書き込むデータに変更します.
3.matlab txtファイルを作成する
txtファイルはmatlabとFPGAの連携シミュレーションに広く応用されており、特にTestBenchでは、シミュレーション対象の入力データをMatlabを用いて.txtファイルとして作成した後、TestBenchでそのtxtファイルを入力データとして読み出し、モジュールの出力データを新しいtxtファイルに書き込む必要があり、Matlabを用いて出力データを読み出して図面、データ比ピア性能分析など.
4.matlab txtファイルを読み込む
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; % 4, 4
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;
'); % 8 ( 0-255,8 )
fprintf(fid,'DEPTH=32400;
'); % (180*180 ,32400 )
fprintf(fid,'ADDRESS_RADIX=UNS;
');% (unsigned)
fprintf(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);