基于超大规模FPGA的FFT设计与实现
第3级蝶形运算单元的数据量为64,把数据组X(i,i)、X(i+16,i+16)、X(i+32,i+32)及X(i+48,i+48)作为第i组数据,其中,i=0,1,…,15,运算时,从数据组X(i,i)、X(i+16,i+16)、X(i+32,i+32)及X(i+48,i+48)中依次取对应元素作为该级蝶形运算单元的输入数据。第3级蝶形运算的输出数据记为X(i,i,i),i=0,1,…,15,每个X(i,i,i)是第i组数据的运算结果,包含64个元素;该级蝶形运算的输出数据分成4组,分别顺序存储于DPRAM1(3)、DPRAM2(3)、DPRAM3(3)及DPRMA4(3),其存储结构如表4所示。
第4级蝶形运算的数据量为256,把数据组X(i,i,i)、X(i+4,i+4,i+4)、X(i+8,i+8,i+8)及X(i+12,i+12,i+12)分成一组,作为第i组数据,其中,i=0,1,…,15。运算时,从数据组X(i,i,i)、X(i+4,i+4,i+4)、X(i+8,i+8,i+8)及X(i+12,i+12,i+12)中依次取对应元素作为该级蝶形运算单元的输入数据。第4级蝶形运算的输出数据量记为X(i,i,i,i),i=0,1,2,3,每个X(i,i,i,i)有256个元素。把该级蝶形运算的输出数据分成4组,分别顺序存储于DPRAM1(4)、DPRAM2(4)、DPRAM3(4)及DPRMA4(4),其存储结构如表5所示。
第5级蝶形运算的数据量为1024,从数据组X(0,0,0)、X(1,1,1,1)、X(2,2,2,2)及X(3,3,3,3)中依次读取对应数据作为该级蝶形运算单元的输入数据。该级蝶形运算的输出数据量为1 024,也分成4组顺序存储于DPRAM1(5)、DPRAM2(5)、DPRAM3(5)、DPRAM4(5)。
2.3 流水结构的蝶形运算单元设计
本设计的基4-蝶形运算单元采用串行输入/输出、并行运算的结构,其中,串行输入/输出数据流是由时钟信号clk1控制的,而内部并行运算是由时钟信号clk2控制的,clk2是clk1四分频后的结果。同时,设计采用增加流水级的办法进一步提高运算速度,复数乘运算采用全并行结构实现,共需2级流水,整个蝶形运算共需6级流水,第1级是4个串行输入数据缓冲,第2、3级是复数乘,第4、5级是两级加减运算,第6级是4个输出结果在时钟clk1控制下串行输出。图3是蝶形运算单元的实现框图,图4是复数乘运算的并行实现框图。
2.4 状态控制单元设计
状态控制单元主要完成每级运算之间的状态转换功能,产生相应的使能信号。根据前面的分析,2048点实序列的基4-FFT共需要5级蝶形运算、一级数据转换和求模值运算和一级数据读出单元,这样,整个基4-FFT功能模块共需7个状态,分别用stage1~stage7来表示,设计采样有限状态机加以实现,产生的控制使能信号分别为butter1_cal_en、butter2_cal_en、butter3_cal_en、butter4_cal_en、butter5_cal_en、change_en及read_en,每个状态对应于一级蝶形运算,实现的具体功能包括:使上一级存储器的读出使能信号有效,使本级蝶形运算单元和本级存储器的存储使能信号有效。状态控制单元的Modelsim仿真结果如图5所示。
3 基4-FFT模块的性能分析
3.1资源消耗及运算速度估计
按照本文设计,每个复数乘法器消耗4个硬件乘法器、而每个蝶形运算单元有3个复数乘法器,这样,每个蝶形运算单元共消耗12个硬件乘法器。并在设计时,根据数据存储结构特点,各级运算采用4个蝶形运算单元并行工作的方式,另外,数据转换单元的蝶形运算包含1个复数乘法器,也采用4路并行工作方式,由于第1级蝶形运算不需要复数乘法运算,所以,整个FFT模块共消耗3×4×12+12+4×4=172个硬件乘法器资源;本文设计的基4-FFT模块共需6个状态来完成,每个状态对应一级蝶形运算,每级蝶形运算消耗的总时间包括数据读出时间和流水延时时间两部分。这样,第1级蝶形运算共需256+4×4=272个clk时钟,第2、3、4级蝶形运算共需3×(256+6×4)=840个clk时钟,第5级需要256+4=260个clk时钟,这样,整个FFT模块共需要1 370个clk时钟周期完成,在clk频率为300 MHz时,完成FFT运算共需4.57 μs。
3.2 实现结果
本文利用单片FPGA实现2 048点FFT计算,采用实际信号数据注入实验验证,注入单点频信号并加入高斯白噪声时,信噪比SNR=0dB,图6(a)是FFT模块的输出结果,可以看出,输出结果将在归一化频率100和其镜像频率1948位置产生两个峰值点;注入3个点频加入高斯白噪声,SNR=0 dB,图6(b)是FFT模块的输出结果。
本文针对高速数字接收机频谱实时估计的需求,设计了基于Xilinx的Virtex-IV系列的XC4VSX55芯片的FFT算法设计并实现,实测结果与计算机仿真结果一致。可见随着总线速度可达550MHz的Virtex-V的出现及更加丰富的资源置于片内,使得全并行结构的实现成为可能,为FFT的高速实现与应用提供了更有效的手段。
- 基于IXP421的VoIP网关及其性能测评(10-02)
- 新一代移动通信系统的关键技术(10-26)
- 基于DSP和FPGA的机器人声控系统设计与实现 (04-16)
- 设计基于TMS320LF2407的低功耗中文人机界面 (04-16)
- USB接口芯片的原理及应用 (04-15)
- 利用以太网硬件在环路实现高带宽DSP仿真(05-04)