基于FPGA的带通数字滤波器设计与实现.doc_第1页
基于FPGA的带通数字滤波器设计与实现.doc_第2页
基于FPGA的带通数字滤波器设计与实现.doc_第3页
基于FPGA的带通数字滤波器设计与实现.doc_第4页
基于FPGA的带通数字滤波器设计与实现.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书 基于FPGA的带通数字滤波器 设计与实现 学生姓名 专业名称电子信息工程 指导教师 电子与信息工程系 基于FPGA的带通数字滤波器设计与实现 FPGA-Based Band-Pass Digital Filter Design and Implementation 摘 要 随着高速 DSP 技术的广泛应用,实时而又快速可靠地进行数字信号的处理越来越 成为用户追求的目标。本文分析了国内外数字滤波技术的应用现状与发展趋势,介绍 了数字滤波器的基本结构,介绍了数字滤波器的理论及常见的实现方法。FPGA 是常用 的可编程逻辑器件,它所具有的查找表结构非常的适用于实现实时而又快速可靠的数 字滤波器上,加上 Verilog 语言灵活的描述方式以及与硬件无关的这种特点,使得使 基于 Verilog 语言的 FPGA 芯片实现数字滤波器成为研究的方向。 本文正是围绕着硬件描述语言在数字硬件系统设计中的应用展开来的。首先从比 较传统的数字硬件系统的设计方法与采用硬件描述语言的数字硬件系统设计方法的特 点出发,介绍了EDA技术发展的过程以及VHDL语言的特点。介绍了分布式算法,基于 ALTERA公司四输入查找表结构的FPGA器件的带通数字滤波器设计技术和结合先进的 Quartus II软件、Matlab软件进行高效设计的方法和途径,给出了设计仿真结果。该 设计能够满足要求,设计效率高,对于FPGA硬件资源高效合理的利用。 关键词:FPGA;Verilog;查找表;分布式算法 ABSTRACT With the extensive application of high-speed DSP technology, the users pursuit the target that it is real time high-speed and reliable to process digital signal. This paper analyzes the situation of application and development of digital filter technology home and abroad, introduced the basic structure of the digital filter, introduce the theory of digital filter and common method of its implementation. FPGA is ones of usual PLD, and its architecture of LUT is be applicable to implement real-time, high-speed and reliable digital filter, in addition, Verilog HDL can be quickly learned and mastered , and has nothing to do with hardware, which make it to be a research problem that using Verilog achieves digital filters based on FPGA. This paper is arranged around the apply of Verilog in digital system design. We analyze the way of digital system design traditional and using Verilog ,and introduced the development of EDA, the characteristic of Verilog. Introduced the distributed algorithm, the design technology of the band-pass digital filter in digital algorithm design and implementation is described based on4-input look-up table in FPGA s, the way and method of high-speed design using excellent Quartus II software,Matlab software. The design can meet the quest and be high-speed, proper in using FPGA hardware. Keywords: FPGA; Verilog; LUT(Look-Up-Table); Distributed Algorithm 目 录 第 1 章 绪论 .1 1.1 数字滤波器研究的背景与意义 .1 1.2 数字滤波器的研究基础 .1 1.2.1 电子设计 EDA 自动化技术.1 1.2.2 可编程逻辑器件.2 1.2.3 硬件描述语言 Verilog 及数字系统设计方法.3 1.3 数字滤波器实现方法的现状分析 .4 1.4 本文的研究内容 .5 第 2 章 数字滤波器原理及设计方法 .7 2.1 数字滤波器的基本原理 .7 2.2 FIR 滤波器的基本网络结构 .8 2.2.1 FIR 数字滤波器的直接型网络结构.8 2.2.2 FIR 数字滤波器的线性相位型网络结构.9 2.3 FIR 滤波器的设计.10 2.3.1 频率抽样法设计 FIR 滤波器.10 2.3.2 窗函数法设计 FIR 滤波器.11 2.3.3 等纹波最佳一致逼近.12 第 3 章 基于 FPGA 设计 FIR 型带通滤波器 .14 3.1 指标的确定 .14 3.2 设计的思路 .14 3.2.1 FIR 基本算法.14 3.3 使用 MATLAB设计滤波器 .19 3.3.1 Matlab 来设计 FIR 型带通滤波器.20 第 4 章 FIR 滤波器的软件描述及仿真.22 4.1 FIR 型带通滤波器总体结构.22 4.2 16 位加法器的实现.23 4.3 8 位乘法器的实现.25 4.4 延时器的实现 .27 4.5 硬件下载 .30 4.6 结论 .30 致 谢 .30 参考文献 .31 附 录 .32 第 1 章 绪论 1 第 1 章绪论 1.1 数字滤波器研究的背景与意义 在航天、通信、医疗等电子系统的信号处理子系统中,数字信号处理 (DSP:Digtal Signal Processing)占据着重要的地位。与国民经济息息相关,与国防 建设紧密相连;数字滤波技术在语音和图像处理、谱分析、模式识别等很多应用中经 常被用到。和模拟滤波相比,数字滤波含有非常突出的优点。比如,它能够满足滤波 器对幅度和相位特性的技术要求,可以避免使用模拟滤波过程中不能克服的电压漂移、 温度漂移和噪声等等很多问题。数字滤波器依照冲激响应函数的对时域的要求,能够 把数字滤波器分成有限长冲激响应(FIR)和无限长冲激响应(IIR)滤波器滤波器两 种。因为 FIR 系统仅含有零点,所以系统十分稳定,使运算速度快、傅里叶变换 (FFT) 算法、线性相位的特性以及设计更有利于实现上更为的灵活等突出的优点因 而在实际工程中得到了广泛的应用。FPGA 是可编程逻辑器件中相对其他的一种比较复 杂的形式,其正处于数字信号处理的前沿。FPGA 与 ASIC 拥有许多的相同的特点。例如, 在重量、功耗以及规模等方面都有降低,吞吐量更高,可以更好的防止未授权复制、 元器件以及开发成本的进一步降低,也大大的缩短了开发所需的时间。在线路中重复 编程是它的重要特性。前端数字信号处理之运算都要用到它,PDSP 和 ASIC 逐渐的被全 新的可编程逻辑器件 FPGA 所替代。 电路设计的过程时候,它许可设计者基于计算机开发平台操作,再通过一系列的 输入,仿真,测试以及校验。最后能够达到要求,使最终的设计能够更为经济的实惠。 更进人瞩目的是,电路板级产品集成为芯片级产品完全可以用 FPGA 来实现,就像我们 现在生活当中所见到的。伴 FPGA 在数字信号处理应用中的大规模化,我们的生产和生 活的方式正被影响或改变着。 程序设计过程中,将不同的功能代码分别进行存放,以便于设计的后期更新和维 护。可以使用 FPGA Express 或 Leonardo Spectrum 对设计进行综合的处理,将产生的. edf 文件放在 QUARTUS II 软件平台上仿真,假如仿真结果符合它的要求,就能够将代 码下载到所对应的具体芯片里,从而完成数字滤波器设计。 1.2 数字滤波器的研究基础 1.2.1 电子设计 EDA 自动化技术 EDA 是电子系统设计技术的核心,EDA 技术就是把电子计算机作为工具,设计人员 在 EDA 软件的平台上,自由的利用硬件描述语言 VHDL 来完成设计所需的文件,接着计 算机自动地完成逻辑的编译、分割、化简然后综合再优化以及布局布线并且完成仿真, 一直到对特定的芯片的适配的编译和逻辑的映射以及编程下载等等任务。EDA 技术大大 第 1 章 绪论 2 的提高了电路设计的效率以及操作性,设计者的劳动强度降低。使用 EDA 工具,使用 者能够从概念、算法、协议等设计电子系统,通过计算机可以直接完成大量的工作, 而且能够把电子的产品从电路的设计和性能的分析再到到设计出 PCB 的版图或者 IC 版 图的过程在电子计算机上处理完成。 现在对 EDA 的概念以及范畴使用得都很宽。包括在通信、机械、航空航天、电子、 军事、化工、矿产、生物、等领域,均有 EDA 技术的应用。目前 EDA 技术已经得到各 大公司、企事业单位等部门的广泛使用。例如在飞机制造的过程中,从设计、性能测 试以及特性分析,直到飞行的模拟,都可能涉及到 EDA 技术。 EDA 技术在教学、科研、产品设计与制造等各个方面均发挥着巨大的作用。从应用 的领域来看,EDA 已经渗透到各行各业。另外,EDA 软件的功能日益强大,原来功能比 较单一的软件,现在增加了很多的新用途。例如 AutoCAD 软件可用于机械设计及建筑 设计,也扩展到了建筑装璜和各类效果图、飞机和汽车的模型、电影特技等领域。 1.2.2 可编程逻辑器件 可编程的逻辑器件(简称 PLD)是二十世纪七十年代发展的新型逻辑器件,可编程 的逻辑器件是大规模集成电路技术的需素发展以及电子计算机辅助设计(CAD)、电子 计算机辅助测试(CAT)、电子计算机辅助生产(CAM)相结合的产物,是现代数字电 子系统朝着极低功耗、超高集成度、超小型封装以及专业化发展方向重要的基础。 可编程逻辑器件是一种由用户编程实现所需功能的半定制集成电路,近年来发展 十分迅速,已在国内外的计算机硬件、工业控制、智能仪表、数字视听设备、家用电 器等领域得到了广泛的应用。可编程逻辑器件与 EDA 技术的结合,使得系统设计人员 与芯片设计人员的相互渗透,从而快速、方便地构建数字系统。学习 ASIC 技术,掌握 可编程逻辑器件的设计方法,已成为现代电子系统设计人员必须具备的基本技能之一。 1.目前使用的 PLD 产品主要有: 1) FPLA 现场可编程逻辑阵列(field programmable logic array) 2) PAL 可编程阵列逻辑(programmable array logic) 3) GAL 通用阵列逻辑(generic array logic) 4) EPLD 可擦除的可编程逻辑器件(erasable programmable logic device); 5) FPGA 现场可编程门阵列(field programmable gate array) 其中 FPGA 和 EPLD 的集成度相对比较高。有时把这两种器件又称为高密度 PLD。 FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个概念,内部包括可 配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现在主要用的 FPGA 依据查找表技术,早已大大超出先前的版本的基本性能,完成 整合常用的功能(如 DSP、时钟管理和 RAM)的硬核模块。如图 1-1 所示(注:图 1-1 第 1 章 绪论 3 只是一个示意图,实际中每个系列的 FPGA 都具有其对应的内部结构),FPGA 芯片主要 由 6 部分来完成,它们分别时:基本可编程逻辑单元、可编程输入输出单元、嵌入块 式 RAM、丰富的布线资源、完整的时钟管理、内嵌专用硬件和内嵌底层功能单元模块。 2.FPGA 的基本特点: 1)FPGA 采用高速 CHMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。 2)FPGA 可做其它全定制或半定制 ASIC 电路的中试样片。 3)采用 FPGA 设计 ASIC 电路,用户就不需要投片生产,就得到合用的芯片。 4)FPGA 内部有丰富的触发器和 IO 引脚。 5) FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小器件之一。 可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA 是由存放在片内 RAM 中的程序来设置其工作状态的,因此,工作时需要对片 内的 RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA 芯片将 EPROM 中数据读入片内编程 RAM 中,配置完成后,FPGA 进入工作 状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。 FPGA 的编程无须专用的 FPGA 编程器,只须用通用的 EPROM、PROM 编程器即可。当需要 修改 FPGA 功能时,只需换一片 EPROM 即可。这样,同一片 FPGA,不同的编程数据,可 以产生不同的电路功能。因此,FPGA 的使用非常灵活。 1.2.3 硬件描述语言 Verilog 及数字系统设计方法 HDL 是 Hardware Description Language(硬件描述语言)的缩写,不是 Hardware Design Language(硬件设计语言)的缩写。1983 年由 Gateway Automation 首创,并在 1995 年成为 IEEE 标准,即 IEEE standard 1364。 Verilog 是基于 C 语言的基础上发展起来的一种用于硬件描述的具有时间概念的并 行编程语言,是一种以文本的形式来描述数字系统硬件的行为和结构的语言,可以用 它来表示逻辑表达式、逻辑电路图,还可以表示数字逻辑系统所完成的逻辑功能。 1.Verilog 语言的特点: 1) 支持不同抽象层次精确的描述和混合模拟,例如 RTL 级、开关级、行为级等 2) 设计、测试以及模拟所用的语法都是相同的 3) 较高层次的描述与具体的工艺无关 4) 提供了类似 C 语言的高级程序语句,如 case,loop,if-else 等 5) 提供了逻辑、算术以及位操作等运算符 6) 包含完整的如 or、and、xor 等组合逻辑元件,无需自行定义 7) 支持元件门级延时和元件门级驱动的强度 Verilog HDL 程序是由模块构成的。每一个模块的内容都嵌入在 module 和 endmodule 的两个语句之间。每个模块实现各自特定地功能。而且模块之间可以进行层 次的嵌套。在进行一些大型的数字电路设计的时候,我们可将其进行分割,做成各种 第 1 章 绪论 4 不同的小模块来实现它特定的功能,最后再通过顶层的模块来调用子模块来达到对整体 功能的实现。各个模块都要进行端口的定义,说明输入和输出的端口,然后再对模块的 功能进行行为逻辑的描述。Verilog 语言适用对各种抽象级的模型进行开发和验证。 1.3 数字滤波器实现方法的现状分析 数字滤波实现的方法多种多样,其中最常见的按类别划分是以冲激响应的宽度来 分类的。数字滤波器依据冲激响应的宽度划分为无限冲激响应(IIR)滤波器和有限冲激 响应(FIR)滤波器。无限脉冲响应(IIR)滤波器具有良好的幅频特性曲线,系统函数的 极点可位于单位圆内任何地方,因此,零点和极点相结合,可以用较低的阶数获得高 选择性,所用的存储单元少,计算量小,所以经济高效。这个高效率的实现是以相位 的非线性作为代价的。与之相反,FIR滤波器可得到比较严格的线性相位,但是由于 FIR滤波器系统的函数极点是被固定在原点,所以只能够采用比较高的阶数来达到高的 选择性;对于相同的滤波器幅频特性指标来讲,FIR滤波器所要求的阶数就要比IIR滤 波器高5到10倍,成本比较高,信号延时也相对较大;要是按照同样的选择性和同样的 线性相位要求,那么IIR滤波器就一定要加全通网络进行相位的较正,也就要大大地增 加滤波器的阶数和其复杂性。 在结构方面,IIR滤波器必须使用递归结构,几点位置一定要在单位圆之内,不然 系统将会不稳定。还有就是,因为在这样的结构里,运算时要进行对序列的舍入处理 这一处理过程,有限字长效应会在有的时候引起寄生震荡。相反,FIR滤波器只要采用 的是非递归结构,不论是在理论上还是在实际有限精度的运算中均不存在稳定性的问 题,有运算误差引起的输出信号和噪声功率也比较小。此外,FIR滤波器可以采用FFT 算法实现,在相同阶数的条件下,运算速度可以大大提高。 从设计工具看,IIR滤波器可以借助成熟的模拟滤波器设计成果,因此一般都有封 闭形式的设计公式准确计算,计算工作量比较小,对计算工具的要求不高。FIR滤波器 计算通带和阻带衰减等仍无显式表达式,其边界频率也不易精确控制。一般情况下, 对FIR滤波器进行设计的时候只有计算程序可循,因此对计算的工具要求会较高。但在 计算机普及的今天,很容易实现其设计计算。 另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有片段常数特性 的选频型滤波器,比如低通、带通、高通以及阻带,通常脱不开这几种典型的模拟滤 波器的频响特性约束。但是FIR滤波器更加灵活,更能适应一些特殊应用,如构成积分 器或微分器,或者用于切比雪夫,巴特沃斯等靠近但永远不可能达到预定目标的情形。 比如,因为一些原因要求三角形的幅频响应或者更为复杂的幅频响应的形状,因此FIR 滤波器更能适应许多场合。 1.现在FIR滤波器的实现方法大概有以下几种: (1)采用单片通用数字滤波器的集成电路121单片的通用数字的滤波器,例如 TDC1028,还有仙童公司TMC2246,使用更加简单,但是因为字长以及阶数规格很少,不 第 1 章 绪论 5 能够完美的满足实际的需要。即使我们能够选用多片的扩展来达到满足,这样就增加 功耗以及体积,所以在实际设计过程中就会受到一些限制。好的一些数字通用滤波器, 比如HARRIS的HSP43168,含有两个独立8阶的计算的单元,而且含有16位的延时因子, 都能满足16-256阶的计算的精度需求,来实现多相位的功能;并且自带存储的单元,可 以储存32组的系数;而且有计算机的接口,可以由电子计算机控制以及运算,但工作频 率比较低,最大的数据速率是45MSPS,需要电子计算机的外部控制,时序很复杂,使 用的人要仔细的研究操作手则。基于使用者不同的设计的要求,那么这些有限的通用 滤波器将很难满足这些设计者的个性化的要求,基于实现器件的通用性的目的,这类 滤波器的电路工作当中的有效采样率也不是特别的高,已然不能实现高采样率环境的 具体需求。 (2)使用DSP的器件来设计的FIR滤波器的应用也最广泛,TMS32CXX系列。设计的时 后有专用的函数可调用还有依据FIR滤波器的数据的移位相乘累加算法编写软件程序, 利用软件及硬件互相结合来完成滤波器的开发设计。软件运行,这些指令是串行执行 的,得到满足的幅频的特性,当滤波器的字长数增加或者抽头增加的时侯,会大大增 长计算的时间,这样就降低最大有效的数据的采样率,又因为DSP的芯片本身的时钟速 度是有限的,这种方式常常应用于音频信号的处理,不适用数据采样率提高的情况。 DSP器件的性能不断的提高,在一定的场合会收到限制。 (3)可编程逻辑器件的速度和容量伴随着可编程逻辑器件FPGA的使用而正在不断 的增加,使单片系统的集成SOC的实现已成为可能。通过FPGA实现FIR带通数字滤波器, 由于我们要实现的是硬件并行这一算法,因而在某些实时性的要求比较高的场合能够 得到更好的应用。FPGA器件的芯片适用频率比较高,密度相对较大,已成为目前大规 模的数字逻辑设计的发展方向,是专业数字滤波器设计者的非常理想的一种载体。 FPGA拥有着相当丰富的连线资源以及整齐的内部逻辑块阵列,非常的适用于高并行度 和细粒度这一结构特点的数字信号的处理工作,例如,FFT以及FIR滤波等等,对于以 串行的运算为主导的通用DSP芯片来说可扩展性以及并行性都会更加的优异,相关记录 在众文献中都可找到。不过在长期的发展过程中,FPGA的运用一直被用在时序控制和 系统逻辑上,信号处理方面的应用相对较少,FPGA内部功能电路的固有时延是其中的 主要原因,在电路复杂的程度不断增加的时候,仍然没有办法摆脱通过简单的算法翻 译式设计的方法所带来的时钟瓶颈这样的约束。因而在FPGA中无法高效的实现信号处 理中应用最广的乘法器。所以,为了充分的开发和利用FPGA以及实现高速算法的要求, 选择一种好的设计方法,充分地利用FPGA的高速度、大规模以及可编程的这些突出优 点,让FPGA在它的最高时钟频率上飞跑成为关键。根据以上给出的原因,本文设计以 Verilog为描述方法,基于FPGA来实现FIR滤波器的设计。 1.4 本文的研究内容 为了确定使用的方法在设计 FIR 滤波器上是有效并且是高效的,因此在本文中对 第 1 章 绪论 6 比了两种不同的 FIR 滤波器的设计方法,通过对比得知,采用 FPGA 的 FIR 滤波器无论 在速度上和所占用的资源上均优于普通的设计方式,因此可以确定采用 FPGA 来设计 FIR 滤波器占有优势。 在开始进行撰写论文之前阅读了大量的有关 DSP 和 EDA 的材料,了解并学习了很 多的硬件和软件的相关知识。学习并研究了 Verilog 实例的使用。在不断的思考、讨 论、理解和对比了几种实现 FIR 型带通数字滤波器的方法之后,最终决定运用分布式 的算法作为基本算法来实现本论文的设计方法,用 Verilog 作为 FIR 滤波器描述的方 法,采用自顶向下的模块化、层次化的设计,进行 Verilog 程序的编写,如果有条件 的话可在 FPGA 芯片上进行调试以及仿真,并且给出仿真的结果。 1.本课题的研究的主要内容为: 1)对 FIR 数字滤波器的结构以及设计方法进行深入的了解,运用 MATLAB 软件对 FIR 带通滤波器进行设计,以便对设计的仿真结果进行比较。 2)理解使用硬件描述语言设计数字系统的方法。掌握自顶向下层次化、模块化的 设计方法。 3)理解 Booth 这一算法,以及以它为基础的实现 FIR 滤波器硬件结构。最后利用 FPGA 器件实现 FIR 数字滤波器的硬件电路。 第 2 章 数字滤波器原理及设计方法 7 第 2 章数字滤波器原理及设计方法 在数字信号处理的领域中,对于信号处理的实时性以及快速性的要求在不断的提 高。而在处理许多信息的过程中,比如对信号进行的预测、检测以及过滤等等,滤波 器经常的要被使用到。数字滤波器具有众多突出的优点,比如设计精度高、稳定性强、 实现方便、设计非常灵活等等,完成了模拟滤波器所不能克服的温度漂移、噪声以及 电压漂移等很多的问题,因此,伴随着数字技术的不断发展,采用数字技术来实现一 些特定功能的滤波器越来越多的得到大家的注意以及广泛的使用。其中,有限冲激响 应(FIR)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性,在语音、数据 传输中应用非常广泛。 数字滤波器Digital Filter,指的是用来将输入的信号执行滤波的软件和硬件。 数字滤波器,指的是它的输入和输出都是数字信号,然后经过给定关系的运算,从而 改变输入信号中所含有的频率成分的一种器件。模拟和数字滤波器相比较,由于信号 的形式以及对滤波的实现所采取的方法不一样,数字滤波器相对模拟滤波器而言,它 拥有灵活、重量轻、体积小、稳定、精度高以及不需要求阻抗匹配等优点。 数字滤波器的实现通常采用两种方法:一种方法是使用通用的计算机,把滤波器 需要进行的运算过程编写为可以用计算机来执行的程序,即通过计算机软件来实现设 计;二是使用数字处理的硬件来实现。 由它的单位冲激响应函数时域特性我们可以将滤波器分成两种:即 IIR 无限冲激 响应滤波器、FIR 有限冲激响应滤波器。和 IIR 滤波器进行比较,FIR 滤波器的实现过 程是非递归的,而且是很稳定的;其中更为重要的是,FIR 在达到幅频特性响应要求的 同时,还能够获得非常严格的线性相位这一特性。在数字信号处理系统中,FIR 滤波器 更加被广泛的使用,因此本章主要研究 FIR 滤波器的实现技术,其中的很多优化技术 同样可以应用于 IIR 滤波器的实现中。 第 3 章 基于 FPGA 设计 FIR 滤波器 14 第 3 章基于 FPGA 设计 FIR 型带通滤波器 在前面的几章讨论了基于 FPGA 数字滤波器设计的相关原理和其相关基础知识。本 章将针对以上所提到的原理以及方法进行进一步的组合应用。 3.1 指标的确定 在滤波器的设计中,所确定的指标如下: (1) 带宽 100MHZ,最小阻带衰减-35db; (2) 进行综合仿真; (3) 设计 FIR 型带通滤波器,满足上述性能指标; 3.2 设计的思路 将输入信号的每一位通过四个延时器后,以每位信号的4个引出点作为选择控制端, 选择出己经算好的系数,每一位信号选取存储器中的不同位上的数值,达到乘法移位 的功能,并送到累加器。累加器将8位信号选择出的8个数据累加后输出,得到滤波结 果。为了FPGA中四输入查找表的电路结构的充分利用,我们采用每8节为滤波器的一个 基本单元,对于64节滤波器的设计,采用8个基本滤波单元。 3.2.1 FIR 基本算法 (1)对加法器的设计 加法器是数字系统设计中最常用的运算电路,其他运算电路比如减法器、乘法器、 除法器等都可以利用加法器来实现。在本次的设计中也大量的运用到了加法器。一个 基本 N 位二进制加法器/减法器由 N 个加法器组成。每个加法器都执行如下的布尔方程: XOR y XOR (3.1) k x k s k y kkkk cyxc 进位位按如下方法计算: =(AND) OR (AND) OR (AND) 1k c k x k y k x k c k y k c =()+()+() (3.2) k x k y k x k c k y k c 最简单的加法器结构称之为并行加法,如图 3-1 所示,是位串行格式的。 第 3 章 基于 FPGA 设计 FIR 滤波器 15 图 3-1 并行加法器 在 QuartusII 中提供了宏模块 lpm、add、sub 构造加法器和减法器。表 3-1 中给 出了 lpm、add、sum 的基本逻辑参数: 表表 3-13-1 lpm-add-sublpm-add-sub 宏模块的基本逻辑参数宏模块的基本逻辑参数 端口名称功能描述 dataa 被加数/被减数 输入端口 datab 加数/减数 result Data +datab +cin 或 data -datab+cin-1 Cout 最高有效位进位和借位 标志 输出端口 Overflow 计算结果超过计数范围 标志 Cout 和 Overflow 不能同 时出现,Cout 适合于无符 号运算,而 Overflow 适 合于有符号运算。 参数设置 LPM_WIDTH LPM_DIRECTION LPM_REPRESENTATION Data .datab 和 result 端口的数据线宽度; ADD 表示宏模块执行加法运算; SUB 表示宏模块执行减法运算; DEFAULT 表示宏模块缺省设置为加法; 指定参与运算的数值是无符号数还是有符号数 (2)乘法器的设计 乘法器是DSP系统构成的基本部件,也是FIR数字滤波器的基本运算。乘法器按数 字表示方法的不同,可以分成浮点和定点乘法器。浮点运算的动态范围虽然比较大、 精度比较高,但是它的复杂度很高,因而也导致了它的运算的速度会慢很多,因此本 文将对定点乘法器的的设计作为研究的方向。本章从乘法器的算法开始,研究了多种 乘法器的算法以及他的其实现方法,并讨论了各自的优缺点,最后给出了一种基于 第 3 章 基于 FPGA 设计 FIR 滤波器 16 Booth算法的硬件乘法器电路。 1、定点乘法器的算法和实现 数字系统中,主要的数制表示方法为二进制表示法。二进制表示法主要有二进制 原码、补码、反码三种,其中二进制原码属于无符号数,二进制反码和补码属于有符 号数。根据二进制码的不同,定点乘法可分为有符号数乘法和无符号数乘法。 2、无符号数一位乘法 无符号数的二进制乘法与十进制乘法的运算方法一样,只是二进制乘法规则不同, 其运算规则和逻辑“与”运算规则相同,为:00=0;01=0;10=0;l1=1。以 两个无符号数的二进制乘法运算为例,“手算”的过程如图3-2所示。 图3-2 无符号数二进制乘法的过程 进行“手算”过程的时候,将乘积项中所有的乘数和被乘数中的某一位的乘积全 都计算之后进行累加的操作,它所对应地硬件的实现方法叫做阵列实现,这种方法在 速度上相对较快,但是耗费资源大。乘法器中的每一个位的输出均可写成2个操作数地 逻辑函数,由于操作数的位宽会不断的增加,这样将会使乘法器的电路变的越来越复 杂,实现起来会比较的困难。 在进行“手算”的过程时,也可在每次算出1个乘积后,就将它加到乘积里,我们 把这时的积称作部分积。如果在硬件实现时乘数与乘积项相应位对齐,也就是将乘积 项左移,被乘数位宽与加法运算宽度相同,这样实现起来会比较不容易。习惯的方法 是将部分积进行右移操作,乘积项与部分积的高位部分进行相加,图3-3所示的为运算 原理,图3-4所示的为运算流程。通过这样的方法来实现乘法器,我们通常将其称为移 位相加乘法器,由图3-3和图3-4可见,将被乘数存放在A寄存器中,乘数存放在B寄存 器中,同时B寄存器将作为部分积的低位部分,部分积的高位部分存储在D寄存器中, 初始时先进行清零操作,两数相加要考虑到进位的存在,进位用一位C寄存器来保存。 第 3 章 基于 FPGA 设计 FIR 滤波器 17 图3-3 移位相加乘法运算原理 图3-4 移位相加乘法程序流程图 其运算的原理为:从最低位的寄存器B即乘数开始,如果为0,则部分积高位寄存 第 3 章 基于 FPGA 设计 FIR 滤波器 18 器D内的值将与0进行相加运算,D寄存器内的值不改变。如果为1,则将部分积高位寄 存器D内的值与被乘数A进行相加运算,寄存器D存放运算的结果,寄存器C存放进位。 然后将和值、进位、部分积低位部分向右移1位,从而算出进行一次运算后的结果。在 进行右移之后乘数的次低位这时处在最低位,己用过的乘数位舍弃掉,不断重复上述 的运算过程,一直到乘数的最高位移出B寄存器。 在进行上述的乘法器的实现时,乘数寄存器与某些积低位部分共同使用,在乘数 寄存器右移后空出的高位部分正好可以存放部分积的低位部分,节省了资源。 符号数相乘可以将数值部分和符号部分进行分别的处理操作,即:符号部分异或, 数值部分绝对值进行相乘。这样的方法便于实现二进制原码表示的数;针对于二进制 反码所表示的数,我们只需要把操作数按条件进行取反就可以,实现起来也比较的容 易。对于二进制补码所表示的数,考虑到资源耗费以及时延等等原因,这样的方法不 适用于二进制补码所表示的两个数进行乘法的运算。 乘数为: 1210 NN BBBB B 补 若被乘数为:, 1210 NN AAAA A 补 乘积为:。 CA B 补补 乘数B可表示为: (3.3) 1210 1210 2222 NN NN BBBBB 因而它的乘积我们可如下表示: (3.4) 1210 1210 1210 1210 (2222 ) 2 2 2 2 NN NN NN NN CA B ABBBB BABABABA 补补 补 补补补补 根据这个,符号数的乘法也就不难实现了。在对高位进行计算的时候,我们需要 对它进行一些特殊的减操作过程,因而,便不可避免它的一些复杂程度上的逻辑设计。 我们以下介绍的是运用Booth算法将最高位也就是符号位进行数据位考虑,可以省掉一 些比较特殊的减操作。如果乘数和被乘数不变的话,式3.3可转变为: 11 1210 12 1223 10 100 22 ()2() 2 () 2(0) 2 N NN NN NNNN BBBBB BBBB BBB (3.5) 1 11 1 0,00 () 2(2 ) NN nn nnn nAn BBE 式3.5中, 11 ,0(1) ,0, nnn EBBnNB 乘积补码结果为: 第 3 章 基于 FPGA 设计 FIR 滤波器 19 (3.6) N-1 n=0 =( ) 2 n n CA BEA 补补补 以上就是Booth的算法,在这样的处理方式过程当中,对于最高位我们不需要再进 行一些特殊的处理,算法通过对本位和相邻低位的编过程,来确定运算量为0还是B, 操作是加或者还是减,有N项编码项,有N项乘积项。进行这样的处理方式时,其中的 每一个过程都要进行编码,让门延迟增加,相对(3.4) 式来说更复杂,但是只要对该 算法进行一些改进,便能得到一个较理想的算法,即高基Booth算法。为了实现两个用 12位二进制补码表示的有符号的相乘,可以根据布斯(Booth)乘法器的原理,用移位 相加的方式实现。 3.3 使用 Matlab 设计滤波器 基于 FPGA 来设计的 FIR 滤波器,由于设计的平台是 Quartus II,不同于软件开 发的环境,滤波器的效果并不能明确的显示,因此,需要在设计之前用软件的平台来 仿真分析。 Matlab(Matrix-Laboratory)是矩阵实验室的意思。可进行数学的计算、算法开 发、仿真、原型、建模、数据的采集、数据的分析、可视化科学以及工程图形应用程 序的开发等等,包括用户界面图形的创建等一系列的工作。Matlab 是 Mathworks 公司 研发的工具,是一个专门为计算科学和工程而设计地一种比较高级的交互式的软件包。 Matlab 集成了精确的数值计算以及图示工具,它能够完成各种各样的数据处理以及数 据计算的很强大的工具。Matlab 可以应用在很多的领域,比如物理、化学、数学、医 药、工程、金融等等。同时它也是一个非常优秀的教学工具。 1.matlab 主要的特点主要有: 1)输入输出的格式化数据以及与用其他的语言编写的程序相结合的能力 2)基于 HTML 的完全帮助系统 3)有大量的数学函数事先定义完成的,而且拥有用户自定义函数的能力 4)具有强有力的面向向量/矩阵的高级程序设计的语言,适合于个人应用 5)由于具有高性能的数值计算的高级算法从而特别适合于代数矩阵的领域 6)显示数据及绘图,并且具有教育、艺术学和科学的图解 7)拥有各种工具箱,能够在多个应用领域帮助人们解决疑难问题 开放性使用 MATLAB 深受广大用户的欢迎。除内部的函数外,所有 MATLAB 主包文 件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程 序构造新的专用工具包。firrcos()用于设计具有光滑,正弦过渡带的低通线性相位滤 波器。filter()用于实现 FIR 滤波器以及 IIR 滤波器滤波,我们经常用它来计算数字 滤波器针对输入地响应。fftfilt()运用一种高效率地、使用 FFT 的重叠相加的算法来 实现对数据的滤波,这样的函数仅仅适用设计 FIR 滤波器的过程中。freqz(),用来求 频率的响应,而且还提供了各种各样的函数的窗函数进行选择使用,例如凯塞窗函数 第 3 章 基于 FPGA 设计 FIR 滤波器 20 kaiser(),海明窗函数 hamming(),我们在设计的过程中可以选择性的使用,不再需要 我们亲自设计窗函数。 3.3.1 Matlab 来设计 FIR 型带通滤波器 在进行硬件描述的时程序需要的带通滤波器的参数我们通过使用 Matlab 里面的 FDATOOL 工具来得到。 FDA TOOL 是 Matlab 里的一个专门用来设计数字滤波器的软件模块,它的功能强大, 操作简单,可以设计出多种滤波器。打开软件选择带通滤波器,带通 100Mhz,最小阻 带衰减-35db 带内波动小于 2db,设计出符合设计指标的线性相位的 20 阶 FIR 带通滤 波器参数设置如图 3-5 所示: 图 3-5 20 阶 FIR 带通滤波器特征参数 图 3-6 FIR 滤波器的幅频响应 第 3 章 基于 FPGA 设计 FIR 滤波器 21 图 3-7 FIR 滤波器的相频响应 图 3-8 FIR 滤波器的冲激响应 图 3-9 滤波器特征参数 对 FIR 滤波器的系数进行调整,使整数化。具体方法是:将系数全部扩大 2 倍, 然后乘以相同倍数 256 即 2 的 8 次方,将得到的结果取整。 可得 FIR 滤波器的系数为:10 -14 -13 6 -8 31 58 -85 -107 119 119 -107 - 85 58 31 -8 6 -13 -14 10。 中南大学本科生毕业论文第 4 章 IIR 带通滤波器的 VHDL 描述及仿真 22 第 4 章 FIR 滤波器的软件描述及仿真 描述一个 FIR 滤波器最简单的方法,就是用卷积和表示: ( 4.1) N n knxkhny 0 N 阶 FIR 直接型结构如图 4-1 所示: 图 4-1 N 阶 FIR 直接型结构图 而线性 FIR 滤波器的实现结构可进一步简化为图 4-2 所示模型(以 N=6 阶为例) 图 4-2 FIR 滤波器简化模型 4.1 FIR 型带通滤波器总体结构 利用上面所编写的 16 位加法器,8 位乘法器以及延时器,我们可以组合出所需的 FIR 带通滤波器。程序中主要是运用元件例化语句来实现一个结构化的描述,系统函数通过调 用 16 位加法器,8 位乘法器及延时器等模块来构成 FIR 带通滤波器。具体的调用层次见 图 4-12 所示。 中南大学本科生毕业论文第 4 章 IIR 带通滤波器的 VHDL 描述及仿真 23 图4-3 FIR型带通滤波器的结

温馨提示

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

评论

0/150

提交评论