一个高效的嵌入式浮点FFT 处理器的实现_第1页
一个高效的嵌入式浮点FFT 处理器的实现_第2页
一个高效的嵌入式浮点FFT 处理器的实现_第3页
一个高效的嵌入式浮点FFT 处理器的实现_第4页
一个高效的嵌入式浮点FFT 处理器的实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 这实际上是将基4蝶形结构用基2蝶形运算模块来流水实现了,这时运算部件的利用率提高到 50%。 虽然图5所示的结构较直接基4蝶形运算结构效率有所提高,但是运算部件还是有50%的数据等 待时间,而它输出的数据还需要重新组织再进行一次基2蝶形运算,如果我们能够将这些输出数据 反馈回运算部件输入端,并加以适当组织,则可以将BF2-1的数据等待时间用来计算它输出数据的 又一次基2蝶形运算,如图6。 图6所示的结构主要要解决四个数据相关问题:外部输入数据和内部反馈数据的数据相关、基4 蝶形运算中间结果的数据相关、基4蝶形运算结果输出与中间结果的数据相关和前后两次基4蝶形运 算的中间结果数据相关,若能解决

2、这四个问题,就能够成功实现这个改进结构。 前三种数据相关问题都比较容易解决。外部输入数据和内部反馈数据的数据相关只需设置一个 二选一开关,在外部输入数据和内部反馈数据间轮流选择即可;基4蝶形运算中间结果的数据相关 可以设置两组寄存器,分别用来存放前后两次计算的中间结果;基4蝶形运算结果输出与中间结果 的数据相关可以通过在设置一组输出缓冲寄存器来解决。 前后两次基4蝶形运算的中间结果数据相关是由于(3.2)式中的矩阵转置操作产生的,这使得 第一次基4蝶形运算的部分中间结果还没有参与计算,而第二次的计算结果又已经到达,于是产生 读写相关。为此,我们对产生此相关的存储单元再设置一个备份存储,有效的解

3、决了这个问题。 我们引入一个周期状态变量sta,它在四种状态“00”、“01”、“ 10” 和“11”间循环变 化。 定义如下符号: Rein, Imin:输入数据的实部和虚部; IR0, II0:输入缓存的实部和虚部; BR0, BR1, BI0, BI1:参与基2蝶形运算数据的实部和虚部; tmpa, tmpb, tmpc, tmpd:基2蝶形运算的输出; RA, RB, RC, RD1, RD2:中间计算结果的实部; IA, IB, IC, ID1, ID2:中间计算结果的虚部; OR0, OR1, OI0, OI1:基4蝶形运算结果输出缓存。 我们有改进后的基4FFT蝶形运算实现算法如

4、下: - 参与基2蝶形运算数据的选择 case sta is when "00"=>BR0<=RC;BR1<=RA;BI0<=IC;BI1<=IA; when "01"=>BR0<=IR0;BR1<=Rein;BI0<=II0;BI1<=Imin; when "10"=>BR0<=RD2;BR1<=IB;BI0<=ID2;BI1<=RB; when "11"=>BR0<= IR0;BR1<=Rein;BI0&

5、lt;=II0;BI1<=Imin; - 基2蝶形运算 tmpa<=BR0+BR1;tmpb<=BR0-BR1; tmpc<=BI0+BI1;tmpd<=BI0-BI1; - 基2蝶形运算结果的输出 case sta is when "00"=>OR0<=tmpa;OR1<=tmpb;OI0<=tmpc;OI1<=tmpd; when "01"=>RC<=tmpa;RD1<=tmpb;RD2<=RD1;IC<=tmpc;ID1<=tmpd;ID2<=ID

6、1; when "10"=>OR0<=tmpa;OR1<=tmpb;OI0<=tmpc;OI1<=tmpd; when "11"=>RA<=tmpa;RB<=tmpb;IA<=tmpc;IB<=tmpd; - 最后结果输出 case sta is when "00"=>Reout<=OR1;Imout<=OI0; when "01"=>Reout<=OR0;Imout<=OI0; when "10"=

7、>Reout<=OR1;Imout<=OI1; when "11"=>Reout<=OR0;Imout<=OI1; 基于此算法,我们设计了一种新的蝶形运算单元实现结构,这种结构增加了一些中间存储单 元,但是只需要一个基2复数蝶形运算单元(2个加减运算器),大大提高了运算单元的使用效率, 如图7所示。在我们的基4蝶形运算模块设计中,充分利用了串行数据计算同步等待的特点,在同步 等待的时间内,将加法器分配给反馈数据进行二次计算,使加法器的利用率达到了100%。同时我 们在设计时也考虑了重复计算的特点,最终我们将运算部件减少到了一个复数基2蝶形

8、运算模块。 工作时,我们用c0c1c2c3c4c5来控制各路由器的选择状态,工作模式以每四个时钟节拍为周期循 环选择。 c0用来控制选择外部数据或者内部反馈数据,在外部数据准备好后,c0=1,控制选通外部数 据;在外部数据同步等待时间节拍时,c0=0,控制选通内部反馈数据。 c2,c3 用来控制基 2 蝶形运算模块结果的存储,c2c3=00 或 10 时,结果存储到输出缓冲寄存器 OR0, OR1, OI0, OI1 中;c2c3=01 时,结果存储到中间寄存器 RC, RD1, IC, ID1 中;c2c3=11 时,结果存 储到中间寄存器 RA, RB, IA, IB 中。 c1 控制对中

9、间寄存器的读 取,它与 c0 相结合,当 c0c1=10 OR0 时,将 RA, RC, IA, IC 读取到蝶 RA + BR0 Rein IR0 RC 形运算缓冲寄存器组 BR0, OR1 BR1,BI0, BI1 中;当 c0c1=11 时, BR1 Reout _ RB 则将 RB, RD2, IB, ID2 读取到蝶 RD1 RD2 形运算缓冲寄存器组中。 OI1 c4c5 控制结果缓冲寄存器的 Imout _ IB 输出。 BI Imin 0 II0 ID1 ID2 由于我们的基 4 蝶形运算结 OI0 BI1 构是由一个基 2 复数蝶形运算结 + IA 构实现的,对它加以适当控制

10、, IC 它还可以用来完成基 2 蝶形运 算。 在完成基 2 蝶形运算时,我 们只使用图 7 结构中的正向通 c0 c1 c2 c3 c4 c5 路,c0 恒为 0,保证选通外部数 图 7 新的基四蝶形运算单元结构 据;c2c3=00 或 10,使结果总是 存储到输出缓冲寄存器 OR0, OR1, OI0, OI1 中;c4,c5 控制对输出缓冲寄存器的轮流读取。这样就可以利用此基 4 蝶形运算结构来实现 基 2 蝶形运算。 上文提到的三种基4蝶形运算结构中,图3所示的传统结构对中间结果存储的要求最少,也不需 要路由选择,但是运算部件效率太低,在G.Bi提出的结构(图4)和我们提出的结构(图7)中,运 算部件的效率都达到了100%,不过我们的结构考虑了基4蝶形运算中的一些重复计算,在增加了少 量中间存储的条件下,将运算部件的需求进一步大大减少。 表1 三种结构对照表 传统结构 G.Bi结构 本文提出的结构 类别 加-减法器 加/减法器 加-减法器 运算 8 6 2 数目 部件 25% 100% 100% 利用率 16 12 20 中间寄存器组 0 10 8 路由器 资源需求 1938 11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论