《基于FPGA的数字信号处理算法设计》由会员分享,可在线阅读,更多相关《基于FPGA的数字信号处理算法设计(11页珍藏版)》请在金锄头文库上搜索。
1、基于FPGA的数字信号处理算法设计摘要:本文研究了基于FPGA的快速傅立叶变换、数字滤波、相关运算等数字信号处理算法的高效实现。现代数字信号处理对实时性提出了很高的要求,当最快的数字信号处理器(DSP)仍无法达到速度要求时,唯一的选择是增加处理器的数目,或采用客户定制的门阵列产品。随着可编程逻辑器件技术的发展,具有强大并行处理能力的现场可编程门阵列(FPGA)在成本、性能、体积等方面都显示出了优势。设计了级联和并行递归两种结构的FFT处理器。分析了具有相同结构的数字滤波和相关运算的特点,采用了有乘法器和无乘法器两种结构实现乘累加(MAC)运算。实验表明,本文所有算法均达到了设计要求。关键词:D
2、SP;FPGA;数字滤波;FFT处理器 Abstract:This paper introduced signal processing algorithm,such as fast Fourier transform,digital filtering,and correlation algorithm had researched and efficiently realized.Modern digital signal processing (DSP) put forward the requirement of high real-time performance, when the
3、 fastest digital signal processor (DSP) still cannot meet the requirements of speed, the only option is to increase the number of processors, or use of custom gate array (FPGA) products.With the development of the programmable logic devices technology, with a strong parallel processing ability of fi
4、eld programmable gate array (FPGA) in terms of cost, performance, volume shows the advantage.Parallel recursive design level and the structure of the two kinds of FFT processor.Analyzed the digital filter with the same structure and related calculation, the characteristics of the two kinds of struct
5、ure with and without multiplier multiplier multiply accumulation (MAC).Experiments show that the algorithms are all meet the design requirements.Keywords:DSP;FPGA;digital filtering;FFT processor1、 引言FPGA(Field Programmable Gate Array)即现场可编程门阵列和DSP(Digital Signal Processor)数字信号处理芯片发展至今已经有了二十多年的历史,但和D
6、SP很早就确立数字信号处理领域的霸主地位相比,FPGA由于成本、功耗和性能限制,一直被使用在系统外围,从最初用于胶合逻辑,到控制逻辑,再到用于数据通路,慢慢地接近系统的核心。在数据通讯和图像处理这样的应用中,由于成本、系统功耗和上市时间等原因已无法简单地利用DSP处理器来实现,基于FPGA的信号处理器己广泛应用于各种信号处理领域。与DSP相比,FPGA实现数字信号处理的主要优越性有:首先,FPGA的高度并行处理能力。FPGA相对DSP芯片的最大优势是其内在的并行机制,即利用并行架构实现数字信号处理的功能。这一并行机制使得FPGA特别适合于完成滤波这样重复性的DSP任务。对于高度并行的数字信号处
7、理任务来说,FPGA性能远超通用DSP处理器的串行执行架构。其次,FPGA具有重配置能力。DSP处理器可以通过加载不同的软件来实现不同的功能,但这相对于ASIC系统十分灵活的功能并没有实用价值。因为仅仅通过对DSP处理器加载不同的程序代码,并不能有效地改变DSP系统的诸如吞吐量、数据总线宽度、DSP加速模块的数量与功能。这是因为这一切必须靠改变硬件结构、硬件功能才能实现。最后,在高速、高性能要求的应用场合,使用FPGA方案的系统成本、功耗、集成度比使用DSP方案更优越。由于CPU的灵活性,对于低速、低吞吐量和大量复杂运算的情况,DSP处理器方案的系统成本要比FPGA系统低很多,而且此方案具有不
8、可替代性。然而在高端应用领域,大多数的情况中不但需要尽可能高速、高性能的DSP处理器,而且多片DSP连用的情况也十分普遍。在多片DSP系统中,每一片DSP处理器都必须配置完整的辅助器件才能正常工作,如数据RAM、程序RAM和ROM、FIFO、双口RAM、FPGA/CPLD辅助接口器件等等。该系统的成本将成倍提高,功耗、集成度与可靠性等性能指标也都将不同程度地下降,但是如果使用FPGA来构成DSP系统,在DSP处理器系统中存在的问题将迎刃而解。目前拥有大规模逻辑资源的FPGA完全能容纳必须由多片DSP处理器构成的系统,从而使得单片FPGA构成的系统在各项技术指标大幅度提高的前提下,成本和功耗大幅
9、度下降,集成度与可靠性则大幅度提高。2 基本原理2.1 选用FPGA实现FFT的原因图像声纳系统通常要求信号处理过程具有实时性,这要求信号处理系统具有很强的处理能力。其中波束形成又是图像声纳信号处理部分最主要的工作,主要包括聚焦、加权、FFT及求模这几个部分。FFT又是其中最复杂、消耗时间最多的坏节,其运算时间和精度决定了最终系统的性能。通常可以采用DSP处理器、专用的FFT处理器芯片及可编程逻辑器件(以FPGA为代表)这三种方法来实现。(l)采用DSP处理器:该实现方法具有软件设计的优点,能够适用于各种信号处理场合,灵活方便。但单片DSP芯片的处理能力有限,在要求实时运算的应用中,执行FFT
10、的同时还必须在规定的时间内完成其它的操作。增强DSP运算能力的方法是采用多个处理器,但缺点是成本昂贵、需要众多附加部件,并且功耗很大,此外开发和调试多处理器的难度很大。(2) 采用专用FFT芯片或用户定制的专用集成电路来实现(ASIC):针对FFT的固定点数的算法,用专用的集成芯片来实现FFT。ASIC在一些特殊功能的表现上相当好。该方案运算速度快,可靠性高,非常适合实时和对可靠性要求较高的信号处理系统,但专用FFT芯片不能重新组态,可编程能力有限,它的功能无法任意修改或改进。(3) 采用FPGA来实现:随着FPGA技术的普及,以及FFT算法在各个领域的广泛应用,使用FPGA芯片设计FFT正在
11、世界范围内兴起。FPGA芯片具备在线可编程能力,具有硬件结构可重构的特点,适合于算法固定!运算量大的前端数字信号处理。最新推出的FPGA产品都采用多层布线结构,更低的核心电压,更丰富的输入/输出管脚,更大容量的逻辑单元,内置嵌入式RAM资源,内部集成了多个数字锁相环,嵌入多个硬件乘法器,所有这一切都使得FPGA在数字信号处理领域显示出自己特有的优势。2.2 FFT算法原理2.2.1 快速傅里叶变换原理设x(n)是一个有限长序列,x(n)的DFT可表示为:上式中和都是复数。因此,每计算一个值,必须要进行N次复数相乘,和N-1次的复数相加。一共有N个点,因此要完成全部DFT运算则需要进行次复数相乘
12、和次复数相加。其中每一个复数相乘将包括4个实数相乘和2个实数相加。将X(k)展开如下所示:这样每运算一个值需要进行4N次实数相乘和2(2N一l)次实数相加。因此整个DFT运算需要4次实数相乘和2N(2N一1)次实数相加。当N较大时,实时信号处理对处理器计算速度有十分苛刻的要求,于是如何减少计算量变得至关重要。为减少运算量,提高运算速度,就必须改进算法。利用系数以下固有特性,,就可以减小DFT的运算量。(1) 的对称性:(2) 的周期性:(3) 的可约性:,,利用的上述特,可以将长序列的DFT分解为短序列的DFT,这样可以避免大量的重复运算,提高DFT的运算速度。快速傅立叶变换算法正是基于上述的
13、基本思路而发展起来的。它的算法可分为按时间抽取和按频率抽取法。通常将FFT运算中最小DFT运算单元称为基(radix),按基的不同又可分为基二、基四等。2.1.2 基四FFT算法基四按时域抽取(DIT)是在时域x(n)上将n按4m、4m+l、4m+2、4m+3分解抽取,可写为:其中:,令a(m)=x(4m),b(m)=x(4m+1),c(m)=x(4m+2),d(m)=x(4m+3),因为,所以上式可写为:设,其中:式变为:其中:,令,则式可以改写为:式在硬件实现时可以先计算、,然后再进行简单的加减运算得到。2.3 FFT硬件实现结构(1) 递归结构递归结构即顺序处理结构,数据输入缓冲单元由两
14、块RAM组成乒乓存储器,以提高数据的吞吐率。若一次蝶形运算时间为T,采用基四算法,则整个序列的FFT时间为。采用递归结构的优点是占用硬件资源少,控制简单。其缺点是运行速度慢,难以满足实时信号处理的要求。(2)级联结构递归结构重复使用一个蝶形运算单元,占用最少的硬件资源,但是处理速度慢。级联结构根据基不同将整个蝶形划分为若干级,每一级使用一个蝶形运算单元。这样每一级仅完成固定的操作,上一级的计算结果通过一个乒乓RAM缓存,下一级从缓存中取数进行运算,以流水线的方式处理。对基四算法,相应的有个蝶形运算单元。虽然对一个序列的变换时间仍为,但因为各级蝶形运算单元之间按流水方式工作,所以对于连续输入的多
15、个序列,除初始的几个序列外,后续每个序列的变换时间为,即有的加速比。(3)阵列结构以一个16点的时域抽取基四算法为例,整个FFT运算分为2级,每一级有4个蝶形运算。采用阵列结构则一共需要8个蝶形运算单元。可见它的硬件开销非常大,尤其当FFT点数增大时,所需资源成倍提高。若采用基四算法,N点FFT运算的时间仅为T。2.4 FFT处理器的优化措施FFT处理器的硬件结构决定了并行度的大小,从而也决定了处理速度。对于硬件结构己经确定的FFT处理器,可以从减少蝶形运算单元的运算时间和从存储器中存取数据的时间方面着手,采取相应的措施来提高FFT处理器的速度。(1)并行处理技术分析基四蝶形运算的特点,可以看
16、到参与运算的4个数可以并行读取,3次复数乘法也可以同时进行运算,这样一个基四蝶形运算可以在一个时钟周期完成。在基本蝶形运算单元基础上,将1块RAM改为4块凡AM,同时将蝶形运算单元中的1个复数乘法器增加到3个复数乘法器。这样一个基四蝶形运算可以在一个时钟周期完成。(2)采用流水线技术蝶形运算单元的执行过程可分为:取数、运算、输出这三个步骤。顺序处理时这三个过程是依次执行的,而采用流水线方式这三个步骤中的前一个步骤的输出是下一个步骤的输入,从而使运算结果连续输出,这样可以显著提高系统的工作效率。2.5 提高处理器精度的方案FFT运算器的误差主要来自有限字长效应。主要包括舍入误差(当乘积被截断或舍入到系统字长时产生)、溢出误差(当蝶形运算的输出超过容许的字长时产生)和量化误差(当使用有限位数来表示旋转因子