幾種常用的FPGA係數表產生方法

[size=medium][b]1 濾波器係數表[/b][/size]


%%========================================
%%==FPGA濾波器核係數轉換
%%==把Matlab產生的濾波器係數文件".mat"格式
%%==轉換爲FPGA濾波器核用的係數文件
%%========================================
clear all;close all;clc;
load('input_file_name.mat');
s = h;
s = round(s*(2^10)/max(abs(s))); %%量化(這裏爲10bit)

for( k = 1:length(s) ) %%求補碼
if ( s(k)<0 )
s1(k) = 2^12 + s(k);
else
s1(k) = s(k);
end
end

%%==按FPGA格式儲存
fid_s = fopen('CoeFilterH.coe','wt');
fprintf = (fid_s,'%s\n','radix = 10;');
fprintf = (fid_s,'%s\n','coefdata =');
fprint = (fid_s,'%0.0f,\n',s(1 : end-1));
fprint = (fid_s,'%0.0f;\n',s(end));
fclose(fid_s);

disp('========轉換完成========');
return;





[size=medium][b]2 RAM係數表[/b][/size]


%%========================================
%%==FPGA核初值轉換
%%==把Matlab產生的RAM初值表".mat"格式
%%==轉換爲FPGA的RAM核用的初值文件
%%========================================
clear all;close all;clc;
load('input_file_name.mat')'
s=str;
s = round(s*(2^10)/max(abs(s))); %%量化(這裏爲10bit)

for( k = 1:length(s) ) %%求補碼
if ( s(k)<0 )
s1(k) = 2^12 + s(k);
else
s1(k) = s(k);
end
end

%%==按FPGA格式儲存
fid_s = fopen('CoeData.coe','wt');
fprintf = (fid_s,'%s\n','MEMORY_INITIALIZATION_RADIX = 10;');
fprintf = (fid_s,'%s\n','MEMORY_INITIALIZATION_VECTOR =');
fprintf = (fid_s,'%0.0f,\n',s(1 : end-1));
fprintf = (fid_s,'%0.0f;\n',s(end));
fclose(fid_s);

disp('========轉換完成========');
return;

發佈了24 篇原創文章 · 獲贊 0 · 訪問量 9328
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章