⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mif_gen.m

📁 matlab在fpga中的应用的三个具体事例
💻 M
字号:
%-------------------------------------------------------------------------%
%--     本程序用来产生时间抽取基-2FFT的旋转因子。                      --%
%--     程序还能够输出ROM初始化文件*.mif。                              --%
%--         作者:Xudong                                                --%
%--         时间:2004年5月4日                                          --%
%-------------------------------------------------------------------------%
clear;
clc;

PI=3.14159265357;
PRECISION=8; %--旋转因子的精度(数据位宽)。
POINTS=32;   %--时间抽取基-2FFT的点数。

WN_DOT=POINTS/2; %--旋转因子数组元素个数。
theta=[0:1/WN_DOT*PI:(WN_DOT-1)/WN_DOT*PI];
cos_ary=cos(theta);
sin_ary=sin(theta);

wn_r_t=round(cos_ary*2^(PRECISION-1)); %--四舍五入取整。
wn_i_t=-round(sin_ary*2^(PRECISION-1));%--此处要加“-”号,为便于后面处理。

for i=1:WN_DOT %--产生wn_r和wn_i数组(要用补码来表示)。
    if wn_r_t(i)<0
        wn_r(i)=2^PRECISION+wn_r_t(i); %--取负数的补码。
    elseif wn_r_t(i)==2^(PRECISION-1)  %--避免对“+1”归一化时的错误。
        wn_r(i)=wn_r_t(i)-1;
    else
        wn_r(i)=wn_r_t(i);
    end;
    if wn_i_t(i)<0
        wn_i(i)=2^PRECISION+wn_i_t(i);
    elseif wn_i_t(i)==2^(PRECISION-1)
        wn_i(i)=wn_i_t(i)-1;
    else
        wn_i(i)=wn_i_t(i);
    end;    
end;

for k=1:POINTS %--产生实部和虚部交替的wn数组。
    if mod(k,2)==1
       if wn_r_t((k+1)/2)==2^(PRECISION-1); %--避免对“+1”归一化时的错误
           wn(k)=wn_r_t((k+1)/2)-1;
       else
           wn(k)=wn_r_t((k+1)/2);
       end;
    else
       if wn_i_t(k/2)==2^(PRECISION-1); 
           wn(k)=wn_i_t(k/2)-1;
       else
           wn(k)=wn_i_t(k/2);
       end;
    end;
end;

mif_id=fopen('wnk.mif','w');
if (mif_id==-1)
    disp('Couldn''t open file correlat.vec for writing');
end;
fprintf(mif_id,'WIDTH=%d;\n',PRECISION);
fprintf(mif_id,'DEPTH=%d;\n',POINTS);
fprintf(mif_id,'\n');
fprintf(mif_id,'ADDRESS_RADIX=UNS;\n');
fprintf(mif_id,'DATA_RADIX=DEC;\n');
fprintf(mif_id,'\n');
fprintf(mif_id,'CONTENT BEGIN\n');

for i=1:POINTS
    fprintf(mif_id,'   %d  :   %d;\n',i-1,wn(i));
end

fprintf(mif_id,'END;\n');
fclose(mif_id);



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -