《毕业论文通信电路eda课程设计基于vhdl语言的fir滤波器设计.doc》由会员分享,可在线阅读,更多相关《毕业论文通信电路eda课程设计基于vhdl语言的fir滤波器设计.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通信电路EDA课程设计报告目 录1 引 言61.1 课程设计目的62 理 论 基 础72.1 VHDL语言概述72.2 FPGA/CPLD概述93设 计 原 理123.1 Max Plus II概述12设计方案143.3 MATLAB参数设置与处理174模块电路设计1941 寄存器19加法器20减法器21乘法器224.5 FIR滤波器整体电路235 小 结25参考文献26附录:程序清单26基于VHDL语言的FIR滤波器设计 学生姓名: 指导老师: 摘 要:本课程设计根据FIR低通数字滤波器的原理与滤波特性,通过MATLAB/Simulink软件模拟一定性能的FIR滤波器频率响应与抽头系数,在M
2、AX+plus系统开发平台使用VHDL语言设计和仿真FIR低通数字滤波器,用软件描述硬件的动作及其功能。关键词: VHDL; MATLAB; FIR数字滤波器; 仿真Designing FIR low-pass digital filter based on VHDLAbstract:The course is designed FIR low-pass digital filter based on the principle and filtering characteristics, through the MATLAB / Simulink software to simulate t
3、he performance of a certain frequency response and tap FIR filter coefficients, in the MAX + plus system development platform for design and simulation using VHDL language FIR low-pass Digital filters, hardware, software describes the action and functionKeywords: VHDL; MATLAB; FIR digital filter; si
4、mulation1 引 言有限冲激响应(FIR)数字滤波器和无限冲激响应(IIR)数字滤波器广泛应用于数字信号处理系统中。IIR数字滤波器方便简单,但它相位的非线性,要求采用全通网络进行相位校正,且稳定性难以保障。FIR滤波器具有很好的线性相位特性,使得它越来越受到广泛的重视1。在本次计中,系统开发平台为MAX+plus 。MAX+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个
5、流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。在本次设计中,采用的硬件描述语言是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)2。VHDL语言是一种用于电路设计的高级语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。1.1 课程设计目的 EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品
6、的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。一般所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。 EDA设计可分为系统级、电路级和物理实现级。本课
7、程设计主要是利用硬件描述语言VHDL的设计思想,采用自顶向下的方法,划分模块来设计简易的多个模块。通过课程设计深入理解和掌握计算机的基本知识,并且掌握课堂上所学到的理论知识,达到课程设计的目的。 2 理 论 基 础2.1 VHDL语言概述电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路。VHDL 硬件描述语言在电子设计自动化中扮演着重要的角色,他是EDA 技术研究的重点之一。硬件描述语言是EDA 技术的重要组成部分,VHDL 是作为电子设计主流硬件描述语言,VHDL(Very High Speed Integrated Circuit Hardware Desc
8、ription Language)于1983 年由美国国防部发起创建,由IEEE进一步发展并在1987年作为IEEE标准10760发布。因此,VHDL成为硬件描述语言的业界标准之一。VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用VHDL语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。一个完整的VHDL程序包括以下几个基本组成部分:实体(Entity),
9、结构体(Architecture),程序包(Package),库(Library)。其中,实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。程序包存放各设计模块能共享的数据类型,常数,子程序等。库用于存放已编译的实体,机构体,程序包及配置。VHDL 语言的编译环境有不同的版本,我们应用的是Altera 公司的Maxplus 软件,它的操作顺序如下:使用TEXTEDITOR 编写VHDL 程序使用COMPILER 编译VHDL 程序;使用WAVE2FORMEDITOR,SIMULAR
10、OT 仿真实验;使用TIMINGANALTZER 进行芯片的时序分析;用FLOORPLANEDITOR 锁定芯片管脚位置;使用PROGRAMMER 将编译好的VHDL 程序下载到芯片中。VHDL 进行工程设计的优点是显而易见的。1与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。2VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。3VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速地完成必须有多
11、人甚至多个代发组共同并行工作才能实现。4对于用VHDL 完成的一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动的将VHDL 描述设计转变成门级网表。5VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。6用VHDL 语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。在VHDL 语言中,状态机有两种:莫尔型和米勒型。莫尔型状态机的输出仅是状态向量的函数,输出信号只和状态机所处的状态有关。图2.1 如下:CLKOUTPUTSINPUTSRES组合逻辑1
12、寄存器组合逻辑2图2.1莫尔型状态机模型米勒型状态机的输出变化要领先一个时钟周期,它的输出既和当前状态有关,又和所有输入信号有关。换句话说,在米勒型状态机中一旦输入信号发生变化或者状态发生变化,输出新好多将随之发生变化。图2.2 如下:OUTPUTSCLKRESINPUTS组合逻辑1寄存器图2.2米勒型状态机模型由于本设计的状态变化与输入信号有关,所以采用米勒型状态机。较好的解决了五种状态(复位状态,测试状态,设置状态,烹调状态,完成状态)之间的转化。程序中,首先使控制器处于复位状态,此时把所有信号清零,再根据输入信号转换状态。综上所述,VHDL 语言的极强的行为描述能力和丰富的仿真语句及库函
13、数,决定了它具有支持大规模设计的分析和已有设计的再利用功能5和功能6,用VHDL完成一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。 FPGA/CPLD概述随着数字集成电路的不断更新和换代,特别是可编程逻辑器件的出现,使得传统的数字系统设计方法发生了根本的改变。可编程逻辑器件的灵活性使得硬件系统设计师在实验室里用一台计算机、一套相应的EDA软件和可编程逻辑芯片就可以完成数字系统设计与生产,而其中应用最广泛的可编程逻辑器件当属FPGA3和CPLD。FPGA和C
14、PLD都是可编程逻辑器件,它们是在PAL、CAL等逻辑器件的基础上发展起来的。同以往的PAL、CAL等比较,FPGA/CPLD的规模更大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件,因此它受到了世界范围内电子工程设计人员的广泛关注和普遍欢迎4。FPGA是新一代面向用户的可编程逻辑器件它的功能密度远远超过其他 PLD 器件,一块FPGA可以替代(100-200)片标准器件或者(20-40)片GAL器件,其I/O引脚数多达100 余条。所以一片 FPGA 芯片可以替代多个逻辑功能复杂的逻辑部件,或者一个小型数字系统。自FPGA问世以来,它已在许多领域获得
15、了广泛的应用。逻辑单元型结构(LCA,Logic Cell Array)的FPGA由三部分组成,即逻辑单元阵列CLB(configurable logic block)、I/O单元、互联资源。这种类型结构的特点是通过对CLB编程实现逻辑功能;通过对I/O单元编程确定输入或输出结构;通过对互联资源编程实现 CLB之间、CLB与I/O单元之间、I/O单元之间的互联关系,从而实现用户所需要的逻辑功能。PAL结构扩展型FPGA则是在PLA基础上加以改进和扩展,大幅度增加了寄存器数量和I/O引脚数,增设了可编程互联资源,改善了互联模式,改进了阵列结构使得芯片的利用率大大提高。CPLD器件的结构是一种与阵
16、列可编程、或阵列固定的与或阵列形式。PAL、GAL都采用这种形式,但CPLD同它们相比,增加了内部连线对逻辑宏单元和I/O单元也有重大改进。一般情况下,CPLD器件中包含三种结构:可编程逻辑宏单元、可编程I/O单元、可编程内部连线。部分CPLD器件内还集成了RAM、FIFO或双口RAM等存储器,以适应 DSP应用设计的要求。CPLD器件具有同FPGA器件相似的集成度和易用性,在速度上还有一定的优势,因此,在可编程逻辑器件技术的竞争中它与 FPGA并驾齐驱,成为两支领导可编程器件技术发展的力量之一。FPGA/CPLD之间存在一些区别,主要有如下几方面。CPLD与FPGA在价格、性能、逻辑规模和封
17、装(包括EDA软件性能)等方面各有千秋,面对不同的开发项目,使用者应该作出最佳的选择,表2-1是对CPLD/FPGA在各个方面的比较。表2-1 CPLD与FPGA的区别器件比较点FPGACPLD结构工艺SRAMEPROM 或FLASH基本结构LUT 查找表乘积项PinPin 时延不定确定配算存储器需外挂ROM不需保密注论无保密性可加密工作电压3.3V 或5V编程工艺通过PC 机并行口或专用编程器或单片机进行配置ISP 在线编程应用主要针对要求不是很高,设计逻辑较复杂的系统,适合于完成时序较多的逻辑电路主要针对速度要求高,但设计逻辑又不是很复杂的系统,适合于完成算术和组合逻辑FPGA/CPLD的
18、特点主要有如下几方面:1CPLD/FPGA具有用户可编程的特性。利用CPLD/FPGA,电子系统设计工程师可以在实验室中设计出专用集成芯片,实现系统集成。缩短了产品的开发、上市时间,降低了开发成本。2CPLD/FPGA.具有静态可重复编程或在线动态重构特性,使硬件的功能可象软件一样通过编程来修改。不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。3固定长度的金属线进行各逻辑块的互连使得设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全的预测。4FPGA/CPLD.芯片在出厂之前都做过百分之百的测试,不需要设计人员承担风险和费用,只需在自己的实验室里通
19、过在相关的软、硬件环境下完成芯片的最终功能。其投资小,并可以节省许多潜在的花费。5FPGA/CPLD.能以最快的速度占领市场。设计人员可以反复编程、擦除、使用,或者在外围电路不动的情况下用不同软件实现不同的功能。6设计师不可或缺的重要手段IP核。它将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器,SDRAM控制器、PCI接口等设计成可以修改参数的模块,让其他用户能够直接调用这些模块,从而大大减轻了工程师的负担,避免了重复劳动。3设 计 原 理 3.1 Max Plus II概述Max Plus II是美国Altera公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方
20、式,是一个完全集成化,易学易用的可编程逻辑设计环境。它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等),宏功能元件(包含了几乎所有74 系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达0.1ns,非常准确。Max Plus II开发系统是一个完全集成化、易学易用的可编程逻辑器件设计和开发系统,它提供了一种真正与结构无关的可编程逻辑设计环境。它所提供的灵活性和高效性是无可比拟的,其丰富的
21、图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用Max Plus II软件。Max Plus II支持灵活多样的输入方式:原理图输入、硬件描述语言输入、波形输入,以及层次设计输入。Max Plus II的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。它提供丰富的库单元供设计者使用,包括74系列的全部器件、多种特殊的逻辑宏功能(macro-function)和参数化功能模块(LPM: Library of Parameterized Modules),但更为重要的是Max Plus II还提供了原理图输入多层次设计功能,使得用户能
22、设计更大规模的电路系统,以及使用方便、精度良好的时序仿真器。与传统的数字电路实验相比,Max Plus II提供灵活多样的层次化输入设计功能,具有显著的优势:1能进行任意层次的数字系统设计。传统的数字电路实验只能完成单一层次的设计,使设计者无法了解和实现多层次的硬件数字系统设计;2对系统中的任一层次或任一元件的功能进行精确的时序仿真,精度达,因此能发现对系统可能产生不良影响的竞争冒险现象;3通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正;4能对设计方案进行随时更改,并储存设计过程中所有的电路和测试文件入档;5通过编译和下载,能在FPGA或CPLD上对设计项目随时进行硬件测试验证;6如果
23、使用FPGA和配置编程方式,将不会有器件损坏和损耗问题;7符合现代电子设计技术规范。传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线长短,粗细弯曲方式,可能产生的分布电感和电容效应,以及电磁兼容性等等十分重要的问题。Max Plus II还提供设计校验的仿真器,其中包括功能仿真和时序仿真。仿真器的灵活性很强电路设计完成后,需要验证电路设计的逻辑功能是否正确。这是一项简单的逻辑检查,可采用功能仿真,这对于初步的逻辑功能检测非常方便。功能检查完成后,可进行时序仿真。Max Plus II的时序分析程序可以计算点到点
24、的器件延时,确定器件引脚上的建立时间和保持时间要求,还可计算最高时钟频率。用Max Plus II软件进行逻辑设计的步骤包括:1根据所选课题的任务和设计指标要求,确定总体设计方案,画出总体方案的系统框图(亦称预设计阶段)2进行底层单元电路分析及输入设计、编译、仿真;3利用已编译正确的底层单元电路模块,画出顶层电路的原理图 ,进行编译调试和仿真测试;4撰写设计报告。Max Plus II的设计流程可以用如下图给出。图形成VHDL编辑器编译网表提取数据库建立逻辑综合逻辑分割匹配延时网表提取编辑文件汇编编辑器图3.1 Max Plus II设计流程图从图3.3可清晰了解到Max Plus II提供了
25、一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。他包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编辑文件汇编以及编程下载9个步骤。3.2设计方案FIR数字滤波器是一个线性时不变系统(LTI)5,N阶因果有限冲激响应滤波器可以用传输函数H(z)来描述, (1.1)在时域中,上述有限冲激响应滤波器的输入输出关系如下: ()其中,xn和yn分别是输入和输出序列。N阶有限冲激响应滤波器要用N1个系数描述,通常要用N+1个乘法器和N个两输入加法器来实现。乘法器的系数正好是传递函数的系数,因此这种结构称为直接型结构,可通过式()来实现,如图
26、3.2所示。图3.2 直接型结构图当冲击响应满足下列条件时, FIR滤波器具有对称结构,为线性相位滤波器: (1.3) 这种对称性,可使得乘法器数量减半:对n价滤波器,当n为偶数时,乘法器的个数为n/2个;当n为奇数时,乘法器的个数为(n+1)/2个。在电路实现中,乘法器占用的逻辑单元数较多。乘法器的增加,意味着电路成本增加,另外对电路的工作速度也有影响6。N阶线性相位的因果FIR系统的单位冲激响应滤波器可用对称冲激响应 或者反对称冲激响应来描述。具有对称冲激响应的FIR传输函数的冲激响应可写成如下形式:当N为偶数时当N为奇数时则FIR线性相位系统的结构可转化成如图和图所示。图 N为奇数图 N
27、为偶数有限冲击响应(FIR)滤波器的特点:1 既具有严格的线性相位,又具有任意的幅度;2 FIR滤波器的单位抽样响应是有限长的,因而滤波器性能稳定;3只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列,因而能用因果系统来实现;4 FIR滤波器由于单位冲击响应是有限长的,因而可用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率。5 FIR也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。6 FIR滤波器比较大的缺点就是阶次相对于IIR滤波器来说要大很多。3.3 MATLAB参数设置与处理根据要求,要设计一个输入8位,输出8位的17阶线性
28、相位FIR滤波器,所以采用图2(a)的方式,其中输入信号范围为:99,0,0,0, 70,0,0,0, 99,0,0,0, 70,此滤波器 Fs为44kHz,Fc为10.4kHz。MATLAB设计计算滤波器系数过程如下:FIR滤波器参数设置,因为是17阶,所以Specify order处填16,h(0)=0.如图所示。图3.5 参数设置图FIR滤波器的幅频响应图3.6 FIR滤波器的幅频响应FIR滤波器的相频响应如图3.7所示。图3.7 FIR滤波器的相频响应FIR滤波器的冲激响应如图3.8所示。图3.8 FIR滤波器的冲激响应FIR滤波器系数如图3.9所示。图3.9 FIR滤波器系数对FIR
29、滤波器的系数进行调整,整数化可得FIR滤波器的参数为-12 -18 13 29 -13 -52 14 162 242 14 -52 -13 29 13 -18 -124模块电路设计设计的FIR滤波器由19个小VHD文件和一个总体BDF文件组成,VHD文件可以分为以下四种模块:寄存器、加法器、减法器、乘法器。41 寄存器(1)寄存器原理寄存器用于寄存一组二值代码,对寄存器的触发器只要求它们具有置1、置0的功能即可,因而本设计中用D触发器组成寄存器,实现寄存功能。(2)寄存器要求实现的功能在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁。(3)寄存器的模块图,如 图4.1 寄存器
30、模块图(4)寄存器的波形仿真输出q滞后于输入d,达到寄存效果,设计符合要求。如下图图4.2 寄存器仿真图 4.2加法器在将两个多位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位3个数相加。这种运算称为全加,所用的电路称为全加器。多位加法器的构成有两种方式:并行进位和串行进位。并行进位加法器设有进位产生逻辑,预算速度较快;串行进位方式是将全加器级联构成多位加法器。并行进位加法器通常比串行级联加法器占用更多的资源。随着为数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大,因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
31、本次设计采用的是并行加法器方式。(1)加法器要求实现的功能实现两个二进制数字的相加运算。当到达时钟上升沿时,将两数输入,运算,输出结果。(2)加法器的模块图4.3 加法器模块图(3)加法器的波形仿真在同一周期内 Din1+Din2=Dout 设计符合要求图4.4 加法器仿真图4.3减法器(1)减法器的原理减法器的原理与加法器类似,尤其是并行式的减法器也加法器的区别仅仅在于最后的和数为两数相减。(2)减法器要求实现的功能由上面简化电路的需要,当乘法器常系数为负数的,可以取该数的模来作为乘法器的输入,其输出作为一个减法器的输入即可。故减法器要实现两个二进制数相减的运算。当到达时钟上升沿时,将两数输
32、入,运算,输出结果。(3)减法器的模块如图4.5所示。图4.5 减法器模块图(4)减法器的波形仿真 在同一周期Din2-Din1=Dout 设计符合要求,如图4.6所示。 减法器仿真图4.4乘法器(1)乘法器的原理从资源和速度考虑,常系数乘法运算可用移位相加来实现。将常系数分解成几个2的幂的和形式。(2)乘法器要求实现的功能实现输入带符号数据与固定数据两个二进制数的乘法运算。当到达时钟上升沿时,将两数输入,运算,输出结果。(3)乘法器的模块图,如图4.7所示。乘法器模块图(4)乘法器的波形仿真乘法器仿真图4.5 FIR滤波器整体电路FIR图所示:(1)设定输入信号根据设计要求,输入信号范围是:
33、99,0,0,0, 70,0,0,0, 99,0,0,0, 70,我们任意设定输入信号为:X99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0(2)结论输出结果yn理论值仿真结果MATLAB卷积值/512经仿真器仿真-3-425-5-1343541207172615824y037y124y28y315y424y515y68y724y837y924y108y1115y1224y1315y148y1524y1637y1724由上面仿真波形可以读出结果。经比较,仿真结果与输出信号理论值完全吻合。且波形基本没有
34、毛刺,实验符合设计要求。5 小 结 为期三周的EDA课程设计,我收获蛮多。首先是关于专业知识的深入学习,更多的了解了EDA技术在通信方面的广泛应用,以及Max Plus II软件的操作步骤。虽然只是些入门知识,却也为我们以后的学习,工作打下了坚实的基础。毕竟是接触的东西,以后再深入学习或者使用的时候就不会没有方向了。其次就是个人性格方面的缺点得以改正,开始课程设计的时候,没有方向,没有目的,心里就很急躁,虽然看起来天天都在搞,却只有我自己知道效率根本就不高。完全就是一个打酱油的,而后渐渐发现这个问题,静下心来认真整理思路,才慢慢把这个课程设计摸熟,摸透。还有就是关于我们这个听说很热门,其实却不
35、过如此的通信专业的一知半解。其实我们这个专业并不难找工作,并不缺高薪的就业岗位。关键是我们并没有具备拿高薪的才能。所以以后得更努力才行。 最后感谢老师非常细致的讲解,以及同学们的鼓励。没有你们,我的课程设计就没这般顺利。 参考文献1李亚奇,张雅绮.线性相位FIR数字滤波器J.电子测量技术,2005年06期2卢毅,赖杰.VHDL与数字电路设计.北京:科学出版社,2001.3蒋垒,王昌林,刘鎏,许冲.基于FPGA的FIR数字滤波器算法实现J.舰船电子工程,2006年01期.4杨丽杰,崔葛瑾.基于FPGA的FIR滤波器设计方法的研究J.东华大学学报(自然科学版),2006年06期.5门爱东,苏菲,王
36、雷,等.数字信号处理M.北京:科学出版社,2005.6丁玉美,高西全.数字信号处理M.西安:西安电子科技大学出版社,2005.附录:程序清单1寄存器的VHDL语言实现(8位)library ieee;entity df isport (d:in std_logic_vector(9 downto 0);clk,reset:in std_logic;q:out std_logic_vector(9 downto 0);end df;architecture df of df isbeginprocess(clk,reset)beginif(reset=1) thenq0);elsif (clke
37、vent and clk=1) thenq=d;end if;end process;end df;2加法器的VHDL语言实现(以下以12位数加16位数生成16位数的加法器为例)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add121616 isPORT(clk : in STD_LOGIC; Din1 :in signed (11 downto 0); Din2 :in signed (15 downto 0); Dout:out signed (15 downto 0);END a
38、dd121616;ARCHITECTURE a of add121616 isSIGNAL s1: signed(15 downto 0);BEGIN s1=(Din1(11)&Din1(11)&Din1(11)&Din1(11)&Din1);PROCESS(Din1,Din2,clk)BEGINif clkevent and clk=1 thenDout=s1+Din2;end if;end process;end a;3减法器的VHDL语言实现(以下以16位数减去14位数输出16位数的减法器为例)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IE
39、EE.STD_LOGIC_arith.ALL;ENTITY sub141616 isPORT(clk : in STD_LOGIC; Din1 :in signed (13 downto 0); Din2 :in signed (15 downto 0); Dout :out signed(15 downto 0);END sub141616;ARCHITECTURE a of sub141616 isSIGNAL s1: signed(15 downto 0);BEGIN s1=(Din1(13)&Din1(13)&Din1);PROCESS(Din1,Din2,clk)BEGINif cl
40、kevent and clk=1 thenDout=Din2-s1;end if;end process;end a;4乘法器的VHDL语言实现LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult18 isPORT( clk : IN STD_LOGIC; Din : IN SIGNED (8 DOWNTO 0); Dout : OUT SIGNED (12 DOWNTO 0);END mult18;ARCHITECTURE a OF mult18 ISSIGNAL s1 : SIGN
41、ED (12 DOWNTO 0);SIGNAL s2 : SIGNED (9 DOWNTO 0);SIGNAL s3 : SIGNED (12 DOWNTO 0);BEGINP1:process(Din)BEGINs1(12 DOWNTO 4)=Din;s1( 3 DOWNTO 0)=0000;s2(9 DOWNTO 1)=Din;s2(0)=0;if Din(8)=0 then s3=(0&s1(12 downto 1)+(0000&s2(9 DOWNTO 1);else s3=(1&s1(12 downto 1)+(1111&s2(9 DOWNTO 1);end if;end process;P2: PROCESS(clk)BEGINif clkevent and clk=1 thenDout=s3;end if;END PROCESS;END a;