版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要i 摘要伴随技术的快速进步,电子领域的变化也是日新月异,而数字滤波器因为其优良性能而应用广泛,数字滤波器是数字信号处理的一个分支。在现实应用中,灵活与实时这两个特性是信号处理的基本要求,但是目前来说一般很难满足这两个指标。当 fpga 和电子设计自动化技术进步越来越快,很多电子设计师开始选择用 fpga 来完成数字滤波器的设计,因为 fpga 不仅可以兼顾系统的灵活性而且实时性也可以保障。但是要改变滤波器的类型即修改其参数时,需要设计者通过再次变成来进行改变,这样一来设计资源产生极大浪费。面对这种现象,采用以多种算法为基础,在 fpga 下进行操作,并且得到程序代码,在此基础上需要开发出相
2、应的软件系统,这样系统资源浪费现象可以受到抑制,从而使设计的周期极大的缩短。数字滤波器的方法是滤波器设计的关键。由于有限滤波器的线性相位性和时延的不变性,所以数字滤波器在实际应用的地位很重要。关键词:fir 数字滤波器;fpga;eda 技术 abstractiiabstractwith the development of electronic technology, digital filters with its good characteristics is widely used in various fields. it belongs to the digital signal
3、processing is one of the basic modules. in engineering practice, signal processing of flexibility and real time requirement high, and some existing software and hardware design way is difficult to achieve at the same time the two requirements. with programmable logic devices and eda technology devel
4、opment, the use of fpga to realize digital filters, can also give consideration to the real time and the flexibility of the system, more and more of the electronic engineer the fpga device to realize the filter. however, when the filter filter parameters change, or need hardware engineer to write th
5、e code, which caused a lot of design waste of resources. according to this problem, this paper studies the fpga platform based on all kinds of the design of the digital filter algorithm, based on the algorithm of research that a with all sorts of algorithm to realize the filter code library, and bas
6、ed on this code library development that can automatically generate hardware of software code filter system, thus eliminating the design parameters for the design of change and lead to waste, greatly reducing the filter design cycle. digital signal processing of the discipline of a great progress on
7、 digital filter is the study of the method of design. and fir digital filters can be realized linear phase, the group delay not on frequency change, so in digital signal processing occupied a very important position.keywords: fir digital filters ; fpga;eda technoligy目录iii 目录第一章 引言 . 1 第二章 滤波器简介 .22.
8、1 滤波器的原理.22.2 滤波器的分类.22.2.1 滤波器的基本分类 .22.2.2 根据“最佳逼近特性”标准分类.32.3 理想滤波器.32.4 实际滤波器.4第三章 fpga 相关器件和发展状况 .53.1 fpga 简介.53.2 fpga 工作原理.63.3 cpld 与 fpga 的关系.63.4 fpga 的电源 .73.4.1 fpga 使用的电源类型.73.4,2 fpga 的特殊电源要求.73.4.3 fpga 配电结构.83.5 fpga 芯片结构.83.6 fpga 基本特点.10第四章 系统硬件设计及外围硬件配置电路 .154.1 fir 滤波器硬件结构框架 .15
9、4.2 ad 转换电路 .154.3 da 转换电路.174.4 fir 数字滤波电路 .174.5 滤波效果测试 .19第五章 各模块的软件编程及仿真结果.195.1 数字滤波器的模块组成 .195.2 各模块中的单元. 205.3 部分模块的编程和仿真 . 21结论.30参考文献.31致谢.32第一章 引言1第一章 引 言数字信号处理和数字滤波器,广义来说,数字信号处理是一种以数字技术为基础的,对各种信号进行分析处理的技术。由于在不同领域的它的作用不同,离散变换快速算法、数字滤波、谱分析方法现在是其主要应用。 数字电路、系统技术、pc 机技术的发展愈来愈快,数字信号处理技术也发展迅速,它的
10、应用也越来越受到重视。不同信号处理方法也不同,有通信信号,雷达信号,遥感信号,控制信号,生物医学信号,地球物理信号,振动信号的处理等。针对不同信号的特点,可把信号分为语音信号处理,图像信号处理,一维信号处理和多维信号处理等。数字信号处理的目的是测量模拟信号和处理后对它的应用比如滤波。在处理信号的时候我们通常是把信号先转换成数字信号,然后再进行处理,一般用模数转换器来实现。处理完后的信号最终还要进一步转换成模拟量输出,通常用数模转换器实现。 数字信号处理的设备基础依赖于 pc 机或专用处理设备如数字信号处理器(dsp)和专用集成电路(asic)等。数字信号处理技术及设备具有灵活、准确、不易被干扰
11、、设备尺寸小、价格便宜、运行快等优点,在这些方面数字处理要明显优于模拟处理。 数字信号主要的方法是离散傅立叶变换(dft),dft 的应用便于 pc 机处理离散信号,因为 dft 可以离散化数字域与频域,如此一来算法 fft 就变得更加实用,fft 的出现减少了 dft 的运算量,完全实现了实时的数字信号处理。数字滤波器就是基于数字信号处理原理的一种应用,是数字信号分析中最重要的组成部分之一,与模拟滤波相比,他有精度和稳定性高,系统函数容易改变,灵活性强,便于大规模集成和实现多维滤波等功能。在信号的滤波、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。本文研究利用 fpga
12、的数字滤波器设计,是现在数字滤波器发展趋势,也是用户设计数字滤波器的理想载体。第二章 滤波器简介2第二章 滤波器简介2.1 滤波器的原理滤波器是一种选频装置,特定的频率成分可以通过,从而极大地衰减其它频率成分。利用滤波器这种选频的作用,可以滤除干扰噪声或进行频谱分析。总的来讲,不论哪种信息传输的信道都能当做一种滤波器。任何检测的信号都含有噪声,而滤波是去除噪声的基本方法之一。构成测试系统的任何一个环节,诸如,机械制造系统、电气工程网络、仪器仪表甚至连接导线这些领域,一定频率范围内,频域特性不同,信号变换与处理的方法也不同。滤波器在实际信号处理中发挥了不可小看的作用。任何装置的响应特性都是激励频
13、率的函数,完全可用频域函数描述传输特性。 简单介绍下 fir 滤波器。fir 滤波器是直接采用的数字式设计方法。针对fir 滤波器特征,首先介绍了其线性相位的实现条件,然后介绍了窗函数法和频率抽样法的设计方法。fir 数字滤波器分两个步骤:第一步,由给定频响容差确定逼近函数。第二部:由系统函数表达式决定系统结构。这里要用到窗函数设计,即使设计的滤波器频率特性与要求的频率特性在频域均方误差在最小的情况下开始逼近。这里我们希望过渡带足够小,也就是如果通带外的频率成分衰减得越快、越多越好。所以,在设计 fir 滤波器时,通过各种方法来逼近理想滤波器。iir 滤波器的设计包括:巴特沃思、切比雪夫模拟低
14、通滤波器设计;脉冲响应不变法和双线性变换法的数字化变换方法;数字高通、带通和带阻滤波器的设计。第二章 滤波器简介32.2 滤波器的分类2.2.1 滤波器的基本分类低通滤波器频率从 0f2, 只要是这部分的信号可以几乎无衰减的通过,在这范围之外的要受到极大的衰减。高通滤波器与低通滤波相反,从 f1的频率,在这范围内的信号可以无衰减的通过,而之外的频率会很大程度的被削减。 带通滤波器频率在 f1f2 之间,这其中的频率可以无损的通过,而在这范围外的频率要受到很大削减。带阻滤波器频率在 f1f2 之间,信号受到很大的衰减,在这范围外的频率可以顺利通过。滤波器几乎都可以由低通和高通组成,所以低通滤波器
15、和高通滤波器两种最基本的形式。2.2.2根据“最佳逼近特性”标准分类巴特沃斯滤波器巴特沃斯滤波器的幅频响应表达式如 2-1: (2-1) 贝塞尔滤波器贝塞尔滤波器的特性是延时不会出现太大的波动。并且。该滤波器的频率会随相移发生对应变化,且这种变化成正比。它的缺点是幅频效果不好,从而使用受到很大的影响。切比雪夫滤波器第二章 滤波器简介4在功能方面上,切贝雪夫滤波器也从幅频逼近,表达式为 2-2: (2-2 ) 是决定通带波纹大小的系数,文波由电抗原件产生;tn 是第一类切贝雪夫多项式。2.3 理想滤波器使通带内信号的幅值和相位都不失真的滤波器是理想滤波器,阻带内的频率成分都衰减为零的滤波器,其阻
16、带和通带之间有明显的分界线。换句话说,理想滤波器在通带外的幅频特性应为零;在通带内,幅频特性为常数,相频特性的斜率为常值。理想低通滤波器的频率响应函数,表达式为 2-3: (2-3)2.4 实际滤波器基本参数理想带通(虚线)和实际带通(实线)滤波器的幅频特性。理想滤波器的特性只需用截止频率描述,而实际滤波器的特性曲线无明显的转折点,两截止频率之间的幅频特性也非常相似,故需用更多参数来描述。理想滤波器是不存在的,通带和阻带在实际滤波器的幅频特性之间应没有严格的界限。在通带和阻带之间存在一个过渡带。纹波幅度 d滤波器的幅频特性在不同频率范围会产生不同的波动,波动幅度 d(越小越好,一般应远小于-3
17、db)和幅频特性均值 a0 相比即纹波幅度。第二章 滤波器简介5滤波器因数(或矩形系数)滤波因数是利用滤波器幅频特性的 -60db 带宽与-3db 带宽的比值来衡量滤波器选择性,记作 理想滤波器的 =1,常用滤波器得 =15,明显, 越接近于 1,滤波器选择性越好。倍频程选择性 w在截止频率范围外,实际滤波器有一个过渡带,通过它的倾斜程度表示幅度变化大小,它决定着滤波器对带宽外频率成分衰阻的能力。所谓倍频程选择性,是指在上截止频率 fc2 与 2fc2 之间,也可以是下截止频率范围在 fc1-fc1/2 内的幅频特性衰减值,也就是衰减量在一个频率变化倍频程内 (2-4)或 (2-5)倍频程衰减
18、量以 db/oct 表示(octave,倍频程)。显然,衰减越快(w 值愈大),滤波器的选择性愈好。对于远离截止频率的衰减率, 十倍频程衰减数也可以表示,即-db10oct.带宽 b 和品质因数 q 值在两范围间的频率定义滤波器带宽,单位赫兹(hz)。带宽的大小是滤波器性能的一个指标。在 2 阶振荡这一部分中,q 值就是系统的增益系数, q=1/2(:阻尼率)。对于带通滤波器来说,品质因数 q 就是中心频率 f0()和带宽 b 之比。举一个例子,一个中心频率为 500hz,若带宽为 10hz,则 q 值为 50。一般的情况,q 值大说明分辨率好。截止频率 fc第二章 滤波器简介6幅频特性值是
19、0.707a0 对应的频率称为滤波器的截止频率。以 a0 为参考值,0.707a0 对应于-3db 点,即相对于 a0 衰减 3db。如果以信号的幅值平方表示信号功率,那么所对应的点恰恰是半功率点。第三章 fpga 相关器件和发展状况7第三章 fpga相关器件和发展状况3.1 fpga简介 fpga(fieldprogrammable gate array),也称现场可编程门阵列,它是在 gal、cal、cpld 等可编程器件的基础上发展的产物。它是作为专用集成电路(asic)的一种电路,解决了可编电路门电路和定制电路不足的问题。操作员可以通过可编辑的连接把 fpga 内部的逻辑块连接起来,就
20、像把一个电路试验板放在了一个固定的芯片中里。一个出厂后的成品 fpga 的逻辑块和连接可以完全按照设计者的需要而改变,所以 fpga 能完成所需要的逻辑功能。 fpga 一般来说比 asic(专用的集成芯片)的速度慢,因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的 fpga 上完成的,然后将设计转移到一个类似于 asic 的芯片上,另外一种方法是用 cpld(复杂可编程逻辑器件)。fpga 的缺陷:不能进行复杂的设计,耗能大。但是他们也有很多的优点,比如制造比较快,可以被修改来改正程序中的错误,造价便宜。目前以硬件描述语言(verilog 或 vhdl)所完成的电路设计,要经过
21、整体布局设计,进行测试时,先要在 fpga 上快速烧录。and、or、xor、not 等逻辑门电路完全能通过可编辑元件实现,而一些的更复杂组合功能比如解码器、数学方程式也可以被实现,而 fpga 几乎都包含在内,大多可编辑的元件里也含有记忆元件像触发器(flipflop)等其它更完整的记忆块。3.2 fpga工作原理fpga 采取了逻辑单元阵列 lca(logic cell array)的概念,其中包含configurable logic block(clb 可配置逻辑模块)、(interconnect 内部连线)和 input output block(iob 输出输入模块)三大个模块。fp
22、ga 的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在第三章 fpga 相关器件和发展状况8存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与 i/o 间的联接方式,并最终决定了 fpga 所能实现的功能,fpga 允许无限次的编程。现场可编程门阵列(fpga)具有可编程性,与 pal,gal 及 cpld 等传统逻辑电路和门阵列比较结构不同,利用小型查找表(161ram)来实现组合逻辑,所有查找表都需与一个 d 触发器的输入端连接,然后利用触发器驱动其他驱动 i/o 和逻辑电路,这样构成的模块可实现组合逻辑功能的同时,又可实现时序逻辑功能,采用金属线连接也可以通过接到
23、i/o 模块让各模块实现连通。3.3 cpld与fpga的关系早在八十年代中期,fpga 已经在 pld 设备中扎根。cpld 和 fpga 包括了一些相对大数量的可编辑逻辑单元。fpga 通常是在几万到几百万而 cpld逻辑门的密度在几千到几万个逻辑单元之间。 cpld 和 fpga 的系统结构是他们的主要区别,fpga 是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。而 cpld 缺乏编辑灵活性,因为它的结构性是有点限制性,原因是此结构由一个或多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器组成,这样设计的好处是预计的延迟时间和逻辑单元对连接单元的高比率。
24、cpld 和 fpga 的另外一个区别是一些 fpga 可以让设备的一部分重新编辑而其他部分继续正常运行。大多数的 fpga 含有高层次的内置模块和内置的记忆体。因此一个有关的重要区别是很多新的 fpga 支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。3.4 fpga的电源3.4.1 fpga 使用的电源类型fpga 电源要求输出电压范围从 1.2v 到 5v,输出电流范围从数十毫安到数安培。可用三种电源:开关式 dc-dc 稳压器、低压差(ldo)线性稳压器、开关式电源模块。最终选择何种电源取决于系统、系统预算和上市时间要求。 若电路板空间是首要考虑因
25、素,低输出噪声十分重要,或系统要求对输入电压变化和负载瞬变做出快速响应,那么应使用 ldo 稳压器。ldo 功效比较第三章 fpga 相关器件和发展状况9低(因为是线性稳压器),只能提供中低输出电流。输入电容通常可以降低 ldo 输入端的电感和噪声。ldo 输出端也需要电容,用来处理系统瞬变,并保持系统稳定性。也可以使用双输出 ldo,同时为vccint 和 vcco 供电。 若在设计中效率至关重要,且系统要求高输出电流,则开关式稳压器占优势。开关电源的功效比高于 ldo,但其开关电路会增加输出噪声。与 ldo 不同的是,开关式稳压器需利用电感来实现 dc-dc 转换。 3.4.2 fpga
26、的特殊电源要求许多 fpga 没有时序控制要求,所以 vccint、vcco 和 vccaux 可以同时上电。若这一点无法实现,上电电流可以稍高。但时序要依具体 fpga 而异。对于一些 fpga,必须同时给 vccint 和 vcco 供电。对于另一些fpga,这些电源可按任何顺序接通。多数情况下,先给 vccint 后给 vcco供电是一种较好的做法。为确保正确上电,内核电压 vccint 的缓升时间必须在制造商规定的范围内。对于一些 fpga,由于 vccint 会在晶体管阈值导通前停留更多时间,因此过长的缓升时间可能会导致启动电流持续较长时间。若电源向 fpga 提供大电流,那么较长的
27、上电缓升时间会引起热应力。adi 公司的 dc-dc 稳压器提供可调软启动,缓升时间可以通过外部电容进行控制。缓升时间典型值在 20ms 至 100ms 范围内。 当 vccint 在 0.6v 至 0.8v 范围内时,某些 fpga 系列会产生上电涌入电流。在此期间,电源转换器持续供电。这种应用中,因为器件需通过降低输出电压来限制电流,所以不推荐使用返送电流限制。但在限流电源解决方案中,一旦限流电源所供电的电路电流超过设定的额定电流,电源就会将该电流限制在额定值以下。 3.4.3 fpga 配电结构在传统电源结构中,ac/dc 或 dc/dc 转换器位于一个地方,并提供多个输出电压,在整个系
28、统内分配。这种设计称为集中式电源结构 (cpa)。以高电流分配低电压时,铜线或 pcb 轨道会产生严重的电阻损耗,cpa 就会发生问题。对于高速、高密度 fpga 器件,保持良好的信号完整性对于实现可靠、可第三章 fpga 相关器件和发展状况10重复的设计十分关键。适当的电源旁路和去耦可以改善整体信号完整性。若去耦不充分,逻辑转换将会影响电源和地电压,导致器件工作不正常。而且,采用分布式电源结构也是一种主要解决方案,给 fpga 供电时可以将电源电压偏移降至最低。 cpa 的替代方案是分布式电源结构(dpa)。采用 dpa 时,整个系统内仅分配 1 个半稳压的 dc 电压器,每个 dc/ac
29、转换器与各负载匹配。dpa 中,dc/ac 转换器与负载间的距离近得多,这样线路电阻和配线电感会使压降降低,像这种给负载提供本地电源的方法将其定义为负载点(pol)。 3.5 fpga芯片结构当前主要的 fpga 技术主要还是在查找表方面领先于旧版本,通过整合ram、时钟管理和 dsp 的硬核(asic 型)模块使其功能更加强大。fpga 的芯片主要由 7 部分完成,分别为:内嵌专用硬件模块、可编程 i/o 单元、时钟管理、布线资源、可编程逻辑单元、ram(嵌入块式)、内嵌底层单元。 每个模块的功能如下: 1 数字时钟管理模块(dcm) fpga 几乎都提供数字时钟管理。xilinx 提供数字
30、时钟管理和相位环路锁定是很先进的。相位环路锁定可以精确的时钟综合,可以很好地控制抖动问题,在滤波效果上也表现不错。2 可配置逻辑块(clb) clb 是 fpga 内内的一个常用模块,是实现功能的逻辑单元之一,clb 的个数和功能会随器件的选择而出现差异,但是开关矩阵是 clb 所必需的,此矩阵由 6 或 4 个输入模块、部分选型电路组成。开关矩阵比较方便,能配置和处理装配逻辑、移位寄存器或随机存储器。clb 的结构:由(一般为 2 个或 4 个)一样的 slice 和附加逻辑组成。clb 模块能做到组合逻辑、时序逻辑,除此之外配置随机存储器和分布式只读存储器。 3 可编程输入输出单元(iob
31、) 第三章 fpga 相关器件和发展状况11可编程输入/输出单元简称 i/o 单元,是芯片与外界电路的接口部分,实现各种条件下对 i/o 信号处理。fpga 内的 i/o 按组分类,每组都完全能够独立地支持不同的 i/o 标准。信号可以经过 iob 模块中的存储单元,存贮到 fpga 的里面,或直接输入fpga 里面。且信号通过 iob 模块中存储单元进 fpga 里面时,可以降低其保持时间(hold time)的要求,通常默认为 0。 4 嵌入式块 ram(bram) 大多 fpga 都具有内嵌块(ram),这样使 fpga 的应用范围更广、灵活性更强。根据功能不同,块 ram 分单口 ra
32、m、双口 ram、内容地址存储器 (cam)以及 fifo 等。存储器 cam 在每个存储单元中都有一个比较逻辑,这样所有的数据写入cam 后会与原有数据进行比较,然后将所有相同地址退回,此功能在路由的应用中发挥重要的作用。除了块 ram,还可以将 fpga 中的 lut 灵活地配置成 ram、rom 和fifo 等结构。在具体选择 fpga 芯片时,ram 的数量是我们参考的一个重要依据。 5 丰富的布线资源 通过布线联通 fpga 内所需模块,布线要考虑到线的长短与技术,这些因素会影响到传输速度和驱动好坏。fpga 芯片内部的布线资源可划分为 4 类:第一类:有芯片内部全局时钟和全局复位/
33、置作用的全局布线资源;第二类:完成基本逻辑单元间的逻辑相连和短线资源;第三类:专用时钟、复位器控制的分布式布线的资源;第四类:实现芯片 bank 间的高速信号。 具体设计的时候,不用选择布线资源,因为布局布线器在联通各模块单元是通过输入逻辑网表的拓扑结构,并限制条件来选布线资源。6 底层内嵌功能单元 内嵌功能模块就是指 pll(phase locked loop)、dll(delay locked loop)、dsp 和 cpu 等软处理核(softcore)。目前越来越丰富的内嵌功能单元,使得单片 fpga 成为了系统级的设计工具,这样拥有软硬件综合设计的特第三章 fpga 相关器件和发展状
34、况12性,并开始面向 soc 过渡。 3.6 fpga基本特点1)采用 fpga 设计 asic 电路,用户不必投片生产,就能得到合用的芯片。 2)fpga 可做其它半定制、全定制 asic 电路的的样板。 3)fpga 内部有很多的触发器和输入输出引脚。 4)fpga 设计周期短、风险小、设计成本便宜。 5) fpga 用高速 cmos 工艺,耗能少,可以与 cmos、ttl 电平兼容。 fpga 芯片是小批量系统提高系统可靠性、集成度的最佳选择之一。 fpga 是由存放在片内 ram 中的程序来设置其工作状态的,因此,工作时需要对片内的 ram 进行编程。用户可以根据需要,不同的配置模式,
35、采用不同的编程方式。 加电时,fpga 芯片将 eprom 中数据读入片内编程 ram 中,配置完成后,fpga 进入工作状态。掉电后,fpga 恢复成白片,内部逻辑关系消失,因此,fpga 能够反复使用。fpga 的编程无须专用的 fpga 编程器,只须用通用的 eprom、prom编程器就行。当需要修改 fpga 功能时,换一片 eprom 即可。同样的一片fpga,不同的编程数据,可以产生完全不同的电路功能。因此,fpga 的使用非常灵活。第四章 系统硬件设计及外围硬件配置电路 l13第四章 系统硬件设计及外围硬件配置电路4.1 fir滤波器硬件结构框架 fir 的主要程序编完之后,需要
36、把程序下载到所需要的器件中,这样配置的电路器件就能够完成滤波功能。利用测试仪器验证设计的 fir 滤波器的实际滤波效果,以下是滤波过程的整体框图,如图 5-1 所示。图5-1 硬件连接图此流程包含交流信号发生器、实验电路和示波器,主要由 ad 转换电路、fir 数字滤波电路和 da 转换电路组成。42 ad转换电路 如下图4-2,此转换电路是 maxim公司的maxl83,12位逐次逼近式,转换时间为3s。maxl83设置为双极性工作模式,模拟信号的输入范围是5 v。图 4-2 a/d 转换电路交流信号交流信号发生器发生器a/d 转换电路转换电路fir 数字滤波数字滤波器器d/a 转换电转换电
37、路路双踪示波器双踪示波器第四章 系统硬件设计及外围硬件配置电路14该电路的基本流程:1).由交流信号发生器产生信号,经过运算放大器 op07 构成的反向比例放大电路,然后将放大后的信号传送到 a/d 转换电路的输入端 ainl。2).我们确定好时序,将转化好的数字信号 xin110输出。在转换器maxl83 模拟量输入端连上 rc 滤波器,起到抗混叠的作用,这里采用的滤波器是低通的。43 da转换电路数模转换电路作用:将数字输入信号转换为模拟信号,图 4-3: 图 4-3 d/a 转换电路这里我们使用的是 maxim 生产的 mx7245,该电路输出模拟量是电压量,并具有 12 位的数据输入端
38、。在该电路中,mx7245 被配置成双极性工作模式,模拟电压信号的输出范围5 v。我们输入确定的时序,数模转换器把接收端收到的数字量yout110转成模拟信号输出。在输出端连接一个由电阻和电容构成的一个低通滤波器,这样可以使输出的波形显得平滑没有太大波动。第四章 系统硬件设计及外围硬件配置电路1544 fir 数字滤波电路 下面是 fir 滤波电路图 4-4。fir 滤波器中含有所需的 fpga(本设计采用的器件为 aixera 公司生产的 flexlok 系列 epf10k20rc2403,此器件密度大可完成我们得要求),振荡器、若干的控制开关、十针的插座、不同大小的电阻。图 4-4 fir
39、 数字滤波器完成对 fir 滤波器的选择和分配后,可编程控制器中还有多余的资源,用epfl0k20rc2404 型 fpga 控制模数转换器和数模转换器的功能。因此rd、adcs、wr、ldac、dacs 这些引脚就是用于控制 ad 转换器电路和da 转换器电路的输出引脚。其中,引脚 rd、adcs 分别与 ad 转换器的引脚 rd、cs 相连,而引脚 wr、ldac、dacs 分别与 da 转换电路的引脚wr、ldac、cs 相连。4.5 滤波效果测试 把编号的程序依次下载到所需要的器件中准备测试,按要求连接好各硬件设备,通过示波器中信号波形滤波前后的幅值大小,得出滤波效果是否满足要求。在硬
40、件的连接中,可以采用在最后部分连接上示波器的方式直接观测设计是否成功。具体操作是:将信号发生器产生的信号先直接输入示波器中,记录这一组波形,然后再次连接硬件设备,即信号发生器将产生的信号通过 a/d 转第四章 系统硬件设计及外围硬件配置电路16换器,经由滤波器,再通过 d/a 转换器,最后产生的信号输入示波器中。观察前后两次的波形变化。分析结果得出,本 fir 滤波电路实现了低通滤波器 5 mhz 的采样频率,15 mhz 的截止频率,以及 16 阶的技术指标参数。下面给出原始波形和滤波后的波形 4-5。图 4-5 波形前后对比第五章 各模块的软件编程及仿真结果17第五章 各模块的软件编程及仿
41、真结果5.1数字滤波器的模块组成数字滤波器主要由输入模块,乘累加模块,锁存模块,控制模块这四大部分组成。这四大部分的功能如下:控制模块:这部分功能主要是针对其他三个模块的控制,使其依次顺利完成各自功能,最后滤波成功。控制器单元和计数器单元是其主要组成部分。如图 5-1图 5-1锁存模块:这部分的主要作用是将乘累加模块的结果锁存后输出。在这部分要添加一个查表块,以方便人为修改查表单元。如图 5-2图 5-2乘累加模块:第五章 各模块的软件编程及仿真结果18这部分的作用是让数据相乘和累加。由编码单元、查找表单元、可控加减表单元和移位累加单元组成。如图 5-3图 5-3输入模块: 这部分的作用是完成
42、对输入数据的处理,为后续电路做准备。由预相加、并/串转换、移位寄存单元组成。如图 5-4图 5-4数字滤波器各模块的具体组成框图 5-5第五章 各模块的软件编程及仿真结果19图 5-5fpga 各模块的连接5.2各模块中的单元计数器 : 从计数器开始计数起,经过 9 个时钟周期后输出一个脉冲 z 给控制器,可以使控制器继续向下运行。这里用 74ls163 计数器,该计数器包含的 d 触发器功能:计数 8 位以后延迟一个周期然后输出 z,另外一个作用针对计数器门的翻转产生的毛刺,触发器可以除去这个毛刺。控制器:主要让控制电路运行。并/串转换:因为总的电路以位串行方式工作,而输入数据是并行的,所以
43、要将并行输入的数据转换成串行数据,用来作为下一级模块的输入。本设计中用到的并/串转换器是主要部分,另外,要预相加输入信号,所以涉及到溢出问题,用符号fir 滤波器顶层模块控制模块输入模块乘法器加法器锁存输出模块移位寄存预相加并串转换时序控制第五章 各模块的软件编程及仿真结果20为扩展方法解决。在一位符号位扩展后,8 位变 9 位并行数,再开始转换。移位寄存单元:将接收到的采样值经过移位寄存操作,而产生同步延迟。并/串转换器输出的位串行数一方面给下个处理模块,另一方面在延迟后变为新输入下个处理模块的数据。预相加单元:利用滤波器系数的对称性,把滤波器系数相同的相乘,预先相加这两个值,以减少硬件规模
44、。本设计是 16 阶滤波器,前后的阶数系数分别对称,这样乘法运算量减半。 它由串行加法器来构成,一个全加器与 d 触发器组成串行加法器。加法器 2 个输入是补码形式且为时钟同步,这里的加法器进位端由 d 触发器经一时钟周期延迟后返回输入端,作为下组的进位位。a7.0为串行数据输入,它与移位寄存器单元的输出 bout0.7分别相连,d7.0也为串行数据输入,它与移位寄存器单元的输出 bout15.8分别相连;clk 为同步时钟信号;clear 为同步清零信号;x7.0为输出数据,作为查找表的地址线,x7为 dout0与 dout15相加的结果,x6为 bout1与 bout14相加的结果,后面的
45、与之类似。编码单元:将原来的 4 位地址线的第一位与后 3 位相异或得出新的地址总线,而且这两个 lut 的编码方法相同。这样可以减少地址线的位数,以减少查找表的规模。b7.0为地址线数据输入;address12.0和 address22.0为地址线输出,作为查找表的地址输入。具体实现过程是将 x7分别与 x6、x5、x4相异或后输出 address12.0,x3分别与 x2、x1、x0相异或后输出 address22.0。查表单元:可以节省一定的硬件资源,避免大容量的 rom 的使用。具体方法是,将八位地址总线的查表单元用分割技术分成 2 个四位地址总线的查表,再用 obc 编码,把 2 个
46、查表单元组合成三位。table_in2.0位地址线输入,table_out 为查找表输出,为了防止中第五章 各模块的软件编程及仿真结果21间的结果溢出,将原来的 8 位输出经过以为符号扩展后变成 9 位输出。可控加减器单元:将两个 lut 输出信号累加,得出结果送到下一级以为累加模块。而两个查表单元输出内容加后结果就和用一个查表单元输出一样。可动加减法器单元由加法器单元、反向器单元和多路选择器单元组成。s7、s3和 add_sub_s1 为可控加减法器的控制信号,a8.0位数据输入,sout8.0为计算输出,cin_b 为输出给移位累加器单元中加法器的 cin 的控制信号。移位累加单元:移位累
47、加单元的主要功能是把可控加减法器的输出移位累加,此单元由多路选择器的移位累加其组成。由 obc 编码方式可知,当采样首位值输入,查找表输出的值要与 dextra相加,然后才能输入移位累加器单元,而非和上一次累计的值相加后输入移位累加器,这可以通过一个多路选择器来完成。当采样值首位来时,控制模块发出的控制信号 add_sub_s2 控制多路选择器输出为 dextra;当其它位到来时,控制模块发出的控制信号 add_sub_s2 控制多路选择器输出为上一次累加得到的结果。移位累加器的作用是将加法器运算结果右移一位后与后面的可控加法器的输出合并起来输入加法器,然后加在一起,实现移位累加器。移位累加器
48、中,加法器的输入相当于查表的输出值,另一个为结果寄存器中的值。首次相加时,两个值都是八位,相加完可能溢出,对输出结果造成影响,为了防止溢出,对两个输入都作一位符号扩展,变成 9 位后再输入加法器。当首次加法过后,得出的九位二进制数都要右移一位,再送入加法器相加,做第二次加法。右移一位后的数是一个八位二进制数,和首次相加类似,将由后来的二进制数做一位符号扩展,扩展成 9 位二进制数,再与 lut 输出的 9 位二进制数相加,结果还是一个 9 位二进制数,这样不会发生溢出。然后如此循环下去,而不是将第二次的两个 9 位二进制加数扩展成 10 位后相加。所以采用的加法器为 9 位超前进位加法器。 第
49、五章 各模块的软件编程及仿真结果 20bin8.0为输入数据,输入值为可控加减法器单元的输出数据;clk 为时钟信号,add_sub_x2 为控制信号,控制多路选择器的运行;bin_c 为控制信号,使其控制加法器 yin;bout7.0为输出数据,使其成为模块的输出。5.3 部分模块的编程和仿真可控加减法器部分程序及仿真加法器模块:所谓的加法器就是实现两个有符号数的加法运算。也就是说把两个数输入,在时钟脉冲来时相加后输出。这里用到多个加法器,其中的两个 10 位有符号数相加得到一个 11 位的有符号加法器的源程序如下library ieee; use ieee.std_logic_1164.a
50、ll; use ieee.std_logic_arith.all; entity xing is port(c,d: in signed(9 downto 0); clk: in std_logic; a:out signed(10 downto 0); end xing;architecture jing of xing is begin process(clk) begin if(clkevent and clk=1)then s0); begin process(din1,din2,clk) begin if clkevent and clk=1 then dout=s2-din2-s1
51、; end if; end process; end xing1;乘法器单元乘法器就是输入带符号数据与固定数据两个二进制数的乘法运算。当信号到达时钟上升沿时,输入两数,运算、输出结果。常系数乘法运算可用移位相加来实现。将常系数分 解成几个 2 的幂的和形式,然后再分别进行运算。算法:把带负号数先乘以去负号的整数部分,然后在后面的求和中做减法运算。举例说明电路设计: 乘 31 电路设计: 程序如下library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity cheng 101 is port( cl
52、k : in std_logic;bin :in signed (10 downto 0); bout :out signed (15 downto0);end cheng101; architecture feng of cheng101 is signal x1 : signed (15 downto 0); signal x2 : signed (10 downto 0); signal x3:signed(15downto0); 第五章 各模块的软件编程及仿真结果 22begin b1:process(bin,x1,x2,x3) begin x1=bin&00000; x2=b
53、in; if(bin(10)=0)then x3=(0&x1(14downto0)-(00000&s2(10downt0); else x3=(1&x1(14 downto0)-(11111&s2(10 downto 0); end if; end process; b2: process(clk,x3) begin if clkevent and clk=1 then bout=s3; end if; end process; end feng; 图 5-6 加法器的仿真寄存器来替代延迟单元,寄存器用于寄存一组二值代码, 只要求它们具有置 1、置 0 的功能就
54、行。在本设计中使用带异步复位 rst 端的 d 触发器,当 rst=1,输出信号 q=0,当 rst=0 且上升沿脉冲到达时 q=d,即延迟了一个周期。 寄存器的程序代码如下:library ieee; use ieee.std_logic_1164.all; entity jing is port (rst, clk: in std_logic;第五章 各模块的软件编程及仿真结果 23a:in std_logic_vector (9 downto 0); d:out std_logic_vector (9 downto 0); end jing; architecture dilfe of
55、jing is begin process (rst, clk) begin if(rst=1)then d0); elsif(clkevent and clk=1)then d=f; end if; end process; end dilfe;移位寄存器单元的仿真 5-7: 图 5-7计数器的仿真图5-8 图 5-8第五章 各模块的软件编程及仿真结果 24控制单元的仿真图5-9 图 5-9预相加单元的仿真图 5-10 图 5-10锁存模块的仿真图 5-11第五章 各模块的软件编程及仿真结果 25 图 5-11时序控制模块时序控制程序要完成的任务是将信号采集后进行模数转换,然后把数据锁存在
56、ad 端口准备输出,最后滤波后输出,程序代码如下:library ieee;use ieee.std-logic-1164.all;use ieee.std-logic-arith.all;use ieee.std-logic-unsingned.all;entity pan is port(clk,inter,reset:in std-logic; data:inout std-logicvector(7downto 0); adcs,dacs:out std-logic; wt,tr:out std-logic);end pan;architecture behave of pan iss
57、ignal d:std-logic-vector(7downto0);signal count:integer range 0to 7;signal fag :std-logic;beginprocess(reset,intr,count)begin if reset=”1”then fag=”1”;else if count=10 then fag=”0”;else if intr=”0”and intr event then fag=”1”;第五章 各模块的软件编程及仿真结果 26end if;end process;process(reset,clk,fag)begin if reset
58、=”1”or fag=”0”then count=0; else if clk=”1” and clk event thencount0 and count2 then rd=”0”; else rd2 and count4 then wr=”0”; else wr0 and count4 then adcs=”0”; else adcs4 or count=0 then dacs=”0”;data=d; else dacs=”1”; data=”zzzzzzzzz”; end if; end process;第五章 各模块的软件编程及仿真结果 27 process(count,data)be
59、gin if count=1 then d=data; end if;end process;end behave;fir 滤波器顶层原理图 5-12图 5-12fir 滤波器顶层源程序如下: library ieee; use ieee.std_logic_1164.all; - -库包说明 use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity filter1 is port( r: in std_logic_vector (11 downto 0); -端口说明clk: in std_logic; reset:
60、in std_logic; t: out std_logic_vector (23 downto 0); end filter1;architecture jing of filter is component add12 is -12 位加法器 port ( a , c : in std_logic_vector(11 downto 0) ; ci: in std_logic; co:out std_logic; sum: out std_logic_vector ( 11 downto 0) ); end component add12; component add24 is -24 位加法器 port ( a , c: i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省信阳市淮滨县2024-2025学年九年级上学期11月期中考试化学试题
- 广东省佛山市顺德区德胜学校2024-2025学年八年级上学期11月期中数学试题(含答案)
- 酶标记制剂行业相关投资计划提议范本
- 电磁波吸收材料相关行业投资规划报告范本
- 银钎料行业相关投资计划提议范本
- 医用X射线增强电视系统相关行业投资规划报告
- 负压封闭引流技术 课件
- 学校防空演练方案
- 节日安全主题班会
- 通信设备LTE-FDD无线网络新建(增补)工程安全生产资料
- 拒绝垃圾食品提高食品安全意识宣传课件
- 2024统编版初中八年级语文上册第二单元:大单元整体教学设计
- 天一大联考2025届物理高一上期中质量检测模拟试题含解析
- 2024年全新七年级语文上册期中试卷及答案(人教版)
- 2024年四川省绵阳市中考英语试题卷(标准含答案)
- 朝鲜族介绍课件
- 用户运营指南
- 投币启动设备用机械装置市场环境与对策分析
- 2024年重庆高考化学试题卷(含答案解析)
- 关于护理垂直管理体系的工作方案
- 工业机器人编程语言:RAPID(ABB):RAPID编程项目实战
评论
0/150
提交评论