基于FPGA的FIR数字滤波器的设计共51页

上传人:沈*** 文档编号:116683566 上传时间:2022-07-06 格式:DOC 页数:51 大小:1.54MB
收藏 版权申诉 举报 下载
基于FPGA的FIR数字滤波器的设计共51页_第1页
第1页 / 共51页
基于FPGA的FIR数字滤波器的设计共51页_第2页
第2页 / 共51页
基于FPGA的FIR数字滤波器的设计共51页_第3页
第3页 / 共51页
资源描述:

《基于FPGA的FIR数字滤波器的设计共51页》由会员分享,可在线阅读,更多相关《基于FPGA的FIR数字滤波器的设计共51页(51页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上基于FPGA的FIR数字滤波器的设计The Design Of FIR Digital Filter Based On FPGA系(院)名称:电子信息与电气工程系 QQ 号: 专心-专注-专业 目 录基于FPGA的FIR数字滤波器的设计摘要:线性相位是FIR数字滤波器设计中的一个重要条件。线性相位FIR滤波器的设计方法主要包括时窗函数法、频率采样法、等波纹最佳逼近法。本文基于MATLAB软件,分别用这三种方法设计FIR低通滤波器,并进行比较分析。为了验证FIR滤波器的性能,本文使用MATLAB自带的FDATool工具设计等波纹法15阶低通滤波器,在Simulink里进

2、行仿真,最后得到预期的结果。设计好15阶FIR低通滤波器的系数后,本文就FIR低通滤波器的FPGA实现进行了研究。EDA技术的发展和大规模可编程逻辑器件的应用,使得数字信号处理借助于FPGA实现变为可能。为了实现这一目标,本文讨论了FPGA器件的结构、特点和分布式算法实现FIR滤波器的可行性,然后给出了基于并行分布式算法的FIR滤波器的VHDL描述,最后借助于EDA软件QUARTUSII进行了综合和仿真,并取得了成功。关键词:分布式算法 FIR数字滤波器 线性相位 The Design Of FIR Digital Filter Based On FPGAAbstract:Linear pha

3、se is one of the important conditions of FIR digital filter design. The design method of the linear phase FIR filter mainly includes window function method, frequency sampling method and the optimal approximation corrugated . This paper based on the MATLAB software with the three methods designs FIR

4、 low-pass filters and analysis the results. In order to verify the performance of FIR filter, this paper use FDATool owned by MATLAB software to design low-pass filter of 15 order with corrugated method and convent it into a model for the simulation later carried out. The final simulation gets the e

5、xpected results. Finishing design 15 order FIR low-pass filter coefficients, this paper will study FIR low-pass filter on FPGA realizing. With the development of EDA technology and the wide application of large-scale programmable logic devices, the application of digital signal processing on FPGA re

6、alizing become possible. In order to achieve this goal, this paper discusses the structure and characteristics of FPGA device and the feasibility of FIR filter design based on distributed algorithm, and propose the VHDL code based on the parallel distributed FIR filter. Finally we use EDA software c

7、alled QUARTUSII for the synthesizing and simulation , and achieve a success.Key words:Distributed Algorithm; FIR Digital Filter; Liner Phrase引 言近年来,随着数字信号处理技术的发展和数字集成电路的广泛应用,越来越多的工程领域在将模拟信号转为数字信号后,面临的首要任务即是滤除干扰信号,滤波的好坏直接决定着系统能不能得到有用的信号,因此滤波在数字信号处理中处于基础性的地位。同时,计算机技术的发展为数字滤波器的设计与仿真提供了便利。例如,使用MATLAB软件即

8、可在很短的时间内就能设计性能很高的数字滤波器,并且还可以进行模拟仿真,这使得我们可以在硬件实现以前对系统的性能可以有个初步的感性认识。此外,大规模可编程逻辑器件的应用,为数字滤波器的硬件实现提供了新的方式,在设计合理的情况下,能提高数字滤波器的工作速度,并且还能节省资源和功耗。基于此,本文将充分利用便捷的EDA技术,采用MATLAB进行FIR数字滤波器的设计和仿真,并研究使用VHDL进行硬件描述,然后在FPGA上开发的可行性。通过本文,可以感受到计算机技术带给数字滤波系统设计的快捷与便利。第一章 FIR数字滤波器设计1.1 FIR数字滤波器数字滤波器在数字信号处理中属于预处理的部分,因而起着基

9、础性的作用,数字滤波器包括IIR和FIR数字滤波器。数字滤波器具有精度高、稳定性好、灵活性强、不要求阻抗匹配,易于修改等特点。下面将首先介绍一下数字滤波器,然后重点讨论FIR数字滤波器的设计原理和结构。1.1.1 数字滤波器简介一个简单的数字滤波系统如图1-1所示。图中,x(t)为模拟信号,经过A/D转换器后变为一个有着先后顺序的数字序列x(n)。然后x(n)通过数字滤波系统H(z),即得到数字滤波器的输出y(n)。H(z)为该数字滤波系统的单位脉冲响应h(n)的Z变换,即: (1-1)若h(n)为无限长序列,则得到的数字滤波器为IIR数字滤波器,又称递归滤波器;反之,若h(n)为有限长序列,

10、则得到的数字滤波器为FIR滤波器,也称非递归滤波器。一个线形时不变因果滤波器可表示为: (1-2)其中N为h(n)的长度,即滤波器的长度。滤波器的阶数为N-1。图1-1 数字滤波系统 IIR滤波器主要是基于对模拟滤波器如巴特沃斯滤波器、椭圆滤波器等的幅频响应进行逼近,而其相频响应是非线性的。与IIR滤波器不同,FIR滤波器可以把相位特性设计成线性。这使得FIR数字滤波器在信号无失真传输、数据通信、图像传输与处理、语音信号处理等有线性相位要求的领域应用广泛。FIR滤波器的优点是软硬件实现结构简单,不用考虑系统的稳定性问题;缺点是实现较高性能的频率响应需要较高的滤波器阶数。1.1.2 FIR数字滤

11、波器由于线性相位FIR滤波器的广泛应用,本文将首先讨论一下如何实现线性相位FIR滤波器。由式(1-2)将代入,得到: (1-3)为复数,因此可以表示成如下形式: (1-4)式中,为实函数,称为幅度特性函数,为相位特性函数。 当满足: (1-5)为初始相位,为常数。该滤波器具有广义的线性相位,将(1-5)式变换为: (1-6)由(1-6)式可知, 不为常量。这样,当不同频率的信号通过该滤波器时,便会产生相位的失真。不过通常较小,相比来说小得多,由引起的相位失真可忽略不计。 在(1-5)式中,当时,为常量,这时滤波器有严格的线性相位,即对于不同频率的信号,通过该滤波器都有恒定的延迟,而不产生相位的

12、失真。 将式(1-3),(1-4),(1-5)联立,可得 (1-7a) (1-7b)将(1-7a)式除以(1-7b)式,消去 ,得到: =0 (1-8)当时,式(1-8)变为:=0 (1-9)观察可知,若关于求和区间中心奇对称,则(1-9)式成立。由于关于奇对称,令关于偶对称,则满足关于求和区间中心奇对称的要求,即(1-9)式成立。 当时,式(1-8)变为: (1-10)若关于奇对称,关于偶对称,则(1-10)式成立。 基于的对称不同和长度N的奇偶区别,线性相位FIR数字滤波器的幅度频率特性有所不同,因而所实现的滤波器的功能有所不同,具体如表1-1所示。第三列为能够实现的滤波器的性能。表1-1

13、 四种类型的线性相位滤波器I型N为奇数低通、带通、高通、带阻II型N为偶数低通、带通III型N为奇数带通IV型N为偶数带通、高通1.1.3 FIR数字滤波器的结构 根据FIR数字滤波器实现算法的不同,可以把FIR滤波器的结构划分为直接型、级联型、频率采样型和快速卷积型四种基本形式。本文主要讨论前两种结构。A 直接型结构由式子(1-2)可直接画出FIR数字滤波器的直接型结构,如图1-2所示。对于直接型结构来说,一个长度为N的FIR滤波器,每产生一个输出数据,要经过N次乘法,N-1次加法。对于使用FPGA开发FIR数字滤波器,这样的结果显然不令人满意。图1-2 直接型结构于是本文做了一下改进,这种

14、改进是基于线性相位的FIR数字滤波器的。以严格线性相位,N为偶数的FIR滤波器为例,如图1-3所示。图1-3 直接型的改进由于关于对称,我们可以将经过延时环节的位置关于对称的数据预先相加,然后可以再乘以相应的滤波器系数进行累加得到最终的输出结果。这样,每产生一个输出,经过次乘法,次加法,比原来减少次乘法。B 级联型结构对式子(1-2)进行因式分解,并将零点共轭的因式放在一起,这样产生了若干个一阶子式和二阶子式,将一阶子式看作二阶子式的一个特例,则系统函数可以表示为: (1-11)FIR数字滤波器的级联型结构如图1-4所示。图1-4 级联型结构从图中可以看出,级联型结构每产生一个输出,需要次乘法

15、,次加法。级联型的最大特点是可以分别独立调整每个子系统的零点之值,当需要精确控制滤波器的零点位置时,往往采用这种结构。1.2 FIR数字滤波器设计方法 FIR数字滤波器的设计方法主要有三种:时窗函数法、频率采样法和等波纹设计法。下面将分别讨论一下这三种方法的设计原理,然后给出设计步骤,最后在比较一下这三种方法的优缺点。1.2.1 时窗函数法 一个理想低通滤波器的幅频特性如图1-5所示。的表达式为 (1-11)图1-5 理想低通滤波器频谱图对进行离散时间傅里叶逆变换,得 (1-12)是一个关于对称的无限长序列,是系统的单位脉冲响应,这说明系统是非因果的,在物理上不可实现。为了能够得到一个可实现的

16、系统,可以将截取一部分,并顺序右移,使之成为一个因果的有限长序列。这种方法就好比在时域打开一个窗口一样,因而称为时窗法。可以预见,使用这种方法截取的序列越长,对理想的幅频特性逼近的越好。常见的时窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗、凯塞窗等。矩形窗的表达式为:,为整数。当用矩形窗设计FIR滤波器时,所产生的频率响应,与理想滤波器的频率特性相比,在理想特性不连续点处附近形成了过渡带,并在过渡带两侧形成持续时间很长,逐渐衰减的波纹,即通带内产生了波动,而阻带内产生了余振,这种现象称之为吉布斯(Gibbs)效应。吉布斯效应直接影响到滤波器的性能,因为通带内的波动会影响到滤波器的平稳性,阻带内的

17、波动则影响阻带最小衰减。为了克服吉布斯效应,可以从两个方面着手:一是在频域,避免理想滤波器频谱中出现的跃变现象,把它改造成一条连续光滑的曲线,所用的方法是镶边法;二是在时间域,对截尾函数进行改造,也即设计出好的时窗函数。一个好的时窗函数的要求:A.主瓣宽度尽可能地小。B.旁瓣水平(振幅或能量)相对于主瓣来说也尽可能地小。但是这两个标准之间彼此是有矛盾的,即主瓣宽度越大,旁瓣水平才可能越低。因此实际上,我们只能在这两个标准之间作一权衡,针对具体问题,找出一个适当的时窗函数。五种窗函数的主要参数如表1-2所示。应当说明的是,用时窗函数法设计的FIR滤波器通带波纹幅度近似等于阻带波纹幅度。一般阻带最

18、小衰减达到40dB以上,则通带最大衰减就小于0.1dB。最后,总结一下利用时窗函数设计FIR数字滤波器的步骤:A. 根据所需设计的数字滤波器类型(低通、高通、带通、带阻),确定线性相位数字滤波器类型。B. 根据滤波器阻带衰减,选择窗函数的类型,根据过渡带宽度确定时窗函数的长度,并根据线性相位条件进行修正。C 确定理想数字滤波器的频率响应函数,其中为幅度特性函数,为相位特性函数。D 计算理想滤波器的单位脉冲响应,即。E 加窗得到设计结果,即。表1-2 五种窗函数参数表窗函数主瓣宽度/rad旁瓣水平/db过渡带宽度/rad阻带最小衰减/db矩形窗-1321汉宁窗-3144汉明窗-4153布莱克曼窗

19、-5774凯塞窗(=7.865)-57801.2.2 频率采样法 频率采样法是一种基于频率域抽样来逼近所要设计的FIR滤波器的频率特性的一种方法。频率设计法的基本设计流程如图1-6所示。 图1-6 频率设计法流程为了保证具有线性相位条件,其单位采样响应是实序列,且满足条件。对于偶对称的情况来说,线性相位条件如下: (1-13) (1-14)令代入式(1-13)、(1-14),得到 (1-15)式中, ,N为奇数 ,N为偶数。 频率响应函数在各采样点上等于,而采样点之间的值是由各采样值之间的内插函数叠加形成,因而有一定的逼近误差,误差的大小取决于理想频率响应的曲线形状。采样点之间的理想频率特性变

20、化越陡,则内插值与理想值之间的误差就越大,因而在理想频率响应特性的不连续点附近,就会产生肩峰和波纹;反之,理想频率响应特性变化越平缓,则内插值越接近理想值,逼近误差小。因此,可以在理想频率下响应特性的通带与阻带之间设置过渡带,从而减小逼近误差。过渡带的采样点个数m与所设计的滤波器的阻带最小衰减有关,具体如表2-3所示。此外过渡带的带宽与采样点数m之间的关系为: (1-16)表1-3 过渡带采样点数与阻带最小衰减的关系m0123/dB20445465758595综上,频率采样法的设计步骤为:A. 根据阻带最小衰减,确定过渡带的样点数m。B. 根据过渡带宽度的要求,估算滤波器的长度。C. 构造希望

21、逼近的频率响应函数,一般为具有理想频率特性,并满足线性相位的要求。D. 对进行频域等间隔N点采样,得到。E. 对进行N点IDFT,得到。1.2.3 等波纹最佳逼近法等波纹最佳逼近法是基于最大误差最小化的设计原则。最大误差最小化能使幅度误差在整个逼近频段上均匀分布,即所设计的FIR数字滤波器的幅度特性在通带和阻带范围内是等波纹的,且可以分别独立控制通带和阻带的波纹幅度,并且在滤波器长度给定的情况下,加权的幅度波纹误差最小。 定义加权幅度误差函数为 (1-17),式中为幅度误差加权函数,用来控制不同频带的幅度逼近误差。一般地,在要求逼近精度高的频带,取值大,而要求逼近误差精度低的频带,取值小。设计

22、过程中是由设计者根据通带最大衰减和阻带最小衰减的指标要求取定的已知函数。对于FIR数字低通滤波器,常取: (1-18)式中,和分别为滤波器设计指标中通带和阻带的振荡波纹幅度,k为正的系数。 滤波器的通带最大衰减和阻带最小衰减与通带和阻带的振荡波纹幅度和的换算关系为: (1-19) (1-20)等波纹最佳逼近法的设计,在于找到滤波器的系数向量,使得在通带和阻带频带内的最大绝对值幅度误差为最小。 帕克斯-麦克莱伦采用基于交替定理的雷米兹交替算法,通过逐次迭代逼近的运算求得滤波器的系数向量,从而实现等波纹最佳逼近法。 一般情况下,估计滤波器长度N的凯塞经验公式为: (1-21) 综上,用等波纹最佳逼

23、近法设计FIR数字滤波器的步骤为:A. 根据滤波器的设计指标要求:边界频率、通带最大衰减、阻带最小衰减等,估计滤波器的长度,并确定幅度误差加权函数。B. 采用雷米兹交替算法,获得所设计的滤波器的单位脉冲响应。1.2.4 三种设计方法的比较时窗函数法和频率采样法,设计简单方便,易于实现,缺点是不能够精确指定滤波器的边界频率和,并且不能够分别控制通带和阻带波纹。等波纹法能够分别独立控制通带和阻带波纹,确定边界频率,并且所设计的滤波器的阶数与前两种方法相比要少。第二章 基于MATLAB的FIR数字滤波器的设计与仿真 2.1 MATLAB软件 MATLAB是由MATRIX和LABORATORY两个英文

24、单词的前三个字母组合而成,意为矩阵实验室。它有着强大的数值分析、符号运算、信号处理和图形显示的功能,能够满足绝大部分的计算要求。MATLAB程序语言语法结构和C语言相似,简单易用,可移植性好,易于开发。MATLAB内嵌了许多科学研究和工程应用领域的工具箱(Tool box),诸如优化算法、神经网络、信号处理、图像处理、嵌入式系统开发、DSP与通讯、电力系统仿真等,使用户可以直接使用工具箱进行学习、应用和研究而不需要自己编写代码。 MATLAB内嵌了一个优秀的仿真软件Simulink,主要用来实现对工程问题的建模和动态仿真。Simulink应用了模块化设计和系统级仿真的思想,使得建模仿真如同搭积

25、木一样简单。Simulink可以应用于动力系统、信号控制、通信系统设计、金融财会及生物医学等多个领域。Simulink还可以与MATLAB中的DSP工具箱、信号处理工具箱以及通信工具箱等联合使用,进而实现软硬件的接口,从而成为实用的控制软件。2.2 使用MATLAB函数进行FIR数字滤波器的设计设计指标:归一化通带截止频率:0.2归一化阻带截止频率:0.4通带最大衰减:1db阻带最小衰减:47d类型:FIR低通2.2.1 时窗函数设计法根据阻带最小衰减,查看表1-2,选择汉明窗,过渡带带宽为。MATLAB程序如下:clear all;Wp=0.2*pi;Ws=0.4*pi;B=Ws-Wp;N=

26、ceil(6.6*pi/B)+1;n=0:1:N-1;a=(N-1)/2;Wc=(Ws+Wp)/2;hd=sin(Wc*(n-a+eps)./(pi*(n-a+eps);w_ham=(hamming(N);hn=hd.*w_ham;freqz(hn,1);求得滤波器的长度为34,可知该滤波器类型为II型低通。频率响应如图2-1所示,实际的归一化通带截止频率为0.247,阻带最小衰减为50db,滤波器线性相位。图2-1 使用窗函数法设计的FIR低通的频率响应2.2.2 频率采样设计法根据阻带最小衰减,可确定m=1。过渡带带宽B=Ws-Wp=0.2,由N=20,取N=21。令过渡带样值为0.3,W

27、p位于n=3处。MATLAB程序如下:N=21;T1=0.3;a=(N-1)/2;n=0:(N-1);wl=(2*pi*n/N);Hrs=1,1,T1,zeros(1,15),T1,1,1;Hdr=1,1,0,0;Wd=0,0.2,0.2,1;k1=0:floor(N-1)/2);k2=(floor(N-1)/2+1):(N-1);angH=-a*2*pi*k1/N,a*2*pi*k2/N;H=Hrs.*exp(j*angH);h=real(ifft(H,N);freqz(h,1);频率响应如图2-2所示。实际的归一化通带截止频率为0.15,阻带最小衰减为50db。滤波器类型为I型低通。图2-

28、2使用频率采样法设计FIR低通滤波器的频率响应2.2.3 等波纹最佳逼近设计法等波纹最佳逼近法的MATLAB程序如下:wp=0.2*pi;ws=0.4*pi;Rp=1;As=47;a1=(10(Rp/20)-1)/(10(Rp/20)+1);a2=10(-As/20);rip=a1,a2;f=wp/pi,ws/pi;m=1,0;M,f0,m0,w=remezord(f,m,rip);hn=remez(M,f0,m0,w);freqz(hn,1);使用等波纹最佳逼近法设计的FIR滤波器的滤波器的长度为16,归一化通带截止频率为0.20,阻带最小衰减为43db。频率响应如图2-3所示。图2-3 使

29、用等波纹法设计FIR低通滤波器的频率响应2.3使用FDATool设计FIR数字滤波器 MATLAB提供了功能齐全的滤波器设计,与信号处理交互式图形用户界面(Interactive Graphicla User Interface),主要包括FDATool和SPTool两种交互工具。其中FDATool主要用于数字滤波器的设计和分析,而SPTool不仅可以设计,分析滤波器,而且可以对信号进行时域和频域进行分析。本次设计的硬件实现就是采用FDATool工具设计的滤波器。在MATLAB命令窗口中,执行“FDATool”命令,就会启动FDATool滤波器设计与分析工具,其图形界面如图2-4所示。 图2-

30、4 FDATool界面Response type选择低通,选中FIR类型,再选择等波纹。然后选择归一化频率,通带截止频率选择0.2,阻带截止频率选择0.4,通带最小衰减选择1db,阻带最小衰减选择47db,点击DESIGN FILTER按键,即可设计FIR滤波器了。滤波器的频率响应和图2-3中相同。滤波器的系数如式(2-1)所示。 (2-1)2.4 使用Simulink进行仿真 仿真原理:一个50Hz的正弦波和450Hz的正弦波相加得到受干扰的信号,然后通过所设计的FIR低通滤波器滤出。 仿真过程:打开Simulink,新建一个mdl文件,然后将3.3节中设计的FIR滤波器转换成一个Simul

31、ink模块,并拖入到新建的mdl文件中。然后在Simulink Library 里找到DSP工具箱,拖出两个正选波模块,一个设置为:幅度为1,频率为50Hz,初始相位为0,采样时间为0.001s,每帧采样点数为100,另一个除了频率为450Hz,初始相位为以外,其它均与第一个相同。再分别拖入频谱示波器和矢量示波器。频谱示波器缓冲区设为512,缓冲输出设为256,矢量示波器帧数设为5帧。最后在拖入相加模块,便可以搭建模型了。连接方式如图2-5。由于篇幅限制,本文只给出了输出信号波形及频谱,以及混杂有噪音的信号波形。具体如图2-6,2-7,2-8所示。可以看到,450Hz的噪音已经衰减到45db以

32、上,所设计的滤波器较好的实现了滤波功能。图2-5 Simulink仿真图2-6 混有噪音的信号波形图2-7 输出的信号波形图2-8 输出的信号的频谱第三章 EDA技术与分布式算法3.1 EDA技术3.1.1 EDA技术简介EDA是Electronic Design Automation 的缩写,意思是电子设计自动化,即利用计算机自动完成电子系统的设计。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。EDA技术作为现代电子设计技术的核心,通过功能强大的计算机和EDA工具软件平台,对以硬件描述语言HDL为

33、系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,以至实现既定的电子线路系统功能。3.1.2 QUARTUS II软件介绍 QUARTUS II是ALTERA公司在21世纪初推出的FPGA/CPLD开发环境,是ALTERA前一代FPGA/CPLD集成开发环境MAX+PLUS II的更新换代产品,其功能强大,界面友好,使用简便。QUARTUS II软件集成了ALTERA的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。图3-1给出了QUARTUS II软件的交互界面。图3-1 QUARTUS II软件的交互界面 QUARTUS

34、 II具有一下特点: A支持多时钟定时分析、Logic Lock基于块的设计、SOPC(可编程的片上系统)、内嵌SignalTapII逻辑分析仪和功率估计器等高级工具。 B易于引脚分配和时钟约束。 C强大的HDL综合能力。 D支持的器件种类多。 利用QUARTUS II软件进行FPGA/CPLD开发的流程如图3-2所示。图3-2 FPGA/CPLD开发流程图3.1.3 FPGA介绍可编程逻辑器件PLD(Programmable Logic Devices)是ASIC(Application Specific Integrated Circuits)的一个重要分支。FPGA属于复杂高密度的PLD

35、器件。FPGA使用了可编程的查找表(Look Up Table,LUT)结构,其中LUT是可编程的最小的逻辑构成单元。LUT示意图如图3-3所示。图3-3 查找表结构图由于设计人员可以将存储在片外的EPPROM或者计算机的配置数据控制加载到FPGA器件中进而实现在现场修改器件的逻辑功能,FPGA得到了普遍的应用。 下面以CYLONEII系列FPGA器件为例来介绍一下FPGA器件的结构。CYLONEII系列FPGA器件是由美国Altera公司生产的中端产品。CYLONEII系列FPGA器件采用了90nm工艺,片内逻辑单元数量最多可达68416个逻辑单元,片内存储器容量最多可达1.1Mbts,用户

36、可用引脚最多有622个。CYLONEII系列FPGA器件嵌有乘法器,这些乘法器可用于完成高速乘法操作,使得CYLONEII系列FPGA器件的数字信号处理能力得到增强。CYLONEII系列FPGA器件的速度等级有三个:-6,-7和-8,其中-6的速度最快。 CYLONEII系列FPGA器件的内部资源是按行、列的方式呈二维分布,如图3-4所示。这些资源主要包括逻辑阵列、M4k存储器块、乘法器等。这些资源模块通过FPGA内部的各种连接通路连接起来。图3-4 EP2C20资源分布图 逻辑单元(Logic Element,LE)是FPGA内部用于完成用户资源的最小单元。一个逻辑阵列包含16个逻辑单元以及

37、一些其他资源。一个逻辑单元主要有以下部件组成:一个4输入的查找表,一个可编程的寄存器,一条进位链和一条寄存器级联链。逻辑单元结构图如图3-5所示。 图3-5 逻辑单元结构图CYLONEII系列FPGA器件内部的存储器是以M4k存储器块的形式按列排列的,每个M4k存储器块的大小为4608bit。M4k存储器块包括输入/输出寄存器,输入寄存器用于同步输入信号,输出寄存器在设计中增加一级流水线,使用输入/输出寄存器可以改善电路的性能。M4k存储器除了可以用作标准的存储器使用外,还可以被配置为移位寄存器、先入先出寄存器、只读存储器等。CYLONEII系列FPGA器件内部嵌有硬件乘法器,可以完成高速乘法

38、运算操作。实现许多数字信号处理运算如滤波、快速傅里叶变换、卷积、解相关等。CYLONEII系列FPGA器件关于时钟控制的部分主要是全局时钟网络和锁相环(PLL)。全局时钟网络负责把时钟分配到器件内部的各个单元,控制器件内部的所有资源。锁相环可以完成分频、倍频、移相等关于时钟的基本操作。3.2 FPGA设计方法 传统的数字系统设计一般是从选择具体的元器件开始,通过这些元器件进行逻辑电路设计,完成系统中各独立功能模块的设计,再把这些模块连接起来,组装成整个硬件系统。上述过程是自下而上的。这种设计过程的优点是符合硬件工程师的设计习惯,缺点是在进行底层设计时缺乏对整个系统总体性能的把握,在整个系统设计

39、完成后,如果发现性能不能满足要求,修改起来比较困难,因而设计周期长。 与上述设计过程相反,自顶向下的设计过程是在设计的最高层,把整个系统看成是包含输入输出端口的单个模块,并在系统层次上对其性能进行描述,再通过系统仿真,对其性能进行优化,然后这个系统模块又可以进一步划分为各个子功能模块,再对每一个子功能模块进行描述,同时进行相关的仿真,最后通过FPGA开发工具提供的逻辑综合软件自动地综合到特定元器件上,从而完成设计工作。 采用自顶向下的设计方法,可以从一开始就掌握要实现的系统的性能,再结合要实现的系统的具体性能要求,通过调整,直接进行性能的优化。随着设计层次的向下的进行,系统的性能参数将进一步得

40、到细化,并随时根据需要进行调整,从而保证了设计的正确性,缩短了设计的周期,而且随着系统的扩大,这种设计方法的优势更为明显。3.3 分布式算法3.3.1 分布式算法基础 分布式算法(Distributed Arithmetic,DA)是一项重要的FPGA技术,广泛地应用于计算乘积和: (3-1)。这种算法可用于滤波器、卷积、相关、DFT等凡是有乘累加运算的地方。 一个线性时不变网络的输出可用式(3-1)表示。假设为常量,为变量。对于有符号DA系统,可表示为: (3-2)将式(3-2)代入式(3-1),得 (3-3)其中x(n)为(B+1)位,称为位乘积,其中b=0,B+1。函数的实现方法是利用一

41、个LUT实现映射,预先设定程序的LUT接收一个N位的输入向量,输出为,各个映射都由相应的二次幂加权累加,最后得到一次滤波的结果。 由上分析可知,分布式算法是将乘法运算转换成基于查找表结构的移位相加算法,从而实现多个乘法运算操作。在被乘数位数较少的情况下,相比直接的乘法器结构,这种算法有明显的速度和算法优势。这种算法尤其是在乘法器资源很少的FPGA器件中有很大的应用前景。3.3.2 并行的分布式算法 分布式算法有串行实现方式和并行实现方式。并行方式的算法结构如图3-6所示。图中ROM的输出和求和结果的输出都加上了虚线框,这些虚线框为流水线寄存器。上下级流水线寄存器之间的数字电路按照时钟频率工作而

42、不用考虑它们本身的延迟,这使得整个系统的工作频率增加,从而加快了运算速度。但是这种并行结构增加了额外的LUT、寄存器和加法器。当输入数据位宽较少时,比如4到8位,这种实现方式会有令人满意的结果。图3-6 并行DA结构3.3.3 串行的分布式算法串行方式不能有效地提高系统的处理速度,但是能够节省大量的资源。一个四阶的FIR滤波器的串行DA结构如图3-7所示。位移寄存器中存储着按先入先出顺序从高位到低位排列的数据比特,每隔一个字长抽出一个抽头。这样,每个数据的低位到高位将会相继移出到抽头。然后再对ROM进行寻址,得到一个部分积后移位累加,最终得到输出结果。图3-7四阶FIR滤波器的串行DA结构第四

43、章 15阶并行FIR数字滤波器的设计与仿真4.1顶层文件的设计 利用自顶向下设计方法,按照并行分布式算法,本文首先设计出了并行FIR数字滤波器的顶层文件。其数据流向及结构示意图如图4-1所示。图4-1 并行FIR数据及结构图顶层文件的VHDL代码如下:library ieee;-FIR文件Use ieee.std_logic_1164.all;entity filter isport(xin:in std_logic_vector(7 downto 0);-输入端口 clk:in std_logic; yout:out std_logic_vector(15 downto 0);-十六位输出e

44、nd filter;architecture arc of filter iscomponent reg isport (xin: in std_logic_vector (23 downto 0); clk:in std_logic; yout:out std_logic_vector(15 downto 0);end component;component shiftadd is -移位相加port(z0,z1,z2,z3,z4,z5,z6,z7:in std_logic_vector(12 downto 0); clk:in std_logic; y:out std_logic_vect

45、or(23 downto 0);end component;component firrom is -查找表port(y0,y1,y2,y3,y4,y5,y6,y7:in std_logic_vector(7 downto 0); clk:in std_logic; z0,z1,z2,z3,z4,z5,z6,z7:out std_logic_vector(12 downto 0);end component;component preadd is -预相加port(a0,a1,a2,a3,a4,a5,a6,a7,b0,b1,b2,b3,b4,b5,b6,b7:in std_logic_vect

46、or(7 downto 0); clk: in std_logic; y0, y1, y2, y3, y4, y5, y6, y7: out std_logic_vector (7 downto 0);end component;component shiftreg is -并行延时port (xin: in std_logic_vector (7 downto 0) ; clk: in std_logic; a0,a1,a2,a3,a4,a5,a6,a7,b0,b1,b2,b3,b4,b5,b6,b7:buffer std_logic_vector (7 downto 0);end comp

47、onent;signal s: std_logic_vector (23 downto 0);signal a0,a1,a2,a3,a4,a5,a6,a7,b0,b1,b2,b3,b4,b5,b6,b7:std_logic_vector (7 downto 0);signal y0, y1, y2, y3, y4, y5, y6, y7:std_logic_vector (7 downto 0);signal z0,z1,z2,z3,z4,z5,z6,z7:std_logic_vector(12 downto 0);beginu1:shiftreg port map(xin=xin,clk=c

48、lk,a0=a0,a1=a1,a2=a2,a3=a3,a4=a4,a5=a5,a6=a6,a7=a7,b0=b0,b1=b1,b2=b2,b3=b3,b4=b4,b5=b5,b6=b6,b7=b7);u2:preadd port map(a0=a0,a1=a1,a2=a2,a3=a3,a4=a4,a5=a5,a6=a6,a7=a7,b0=b0,b1=b1,b2=b2,b3=b3,b4=b4,b5=b5,b6=b6,b7=b7,clk=clk,y0=y0,y1=y1,y2=y2,y3=y3,y4=y4,y5=y5,y6=y6,y7=y7);u3:firrom port map(y0=y0,y1=

49、y1,y2=y2,y3=y3,y4=y4,y5=y5,y6=y6,y7=y7,clk=clk,z0=z0,z1=z1,z2=z2,z3=z3,z4=z4,z5=z5,z6=z6,z7=z7);u4:shiftad port map(z0=z0,z1=z1,z2=z2,z3=z3,z4=z4,z5=z5,z6=z6,z7=z7,clk=clk,y=s);u5:reg port map(xin=s,clk=clk,yout=yout);end arc;4.2 并行FIR各个模块的设计4.2.1 输入数据预处理模块 该模块用于将A/D转换器输出的8位有符号数据转换成二进制补码形式,并进行锁存。由于在

50、计算机中采用的数据形式是二进制补码,为了仿真方便,在仿真时去掉了这个模块。该模块的VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity complement8 isport (xin:in std_logic_vector(7 downto 0);-输入为二进制原码 clk:in std_logic; yout:out std_logic_vector(7 downto 0);-输出为二进制补码end complement8;architecture arc of com

51、plement8 is signal buf:std_logic_vector(7 downto 0); signal b:std_logic;beginb=xin(7);process(clk)beginif clkevent and clk=1 thenif b=1 thenbuf=(xin(7)&(notxin(6)&(not xin(5)&(not xin(4)&(not xin(3)&(not xin(2)&(not xin(1)&(not xin(0)+1;else buf=xin;end if ;end if;end process;yout=buf;end arc; 由图4-2

52、所示, 该模块的时序仿真图形证明了设计的正确性。图4-2 输入预处理模块的时序仿真4.2.2 并行延时模块 输入数据输送到并行延时模块,在每个时钟周期,把一组数据顺序时延,每经过16个时钟周期,就会有一个数据移出并行延时模块。这些并行时延模块是有16组D触发器串联而成,并且共用一个时钟。并行延时模块的VHDL代码如下:library ieee;use ieee.std_logic_1164.all;entity shiftreg isport (xin:in std_logic_vector(7 downto 0); clk:in std_logic; a0,a1,a2,a3,a4,a5,a6

53、,a7:buffer std_logic_vector(7 downto 0); b0,b1,b2,b3,b4,b5,b6,b7:buffer std_logic_vector(7 downto 0);end shiftreg;architecture arc of shiftreg isbeginprocess(clk)beginif clkevent and clk=1 thenb0=b1;b1=b2;b2=b3;b3=b4;b4=b5;b5=b6;b6=b7;b7=a7;a7=a6;a6=a5;a5=a4;a4=a3;a3=a2;a2=a1;a1=a0;a0=xin;-十六组数据顺序时延

54、end if;end process;end arc;4.2.3 预相加模块 由于线性相位FIR滤波器的系数关于中心位置具有对称性,因此可以通过将对称的x(n)进行相加,这样可以节省8个乘法器,从而降低了硬件的规模。此外,该模块还产生了位乘积的地址。该模块的VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity preadd isport( a0,a1,a2,a3,a4,a5,a6,a7:in std_logic_v

55、ector(7 downto 0); b0,b1,b2,b3,b4,b5,b6,b7:in std_logic_vector( 7 downto 0); clk:in std_logic; y0,y1,y2,y3,y4,y5,y6,y7:out std_logic_vector(7 downto 0);end preadd;architecture arc of preadd issignal c0,c1,c2,c3,c4,c5,c6,c7:std_logic_vector(8 downto 0);beginc0=(a0(7)&a0)+(b0(7)&b0);c1=(a1(7)&a1)+(b1(

56、7)&b1);c2=(a2(7)&a2)+(b2(7)&b2);c3=(a3(7)&a3)+(b3(7)&b3);c4=(a4(7)&a4)+(b4(7)&b4);c5=(a5(7)&a5)+(b5(7)&b5);c6=(a6(7)&a6)+(b6(7)&b6);c7=(a7(7)&a7)+(b7(7)&b7);process(clk)beginif clkevent and clk=1 theny0=c7(1)&c6(1)&c5(1)&c4(1)&c3(1)&c2(1)&c1(1)&c0(1);y1=c7(2)&c6(2)&c5(2)&c4(2)&c3(2)&c2(2)&c1(2)&c0(2

57、);y2=c7(3)&c6(3)&c5(3)&c4(3)&c3(3)&c2(3)&c1(3)&c0(3);y3=c7(4)&c6(4)&c5(4)&c4(4)&c3(4)&c2(4)&c1(4)&c0(4);y4=c7(5)&c6(5)&c5(5)&c4(5)&c3(5)&c2(5)&c1(5)&c0(5);y5=c7(6)&c6(6)&c5(6)&c4(6)&c3(6)&c2(6)&c1(6)&c0(6);y6=c7(7)&c6(7)&c5(7)&c4(7)&c3(7)&c2(7)&c1(7)&c0(7);y7=c7(8)&c6(8)&c5(8)&c4(8)&c3(8)&c2(8)&c1(8)&c0(8);end if;end process;end arc;该模块的时序仿真图形如图4-3所示。图4-3 预相加模块时序仿真4.2.4 查找表模块该模块用于对位乘积的寻址。一个8位的地址,可以产生个数据。为了节约FPGA资源,可以采用LUT分割技术,将一个8位地址的LUT分割成两个4位地址的LUT。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!