新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的移位寄存器流水线结构FFT处理器

基于FPGA的移位寄存器流水线结构FFT处理器

作者:时间:2010-07-19来源:网络收藏


  第三级的运算与第二级和第一级类似,即移入1级寄存器的数据与其后一个数据进行碟算,同时使前一级寄存器的输出数据进入后一级寄存器的空白位中,然后开关打到位置②,对下路输出数据进行碟算。

  对于第二路数据,通过开关控制,在第二级中,待第一路第一级下路输出数据进行蝶形运算时,移入寄存器的空白位,为运算做准备,由于前级运算周期是后级运周期的两倍,对于第二级碟算模块而言,数据仍然是不间断输入的。通过这样两路数据的交替运算和存储,实现“乒乓操作”,从而提高了蝶形运算模块的运算效率。图4是256点的具体运算输入和输出时序图。对于只有一路数据的应用场合,可以在前级加入,门控开关和数据缓冲寄存器分成两路数据,实现一路数据的不间断读入。

256点FFT的具体运算输入和输出时序图

  由于采用结梅,各级寄存器使用的数量都是固定的,即为N/2+N/4。其中,N为该级DFT运算的点数,各级使用的深度逐级递减,从而大大降低了寄存器的使用数量。

  此外,由于各级结构固定,所以大点数只是小点数基础上级数的增加,而且由于的输出相对于RAM而言不需要复杂的地址控制,所以这种结构的FFT处理器具有非常好的可扩展性。比如需要实现512点的FFT,只需要在256点的基础上增加一级即可。

  3 具体模块的设计

  3.1 控制与地址产生模块

  由于两路数据同时输入,为了防止发生两路数据间的串扰,对数据的控制显得极其关键。从上面的算法结构分析中知道,由于后级的DFT运算点数是前一级的一半,所以后一级的开关转换周期也是前一级的一半,基于这种关系,可以使用一个8位计数器的每一位状态来对各级开关进行控制。最高位控制第一级,同时由于上一级数据进入下一级需要一个时钟,所以下一级的开关转换时刻要比上一级延迟一个时钟周期。

  对于移位寄存器,在实现时,各级的前级移位寄存器深度为N/2-1,从本质而言,是使运算开始的时钟上升沿到来时,数据已经出现在碟算模块输入线上,而不需要下一个时钟的驱动来移出寄存器,比如第二级移位寄存器的级数为63。这样,运算周期正好是2的倍数,从而方便使用计数器的各位直接对开关进行控制。

  同时,计数器还可以用来产生所需旋转因子的RAM地址。根据各级蝶形运算所需旋转因子的规律,可以利用计数器的高位补零来产生查找表的地址。比如,对于第一级,因为需要在最低位第一次出现1时提供,第二次出现1时提供,…,以此类推,周期为128,所以可以使用计数器的低七位作为地址。对于第二级,由于所需要的地址为偶数,可以由计数器的[6:1]和最低位置O产生。表l为8点时使用三位计数器输出旋转因子的地址情况。

8点时使用三位计数器输出旋转因子的地址情况

  控制和地址产生模块的仿真结果如图5所示,其中sel代表开关控制,addr代表产生的地址。

控制和地址产生模块的仿真结果



关键词: FPGA FFT 移位寄存器

评论


相关推荐

技术专区

关闭