毕业设计(论文)基于FPGA的FIR滤波器设计.doc

上传人:文库蛋蛋多 文档编号:4141971 上传时间:2023-04-07 格式:DOC 页数:26 大小:1.17MB
返回 下载 相关 举报
毕业设计(论文)基于FPGA的FIR滤波器设计.doc_第1页
第1页 / 共26页
毕业设计(论文)基于FPGA的FIR滤波器设计.doc_第2页
第2页 / 共26页
毕业设计(论文)基于FPGA的FIR滤波器设计.doc_第3页
第3页 / 共26页
毕业设计(论文)基于FPGA的FIR滤波器设计.doc_第4页
第4页 / 共26页
毕业设计(论文)基于FPGA的FIR滤波器设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《毕业设计(论文)基于FPGA的FIR滤波器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA的FIR滤波器设计.doc(26页珍藏版)》请在三一办公上搜索。

1、目 录引言11软件及硬件平台211 VHDL语言特点212 MAX plusII开发环境313 可编程逻辑器件414 ALTERA公司FLEX 10K系列52FIR滤波器基本理论621 数字滤波器概述622 有限长单位冲激响应(FIR)滤波器6221 FIR滤波器特点6222 FIR滤波器结构723 FIR数字滤波器的实现方法83.基于FPGA实现FIR滤波器的研究931 基于乘法器结构的 FIR 滤波器在 FPGA 上的实现结构9311基于乘累加 FIR 滤波器结构9312 基于并行乘法器直接型 FIR 滤波器结构1032 基于分布式(DA)算法的 FIR 滤波器在 FPGA 上实现结构11

2、321 用分布式原理实现FIR滤波器串行方式12322 用分布式原理实现FIR滤波器并行方式1333 CSD码及最优化方法144线性相位FIR滤波器的设计1641 FIR滤波器的设计要求1642 软件环境和硬件平台选择1643 FIR滤波器的设计方案1644 各模块设计175仿真结果及分析2151 仿真结果2152 仿真结果分析226总结22致谢23参考文献23ABSTRACT25基于FPGA的FIR滤波器设计摘要:本文提出了一种采用现场可编程门阵列器件(FPGA)实现FIR数字滤波器的方案,并以Altera公司的FPGA器件EPF10K30为例完成了FIR滤波器的模块化设计过程。底层采用VH

3、DL语言描述设计文件,顶层使用底层产生的模块连接组成FIR滤波器,并在MAX+plusII上进行了实验仿真。仿真结果表明:该设计方案可行,可为今后的数字滤波器模块化研究提供另一种思路。关键词:VHDL;FPGA;FIR滤波器;Maxplus引言许多工程技术领域都涉及到信号,这些信号包括电的、磁的、机械的、热的、声的、光的及生物体的等等。如何在较强的背景噪声和干扰信号下提取出真正的信号并将其用于实际工程,这正是信号处理要研究解决的问题。20世纪60年代,数字信号处理理论得到迅猛发展,理论体系和框架趋于成熟,到现在它已经成长为一门独立的数字信号处理学科。数字滤波器在数字信号处理中占有很重要的地位,

4、它涉及的领域很广,如:通信系统、系统控制、生物医学工程、机械振动、遥感遥测、地质勘探、航空航天、电力系统、故障检测、自动化仪器等。系统数字滤波是提取有用信息非常重要而灵活的方法,是现代信号处理的重要内容。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应可接近理想特性,且精度很高又容易集成。在现代电子系统中,FIR数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。在工程实践中,往往要求对信号处理要有实时性和灵活性,而已有的一些软件和硬件实现方式则难以同时达到这两方面的要求。硬件描述语言(VHDL)是数字系统高层设计的核心,是实现数字系统设计新方法的关键技术之

5、一。随着可编程逻辑器件在速度和集成度方面的飞速发展,使用FPGA来实现FIR滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用FPGA器件来实现FIR滤波器,FIR数字滤波器在数字信号处理系统中应用非常普遍,常被用来对原始(或输入)样本数据进行消除高频、抑制噪声等处理以产生所需的输出。数字滤波器的好坏对相关的众多工程技术领域影响很大,一个好的数字滤波器会有效地推动众多工程技术领域的技术改造和科学发展。所以对数字滤波器的工作原理、硬件结构和实现方法进行研究具有一定的意义。本设计将采用现场可编程门阵列器件(FPGA)实现FIR数字滤波器的方案,底层采用VHDL语言描述设计文件,顶

6、层使用底层产生的模块连接组成FIR滤波器,并在Max+plusII上进行实验仿真。由仿真结果判断设计的可行性。1软件及硬件平台11 VHDL语言特点VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)VHDL可以用简洁明确的代码描述来进行复杂控制

7、逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。VHDL设计是行为级的设计,所带来的问题是设计者的设计思想与实际电路结构是相脱节的。设计者主要是根据VHDL的语法规则,对系统目标的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化,通过仿真工具进行逻辑功能仿真和系统延时的仿真。实际设计过程中,由于每个设计工程师对语言规则、对电路行为的理解程度不同,每个是大相径庭。因此,即使最后综合出的电路都能实现相同的逻辑功能,其电路的复杂程度和时延特性都会

8、有很大的区别,甚至某些臃肿的电路还会产生难以预料的问题。从这些问题出发,很有必要深入讨论在VHDL设计中如何简化电路结构,优化电路设计的问题。一段独立的VHDL代码至少包含3个组成部分:库(LIBRARY)声明:列出了当前设计中需要用到的所有库文件,如ieee,std和work等。实体(ENTITY):定义了电路的输入/输出引脚。构造体(ARCHITECTURE):所包含的代码描述了电路要实现的功能。库是一些常用代码的集合,将电路设计中经常使用的代码存放到库中有利于设计的重用和代码共享,库的典型结构如图1-1。代码通常以函数(FUNCTION)、过程(PROCEDURE)或元件(COMPONE

9、NT)等标准形式存放在包裹(PACKAGE)中,用户可以根据需要对其进行编译使用。 库包集函数过程元件常量类型图1-1 一个库的基本组成部分为了更有效的编写VHDL代码,必须知道哪些数据类型是可用的以及怎样说明和使用它们。表1-1中总结了VHDL中基本的可综合的数据类型。表1-1 VHDL中基本的可综合的数据类型数据类型 可综合的数据BIT,BIT_VECTOR 0,1STD_LOGIC,STD_LOGIC_VECTIR X,0,1,ZSTD_ULOGIC,STD_ULOGIC_VECTOR X,0,1,ZBOOLEAN True,FalseNATURAL 0到+2147483647INTEG

10、ER -2147483647到+2147483647UNSIGNED 0到+2147483647用户自定义整型 INTEGER的子集用户自定义枚举类型 根据用户自定义进行编码得到SUBTYPE 任何预定义或用户自定义类型的子集ARRAY 任意上述单一类型数据的集合RECORD 任意上述多重类型数据的集合VHDL的语法基础的学习令人感到枯燥乏味,但只有在对数据类型、运算操作符及其属性有了深刻理解之后,才有可能写出高质量和高效率的代码。表1-2总结了VHDL中数据类型、运算操作符及其属性。表1-2 VHDL中数据类型、运算操作符及其属性操作符类型操作符操作数类型赋值运算逻辑运算算术运算比较运算移位

11、运算并置运算NOT,AND,NAND,OR,NOR,XOR,XNOR+,-,*, /,*(mod,rem,ads)=,/=,=sll,srl,sla,sra,rol,ror&,(,)任意数据类型BIT,BIT_VECTOR,STD_LOGIC,STD_LOGIC_VECTOR,STD_ULOGIC,STD_ULOGIC_VECTORINTEGER,SIGNED,UNSIGNED任意数据类型BIT_VECTORSTD_LOGIC,STD_LOGIC_VECTOR,STD_ULOGIC,STD_ULOGIC_VECTORSIGNED,UNSIGNED12 MAX plusII开发环境Max+plu

12、sII(Multiple Array Matrix and Programmable Logic User System)是Altera公司在Windows环境下开发的可编程逻辑设计软件平台。该软件提供了一种真正与结构无关的全集成化的设计环境,可支持不同结构的器件,如FLEX、MAX以及CLASSIC系列器件等;丰富的设计库可供设计者灵活使用;允许用各种输入方式输入逻辑设计文件,经过系统编辑器的编译、综合等操作后分配到一个或多个器件中。MAX+plusII开发系统的特点如下(1)开放的接口MAX+plusII支持与其他工业标准EDA(Electronic Design Automation)工

13、具软件共同使用的接口,这一接口符合EDIF200和EDIF300标准、参数化模块库LPM(Library of Parameterized Modules)2.1.0、标准延迟格式SDF(Standard Delay Format)1.0和SDF2.0、VITAL95、Verilog HDL、VHDL1987和VHDL1993以及其他标准。同时也可以使用其他的电子设计自动化EDA工具软件进行设计输入,再利用MAX+plusII进行编译处理。(2)与结构无关(指VHDL描述在逻辑综合前与结构无关)MAX+plusII系统的核心Compiler(编译程序),支持Altera公司的FLEX10K、F

14、LEX10KA、FLEX10KB、FLEX10KE、MAX5000、MAX7000、MAX9000、FLEX6000、FLEX8000等可编程逻辑器件系列,提供了一个真正与结构无关的可编程逻辑设计开发环境。它的编译器还提供了强大的逻辑综合与优化功能,使用者可在最短的时间内完成高效的设计。(3)多平台MAX+plusII可在PC机的MS Windows和Windows NT环境下,以及多种工作站的Windows环境下运行。(4)完全集成化MAX+plusII的设计输入、处理与校验功能全部集成在统一的开发环境下,这样可以加快动态调试,缩短开发周期。(5)多种设计库MAX+plusII提供了丰富的库

15、单元,其中包括74系列的全部器件和多种特殊的逻辑宏单元器件(Macor-Function),以及新型的参数化宏功能器件(Mega-Function)。调用库单元进行设计,可以缩短设计周期。(6)模块化工具设计者可以从各种设计输入、处理和校验选项中进行选择,从而使设计环境用户化。(7)硬件描述语言(HDL)MAX+plusII软件支持VHDL、Verilog HDL和Altera公司自己的硬件描述语言AHDL。(8)开放核的特点MAX+plusII软件具有开放核(Opencore)的特点,允许设计人员添加自己的宏函数。(9)Magecore的功能Magecore是为复杂的系统及功能提供的、经过校

16、验的HDL(硬件电路)网表文件,能使FLEX10K、FLEX8000、FLEX600、MAX9000HE、MAX7000器件系列实现最优化设计。13 可编程逻辑器件FPGA (Field Programmable Gates Array, 现场可编程门阵列)和CPLD (Complex Progr ammable Logic Device,复杂可编程逻辑器件)属于高容量的可编程逻辑器件,是在PAL、 GAL等简单PLD的基础之上发展起来的。同PAL、GAL等比较,FPGA/CPLD的规模较大,适合于时序、组合等逻辑电路的应用场合,可以替代几十甚至上百块通用IC芯片。这种芯片具有可编程和实现方案

17、容易改动的特点。由于芯片内部硬件连接关系的描述可以存放在ROM、PROM或EPROM中,因而在可编程门阵列芯片及其外围电路保持不动的情况下,换一块EPROM芯片就能实现新的功能。因此当FPGA/CPLD芯片及其开发系统一问世,就在数字系统设计领域占据了重要地位。 现场可编程门阵列(FPGA)是近十年加入到用户可编程技术行列中的器件。现场可编程门阵列在器件的选择和内部的互连上提供了更大的自由度。FPGA的结构类似于掩膜可编程门阵列(MPGA),由逻辑功能块排列成阵列组成,并由可编程的内部连线连接这些逻辑功能块来实现不同的设计。FPGA是由掩膜可编程门阵列和可编程逻辑器件两者特性结合演变而来的,所

18、以FPGA既具有门阵列的高密度和通用性,又有可编程逻辑器件的用户可编程特性。对于ASIC设计,采用FPGA在实现小型化、集成化和高可靠性的同时,还减少了风险,降低了成本,缩短了周期。FPGA可以达到比PLD更高的集成度,但具有更为复杂的布线结构和逻辑实现。PLD与FPGA之间的主要差别是PLD通过修改具有固定内连电路的逻辑来进行编程。 可编程逻辑器件的自顶向下设计方法是目前数字系统设计中最常采用的一种设计方法,也是基于芯片的系统设计的主要方法。它首先从系统设计入手,在顶层进行功能划分和结构设计,采用硬件描述语言对高层次的系统进行描述,并在系统级采用仿真手段验证设计的正确性,然后再逐层设计低层结

19、构。由于高层次的设计与器件及工艺无关,并且在芯片设计前就可以用软件仿真手段验证系统方案的可行性,因此自顶向下的设计方法有利于在早期发现结构设计中的错误,避免不必的重复设计,提高设计的一次性成功率。所有FPGA是在用户可编程的特性和它们的快速设计以及诊断能力上类似于可编程逻辑器件。对于快速周转的样机,这些特性使得FPGA成为用户的首选,而且FPGA比CPLD更适合于实现多级的逻辑功能。14 ALTERA公司FLEX 10K系列Altera公司的FLEX 10K嵌入式可编程系列产品是将传统的可编程逻辑与嵌入式门阵列有机地结合在一起的新型器件。FLEX 10K器件主要由嵌入式阵列、逻辑阵列、Fask

20、Track互连和I/O单元四部分构成。还具有6个用于驱动寄存器控制端的专用输入引脚,以确保高速低失真控制信号的有效分布,这些信号使用具有比FaskTrack互连更短延时和更小失真的专用布线通道。4个全局信号可由4个专用输入引脚驱动,也可以由器件内部逻辑驱动。这为时钟分配或产生异步清除信号(可以提供器件内部多个寄存器)提供了理想的方法。由于它有两个独特的逻辑应用结构:嵌入式阵列和逻辑阵列。从而使FLEX 10K系列产品革新了可编程结构并挤身为门阵列市场的主流。FLEX 10K系列器件是一种嵌入式PLD产品。FLEX(可更改逻辑单元阵列)采用可重构的CMOS,SRAM单元,其结构集成了可实现通用多

21、功能门阵列所需的全部特性。FLEX 10K系列器件的容量可达25万门,因此能够高密度、高速度、高性能地将整个数字系统,包括32位多总线系统集成于单个器件之中。FLEX 10K系列有三代产品,而每一代都较前一代具有更高的性能、更低的成本及功耗。Altera的快速、高效以及易于操作的MAX+plus设计软件可提供对换FLEX 10K系列产品的支持。将MAX+plus软件与广义的可用于FLEX 10K器件的IP单元结合起来可有效地简化设计工作,并极大地缩短设计流程。这些特性将使得FLEX 10K系列成为当今先进而有效的门阵列替代产品。2FIR滤波器基本理论21 数字滤波器概述数字滤波器是一个离散时间

22、系统(按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置)。应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即1/2抽样频率点呈镜像对称。为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的或时变的

23、、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不变数字滤波。数字滤波器根据其冲激响应函数的时域特性,可分为2种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。FIR系统不像IIR系统那样易取得较好的通带和阻带衰减特性,要取得较好的衰减特性,一般要求H(z)阶次要高,也即M要大。FIR系统有自己突出的优点:系统总是稳定的;易实现线性相位;允许设计多通带(或多阻带)滤波器,后两项都是IIR系统不易实现的。FIR数字滤波器的设计方法有多种,如窗函数设计法、频率采样法和Chebyshev逼近法等。22 有限长单位冲激响应(FIR)滤波器221 FIR滤波器特点有限长单位

24、冲激响应(FIR)滤波器有以下特点:(1)系统的单位冲激响应h(n)在有限点n值处不为零;(2)系统函数H(z)在|z|0处收敛,在|z|0处只有零点,有限z平面只有零点,极点全部在z=0处(因果系统);(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。设FIR滤波器的单位冲激响应h(n)为一个N点序列,0nN-1,则该滤波器的系数函数为 (2-1)就是说,它有在(N-1)阶极点在z=0处,有(N-1)个零点位于有限z平面的任何位置。FIR数字滤波器的特点(与IIR数字滤波器比较):(1)很容易获得严格的线性相位,避免被处理的信号产生相

25、位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要。(2)可得到多带幅频特性。222 FIR滤波器结构FIR滤波器有横截型结构,级联型结构,频率抽样型结构,快速卷积型结构。具有冲击响应序列h(0), h(1), h(N-1)的FIR滤波器有N个系数,称为N阶滤波器。滤波器的传递函数为: (2-2)FIR 滤波器输入,输出响应函数如下: k=0,1,N-1 (2-3)其中 N 为滤波器阶数,h(nk)为 FIR 数字滤波器的系数。直接型 FIR 数字滤波器结构图如下:图 2-1 直接型数字 FIR 滤波器结构图2-1中给出了N阶FIR滤波器的直接型实现的图解。可以看出,FI

26、R滤波器是由一个“抽头延迟线”加法器和乘法器的集合构成。传给每个乘法器的操作数就是一个FIR系数。所需乘法次数是N,加法次数是N-1。如果FIR滤波器单位冲激响应h(n)为实数,且满足以下的条件:偶对称 h(n)=h(N-1-n) 奇对称 h(n)=-h(N-1-n)也就是说,其对称中心在n=(N-1)/2处,则这种FIR滤波器就具有严格线性相位。当阶数为偶数时 (2-4) 图2-2 N为偶数的滤波器结构 (h(n)偶对称时取取+1)相同系数的共用乘法器,只需个乘法器当阶数为奇数时 (2-5)图2-3 阶数为奇数的滤波器结构h(n)偶对称时取1,h(n)奇对称时取1,且即处的连线断开相同系数的

27、共用乘法器,只需(N+1)/2个乘法器23 FIR数字滤波器的实现方法FIR数字滤波器的实现,大体可以分为软件实现和硬件实现方法两种。软件实现方法即是在通用的微型计算机上用软件实现。利用计算机的存储器、运算器和控制器把滤波所要完成的运算编成程序通过计算机来执行,软件可由使用者编写,也可以使用现成的。国内外的研究机构、公司已经推出了不同语言的信号滤波处理软件包。但是这种方法速度慢,难以对信号进行实时处理,虽然可以用快速傅立叶算法来加快计算速度,但要达到实时处理要付出很高的代价,因而多用于教学与科研。硬件实现即是设计专门的数字滤波硬件,采用硬件实现的方法一般都比采用软件实现方法要困难得多,目前主要

28、采用的方法有以下几种:(1)采用DSP(Digital Signal Processing)处理器来实现DSP处理器是专为数字信号处理而设计的,如TI公司的TMS320CX系列,AD公司的ADSP21X、ADSP210X系列等。它的主要数字运算单元是一个乘累加器(Multiply-accumulator, MAC),能够在一个机器内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒叙寻址能力。这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快,成本低,在过去的20多年的时间里,软件可编程的DSP器件几乎统治了商用数字信号处理硬件的市场。(2)采用固定功能的专

29、用信号处理器专用信号处理器采用专用的集成电路ASIC(Application Specific Integrated Circuits)来实现,适用于过程固定而又追求高速的信号处理任务,是以指定的算法来确定它的结构,使用各种随机逻辑器件组成的信号处理器。它们体积小、保密性好、具有极高的性能,然而灵活性差。二者相比,固定功能的DSP专用器件可以提供很好的实时性能,但其灵活性差,很难满足电路设计者独特的设计要求,为了达到通用性该类器件工作的有效采用率也比较有限,仍然无法满足高采样率设计的需求,且其研发周期长,难度也比较的大;DSP处理器的成本低且速度较快,灵活性好,但由于软件指令是串行执行的,当滤

30、波器的抽头数增加或者字节增加时,计算时间会成倍增加,降低了最大有效数据采样率,限制了它在高速和实时系统中的应用,加之DSP芯片本身的时钟速度是有限的,在一些高速应用中,系统性能的要求不断增长,而DSP性能的提高却落后于需求的增长,所以这种方法一般用于音频信号的处理。现在,大规模可编程逻辑器件为数字信号处理提供了一种新的实现方案。采用现场可编程门阵列FPGA来实现FIR数字滤波器,既兼顾ASIC器件(固定功能DSP专业芯片)的实时性,又具有DSP处理器的灵活性。FPGA和DSP 技术的结合能够更进一步提高集成度、加快速度和扩展系统功能。用FPGA设计的产品还具有体积小、速度快、重量轻、功耗低、可

31、靠性高、仿制困难、批量成本低等优点。3.基于FPGA实现FIR滤波器的研究目前FIR滤波器的实现方法有三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好。但长期以来,FPGA一直被用于系统逻辑或时序控制上,很少有信号处理方面的应用,其原因主要是因为在FPGA中缺乏实现乘法运算的有效结构。现在这个

32、问题得到了解决,使FPGA在数字信号处理方面有了长远的发展。31 基于乘法器结构的 FIR 滤波器在 FPGA 上的实现结构311基于乘累加 FIR 滤波器结构 采样数据、FIR数字滤波器系数读取控制器采样数据存储器FIR滤波器系数存储器图 3-1 基于乘累加的 FIR 滤波器硬件结构图 3-1 中,FIR 滤波器系数存储器用来存放所有的 FIR 滤波器系数,存储器的容量根据 FIR 滤波器的阶数和系数的位数来确定。采样数据存储器用来暂存外部输入的采样数据。读取控制模块用来控制采样数据与相对应的 FIR滤波器系数输出以及滤波器输出。采样数据与滤波器系数在控制电路的作用下,分别对应相乘并与前一个

33、乘积累加,经过多次(有多少阶就要多少次)反复的乘累加最后输出滤波结果。乘累加结构 FIR滤波器性能分析:优点是:这种滤波器结构简单,硬件资源占用少,只要一个加法器和一个乘法器,因此成本低。缺点是:这种结构 FIR 滤波器每次都要在多个时钟周期下才有输出,时钟周期的个数受滤波器阶数的影响。即使是使用多时钟控制,内部时钟周期还受乘法器运算速度的影响。这种乘累加结构的 FIR 滤波器处理速度慢,只能用于对处理速度要求低的系统。312 基于并行乘法器直接型 FIR 滤波器结构这种基于并行乘法器的 FIR 滤波器结构,如图 3-2,显然在一个时钟周期完成所有的乘法运算并将数据锁存,同时,加法运算也使用全

34、并行的结构。在每次乘法运算或加法运算结束后都引入一个寄存器锁存数据,增加运算过程的流水等级。图 3-2 基于并行乘法器直接型 FIR 滤波器结构 32 基于分布式(DA)算法的 FIR 滤波器在 FPGA 上实现结构分布式算法(DA)早在1973年就已经被Croisier提出来了,但是直到FPGA出现以后,才被广泛地应用在FPGA中计算乘积和。 一个线性时不变网络的输出可以用下式表示: (3-1)假设系数cn是已知常数,xn是变量,在有符号DA系统中假设变量xn的表达式如下: (3-2)式中,xbn表示z的第b位,而xn也就是x的第n次采样。于是,内积y可以表示为: (3-3)重新分别求和(也

35、就是分布式算法的由来),其结果如下: (3-4)从3-4式可以发现,分布式算法是一种以实现乘加运算为目的的运算方法。它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同。分布式算法在实现乘加功能时,是通过将各输入数据的每一对应位产生的部分积预先进行相加形成相应的部分积,然后再对各个部分积累加形成最终结果的,而传统算法是等到所有乘积已经产生之后再来相加完成乘加运算的。与传统串行算法相比,分布式算法可极大地减少硬件电路的规模,提高电路的执行速度。 321 用分布式原理实现FIR滤波器串行方式当系统对速度的要求不高时,可以采用串行的设计方法,它的实现框图如图3-3(虚线为流水线寄存器)所示

36、。这种结构占用资源少,一个 4 输入的乘累加运算只要一个 ROM,一个加法器和一些寄存器。缺点是运算速度不高。系统各个部分如 ROM,加法器处理速度可以达到很高,但由于是逐位串行,也就是整个输入乘累加要在输入数据在时钟控制下一位一位参与运算,且累加结束后,才会有输出。如当数据位宽为 N位时,至少要在 N个时钟周期后才有结果输出。xB0 x10 x00xB1 x11 x01 xBN-1 x1N-1 x0N-1LUT+/-寄存器2-1图3-3串行分布式(SDA)算法结构图在用LUT实现串行分布式算法的时候,假设系数为8位,则DA表的规模为2N8位。可以看到如果抽头系数N过多,则DA表的规模将十分庞

37、大。这是因为LUT的规模随着地址空间的变化(也就是N的增加)而呈指数增加。例如EPFl0K20包含1152个LC,而一个277位的表就需要394个LC。当N过大时,一个FPGA器件就不够用了。 为了减小规模,可以利用部分表计算,然后将结果相加。假定长度为LN的内积为: (3-5)将和分配到L个独立的N阶并行DA的LUT之中结果如下: (3-6) 图3-4 将表分割以产生简化式规模的分布式算法如图3-4所示,实现一个4N的DA设计需要3个次辅助加法器。表格的规模从一个2 NB位的LUT降到4个2 NB的位表。 322 用分布式原理实现FIR滤波器并行方式采用并行方式的好处是处理速度得到了提高。由

38、于数据是并行输入,所以计算速度要比串行方式快,但它的代价是硬件规模更大了。下面举出全并行的例子。 设 (3-7) (3-8)可将(3-4)式改写成如下形式 (3-9) 利用式(3-9)可得一种直观的加法器树,如图3-5所示。 图3-5 DA算法FIR的并行结构虽然硬件规模加大了,但是如果把系数的个数限制在4个或8个,再加上流水线寄存器,这个代价还是值得的。而且每张表都是相同的,不用为每个采样都设计一张表,减小了设计量。 DA算法的主要特点,是巧妙地利用ROM查找表将固定系数的MAC运算转化为查表操作,其运算速度不随系数和输入数据位数的增加而降低,而且相对直接实现乘法器而言在硬件规模上得到了极大

39、的改善。利用ALTERA的FLEXl0K实现的16阶8位系数的并行FIR滤波器,其时钟频率可以达到101MHz,而实现的16阶8位系数的串行FIR滤波器,其时钟频率可以达到63MHz,每9个时钟周期可完成一次计算。但是其系数是传统二进制的,造成了很大的冗余(对于用逐位相加法实现的乘法器,当系数有一位为零时不用相加,零位越多,冗余越大),而且查找表的大小随着滤波器阶数的增加成指数增加,虽然可以采用将大查找表分解为小查找表,但是无法从根本上解决这一问题,这些都是DA方法的缺点。 33 CSD码及最优化方法 一个整数X与另一整数Y的乘积的二进制表示可以写成: (3-10)对于标准二进制,由于Sn=0

40、时的对应项Y2n并不参与累加运算,所以可以用另一种表示方法使非零元素的数量降低,从而使加法器的数目减少,降低硬件规模。有符号数字量(SD)有三重值0,-1,+1,如果任意两个非零位均不相邻,即为标准有符号数字量(CSD)。 可以证明CSD表示对给定数是唯一的并且是最少非零位的。CSD表示相对于标准二进制表示的改进在于引入了负的符号位,从而降低了非零位个数,大大降低了逻辑资源的占用(大约平均降低33的逻辑资源)。 当用硬件实现时,常常限制系数位数,即每个系数与N个正(负)2的幂次之和近似。标准二进制数在整数轴上是紧密和均匀分布的,而CSD码是非均匀分布的,其对实系数的量化误差比标准二进制大,虽然

41、增加N可以减小量化误差,但是会增大逻辑资源的消耗;而且CSD表示无法应用流水线结构,从而降低处理速度。 还可采用优化的方法将系数先拆分成几个因子,再实现具体因子。这就是最优化的代码。例如对系数93,93=10111012=1100101CSD。用最优化法,系数93可以表示成93=331,每个因子需要一个加法器,如图3-6所示。图3-6 系数93的CSD实现及最优化实现从图3-6中可以看出,CSD码需要三个加法器,而最优法只需要两个加法器;CSD码的重要缺陷在于每一级加法都需要初节点参与,而最优表示仅依赖上一级加法的结果,因此也就更适合流水线处理。Dempster等人提出了需要1到4个加法器的所

42、有可能配置表。利用这张表,就可以合成成本在0与4个加法器之间的所有8位二进制整数。 基于乘法器结构的 FIR设计中乘法运算总是系数一个一个依次相乘的,也就是说有多少阶的 FIR滤波器,就需要多少次的乘法运算。在乘累加结构中由于累加次数与 FIR阶数成线性相关,所以对于高阶的 FIR滤波器设计一般不采用,而并行乘法器结构就会使用大量的乘法器。基于 FPGA的高阶 FIR滤波器,采用这种方法就显得很不节省资源。分布式算法就是将乘法运算转换成基于 ROM 查找表结构,并且高效地实现多个乘法运算操作,在速度上和资源占用上都比利用乘法器结构设计 FIR滤波器不可比拟的优势。4线性相位FIR滤波器的设计4

43、1 FIR滤波器的设计要求阶数:17输入数据宽度:9输出数据宽度:18滤波器系数h(n)=-18,-12,20,24,-22,-49,23,161,232,161,23,-49,-22,24,20,-12,-18,n=0,1,1742 软件环境和硬件平台选择滤波器设计采用Max+plusII开发平台。硬件采用EPF10K30RC208-3。43 FIR滤波器的设计方案在Max+plusII环境下采用原理图和VHDL语言相结合的方式编程。顶层原理图如图4-1所示。 图4-1 在maxplus下的顶层原理图根据滤波器原理可得,FIR滤波器其实就是对输入的值进行系数相乘再求和。因此,我们可以将FIR滤波器分解成延时模块,符号加法模块,符号乘法模块(系数包含在乘法器内部),多路加法器模块。各模块均采用VHDL语言设计。其中延时模块存放输入的数据;FIR滤波器系数放于模块乘法器内部;乘法加法模块完成数据与FIR滤波器系数的相乘和乘法结果的累加。工作原理描述如下:输入端2组信号,时钟和数据,在时钟的上升沿采样数据,时钟的下降沿输出数据。将读取的2个数据送至乘法加法模块进行相乘和结果累加。相加9次,相乘9次,即可得到当前的滤波结果输出。输出端数据宽度为18位,最高位为符号位,补码输出。44 各模块设计(1) 寄存器模块library ieee;use ieee.std

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号