数字滤波器的MATLAB与FPGA实现(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-07 16:30:34

点击下载

作者:杜勇

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数字滤波器的MATLAB与FPGA实现(第2版)

数字滤波器的MATLAB与FPGA实现(第2版)试读:

前言

为什么要写这本书

为什么要写这本书?两年前首次出版这本书时,我在前言中提到写作的原因主要有三条:其一是FPGA技术在电子通信领域得到了越来越广泛的应用,并已逐渐成为电子产品实现的首选方案;其二是国内市场上专门讨论如何采用FPGA实现数字通信技术的书籍相对欠缺;其三是数字通信技术本身十分复杂,关键技术较多,在一本书中全面介绍数字通信技术的FPGA实现难免有所遗漏,且内容难以翔实。因此,根据作者从业经验,将数字通信技术的关键技术大致分为滤波器技术、同步技术和解调技术三种,并尝试着先写滤波器技术,再逐渐完成其他两种关键技术的写作。在广大读者的支持和鼓励下,先后又出版了《数字通信同步技术的MATLAB与FPGA实现》和《数字调制解调技术的MATLAB与FPGA实现》两本书。这样,关于数字通信的FPGA实现的系列著作总算完成,三年前的构想总算得以成为现实!《数字滤波器的MATLAB与FPGA》(第1版)一书出版后,陆续收到广大读者的反馈意见。一些读者直接通过邮件告知书中的内容对工作中提供的直接或间接的帮助;一些读者提出了很多中肯的有建设性的意见和建议;更多的读者通过邮件交流书中的相关设计问题;还有一些读者直接指出了书中一些描述不准确的地方以及部分文字上的错误。在即将完成数字调制解调技术一书的初稿时,出版社告知《数字滤波器的MATLAB与FPGA》(第1版)一书即将售罄,因此,正好借着改版的机会对全书进行一次修订和完善。

与第一版相比,全书除第5、6章没有进行文字上的修订外,其他章节均进行了或多或少的修订,其中改动较大的是第3、7、9章。此次改版主要涉及以下几个方面。(1)更正了书中一些叙述不当的地方,大多是读者反馈回来的问题。(2)对读者提问较多的地方,叙述得更加详细。(3)第2章修改了实例2-4的VHDL设计,在实例中更加完整地展示了MATLAB与FPGA的数据交互过程。(4)第3章增加了“FPGA中数的运算”小节,更充分地讨论了有效数据字长的影响,以及定点数据运算过程中需要注意的事项。(5)第7章中增加了一节讨论“自适应陷波器”的内容。(6)第9章标题修改为“解调系统滤波器的FPGA实现”。由于符号同步及码型变换内容与滤波器关系不大,且原版讨论得也不够充分,因此直接删去了符号同步及码型变换的内容,这样更符合本书主讲数字滤波器这个主题。(7)配套光盘中的程序文件进行补充及优化。

通常来讲,一名电子通信专业的技术人员,在从业之初都会遇到类似的困惑:如何将从教材中所学的理论与实际中的工程设计结合起来?如何能够将这些教材中的理论转换成实际的电路?绝大多数数字通信类教材对通信的原理讲解十分透彻,但理论与实践之间显然需要有一些可以顺利通过的桥梁。一个常用的方法是通过采用MATLAB等工具进行软件仿真的方法来加深对理论的理解,但更好的方法显然是直接参与工程的设计与实现。

然而,刚毕业的工科院校学生极少有机会参加实际工程设计,工作中往往感到学校所学的理论知识很难与实际工程产品的实现联系起来。教科书上多是讲些解通信原理性的内容,即使可以很好地解答教材后面的习题,或者说能够熟练地对书中的基本公式进行推导,在实际进行产品设计时,如何将这些理论及公式用具体的电路或硬件平台实现出来,仍然是摆在广大工程师面前的一个巨大难关。尤其对于数字通信专业来讲,由于涉及的理论知识比较复杂,真正进行工程设计时才发现根本无从下手。采用MATLAB、System View等软件对通信理论进行仿真,虽然可以直观地验证算法的正确性,并查看仿真结果,但这类软件的仿真毕竟只停留在算法或模型的仿真上,与真正的工程设计及实现完全是两个不同的概念。FPGA技术很好地解决了这一问题。FPGA技术本来就是基于工程应用的技术,其仿真技术可以很好地仿真产品实际的工作情况,尤其是时序仿真技术,在计算机上通过了时序仿真的程序设计,几乎不再需要修改就可以直接应用到工程中。这种设计、验证、仿真的一体化方式可以极好的将理论与工程应用结合起来,从而提高学习兴趣。

FPGA技术因其快速的并行运算能力,以及独特的组成结构,在电子通信领域已成为必不可少的实现平台之一。本书的目的正是架起一座教科书理论与工程设计实践之间的桥梁,通过具体的设计实例,详细讲解从理论到工程实现的方法、步骤和过程,以便于工程技术人员尽快掌握利用FPGA平台实现数字通信技术的方法。

目前,市场上已有很多介绍ISE、QuartusⅡ等FPGA开发环境,以及VHDL、Verilog HDL等硬件编程语言的书籍。如果我们仅仅是使用FPGA来实现一些数字逻辑电路,或者理论性不强的控制电路设计,掌握FPGA开发工具及VHDL语法就可以开始工作了。数字通信技术的理论性要强得多,采用FPGA平台实现数字通信技术的前提条件是对理论知识首先要有深刻的理解。在理解理论知识的基础上,关键的问题是根据这些通信理论或公式,利用FPGA的特点,找到合适的算法实现结构,理清工程实现的思路,并采用VHDL等硬件编程语言对其进行正确的实现。因此,要顺利地读懂本书,掌握用FPGA实现数字通信技术的知识和技能,读者还需要对FPGA的开发环境和设计语言有一定的了解。

作者在写作本书的过程中,兼顾数字滤波器的理论,以及工程设计过程的完整性,重点突出FPGA设计方法、结构、实现细节,以及仿真测试方法。在讲解理论知识的时候,重点从工程应用的角度进行介绍,主要介绍工程设计时必须掌握和理解的知识点,并且结合FPGA的特点进行讨论,便于读者尽快地找到理论与工程实现之间的结合点。在讲解实例的FPGA实现时,不仅绝大多数实例给出了完整的VHDL程序代码,并且从思路和结构上对每段代码均进行了详细的分析和说明。根据作者的理解,针对一些似是而非的概念,结合工程实例的仿真测试加以阐述,希望能够对读者提供更多有用的参考。相信读者按照书中讲解的步骤完成一个个工程实例时,会逐步感觉到理论与工程实现之间完美结合的畅快。随着读者掌握的工程实现技能的提高,对数字滤波器理论知识的理解也必将越来越深刻,重新阅读以前学过的滤波器原理时,头脑里就更容易构建起理论与工程实现之间的桥梁。

本书的内容安排

第1章首先介绍了滤波器的基本概念、FPGA的基本知识,以及Xilinx公司的主要器件。本章在介绍了FPGA的发展历程、结构及工作原理等基本知识后,对FPGA设计中经常使用到的各种IP核进行了简要说明。目前的FPGA厂家主要有Xilinx公司及Altera公司。两家公司几乎都有性能相近的产品,但所使用的开发工具无法通用。Xilinx公司作为FPGA的发明者及FPGA行业的领导者,通过不断应用尖端技术来长久保持它的行业领袖地位。由于不同器件的结构不同,因此各有其合理的应用领域,为了提高设计性能并节约产品成本,了解器件基本特性,合理选择最终的目标器件显得尤为重要。因此,本章最后对Xilinx公司的主要芯片进行了介绍,在后续章节中也将利用Xilinx公司的Spartan及Virtex系列FPGA器件作为目标实现平台进行讲解。

第2章首先介绍了硬件描述语言的基本概念及优势,并对VHDL语言进行了简要介绍。对本书使用到的软件开发仿真环境——ISE开发套件、Modelsim仿真软件、Synplicity综合软件以及MATLAB软件进行了简要介绍。最后以一个简单的混频器设计实例较为详细地阐述了FPGA与MATLAB软件进行联合开发的过程,这也是本书后续章节在讲述各种滤波器设计时所采用的基本方法和流程。数字滤波器的FPGA设计与实现是一项将理论与实践紧密结合的技术,要求设计者不仅要十分清楚数字滤波器以及数字信号处理的基本原理,同时还需要掌握MATLAB软件的使用方法、VHDL编程以及FPGA实现技术。

数字信号在FPGA等硬件系统中实现时,由于受寄存器长度的限制,不可避免地会产生有效字长效应。设计工程师必须了解字长效应对数字系统可能带来的影响,并在实际设计中通过仿真来确定最终的量化位数、寄存器长度等内容。第3章在详细分析了字长效应在FPGA设计中的影响后,对几种常用的运算模块IP核进行介绍,详细阐述了各IP核控制参数的设置方法,并给出了几个简单的模块应用实例。IP核在FPGA设计中的应用十分普遍,尤其在数字滤波器等信号处理领域,采用设计工具提供的IP核进行设计,不仅可以提高设计效率,而且可以保证设计的性能。特别需要说明的是,从读者反馈的信息来看,虽然大多数问题是针对其他章节的实例提出的,但问题的本质不少都与数据有效字长效应有关。因此,建议读者详细阅读本章内容,并且深入理解FPGA中的数字运算,以及有效字长效应对信号处理所带来的影响。

从第4章开始,本书正式讨论各种数字滤波器的FPGA实现。FIR滤波器是数字滤波器中最常见、使用最广泛的一种滤波器。为便于读者深入了解FIR滤波器的设计原理及方法,本章简要讲述了与数字滤波器设计相关的基础理论知识。接着对常用的MATLAB函数设计方法进行了介绍。采用MATLAB设计出符合要求的滤波器系数后,还应采用VHDL等硬件编程语言进行设计实现。根据FPGA的结构特点,具体实现FIR滤波器时有几种不同的设计方法,本章详细阐述了几种常用结构的设计方法,最后介绍了ISE11.3提供的功能强大的FIR核。在实际工程设计中,如果目标器件提供了相应的FIR核,则建议读者尽量采用IP核的方法进行设计实现。

第5章讨论了IIR滤波器的FPGA实现。IIR滤波器因其较高的滤波效率,十分利于在不需要严格相位特性的系统中使用。本章在介绍IIR滤波器基本原理时,重点对IIR与FIR滤波器的异同点进行了比较。接下来对常用的5种IIR滤波器设计函数进行了介绍,并比较了几种设计函数的滤波性能。IIR滤波器的FPGA实现相对于FIR滤波器来讲要复杂一些,主要原因在于其反馈结构,并且目前的FPGA设计软件并没有提供通用的IP核使用。本章详细阐述了IIR滤波器的FPGA实现过程,以及实现过程中需要注意的系数量化方法、计算输出数据位宽、MATLAB仿真及FPGA实现后仿真等关键问题。

第6章首先介绍了多速率信号处理的一些基本概念,以及多速率信号处理的一般步骤。抽取与内插是多速率信号处理的基础,读者需要从原理上了解抽取与内插的具体过程,以及对信号在时域及频域的影响。抽取与内插操作本身十分简单,多速率信号处理的关键问题是如何有效设计滤波器。CIC滤波器的结构简单,没有乘法器,只有加法器、积分器和寄存器,适合于在高采样率条件下工作。半带滤波器可以使2倍抽取的每秒乘法次数比一般线性相位的FIR滤波器减少近1/2,因此特别适合应用于转换率为2的整数次幂变换的系统。需要注意的是,CIC滤波器及半带滤波器虽然十分节约资源,但均有其特定的使用条件。本章最后介绍了另一种在多速率信号处理中使用十分广泛的多相分解技术,并通过具体实例展示了多相结构滤波器的性能优势。

第7章首先对自适应滤波器的概念、应用及一般原理进行了简单介绍,而后针对应用广泛的LMS算法原理、实现结构进行了阐述,并采用MATLAB对LMS算法进行了仿真验证。以LMS算法为基础,本章分别以通道失配校正系统、自适应均衡器、智能天线阵、自适应陷波器为具体实例,详细阐述了FPGA实现自适应滤波器算法的步骤、方法及过程。为给读者提供更多的设计参考,在讨论上述不同自适应滤波器的FPGA实现过程中,分别以常规LMS算法、符号LMS算法进行讨论。自适应滤波器相对于常规滤波器来讲,在FPGA实现过程中,关键在于清楚掌握算法实现过程中各数据变量的变化范围,并以此确定各中间变量的数据字长及小数点位置,同时还需根据各运算步骤所需的运算量,合理分配各时钟周期内的运算量,以提高系统的整体运算速度。

相对于时域滤波器而言,变换域滤波器给出了一个全新的滤波器设计思路。一些在时域无法滤除的干扰信号,在变换域可十分容易地滤除。具体选择哪种滤波器,要根据输入信号的统计特征、滤波器实现的复杂度、运算速度等因素综合考虑。第8章首先对变换域滤波器的基本概念、快速傅里叶变换(FFT)、ISE提供的FFT核等内容进行了简单介绍,这些知识都是进行变换域滤波器设计的基础。本章重点对变换域滤波器实现抗窄带干扰的FPGA设计与实现进行了详细讨论。采用变换域滤波技术实现窄带干扰滤除的原理并不复杂,在FPGA设计与实现过程中,难点在于准确把握各模块之间、各运算步骤之间,以及各信号接口之间的时序关系,并在设计中严格按照这些时序关系进行程序的编写。从这个实例中读者可以进一步体会到时序在FPGA设计中的重要性。

为了使读者对通信系统的FPGA实现有更完整的认识,本书最后一章以一个较为完整的DPSK解调系统为实例,在简单介绍数字接收机、DPSK调制解调原理的基础上,详细讨论了整个工程设计的全过程。尤其对解调环路中的数字滤波器设计、载波环路的参数设计、FPGA实现细节进行了详尽的分析,并给出了具有指导意义的几个设计原则。在整个工程设计过程中,可以看到,滤波器仍然是解调系统的重要组成部分,其性能的优劣直接影响到整个系统的性能。通过详细分析讨论,并动手设计整个DPSK解调系统,相信读者会对无线通信技术的FPGA实现方法、手段、过程有较为深刻的理解。

关于FPGA开发环境的说明

众所周知,目前两大厂商Xilinx和Altera的产品占据了全球90%的FPGA市场。可以说,在一定程度上正是由于两家FPGA公司的相互竞争态势,有力地推动了FPGA技术的不断发展。虽然HDL的编译及综合环境可以采用第三方公司所开发的产品,如Modelsim、Synplify等,但FPGA器件的物理实现必须采用各自公司开发的软件平台,无法通用。Xilinx公司的主流开发平台是ISE系列套件,Altera公司目前的主流开发平台是QUARTUS Ⅱ系列套件。与FPGA开发平台类似,HDL也存两种难以取舍的选择:VHDL和Verilog HDL。

如何选择开发平台以及HDL语言呢?其实,对于有志于从事FPGA技术开发的技术人员来讲,选择哪种平台及HDL语言并不重要,因为两种平台具有很多相似地方,精通一种HDL语言后,再学习另一种HDL语言也不是一件困难的事。通常来讲,可以根据周围同事、朋友、同学,或公司的主要使用情况进行选择,这样在学习的过程中,可以很方便地找到能够给你指迷津的专业人士,从而加快学习进度。

本书采用的是Xilinx公司的FPGA器件作为开发平台,采用VHDL语言作为实现手段。由于VHDL语言并不依赖于某家公司的FPGA产品,因此本书的VHDL程序文件可以很方便地移植到Altera公司的FPGA产品上。如果程序中应用了IP核资源,两家公司的IP核通常是不能通用的,这就需要根据IP核的功能参数,在另外一个平台上重新生成IP核,或编写HDL代码来实现。

有人说过这样一句话:“技术只是一个工具,关键在于思想。”将这句话套用过来,对于本书来讲,具体的开发平台以及HDL语言只是实现数字通信技术的工具,关键在于设计的思路和方法。因此,读者完全不必要过于在意开发平台的差别,相信只要掌握了本书所讲述的设计思路和方法后,加上读者已经具备的FPGA开发经验,采用任何一种FPGA平台都可以很快设计出满足用户需求的产品。

如何使用本书

本书讨论的是数字滤波器的MATLAB与FPGA实现。相信大部分工科院校的学生对MATLAB软件应该都会有一个基本的了解。由于其易用性及强大的功能,MATLAB已经成为数学分析、信号仿真、数字处理必不可少的工具;而且,MATLAB具有专门针对数字信号处理的常用函数,如滤波器函数、傅里叶分析函数等,在进行数字滤波器设计时,借用MATLAB常常会起到事半功倍的效果。因此,在具体讲解某个实例时,通常会采用MATLAB作为仿真验证工具。

第2章的混频器设计实例给出了完整的FPGA设计过程,也给出了全书实例讲解的基本步骤和方法。先采用MATLAB对需要设计的工程进行仿真,一方面仿真算法过程及结果,另一方面生成FPGA测试仿真所需的测试输入数据;而后在ISE平台上编写VHDL程序对实例进行设计实现;编写Testbench测试激励文件,采用Modelsim软件对VHDL程序进行行为和时序仿真;查看Modelsim仿真波形结果,并将仿真数据写入外部文本文件中;最后编写MATLAB程序,对Modelsim仿真结果数据进行分析处理,验证FPGA设计的正确性。

限于篇幅,实例的部分MATLAB程序代码或VHDL代码没有在书中列出,随书配套的光盘上收录了本书所有实例的源程序及工程设计资源。程序代码及工程文件按章节序号置于光盘根目录下,读者可以将其直接复制到本地硬盘中运行。需要说明的是,在大部分工程实例中,均需要由MATLAB产生FPGA测试所需的文本数据文件,或者由MATLAB读取外部文件进行数据分析,同时FPGA仿真的Testbench文件常常也需要从指定的路径下读取外部文件数据,或将仿真结果输出到指定的路径下。文本文件的路径均在程序中指定为绝对路径,如fid=fopen(' D:\DuYong\Filter_VHDL\MultHalfBand\E6_11_Int_Sin.txt' , ' w' )。因此,读者将FPGA工程文件或MATLAB程序复制到本地硬盘后,请将程序文件中指定文件的绝对路径的代码进行修改,以确保仿真测试程序在正确的路径下读取文件。

致谢

有人说,每个人都有他存在的使命,如果迷失他的使命,就失去了他存在的价值。不只是每个人,每件物品也都有其存在的使命。对于一本书来讲,其存在的使命就是被阅读,并给阅读者带来收获。数字通信的FPGA设计系列的书,能够对读者在工作及学习中有所帮助,是作者莫大的欣慰。

作者在写作本书的过程中查阅了大量的资料,在此对资料的作者及提供者表示衷心的感谢。由于写作本书的缘故,重新阅读一些经典的数字通信理论书籍时,再次深刻感受到前辈们严谨的治学态度和细致的写作作风。

感谢电子工业出版社的大力支持,这本书能够改版,使得我有机会在采纳广大读者反馈意见的基础上,改正第一版中的一些不足之处,并尽力使这本书变得更加完善。

在此,感谢父母,几年来一直陪伴在我的身边,由于他们的默默支持,使得我能够在家里专心致志的写作;感谢我的妻子刘帝英女士,她不仅是一位尽心尽职的优秀母亲,也是一位严谨细致的科技工作者,同时也是本书的第一位读者,在工作之余对本书进行了详尽而细致的校对;特别值得一提的是我即将上小学四年级的女儿,晚上作业完成之后已经不再自告奋勇地说帮我做作业,更多的时候是早早约好同学到外面玩去了。

FPGA技术博大精深,数字通信技术种类繁多且实现难度大。本书虽尽量详细讨论了FPGA实现数字滤波器技术的相关内容,仍感觉到难以详尽叙述工程实现所有细节。相信读者在实际工程应用中经过不断的实践、思考及总结,一定可以快速掌握数字滤波器技术的工程设计方法,提高应用FPGA进行工程设计的能力。由于作者水平有限,不足之处在所难免,敬请读者批评指正。欢迎大家与我就相关技术问题进行交流,交流请发邮件至duyongcn@sina.cn,也可以访问网址http://duyongcn.blog.163.com以获得与该书相关的资料及信息。作者2014年6月第1章数字滤波器及FPGA概述数字滤波器(Digital Filter, DF)一词出现在20世纪60年代中期,通常定义为通过对数字信号的运算处理,改变信号频谱,完成滤波作用的算法或装置。由于电子计算机技术和大规模集成电路的发展,数字滤波器既可用计算机软件实现,也可用大规模集成数字硬件实时实现。数字滤波器在语音信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛的应用。现场可编程门阵列(Field Programmable Gate Array, FPGA)因其良好的并行运算能力,以及无与伦比的可重配置性、可扩展性能,已经成为现代电子通信产品中不可或缺的组成部分,尤其在数字滤波器设计等数字信号处理领域中得到了十分广泛的应用。Xilinx公司作为FPGA器件的发明者和行业领导者,通过对FPGA技术的不断创新,不断地推出了性能优良、价格低廉的FPGA产品及配套开发工具,从而推动了FPGA行业的不断发展。1.1滤波器概述1.1.1 滤波器简介

滤波器是一种用来减少或消除干扰的电气部件,其功能是将输入信号进行过滤处理得到所需的信号。滤波器最常见的用法是对特定频率的频点或该频点以外的频率信号进行有效滤除,从而实现消除干扰、获取某特定频率信号的功能。一种更广泛的定义是将凡是有能力进行信号处理的装置都称为滤波器。在现代电子设备和各类控制系统中,滤波器的应用极为广泛,其性能优劣在很大程度上直接决定了产品的优劣。

滤波器的分类方法有很多种,从处理的信号形式来讲可分为模拟滤波器和数字滤波器两大类。模拟滤波器由电阻、电容、电感、运放等电气元件组成,对模拟信号进行滤波处理。数字滤波器则通过软件或数字信号处理器件对离散化的数字信号进行滤波处理。两者各有优缺点及适用范围,且均经历了由简到繁以及性能逐步提高的发展历程。

1917年美国和德国科学家分别发明了LC滤波器,次年导致了美国第一个多路复用系统的出现。20世纪50年代,无源滤波器日趋成熟。自60年代起,由于计算机技术、集成工艺和材料工业的发展,滤波器发展上了一个新台阶,并且朝着低功耗、高精度、小体积、多功能、稳定可靠和价格低廉方向发展,其中小体积、多功能、高精度、稳定可靠成为70年代以后的主流方向,并导致RC有源滤波器、开关电容滤波器、电荷转移器和数字滤波器等各种滤波器的飞速发展。70年代后期,上述几种滤波器的单片集成芯片已被研制出来并得到应用。在80年代,人们致力于各类新型滤波器的研究,努力提高性能并逐渐扩大应用范围。90年代至今,各国主要致力于把各类滤波器应用于各类产品的开发和研制中,当然,对滤波技术本身的研究也在不断继续。

随着数字信号处理理论的成熟、实现方法的不断改进,以及数字信号处理器件性能的不断提高,数字滤波器技术的应用也越来越广泛,并竞相成为广大技术人员研究的热点。综合起来,与模拟滤波器相比,数字滤波器主要有以下特点。1)数字滤波器是一个离散时间系统

应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模/数转换。数字滤波器输入信号的抽样率应大于被处理信号带宽的2倍,其频率响应具有以抽样频率为间隔的周期重复特性。为得到模拟信号,数字滤波器处理的输出数字信号须经数/模转换和平滑处理。2)数字滤波器的工作方式与模拟滤波器完全不同

模拟滤波器完全依靠电阻、电容、晶体管等电子元件组成的物理网络实现滤波功能;数字滤波器则是通过数字运算器件对输入的数字信号进行运算和处理,从而实现设计要求的特性。3)数字滤波器具有比模拟滤波器更高的精度

数字滤波器甚至能够实现模拟滤波器在理论上也无法达到的性能。例如,对于数字滤波器来说很容易就能够做到一个1 000 Hz的低通滤波器,该滤波器允许999 Hz信号通过并且完全阻止1 001 Hz的信号,模拟滤波器却无法区分如此接近的信号。数字滤波器的两个主要限制条件是其速度和成本。随着集成电路成本的不断降低,数字滤波器变得越来越常见,并且已经成为了如收音机、蜂窝电话、立体声接收机等日常用品的重要组成部分。4)数字滤波器比模拟滤波器有更高的信噪比

因为数字滤波器是以数字器件执行运算的,从而避免了模拟电路中噪声(如电阻热噪声)的影响。数字滤波器中的主要噪声源是在数字系统之前的模拟电路引入的电路噪声,以及在数字系统输入端的模/数转换过程中产生的量化噪声。这些噪声在数字系统的运算中可能会被放大,因此在设计数字滤波器时需要采用合适的结构,以降低输入噪声对系统性能的影响。5)数字滤波器具有模拟滤波器无法比拟的可靠性

组成模拟滤波器的电子元件的电路特性会随着时间、温度、电压的变化而漂移,而数字电路就没有这种问题。只要在数字电路的工作环境下,数字滤波器就能够稳定可靠的工作。6)数字滤波器的处理能力受到系统采样频率的限制

根据奈奎斯特采样定理,数字滤波器的处理能力受到系统采样频率的限制。如果输入信号的频率分量包含超过滤波器1/2倍采样频率的分量时,数字滤波器因为频谱的混叠而不能正常工作。如果超出1/2采样频率的频率分量不占主要地位,通常的解决办法是在模/数转换电路之前放置一个低通滤波器(即抗混叠滤波器)将超过的高频成分滤除,否则就必须用模拟滤波器实现要求的功能。7)数字滤波器与模拟滤波器的使用方式不同

对于电子工程设计人员来讲,使用模拟滤波器时通常是通过直接购买满足性能的滤波器件,或给出滤波器的性能指标让厂家定做即可,使用方便。采用数字滤波器时通常需要自己编写软件程序代码,或使用可编程逻辑器件搭建所需性能的滤波模块,工作量大、调试设计复杂,但换来的是设计的灵活性、高可靠性、可扩展性等一系列优势,并可以大大降低硬件电路板的设计及制作成本。1.1.2 数字滤波器的分类

数字滤波器的种类很多,分类方法也不同,可以从功能上分,也可以从实现方法上分,还可以从设计方法上来分等。一种比较通用的分类方法是将数字滤波器分为两大类,即经典滤波器和现代滤波器。

经典滤波器是假定输入信号x(n)中的有效信号和噪声(或干扰)信号分布在不同的频带,当x(n)通过一个线性滤波系统后,可以将噪声信号成分有效地减少或去除。如果有效信号和噪声信号的频带相互重叠,那么经典的滤波器将无能为力。经典滤波器主要有低通滤波器(Low Pass Filter, LPF)、高通滤波器(High Pass Filter, HPF)、带通滤波器(Band Pass Filter, BPF)、带阻滤波器(Band Stop Filter, BSF)以及全通滤波器(All Pass Filter, APF)等。图1-1是各种经典滤波器的幅频特性响应示意图。图1-1 经典滤波器的幅频特性响应示意图jω

在图1-1中,ω为数字角频率,|H(e)|是归一化的幅频响应值。数字滤波器的幅频特性相对于π对称,且以2π为周期。

现代滤波理论研究的主要内容是从含有噪声的数据记录(又称为时间序列)中估计出信号的某些特征或信号本身。一旦信号被估计出,那么估计出的信号将比原信号有更高的信噪比。现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征(如自相关函数、功率谱函数等)推导出一套最佳的估值算法,然后用硬件或软件实现。现代滤波器主要有维纳滤波器(Wiener Filter)、卡尔曼滤波器(Kalman Filter)、线性预测器(Liner Predictor)、自适应滤波器(Adaptive Filter)等。一些专著将基于特征分解的频率估计及奇异值分解算法也归入现代滤波器的范畴。

从实现的网络结构或者单位脉冲响应来看,数字滤波器可以分成无限脉冲响应(Infinite Impulse Response, IIR)滤波器和有限脉冲响应(Finite Impulse Response, FIR)滤波器,二者的根本区别在于两者的系统函数结构不同。式(1-1)和式(1-2)分别为FIR及IIR的系统函数。

FIR与IIR滤波器系统函数的特点也决定了它们具有不同的实现结构及特点:FIR不存在输出对输入的反馈结构,IIR存在输出对输入的反馈;FIR具有严格的线性相位特性,IIR无法实现线性相位特性,且其频率选择性越好相位的非线性越严重。本书第4、5章将分别详细讨论FIR及IIR的特点及设计实现方法。

以上所介绍的滤波器有一个共同的特点,即它们都是在时域对信号进行各种处理,以实现滤除干扰获取有用信号的功能。有些情况下在时域很难滤除的干扰,在频域却可以十分容易地进行分辨及处理。例如,在有用信号频段内的强窄带干扰,如果将信号变换到频域,则可以十分容易地进行滤除。这种信号处理方法也就是频域滤波器技术,即将输入的时域信号先经过运算变换成频域信号,在频域也可以采用与时域相类似的滤波处理方法对干扰信号进行处理,然后将频域信号反变换成时域信号输出。特别是随着快速傅里叶变换(Fast Fourier Transform)算法的应用,以及高性能超大规模集成电路的发展,变换域滤波技术也得到了越来越广泛的应用。1.1.3 滤波器的特征参数

对于经典滤波器的设计来说,理想的情况是完全滤除干扰频带的信号,同时有用频带信号不发生任何衰减或畸变。也就是说,滤波器的形状在频域呈矩形,而在频域上呈矩形的滤波器转换到时域后就变成一个非因果系统了(详细分析及推导请参见文献[1,2]),这在物理上是无法实现的。因此,工程上设计时只能尽量设计一个可实现的滤波器,并且使设计的滤波器尽可能地逼近理想滤波器性能。图1-2是设计低通滤波器时需要明确的特征参数示意图。图1-2 低通滤波器特征参数示意图P1

如图1-2所示,低通滤波器的通带截止频率为ω,通带容限为α,jωS2P1阻带截止频率为ω,阻带容限为α。通带定义为|ω|≤ω,1-α≤|H(e )|jωS2PS≤1;阻带定义为ω≤|ω|≤π, |H(e)|≤α;过渡带定义为ω≤ω≤ω。通带内和阻带内允许的衰减一般用dB来表示,通带内允许的最大衰减PSPS用α表示,阻带内允许的最小衰减用α表示,α和α1分别定义为:

式中,归一化为1。当PP时,α=3 dB,称此时的ω为低

通滤波器的3 dB通带截止频率。1.2FPGA基本知识1.2.1 FPGA的基本概念及发展历程1.基本概念

随着数字集成电路的发展,越来越多的模拟电路逐渐被数字电路取代,同时数字集成电路本身也在不断地进行更新换代。它由早期的电子管、晶体管、中小规模集成电路发展到超大规模集成电路(Very Large-Scale Integrated Circuit, VLSIC),以及许多具有特定功能的专用集成电路(Application Specific Integrated Circuit, ASIC)。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。电子工程设计师们更愿意自己设计专用集成电路芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了可编程逻辑器件(Programmable Logic Device, PLD),其中应用最广泛的即为现场可编程门阵列(Field Programmable Gate Array, FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device, CPLD)。PLD的主要特点是芯片或器件的功能完全由用户通过特定软件编程控制,并完成相应功能,并且可反复擦写。这样,用户在用PLD设计好印制电路板(Print Circuit Board, PCB)后,只要预先安排好PLD引脚的硬件连接,即可只通过软件编程的方式灵活改变芯片功能,从而达到改变整块PCB功能的目的。这种方法不需对PCB进行任何更改,从而大大缩短了产品的开发周期和成本。也就是说,由于使用了PLD进行设计,硬件设计已部分实现了软件化。随着生产工艺的不断革新,高密度、超大规模FPGA/CPLD器件越来越多地在电子信息类产品设计中得到应用,同时由于DSP(Digital Signal Processing,数字信号处理)、ARM(Advanced RISC Machines)与FPGA技术相互融合,在数字信号处理等领域,已出现了具有较强通用性的硬件平台,核心硬件设计工作正逐渐演变为软件设计。2.发展历程

早期的可编程逻辑器件是在20世纪70年代初出现的,这一时期只有可编程只读存储器(Programmable Read-only Memory, PROM)、可擦除可编程只读存储器(Erasable PROM, EPROM)和电可擦除只读存储器(Electrically EPROM, EEPROM)三种。这类器件结构相对简单,只能完成简单的数字逻辑功能,但也足以给数字电路设计带来巨大变化。

20世纪70年代中期出现了结构上稍复杂的可编程芯片,即可编程逻辑器件,它能够完成各种数字逻辑功能。典型的PLD由“与”门和“或”门阵列组成。由于任意一个组合逻辑都可以用“与-或”表达式来描述,所以PLD能以“乘积项”的形式完成大量的组合逻辑功能。这一阶段的产品主要有可编程阵列逻辑(Programmable Array Logic, PAL)和通用阵列逻辑(Generic Array Logic, GAL)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(Programmable Logic Array, PLA),它也是由一个“与”平面和一个“或”平面构成的,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑,如GAL16V8、GAL22V10等,它采用了EEPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人在使用。这些早期PLD器件的一个共同特点是,可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。

为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx两家公司分别推出了类似于PAL结构的扩展型CPLD和与标准门阵列类似的FPGA,它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和GAL的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。

20世纪90年代末以来,随着可编程逻辑器件工艺和开发工具日新月异的发展,尤其是Xilinx公司和Altera公司不断推出新一代超大规模可编程逻辑器件,FPGA技术与ASIC、DSP及CPU技术不断融合,FPGA器件中已成功以硬核的形式嵌入ASIC、PowerPC处理器、ARM处理器,以HDL的形式嵌入越来越多的标准数字处理单元,如PCI控制器、以太网控制器、MicroBlaze处理器、Nios以及NiosⅡ处理器等。新技术的发展不仅实现了软硬件设计的完美结合,也实现了灵活性与速度设计的完美结合,使得可编程逻辑器件超越了传统意义上的FPGA概念,并以此发展形成了现在流行的系统级芯片(System on Chip, SOC)及片上可编程系统(System on a Programmable Chip, SOPC)设计技术,其应用领域扩展到了系统级,涵盖了实时数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。图1-3 FPGA的演进历程

目前,FPGA的发明者——Xilinx公司已推出20 nm的UltraScale器件,UltraScale器件是Xilinx公司Virtex、Kintex FPGA以及3D IC系列的扩展器件,不但可提供前所未有的系统集成度,同时还支持ASIC的系统级性能。Xilinx正在开发第二代SoC和3D IC技术,以及下一代FPGA技术,其中包括FPGA性能/瓦的突破,以及与其下一代Vivado设计套件“协同优化”的器件。Xilinx在系统中重新定义了高性能收发器的设计和优化,从而可以更有效地把20nm的附加价值引入已经验证的28mn技术之中,相信FPGA的应用会得到更大的发展。FPGA的演进历程示意图如图1-3所示。1.2.2 FPGA的结构和工作原理1.FPGA的结构

目前所说的PLD器件,通常是指FPGA与CPLD器件。FPGA与CPLD器件因其内部结构不同,导致其集成度、运算速度、功耗及应用方面均有一定的差别。通常,将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice的Mach系列等,这类器件的逻辑门密度在几千到几万个逻辑单元之间。CPLD更适合触发器有限而乘积项丰富的结构,适合完成复杂的组合逻辑;通常将基于查找表(Look-Up-Table, LUT)结构的PLD器件称为FPGA,如Xilinx公司的Spartan-3、Spartan-6、VirtexⅡ、Virtex-4、Virtex-5、Virtex-6系列,Altera的FLEX10K或ACEX1K系列等。FPGA是在CPLD等逻辑器件的基础上发展起来的。作为ASIC领域的一种半定制电路器件,它克服了ASIC器件灵活性不足的缺点,同时解决了CPLD等器件逻辑门电路资源有限的缺点,这种器件的密度通常在几万门到几百万门之间。FPGA更适合于触发器丰富的结构,适合完成时序逻辑,因此在数字信号处理领域多使用FPGA器件。

目前主流的FPGA仍是基于查找表技术的,但已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核模块。如图1-4所示(图1-4只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构), FPGA芯片主要由6部分完成,分别为可编程输入/输出单元(Input/Output Block, IOB)、基本可编程逻辑块(Configurable Logic Block, CLB)、数字时钟管理模块(Digital Clock Manager, DCM)、嵌入式块RAM(Block RAM, BRAM)、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。图1-4 FPGA芯片内部结构示意图1)可编程输入/输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-5所示。

FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适应不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻的阻值。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2 Gbps的数据速率。外部输入信号可以通过IOB模块的存储单元输入FPGA的内部,也可以直接输入到FPGA内部。为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干个组(Bank),每个Bank的接口标准由其接口电压Vcco决定,一个Bank只能有一种Vcco,但不同Bank的Vcco可以不同。只有相同电气标准的端口才能连接在一起, Vcco电压相同是接口标准化的基本条件。图1-5 FPGA内部的IOB结构图2)基本可编程逻辑块(CLB)

CLB是FPGA内的基本逻辑单元,其实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵(Switch Matrix),此矩阵由4个或6个输入模块、多路复用器和触发器等组成。开关矩阵是高度灵活的,可以对其进行配置以便实现组合逻辑、移位寄存器或RAM等功能。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-6所示。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。图1-6 典型的CLB结构示意图

Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-7所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND)。一个异或门可以使一个Slice实现2 bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片Slice中的两个输入函数为6输入,可以实现6输入LUT或64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。图1-7 典型的4输入Slice结构示意图3)数字时钟管理模块(DCM)

业内大多数FPGA均提供数字时钟管理(Xilinx公司的全部FPGA均具有这种特性)。Xilinx公司推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。4)嵌入式块RAM(BRAM)

大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、地址存储器(CAM)以及FIFO等常用存储结构。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部的块RAM数量也是选择芯片的一个重要因素。

单片块RAM的容量为18 Kbit,即位宽为18 bit、深度为1 024。用户可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽×深度)不能大于18 Kbit;其次,位宽最大不能超过36 bit。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内的块RAM数量,而不再受上面两条原则约束。5)丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源。根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别:第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际工程设计中,设计者不需要直接选择布线资源,布局布线器可自动根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上来讲,布线资源的使用方法和设计的结果有密切、直接的关系。6)底层内嵌功能单元

内嵌功能模块主要指延迟锁定环(Delay Locked Loop, DLL)、锁相环(Phase Locked Loop, PLL)、DSP等软处理核(Soft Core)。现在,越来越丰富的内嵌功能单元使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,并逐步向SOC平台过渡。DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了DCM和DLL, Altera公司的芯片集成了PLL, Attice公司的新型芯片上同时集成了PLL和DLL。PLL和DLL可以通过IP核生成工具方便地进行管理和配置。DLL的结构如图1-8所示。图1-8 典型DLL结构7)内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,FPGA内部集成的处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如,为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串/并收发器(SERDES),可以达到数10 Gbps的收发速度。Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,实现SOC的开发目的。2.FPGA的工作原理

众所周知,类似于PROM、EPROM、E2PROM可编程器件的可编程原理是通过加高压或紫外线导致三极管或MOS管内部的载流子密度发生变化,实现所谓的可编程,但是这些器件大多只能实现单次可编程,或者编程状态难以稳定。FPGA则不同,它采用了逻辑单元阵列(Logic Cell Array, LCA)这样一个新概念,内部包括可配置逻辑模块(Configurable Logic Block, CLB)、输入/输出模块(Input Output Block, IOB)和内部连线(Interconnect)三个部分。

FPGA的可编程实际上是改变了CLB和IOB的触发器状态,这样就可以实现多次重复的编程。由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。

根据数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不论是与、或运算,还是其他逻辑运算,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存储单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写程序文件去配置查找表的内容,从而在相同电路结构的情况下实现了不同的逻辑功能。查找表简称为LUT,其本质就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

从表1-1中可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。表1-1 LUT输入与门的真值表

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此在工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式编程。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后, FPGA恢复成白片,内部逻辑关系消失,因此FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只需用通用的EPROM、PROM编程器即可。Actel、QuickLogic等公司还提供反熔丝技术的FPGA,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。1.2.3 IP核的概念

IP(Intelligent Property)核是指具有知识产权的集成电路模块或软件功能模块的总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力的体现。对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占有率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

从IP核的提供方式上,通常将其分为软核、固核和硬核三类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用性最高。1.软核(Soft IP Core)

软核在EDA设计领域指的是综合之前的寄存器传输级(Register Transfer Level, RTL)模型。具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核是已通过功能仿真的功能模块,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP核应用最广泛的形式。2.固核(Firm IP Core)

固核在EDA设计领域指的是带有平面规划信息的网表,具体在

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载