资源简介

matlab 基四的FFT算法仿真 14位输入16位输出 SNR>75dB 模拟VHDL硬件实现

资源截图

代码片段和文件信息

function snr=MY_FFT(w)
%PART_1
%-------------测试函数激励-------------------------
%用正弦函数作为信噪比的测试函数,频率为120HZ,采到整-
%频点数,然后计数FFT结果中峰值与噪声最大值的比值-----
%--------------------------------------------------
x=Sin_Gen(w);
%PART_2
%-------------------------------------------------
%-------------蝶形运算模块-------------------------
%-------------------------------------------------

%-------------------------------------------------
%第一级运算,没有乘法器----------------------------
%[ABCD]=Step_One(abcd)----------------------
%输入:第一级蝶形运算的数据,数据位宽为14-----------
%输出:经过第一级蝶形运算产生的数据,数据位宽为16---
%-------------------------------------------------
for m=1:256
    [ABCD]=Step_One(x(m)x(m+256)x(m+512)x(m+768));
    X_1(m)=A;
    X_1(m+256)=B;
    X_1(m+512)=C;
    X_1(m+768)=D;
end
%-------------------------------------------------
%第二级运算
%[ABCD]=Step_Two(abcdm)--------------------
%输入:第二级蝶形运算的数据,数据位宽为16-----------
%      m为在本级中的循环级数-----------------------
%输出:经过第二级蝶形运算产生的数据,数据位宽为18---
%注:1 该级为防溢出结果缩减为原来的1/2--------------
%    2 存储蝶形因子采用了17位,实际扩大2^15---------
%-------------------------------------------------
for m=1:4
    for n=1:64
        [ABCD]=Step_Two(X_1(256*(m-1)+n)X_1(256*(m-1)+n+64)X_1(256*(m-1)+n+128)X_1(256*(m-1)+n+192)m);
        X_2(256*(m-1)+n)=A;
        X_2(256*(m-1)+n+64)=B;
        X_2(256*(m-1)+n+128)=C;
        X_2(256*(m-1)+n+192)=D;
    end
end
%-------------------------------------------------
%第三级运算
%[ABCD]=Step_Three(abcdm)------------------
%输入:第三级蝶形运算的数据,数据位宽为18-----------
%      m为在本级中的循环级数-----------------------
%输出:经过第三级蝶形运算产生的数据,数据位宽为18---
%注:1 该级为防溢出结果缩减为原来的1/4--------------
%    2 存储蝶形因子采用了18位,实际扩大2^16---------
%-------------------------------------------------
for m=1:16
    for n=1:16
        [ABCD]=Step_Three(X_2(64*(m-1)+n)X_2(64*(m-1)+n+16)X_2(64*(m-1)+n+32)X_2(64*(m-1)+n+48)m-1);
        X_3(64*(m-1)+n)=A;
        X_3(64*(m-1)+n+16)=B;
        X_3(64*(m-1)+n+32)=C;
        X_3(64*(m-1)+n+48)=D;
    end
end
%--------------------------------------------------
%第四级运算
%[ABCD]=Step_Four(abcdm)--------------------
%输入:第四级蝶形运算的数据,数据位宽为18-----------
%      m为在本级中的循环级数-----------------------
%输出:经过第四级蝶形运算产生的数据,数据位宽为18---
%注:1 该级为防溢出结果缩减为原来的1/8--------------
%    2 存储蝶形因子采用了18位,实际扩大2^16---------
%-------------------------------------------------
for m=1:64
    for n=1:4
        [ABCD]=Step_Four(X_3(16*(m-1)+n)X_3(16*(m-1)+n+4)X_3(16*(m-1)+n+8)X_3(16*(m-1)+n+12)m-1);
        X_4(16*(m-1)+n)=A;
        X_4(16*(m-1)+n+4)=B;
        X_4(16*(m-1)+n+8)=C;
        X_4(16*(m-1)+n+12)=D;
    end
end
%---------------------------------------------------------------
%第五级运算
%[ABCD]=Step_Five(abcdm)--------------------
%输入:第五级蝶形运算的数据,数据位宽为18-----------
%      m为在本级中的循环级数-----------------------
%输出:经过第五级蝶形运算产生的数据,数据位宽为16---
%注:1 本级不需要防溢出--------------
%    2 存储蝶形因子采用了18位,实际扩大2^16---------
%    3 数据输出除以四是为了截断到输出需要的16位
%---------

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4182  2010-08-20 13:36  FFT14_16\MY_FFT.m

     文件          0  2010-08-30 17:01  FFT14_16\MY_FFT输入的数据是频率,自动生成该频率的正弦函数.txt

     文件        161  2010-08-20 13:33  FFT14_16\Sin_Gen.m

     文件      29091  2010-08-30 17:06  FFT14_16\snr.jpg

     文件      22528  2010-08-30 19:28  FFT14_16\snr.xls

     文件        130  2010-08-20 13:47  FFT14_16\snr_cal.m

     文件       4395  2010-08-15 15:14  FFT14_16\Step_Five.m

     文件       5604  2010-08-20 13:05  FFT14_16\Step_Four.m

     文件        483  2010-08-15 10:23  FFT14_16\Step_One.m

     文件       5292  2010-08-15 15:12  FFT14_16\Step_Three.m

     文件       4085  2010-08-15 15:11  FFT14_16\Step_Two.m

     目录          0  2010-08-30 19:28  FFT14_16

----------- ---------  ---------- -----  ----

                75951                    12


评论

共有 条评论