发明名称 一种基于Cooley-Tukey的FFT算法
摘要 本发明公开了一种基于Cooley‑Tukey的FFT算法,利用FPGA芯片,采用Radix‑4的碟形运算,把N点FFT分解成一个以上的短序列的FFT。本发明使用Cooley‑Tukey的FFT算法,把N点FFT分解成几个较短序列的FFT,大大减少复乘次数;采用Radix‑4的碟形运算,解决了计算延时长、动态响应速度慢的问题,并利用FPGA丰富逻辑资源给予实现,解决了占用大量RAM空间的问题。
申请公布号 CN105893328A 申请公布日期 2016.08.24
申请号 CN201610244184.5 申请日期 2016.04.19
申请人 南京亚派科技股份有限公司 发明人 刘明;仇志凌;张明;葛文海
分类号 G06F17/14(2006.01)I 主分类号 G06F17/14(2006.01)I
代理机构 徐州市淮海专利事务所 32205 代理人 华德明
主权项 一种基于Cooley‑Tukey的FFT算法,其特征是:利用FPGA芯片,采用Radix‑4的碟形运算,把N点FFT分解成一个以上的短序列的FFT,N=r1*r2,包括以下步骤:步骤1:将x(n)改写成x(n1,n0),利用<maths num="0001"><math><![CDATA[<mrow><mi>x</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mrow><mo>(</mo><msub><mi>r</mi><mn>2</mn></msub><msub><mi>n</mi><mn>1</mn></msub><mo>+</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mrow><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>,</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>n</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>n</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000011.GIF" wi="1058" he="166" /></maths>步骤2:做r2个r1点的FFT,得到X1(k0,n0);<maths num="0002"><math><![CDATA[<mrow><msub><mi>X</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><msub><mi>n</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn></mrow></munderover><mi>x</mi><mrow><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><msub><mi>r</mi><mn>1</mn></msub><mrow><msub><mi>n</mi><mn>1</mn></msub><msub><mi>k</mi><mn>0</mn></msub></mrow></msubsup><mo>,</mo><msub><mi>k</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000012.GIF" wi="1046" he="158" /></maths>步骤3:把N个X1(k0,n0)乘以相应的旋转因子<img file="FDA0000968579020000013.GIF" wi="137" he="85" />组成X1’(k0,n0);<maths num="0003"><math><![CDATA[<mrow><msup><msub><mi>X</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>X</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><mi>N</mi><mrow><msub><mi>n</mi><mn>0</mn></msub><msub><mi>k</mi><mn>0</mn></msub></mrow></msubsup></mrow>]]></math><img file="FDA0000968579020000014.GIF" wi="550" he="63" /></maths>步骤4:做r1个r2点FFT,得到X2(k0,k1);<maths num="0004"><math><![CDATA[<mrow><msub><mi>X</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>k</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><msub><mi>n</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn></mrow></munderover><msup><msub><mi>X</mi><mn>1</mn></msub><mo>&prime;</mo></msup><mrow><mo>(</mo><msub><mi>k</mi><mn>0</mn></msub><mo>,</mo><msub><mi>n</mi><mn>0</mn></msub><mo>)</mo></mrow><msubsup><mi>W</mi><msub><mi>r</mi><mn>2</mn></msub><mrow><msub><mi>n</mi><mn>0</mn></msub><msub><mi>k</mi><mn>1</mn></msub></mrow></msubsup><mo>,</mo><msub><mi>k</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mo>...</mo><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>-</mo><mn>1</mn><mo>;</mo></mrow>]]></math><img file="FDA0000968579020000015.GIF" wi="1093" he="158" /></maths>步骤5:进行整序,得到X(k1,k0)=X(k),其中k=r1*k1+k0;X(k<sub>1</sub>,k<sub>0</sub>)=X<sub>2</sub>(k<sub>0</sub>,k<sub>1</sub>)。
地址 210000 江苏省南京市高新区新科四路4-8号