1、导言
关于地上上的远间隔微波通讯,当通讯间隔超越必定规模时,电磁波传达会遭到地上的阻挠,跟着通讯间隔的添加通讯信号则会衰减。为了延伸通讯间隔和提高通信质量,需求在通讯二地之间树立若干微波中继设备(例如微波接力机),进行电磁波转接并对信号进行逐段接纳和扩大后再发送给下一段。在微波接力通讯中,一般选用扩频办法进步体系的抗搅扰才能。可是,扩频体系过宽的频带带宽很简略在通讯设备密布的当地遭到其他设备的搅扰(窄带搅扰)。所以在微波接力机作业进程中,需求对接纳信号中的窄带搅扰信号进行快速辨认并运用相应的自适应陷波等技能对窄带搅扰进行按捺。因为在频域上窄带搅扰的功率谱出现尖峰状,而扩频信号大致出现平整特性且并简略辨认。所以要在微波接力机中规划FFT模块用于核算信号的功率谱。
对完结FFT的工程,现在通用的办法是选用DSP、FFT处理电路及FPGA。用DSP完结FFT的处理速度较慢,不能满意某些高速信号实时处理的要求;专用的FFT处理器材尽管速度较快,可是价格相对贵重且外围电路相对杂乱;选用新一代的FP-GA来完结FFT兼有二者的长处。FPGA资源丰厚、易于凭借并行流水的特色来完结FFT,不光功用安稳、经济性好,并且能够大大缩短核算的耗时。以Altera公司的Stratix系列FPGA为例,它具有多达79 040个逻辑单元、7 MB的嵌入式存储器、优化的数字信号处理器和高功用的I/O才能,十分便利以全并行流水办法进行FFT处理。
选用StraTIx系列中的EPlS25型FPGA来完结FFT,在体系主频大于52 MHz的环境下安稳作业后,完结1次256点的FFT所需求的时刻小于5μs,完结1次1024点的FFT所需时刻小于20μs,彻底满意实时处理的要求。
2、模块的规划与完结
2.1 FFT算法挑选
自从1965年J.W.Tuky和T.W.Coody在《核算机数学》上宣布了闻名的《机器核算傅立叶级数的一种算法》论文后,通过几十年来的不断改进,形成了许多FFT的高效算法。这些算法根本上分为二大类:时域抽取法FFT(DIT-FFT)和频域抽取法FFT(DIF-FFT)。时域抽取法是把改换模块的输入数据在时域上按必定的倒序规矩打乱,通过改换后,输出的FFT频域信号是次序排列的。而频域抽取法是把改换模块的输入数据在时域上按次序输入,通过改换后,输出的FFT频域信号依照倒序列规矩输出。依据运算基的不同,又能够分为基2、基4、基8及混合基算法等。
在该改换模块的处理进程中,能够在预加窗单元便利地完结倒序操作,并且在全并行流水办法处理的进程中,选用时域抽取能够充分运用旧址存储,节约内存。所以,在规划中挑选简略有用的时域抽取基2FFT算法。
2.2 FFT模块与外部电路的接口
FFT模块与外部电路的接口如图1所示。图中,输入信号Xin为复数零中频信号,数据宽度为18bit,编码格局为二进制补码。Xout是复数改换输出信号,数据宽度为18 bit,编码格局也是二进制补码。CLK和HCLK别离是体系的主时钟和2倍时钟。HCLK首要用于数据的输入、输出。当CLK为‘1’时,由Xin在HCLK的上升沿输入实部数据并在Xout输出改换数据的实部;当CLK为‘O’时,由Xin在HCLK的上升沿输入虚部数据并在Xout输出改换数据的虚部。iFSyne为改换输入帧同步操控信号,oFSync为改换输出帧同步操控信号。2个信号为‘1’时别离标明模块输入/输出改换帧的第1个数据开端输入/输出。
2.3 全并行流水办法的完结
在FFT作业办法的规划上,充分运用FPGA内嵌乘法器和存储器资源丰厚的特色.选用全并行的流水作业办法。如图2所示,图中N为进行FFT运算的点数,M=log2N。以N=256,M=8为例,当体系安稳作业之后,在256个时钟之内,一同有lO组数据在做不同的运算。当第1组数据输入的时分,第10组数据正在输出,而中心的8组数据正在进行各级蝶形运算。因而,当模块进入安稳作业状况后,每隔256个时钟就有一组数据完结256点的FFT,从输出RAM中输出。
2.4 FFT改换模块的内部规划
FFT内部改换模块的规划如图3所示。下面以N=256点的FFT为例别离予以阐明。
2.4.1 加窗并倒序存储单元
为了削减时域切断形成的频谱走漏差错,在进行FFT改换前应对模块输入的数据进行加窗处理。考虑到本模块首要用来剖析叠加有窄带搅扰的扩频信号,它要求精确给出每个窄带搅扰的中心频率及其搅扰强度的相对巨细,所以,这儿选用带外衰减为80 dB的Chebyshev窗以获取杰出的频谱作用。通过加窗之后的数据依照倒序的规矩存储在RAM中,等候进入蝶形运算单元进行运算。
2.4.2 操控单元
操控单元是整个FFT改换模块的中心。它首要担任以下二方面的作业。
(1)供给各个模块的运算使能
当检测到输进口的iFSync信号为高电平后,当即发动“加窗并倒序存储单元”和“窗因子ROM”单元进行数据输入、加窗、倒序存储处理。在256个时钟之后,发动“各级蝶形运算”单元,并操控地址发生单元发生当时需求的各类地址。中心各级蝶形运算的使能由上l级蝶算单元发生。在第8级运算完毕时,供给数据输出的标志oFSync,并操控输出RAM同步输出数据。
(2)发生各级运算进程中所需的地址
倒序地址:用模为N的同步计数器的输出来完结,把当时计数器输出的高位与低位的对应位进行悉数对调即可得到当时数据的倒序地址。
各级运算的地址:把RAM取数地址和ROM取数地址对应起来。原则是先把1个旋转因子所对应的一切数据核算完毕再转到下1个旋转因子所对应的数据上。这样的话,能够在发生ROM地址的一同发生一切RAM取数的地址。把二者的地址树立相关之后,能够使RAM数据和ROM数据严厉对应起来。
2.4.3 RAM模块
在256点的FFT中,要进行8级蝶算,对全并行的作业办法而言需求8个不同的RAM来存储各级的中心成果。其间,第8级的RAM能够作为输出RAM。再加上前面加窗和倒序的1个RAM,整个体系共需求9个RAM。关于256点的复数,把实部和虚部分隔共需求512个存储单元。在某一级的蝶算中,因为信号及运算的推迟,不或许就在256个时钟之内完结本级运算,而下一组的数据在256个时钟之后就要进行本级运算并将成果存储在该RAM中,这样就有或许形成数据还没有被彻底读取就被新数据掩盖的抵触。为了保证在全并行作业办法中完结数据的精确存取,能够把9个RAM都设置成1024×18 bit的存储格局,即:把每个RAM分为二部分,地址为0~511的为前半部分,地址为512~l 023的为后半部分,用一个MSB的信号作为地址最高位来操控前后二部分存储器。当第1组数据进行本级运算时,其成果保存在RAM的前半部分;256个时钟之后,对MSB求反,并以此操控把第I+1组数据进行本级运算的成果写入RAM的后半部分,此刻对第1组数据的读取在前半部分进行,互不抵触。Altera的FPGA器材里有丰厚的RAM资源,选用双端口RAM能够很便利地完结上述操作。
2.4.4 ROM模块
整个模块共需3个ROM,一个用来存储Chebyshev窗因子,别的二个别离用来存储旋转因子的实部和虚部。事先在MATLAB中核算出这些因子,并将它们依照*.mif文件格局输出。在QuartusⅡ软件中,例化3个ROM,并把由MATLAB发生的*.mif文件写入各自ROM的初始化文件中,完结对ROM的初始化作业。
2.4.5 蝶形运算单元
(1)根本蝶形运算单元。把复数运算分解为实数运算之后,每个根本的蝶形运算单元都可由4个乘法器、1个加法器和1个减法器构成。其间,乘法器是决议体系运算速度的关键因素。对256点FFT在全并行的作业办法下,最多要求在同一时钟并行完结33个18×18 bit的乘法运算。而EPlS25系列FPGA有十分丰厚的乘法器资源,仅DSP就能够并行完结40个18×18 bit的乘法运算,彻底满意体系的要求。
(2)可化简的蝶形运算单元。在对各级蝶形进行研究的基础上发现,第1级和第2级的蝶形通过化简彻底能够不必进行乘法操作。
第1级只需1个旋转因子won,其实部为1、虚部为O,代入根本蝶形运算单元化简之后可得:
mx1=xl+x2;my1=yl+y2
mx2=x1-x2;my2=y1-y2
其间:x1、x2为输入数据实部,y1、y2为输入数据虚部,mx1、mx2为改换之后的数据实部,my1、my2为改换之后的数据虚部。
第2级有2个旋转因子,won和w64n,对won能够沿袭榜首级的简化办法。
关于w64n,其实部为0、虚部为-l,代入根本蝶算单元化简之后可得:mx1=x1+y2;my1=y1+x2;mx2=x1-xz;my2=y1+x2这样,一共8级的蝶形运算有2级能够不必乘法器和存储旋转因子的ROM,节约了25%的乘法器和ROM资源。
2.5 差错的剖析与操控
对FPGA而言,选用浮点运算带来的硬件开支太大。而假如选用文献[3]所提出的块浮点防溢出计划,在每一级蝶形运算完毕之后,都需求找出该级核算成果中的最大值来判别溢出的状况,并以此确认进行下一级运算时每个数据需求移位的位数。这对全并行的作业办法而言,意味着每一级数据都会带来更大的推迟,影响整个运算的速度。而对定点运算而言,尽管存在有限字长效应的影响,可是,只需对数据进行恰当的移位处理就能够避免溢出;在数据放弃时,进行相似4舍5入的运算就能够有用的操控差错。在归纳考虑之后,体系选用定点运算计划。在定点运算中,差错首要体现在以下两方面:
(1)乘法切断差错。2个18位的数据相乘得到36位的积,把该积舍入为18位就会发生差错。因为来自零中频的18位数据实践表征的是模值不大于‘1’的复小数,所以相乘不会发生溢出。去掉次高位剩余的符号位并截去后17位。当被截去的各位是‘1’的时分,差错最大;被截去的各位为‘O’时,没有差错。对被截去的部分作相似4舍5入的处理,第20位为‘1’则向上进位,为‘O’则直接舍去,能够有用减小差错。
(2)加减法溢出差错。2个18位的数据相加减得到19位的成果,在进行下一级运算之前,有必要舍去l位,对放弃的这l位也进行上述的4舍5入运算。2个小数的加减运算而言,把成果悉数右移1位就能够避免溢出。
3、波形仿真与功用剖析
波形仿真选用的输入信号为
x(n)=Xxexp[j×(03+2x127xnxπ)/256]
式中。X依据测验的需求别离取18 bit信号的最大值和到达80 dB信噪比所需的最小值13,n的取值规模为0:255。规划东西选用VHDL93版硬件描绘言语,在QuartusⅡ4.1渠道上进行逻辑归纳和时序剖析,把仿真成果保存为*.tbl文件格局。在MATLAB中,读取*.tbl文件,并与MATLAB的核算成果进行比较。因为8级运算都作了右移1位的处理,所以实践成果比用MATLAB的核算成果缩小256倍。把MATLAB的核算成果缩小256倍与0uartusⅡ4.1的核算成果比较,如图4所示。图中,左上图为原始序列,右上图为用MATLAB核算的成果,右下图为用FPGA核算的实践成果。在左下图中,把二个成果进行部分扩大,MATLAB的核算成果用实线标明,Quartus4.1的仿真成果用“+”标明。能够看出二组成果的符合性十分好,验证了程序的正确性。仿真选用60 MHz体系主频,在体系进入安稳状况之后(通过38.34μs),每完结1次256点FFT所用时刻为4.26μs。对EPlS25器材资源占用状况为:逻辑单元运用15%,内部存储器运用18%,专用DSP运用62.5%。尽管专用DSP块运用较多,可是逻辑单元运用得很少,能够用逻辑单元来构成18×18的乘法器和专用DSP一同完结更多的并行乘法运算。这阐明体系还具有很好的可扩展性,要完结更多点数的FFT,只需添加相应蝶形运算的级数即可。
从成果能够看出,因为运算中选用有用办法避免差错和溢出,在最大数据运算时没有溢出,并且终究运算成果的差错小于10-9。在用到达80 dB信噪比所需最小数据进行运算时,也有很好的分辨率。
4、完毕语
本文评论了微波接力机中FFT模块的规划与完结进程。悉数电路规划已通过功用仿真、逻辑归纳、时延剖析并成功下载到FPGA中投入实践使用。实践使用标明用StraTIx系列FPGA完结FFT的速度快、安稳性高、易于扩展。在微波接力通讯,特别是在接力机对窄带搅扰快速辨认的使用中有很大的优越性。
责任编辑:gt