2 移位寄存器流水线结构的FFT 在传统流水线结构的FFT中,需要将全部数据输入寄存器后,可开始蝶形运算。在基-2 DIF算法中可以发现,当前N/2个数据进入寄存器后,运算便可以开始,此后进入的第N/2+1个数据与寄存器第一个数据进行蝶形运算,以此类推。 由于采用频域抽取法,不需要对输入的数据进行倒序处理,简化了地址控制,这样,可以采用移位寄存器的方式,依次将前N/2个数据移入移位寄存器,在N/2+l时刻,第一个数据移出移位寄存器,参与运算。相对于传统的RAM读写方式,采用移位寄存器存储结构综合后的最大工作频率为500 MHz,远大于RAM方式的166 MHz。 当移位寄存器相继有数据移出时,在移位寄存器中会出现空白位。此时,引入第二路数据,在第一路数据依次移出进行蝶算时,第二路数据依次补充到移位寄存器的空白位中,为运算做准备。通过这样一种类似“乒乓操作”的结构,可以使蝶形运算模块中的数据不间断地输入,运算效率达到100%。不同于传统的“乒乓操作”结构,由于使用移位寄存器,不需要两块RAM,可以省掉一半的寄存器。图2为256点FFT处理器的第一级结构。
基于上述基本原理,将这种移位寄存器结构扩展到整个FFT系统的各级,可以发现各级使用的移位寄存器数量是递减的。现使用一个8点结构来进行说明。 如图3所示,数据由输入l和输入2进入第一级。通过开关进行选通控制。由于是N=8的运算,所以各级分别加入4级、2级和1级的移位寄存器。
分两路来说明运算过程: 将K1打到位置①,第一路数据进入移位寄存器,待第一路的前4个数据存入4级移位寄存器后,第一路进入的第5个数据与移位寄存器移出的第1个数据进行蝶形运算。 由于输出结果有上下两路,第二级是一个四点的DFT,所以对于上路的输出结果x0(0)+x0(4)类似于第一级,直接存入下一级寄存器,为四点运算做准备,下路的输出, 先存入本级2级移位寄存器中,等到上路的四点运算开始,第二级的移位寄存器有空白位时,移入第二级,为下路的四点运算做准备。所以第一级蝶形运算上路输出前N/4=2个进入下一级寄存器,下路输出的数据依次存入本级移位寄存器中。 当第一级的输出前N/4=2个数据x0(0)+x0(4)和x0(1)+x0(5)存入第二级移位寄存器时,运算便可以开始,这时开关K2打到位置②,此时第一级上路输出的数据x0(2)+x0(6),即第一级上路输出的第三个数据与第二级移位寄存器移出的第一个数据,即x0(O)+x0(4)进行蝶形运算,输出的第四个数据x0(3)+x0(7)与x0(1)+x0(5)进行蝶算。在这个运算过程中,第一级的2级移位寄存器移出数据依次移位存入到第二级的移位寄存器产生的空白位中。 两个时钟后,第一级上路输出的四个数据完成了蝶形运算,K2打到位置①,在接下来的两个时钟里,第一级中2级移位寄存器的输出依次与此时第二级中2级移位寄存器的输出数据进行蝶形运算,即与完成第一级下路输出的四个数据的蝶形运算。 |