主权项 |
1.一种基2×K并行FFT架构的地址映射方法,其特征是:采用定常结构的基2FFT运算流图,并行FFT架构包含K个基2碟算单元,K为2的整数幂;以2K个双端口数据存储器为共用存储器,所述2K个双端口数据存储器与第一组2K个单端口数据存储器构成一个存储器组,并以所述2K个双端口数据存储器与第二组2K个单端口数据存储器构成另一个存储器组;K个基2碟算单元将FFT运算操作数从一个存储器组并行读出,并将FFT运算结果操作数并行写入另一个存储器组;旋转因子存放在K个旋转因子存储器中;所述基2×K并行FFT架构的地址映射方法是按如下步骤进行:a、确定所述FFT运算操作数在存储器组中的存放方法:设N为所述FFT运算操作数的数量;k为操作数的标号,k=0,1,…,N-1;操作数k存放在体标号为B(k),体内地址为A(k)的存储器组中;当<img file="FDA00002581087600011.GIF" wi="132" he="104" />时,操作数k存放在存储器组的双端口数据存储器中,并有:<img file="FDA00002581087600012.GIF" wi="977" he="222" />当<img file="FDA00002581087600013.GIF" wi="149" he="104" />操作数k存放在存储器组的单端口数据存储器中,并有:<img file="FDA00002581087600014.GIF" wi="1069" he="220" />其中<maths num="0001"><![CDATA[<math><mrow><mi>p</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mi>k</mi><mi>mod</mi><mn>2</mn><mo>=</mo><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn><mo>,</mo></mtd><mtd><mi>k</mi><mi>mod</mi><mn>2</mn><mo>=</mo><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths><img file="FDA00002581087600016.GIF" wi="63" he="58" />为向下取整数,mod为取余数;b、确定所述FFT运算操作数的读地址;设m为所述基2碟算单元标号,m=0,1,…,K-1;基2碟算单元m包括两个读端口BFI(m,0)和BFI(m,1);以MBFI(m,0)和MBFI(m,1)分别表示读端口BFI(m,0)和BFI(m,1)读入的FFT运算操作数;以cntr表示完成一层FFT运算需要的并行读操作次数,<maths num="0002"><![CDATA[<math><mrow><mi>cntr</mi><mo>=</mo><mn>0,1</mn><mo>,</mo><mo>·</mo><mo>·</mo><mo>·</mo><mo>,</mo><mfrac><mi>N</mi><mrow><mn>2</mn><mi>K</mi></mrow></mfrac><mo>-</mo><mn>1</mn><mo>;</mo></mrow></math>]]></maths>所述FFT运算操作数MBFI(m,0)来自存储器组的双端口数据存储器,读地址为<img file="FDA00002581087600021.GIF" wi="1275" he="296" />所述FFT运算操作数MBFI(m,1)来自存储器组的单端口数据存储器,读地址为<img file="FDA00002581087600022.GIF" wi="1647" he="469" />c、确定所述FFT运算操作数的写地址;基2碟算单元m包括两个写端口BFO(m,0)和BFO(m,1);以MBFO(m,0)和MBFO(m,1)分别表示写端口BFO(m,0)和BFO(m,1)写入的FFT运算操作数;以cntw表示完成一层FFT运算需要的并行写操作次数,<img file="FDA00002581087600023.GIF" wi="464" he="104" />当<img file="FDA00002581087600024.GIF" wi="250" he="106" />所述FFT运算操作数MBFO(m,0)和MBFO(m,1)均写入存储器组的双端口数据存储器中,写地址为:<maths num="0003"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mi>B</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mn>2</mn><mi>m</mi></mtd></mtr><mtr><mtd><mi>B</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mn>2</mn><mi>m</mi><mo>+</mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>A</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mi>A</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mi>cntw</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>当<img file="FDA00002581087600026.GIF" wi="250" he="106" />所述FFT运算操作数MBFO(m,0)和MBFO(m,1)均写入存储器组的单端口数据存储器中,写地址为:<maths num="0004"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mi>B</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mn>2</mn><mi>K</mi><mo>-</mo><mn>2</mn><mo>-</mo><mn>2</mn><mi>m</mi></mtd></mtr><mtr><mtd><mi>B</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mn>2</mn><mi>K</mi><mo>-</mo><mn>1</mn><mo>-</mo><mn>2</mn><mi>m</mi></mtd></mtr><mtr><mtd><mi>A</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mi>A</mi><mrow><mo>(</mo><mi>MBFO</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mi>cntw</mi><mo>-</mo><mfrac><mi>N</mi><mrow><mn>4</mn><mi>K</mi></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>d、确定旋转因子在所述旋转因子存储器中的存放方法:所述K个旋转因子存储器的存储内容相同,均按地址递增顺序存放指数为w的旋转因子,w取值范围为[0,N-1];e、确定旋转因子读地址:以cnt表示完成一层FFT运算并行读旋转因子的次数,<img file="FDA00002581087600031.GIF" wi="428" he="105" />N=2<sup>L</sup>为所述FFT运算操作数的数量;n为FFT运算级数,n=1,2,…,L;则蝶算单元m在第n级FFT运算时旋转因子的读地址P(m,n)为:<maths num="0005"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mo>,</mo></mtd><mtd><mi>n</mi><mo>=</mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>rev</mi><mrow><mo>(</mo><mrow><mo>(</mo><mi>m</mi><mo>+</mo><mi>K</mi><mo>×</mo><mi>cnt</mi><mo>)</mo></mrow><mi>mod</mi><msup><mn>2</mn><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mi>n</mi><mo>≠</mo><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中rev(),表示位倒序操作。 |