加热器厂家
免费服务热线

Free service

hotline

010-00000000
加热器厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

基于FPGA的专用信号处理器设计和实现

发布时间:2020-07-21 18:19:51 阅读: 来源:加热器厂家

摘要:本文介绍基于FPGA、用VHDL语言编程实现矢量脱靶量测量专用信号处理器的方法。有效利用FPGA片内硬件资源,无需外围电路,高度集成,实现了对复数数据进行去直流、加窗、512点FFT和求模平方运算。 关键词:512点FFT;FPGA;蝶形运算

前言矢量脱靶量测量系统中,信号处理电路模块的主要任务是完成目标检测、数据存储以及给其它单元控制信号。系统所进行的目标检测需要计算信号的功率谱,所以先要对采集到的多通道(8路)数据按512点为一帧,作FFT处理,得到其频谱。为了监测接收机工作状态,需要在频域用恒虚警的方法,判断各路接收通道是否正常。除此之外,还需要对数据进行去直流、加窗的初始化处理,FFT结果再进行求模平方、累加运算,结果以FIFO输出。选择用FPGA完成上述功能有诸多优点。首先,FPGA实现FFT运算是硬件处理,采用多个硬件乘法器、加法器,运算周期短,加上内部集成的大量块RAM可高速访问,所以速度大大提高。其次,FPGA片内逻辑资源丰富,可用的寄存器、锁存器、查找表和多路数据选择器等,能够实现硬件流水结构。这样多种运算可同时流水进行,减少了中间等待时间,整体速度大幅提高。再次,用硬件处理数据时延固定,可准确预测。当然,FPGA也有不足。在FPGA内设定的数据长度相对固定,不够灵活,如果为实现高精度而采用浮点运算,则设计复杂,速度会降低,而且硬件开销大。用“块浮点”算法,可以很好地兼顾高速和高精度,并且硬件实现和控制相对简单,弥补了FPGA这一不足。

各运算单元算法和实现如图1所示,信号处理器共包括4大部分:去直流、加窗的预处理单元,FFT运算单元,模平方累加与检测单元,FIFO输出单元。每个单元都分配有存储器来存储中间结果,它们是由FPGA中的块RAM生成的,不占用逻辑资源,而且访问快速。预处理单元如图2所示,预处理单元首先读入控制单元,在收到启动信号后,产生读信号和读地址,读取外部数据到内部存储器R、I,同时数据送入累加单元求和,移位后得到平均值,也就是直流分量。然后,在读取数据完毕时,读入控制单元启动加窗运算控制单元,读取原始数据和窗函数,这时原始数据减掉直流分量后,与窗函数相乘,就得到去直流和加窗后的结果,为FFT单元作好准备。FFT运算单元如图3所示,FFT运算单元主要包括蝶形运算、读写控制、块浮点运算、数据存储R、I和旋转因子存储单元。以下分别介绍。蝶形运算单元时域抽样(DIT)的基-2蝶型运算算法可以表示为: 其中复乘运算可表示为:

由蝶形运算算法公式可以看出一个基-2蝶形运算要进行一个复乘、两个复加。由复乘运算公式可知:若在一个时钟周期内实现复乘,需4个实数乘法器和2个实数加法器。因为这里采用的是Xilinx公司的VirtexII系列FPGA,内部有硬件乘法器,不占用逻辑资源,因此为了简化结构和提高系统的稳定性,采用4乘法器的直接实现结构(见图4)。读写控制FFT读写控制单元负责产生FFT运算过程、各个阶段RAM的读写信号和地址信号,以保证各级运算数据的正确调用和存储。此外,还需要协调各部分的时序关系。因为按时间抽取的FFT是混序,在实际运算中,直接将输入数据按原位运算要求的“乱序”存放是很不方便的。因此总是按自然顺序将输入序列存入存储单元,再通过变址运算将自然顺序变换成按时间抽取的FFT算法要求的顺序。变址过程可以用程序安排加以实现。计数器顺序计数(0~511),将计数器的最低位(第‘0’位)取反后,对应位进行交换,就能产生每一级的数据读取地址。同样的,旋转因子的地址是由计数器地址交换后,特定位置零产生的。由于采用原位运算,每级蝶形运算的写地址和抽取地址完全相同。块浮点块浮点由“溢出检测”和“指数累加器”组成。如果输入蝶形单元中的数据的实部和虚部是16比特,那么输出数据实部和虚部最大溢出是2比特。所以,每一级蝶形运算中,“溢出检测”根据输出数据的高三位(最高位是符号位)就可以判断溢出情况,由此决定下一级蝶形运算时,如何选择上一级18位结果数据中的16位进入蝶形单元。溢出的位数由指数累加器累加,最后决定FFT运算结果的指数位。数据存储FFT运算单元先读取预处理结果的实部、虚部,送入蝶形运算单元。第一级结果也会分成实部、虚部存储在本单元的数据存储器中。此后每一级都进行原位操作,最终的结果也存于这两片RAM中。旋转因子事先单独存储在一片512

济南碧莲盛地址

深圳碧莲盛植发医院怎么样

重庆碧莲盛植发医院怎么样