FPGA的CIC滤波器的设计.

FPGA的CIC滤波器的设计.
FPGA的CIC滤波器的设计.

基于FPGA的CIC数字滤波器的设计

摘要:级联积分梳状(Cascade Integrator Comb,CIC)滤波器是数字系统中实现大采样率变化的多速率滤波器,已经证明是在高速抽取和插值系统中非常有效的单元,在数字下变频(DDC)和数字上变频(DUC)系统中有广泛的应用。它不包含乘法器,只是由加法器,减法器和寄存器组成,而且需要的加法器的数目也减少了许多,因此CIC滤波器比FIR和IIR滤波器更节省资源,并且实现简单而高速。本文主要讨论了CIC滤波器的基本原理和基于FPGA的仿真实现方法,具体是采用Verilog HDL语言编程,将滤波器分为积分器模块和梳状器模块2个部分,对每个模块进行具体的功能分析和设计实现,最后通过Modelsim 仿真对滤波器的性能进行分析,验证了设计的正确性。

关键词:CIC滤波器;抽取;FPGA;Verilog HDL

the Design of Cascade Integrator Comb Filter Based on FPGA

Abstract:CIC (Cascade Integrator Comb, CIC) filter is a digital system to achieve large changes in multi-rate sampling rate filter, which has been proven to be a very effective unit in the high-speed extraction and interpolation system. It is widely used in the digital down conversion (DDC ) and digital up conversion (DUC) systems. It does not contain the multiplier, but just composes by adders, subtractors and registers, and the number of needing adders is reduced a lot. So it takes fewer resources than FIR filter and IIR filter. And the speed of CIC filter is very high and it is also very convenient to realize.This article discusses the basic principles of CIC filter and the simulation way based on FPGA. The modules were described with Verilog HDL. Firstly, the filter was divided into two parts which were integration module and the comb module. Then the function of each module were analyzed and designed. Finally the performance of the filter was analyzed under ModelSim and the correctness of the design was verified. Keywords:CIC filter; Decimation; FPGA; Verilog HDL

1. 引言:

数字滤波是数字信号分析中最重要的组成部分之一,数字滤波与模拟滤波相比,具

有精度和稳定性高,系统函数容易改变,灵活性高,不存在阻抗匹配问题,便于大规模集成,可实现多维滤波等优点。

级联积分梳状(Cascade integrator comb,CIC)滤波器,是由Hogenauer引入的一种非常有效的高分解速率的数字滤波器结构,已经证明是在高速抽取和插值系统中非常有效的单元。它具有较好的抗混叠和抗镜像性能;它不包含乘法器,只是由加法器,减法器和寄存器组成,而且需要的加法器的数目也减少了许多,因此CIC滤波器比FIR和IIR 滤波器更节省资源,并且实现简单而高速;无需存储滤波器的系数,结构规则易于拓展,无需外部控制,抽取倍数可变,对提高实时性和简化硬件有重要意义。

CIC滤波器的应用范围非常的广泛:由于其具有较好的抗混叠和抗镜像性能,可以实现任意采样率的转换,因此被用在软件无线电接收机中;用于正交多速率调制系统中,但又不仅仅是局限在调制器中,只要CIC滤波器之前或之后有FIR滤波器,对CIC滤波器的通带衰减进行补偿以后,都能够以很小的代价换取最大的硬件资源节省[1];在全数字接收机中的应用,CIC滤波器与HB滤波器共同实现了数字抽取滤波器,从输入的宽带高数据流的数字信号中提取所需的窄带信号,并在低通滤波器的作用下,下变频为数字基带信号[2];在-?

∑ADC中频信号处理模块中的应用,用CIC滤波器来匹配噪声抑制滤波器,并对采样后的数据再进行下采样,以降低噪声和后端硬件成本[3];在无线通信中的应用,如:蜂窝式无限电通信;CIC滤波器由于其结构的独有特性,已经成为了许多新型高性能器件的核心部件。因此研究它具有很重要的实用意义。

本文是要设计一个基于现场可编程门阵列(FPGA),用Verilog HDL语言编程实现的级联积分梳状(Cascade integrator comb,CIC)数字滤波器。主要内容包括:架构设计、接口逻辑设计、FSM设计、编码实现、功能仿真等。

2. 设计平台介绍:

系统设计需要使用Verilog HDL(Hardware Descriptions Language)、ModelSim 6.0、FPGA(Field Programmable Gates Array)现场可编程门阵列。

2.1 Verilog HDL简介:

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。以文本形式来描述数字系统硬件的结构和行为的

语言,用它表示逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能。

2.2 Modelsim简介:

M odelsim仿真工具是Model公司开发的。它支持Verilog VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等。ModelSim是业界最优秀的HDL语言仿真器。它提供最友好的调试环境,是唯一的单内核支持VHDL和Verilog混合仿真的仿真器。全面支持VHDL和Verilog语言的IEEE 标准,支持C/C++功能调用和调试。2.3 FPGA简介:

现场可编程门阵列FPGA(Field Programmable Gates Array)是近10年加入到用户可编程技术行列中的器件。现场可编程阵列在器件的选择和内部的互联上提供了更大的自由度。FPGA的结构类似于掩膜可编程门阵列(MPGA),由逻辑功能块排列成阵列组成,并由可编程的内部连线连接这些逻辑功能块来实现不同的设计[4]。

FPGA是由掩膜可编程门阵列和可编程逻辑器件两者特性结合演变而来的,所以FPGA既具有门阵列的高密度和通用性,又具有可编程逻辑器件的用户可编程特性。对于ASIC设计,采用FPGA在实现小型化,集成化和高可靠性的同时,还减少了风险,降低了成本,缩短了周期。

2.3.1 FPGA基本原理:

FPGA就结构上而言,主要由三个部分主成:可编程逻辑块CLB(Configurable Logic Blocks),可编程输入/输出模块IOB(Input/Output Block),可编程互连资源PIR(Programmable Interconnect Resource)等三种可编程电路。图1所示为FPGA平面结构示意图[5]。

CLB是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散步于整个芯片中;IOB主要完成芯片上的逻辑与外部引脚接口,它们通常排列在芯片的四周;PIR 包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB与IOB 之间以及IOB之间连接起来,构成特定功能的电路。

其中,CLB主要由逻辑函数发生器,触发器,数据选择器等电路组成,逻辑函数发生器主要由查找表LUT(Look Up Table)构成;IOB主要由输入触发器,输入缓存器

图1. FPGA的平面结构示意图

Fig.1 The schematic diagram of FPGA

和输出触发/锁存器,输出缓存器组成,每个IOB控制一个引脚,它们可配置为输入,输出或双向I/O功能;PIR由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。

2.3.2 FPGA系统设计流程:

FPGA系统设计流程包括硬件和软件设计流程。

首先确定系统功能,并对关键部分予以仿真。在确定系统功能并划分功能块之后,根据不同的结构和算法,确定不同的资源消耗。由上述过程可以确定系统设计需要消耗的门数,存储器的大小。根据系统设计要求,对系统时序和时钟率进行考察和估计,可以确定所需器件的速度级别。根据系统外部接口的要求,确定接口时序和芯片引脚资源消耗情况。在上述过程完成以后,考虑系统功能和性能的可扩展性,确定器件型号。型号确定之后,需要确定配置方式,因为不同型号的器件,其配置方式是有很大差异的。硬件设计和软件设计可以同时进行。系统设计在经过设计,改进,查错,再设计,再改进,再查错的螺旋型过程后,即可完成系统所有的设计,进入产品生产[6]。如图2所示为FPGA系统设计流程:

图2. FPGA 设计流程 Fig.2 The design process of FPGA

3. CIC 滤波器的基本原理: 3.1 多速率信号处理原理:

所谓多速率信号处理是指改变信号的采样率,实质上是对采样后的离散序列重采样的过程,包括抽取和内插两种情况。使采样率降低的采样率转换称为抽取;使采样率升高的采样率转换称为内插。 3.1.1 整数倍抽取:

整数M 倍抽取是指原始抽样序列x(n)每隔(M-1)个取一个,形成一个新序列XM(n),XM(n)=x(Mn),正整数M 为抽取因子。M 倍抽取器符号如图3所示,设序列x(n)的频

谱为x(ejw),求得序列XM(n)的傅里叶变换(2)

1

01()w k M j jw

M M k x e X e M

π--=??=

????

∑,表明抽取后序列XM(n)的频谱为原序列x(n)的频谱经频移和M 倍展宽后的M 个频谱的叠加和。根据Nyquist 采样定理,若序列x(n)的采样率为fs ,则模拟信号的最高频率(无模糊带宽)fH≤fs /2,否则x(n)的频谱会发生混叠。当以M 倍抽取率对x(n)进行抽取后得到的抽取序列XM(n)之取样率为fs /M ,其无模糊带宽为fs /(2M),所以当x(n)中含有大于fs /(2M)

的分量时,XM(n)的频谱必然产生混叠,无法从XM(n)中恢复x(n)中频率小于fs /(2M)的低频信号分量。如果先用一个数字滤波器(归一化带宽B=π/M)对X(ejw)进行滤波得到V(ejw),该信号只含有小于π/M 频率分量,再对V(ejw)进行M 倍抽取,就可以避免频谱混叠。一个完整的M 倍抽取器结构如图4所示:

图3. M 倍抽取器符号 Fig.3The symbol of M times extractor

图4. M 倍抽取器结构

Fig.4The structure of M times extractor

3.1.2 整数倍内插:

整倍数内插是指在原始抽样序列的相邻两抽样点之间插入(L-1)个零值,设原始抽样序列为x(n),则内插后的序列为

(/),

()0,

L x n L x n ?=?

? 0,,2n L L =±

±其他

内插器符号如图5所示。设序列x(n)的频谱为x(ejw),求得序列XL(n)的傅里叶变换XL(ejw)=X(ejwL),表明内插后序列xL(n)的频谱为原序列x(n)的频谱经L 倍压缩得到的。因此,xL(ejw)中不仅含有x(ejw)的基带分量(w≤π/M ,而且还含有其高频分量(w>π/L)。对内插后的信号进行低通滤波,就可以从内插信号频谱中恢复出原始基带谱,使内插序列中的(L-1)个零值都变为x(n)的准确值,所以经过内插提高信号时域分辨率。完整的L 倍内插器结构如图6所示:

图5. L 倍内插器符号

Fig.5 The symbol of L times interpolator

jw jw

图6. L 倍内插器结构

Fig.6 The structure of M times interpolator

3.2 单级CIC 滤波器:

CIC 滤波器是由积分器(Integrator )和梳状(Comb )滤波器两部分级联而成的,根据其结构的不同,可分别实现抽取(Decimation )功能和插值(Interpolation )功能。如图7和图8所示:

图7. 单级CIC 抽取滤波器结构图

Fig.7 The structure of single-stage CIC decimation filter

图8. 单级CIC 插值滤波器结构图

Fig.8 The structure of single-stage CIC interpolation filter

积分部分的积分器是单极点的IIR 滤波器,并且反馈系数为1,状态方程如下:

y(n)=y(n-1)+x(n) (1)

积分器也可看成是累加器,根据Z 变换,积分器的传输函数为:

1

H (z)=

I -11-z

(2) 梳状器是一个对称的FIR 滤波器,其状态方程表示为:

y(n)=x(n)-x(n-DM) (3)

式中,D 是设计参数,称为微分延迟,其传输函数为:

-DM H (z)=1-z c (4)

则单级CIC 滤波器的传递函数为:

1

H(z)=

(1)-11-z

DM z -- (5)

其传递函数的频率响应为:

sin(wDM/2)

jw H(e )=

sin(/2)

w (6)

CIC 滤波器的幅频特性如图9所示,其中[0,2π/DM]为其主瓣,其他的区间成为旁瓣:

图9. CIC 滤波器的幅频特性

Fig.5 The frequency-amplitude characteristic of CIC filter

由图中可以看出,随着频率的增大,旁瓣电平不断减小,当DM>>1时,第一旁瓣的电平为2DM/3π,它与主瓣电平的差值为:

320lg

20lg 13.3622/3DM a dB DM π

π

=== (7)

可见单级CIC 滤波器的旁瓣电平较大,阻带衰减较差。为降低旁瓣电平,可以采用多级CIC 滤波器级联的办法来实现。假设有N 级级联,则阻带衰减为单级衰减的N 倍,即13.36*N (DB )。 3.3 多级CIC 滤波器:

多级CIC 滤波器的传递函数为[7]:

(1)1N H z H ()I 11(1)1N

DM N

DM

z z Z N

z z --??

--=

=?

?---?-??

?N H(z)=()C (8)

其中,N 为CIC 滤波器的级数,D 为梳状部分延迟因子,M 为抽取因子。

滤波器的频率响应为:

N

N

sin(wDM/2)

jw H(e )

=

sin(/2)

w (9)

令w1表示通带截止频率,w2表示阻带截止频率,在抽取后,对有用信号产生混叠的阻带带宽为w1,则有w2(2/)1DM w π=-。则N 级CIC 滤波器的阻带衰减为:

0()

20lg 20lg (2/1)

sin(1/2)/sin(/1/2)

()

j H e DM

N a j DM w s

w DM D w H e

πππ==--- (10)

定义带宽比例因子b 为信号带宽与抽取后输出采样率的比值,即b=w1DM/2π,则:

sin[(1)/]

20Nlg 20lg sin()

DM b DM N a N b s

b ππ-=≈- (11)

N 级CIC 滤波器的通带波纹为:

0()sin(/)20lg 20lg

1sin()()

j H e R b DM N a s jw b H e ππ== (12) 由(11)式可知,滤波器的阻带衰减随着N 的增加而增加。所以多级CIC 滤波器的阻带衰减远远优于单级CIC 滤波器。一般来说阻带衰减达到70dB 左右就能基本满足实际要就。并且由(12)式可知,随着N 的增大,通带波纹也会增大,所以CIC 滤波器的级数是有限的。多级CIC 滤波器的性能由3个参数N,D,M 决定。级数N 可以用来控制阻带衰减,N 越大阻带衰减越大,通带内的混叠就越小,但是由于N 级CIC 滤波器的带内容差是单级时的N 倍,增大阻带衰减的同时会增大带内容差,所以N 不可太大,一般不超过5级。延迟因子D 决定零点的位置,D 的增大可以有效的减少通带内的混叠,但是D 太大会导致通带内主瓣衰减过大,所以一般D 取1或2,抽取因子M 决定了抽取后信号的采样频率,它同延迟因子一起决定了主瓣和旁瓣的宽度。通常情况下,根据工程要求来确定抽取因子M ,然后对通带带宽,通带衰减,和混叠特性进行折衷考虑来确定延迟因子D 和滤波器的级数N 。 4. 详细设计:

首先构造一个3级的CIC 抽取滤波器,只需把3级积分器的输出和3级梳状器的输入串联起来,就构成了3级的CIC 滤波器。图10为3级CIC 抽取滤波器的结构图,而内插滤波器的级联方式与抽取器相反。

为了能够更加直观的观察多级CIC 滤波器的幅频特性,特在MATLAB 中对3级的CIC 抽取滤波器的幅频特性进行了绘制(抽取因子M 为16,梳状部分延迟D 为2),并且与单级的CIC 滤波器进行比较,所得到的图形为图11。

图10. 3级CIC抽取滤波器的结构图

Fig.10 The structure of three stages CIC decimation filter

图11. CIC滤波器幅频特性图

Fig.11 The frequency-amplitude characteristic of CIC filter

从图11中可以看出:CIC滤波器是低通滤波器,3级CIC滤波器比单级的CIC滤波器的性能更好,主瓣电平比旁瓣电平高大概40dB,说明阻带衰减比较快;而单级的CIC 滤波器的旁瓣只比主瓣低13.36dB,阻带衰减很差。因此多级CIC滤波器的性能比单级的要好,MATLAB幅频特性程序见附录1。

多级CIC滤波器结构简单,而且可以很方便地实现速率变换,在滤波器的两个部分之间,速率发生了变化。对于CIC的抽取滤波器而言,在最后一级积分器的输出端,采样速率由f s变为f s/M。

在设计CIC滤波器的过程中应注意的问题就是防止积分器的数据发生溢出,可以采

取以下两个方法,并且不会影响滤波的正确性:

(1) 所采用的数据编码具有如下特点:当从高端溢出时返回到低端,从低端溢出时返回到高端,其实质是对数据求模;

(2) 寄存器所存数值的大小大于,等于整个滤波器最后输出地数值范围。 第一个条件采用二进制补码形式实现(在Modelsim 中会自动将负数用二进制补码表示)。

下面分析如何实现第二个条件:

为了得到CIC 滤波器的幅频响应,将iw z e =带入系统的传递函数,即式(8),为

了表示方便把iw z e =表示成2/(2)2/2/1i F MF i f M iw i F F z e e e e πππ====的形式,其中/2f F F =称为相对于2F 的归一化频率,将它带入(8)式可得N 级CIC 滤波器的幅频响应:

sin()

H ()N sin(/)

N

Df f f M ππ= (13)

从式(13)可知,N 级CIC 滤波器级联的最大幅度增益为:

N G=(DM) (14)

由于DM 的值很大,N 级CIC 滤波器级联的N (DM)的值也很大,所以在设计过程中为了防止溢出,必须相应的扩大数据的位数,以减少误差。如果B in 为输入数据的位数,

那么最大内部位宽为:

B B lg DM out in 2

N =+()

(15) 其中lg DM 2N ()为最大动态范围的增长。为防止数据溢出,最大限度的节省FPGA 的

硬件资源,应该把积分器的积分部分和梳状的寄存器位宽扩展到B out 位[8]。

设计的时候从CIC 滤波器的功能要求出发,将该滤波器分为三个部分:积分部分:实现了三个积分器;抽取部分:实现了下采样功能;梳状部分:实现了三个梳状器,再分析各个模块所实现的功能,并对这三个模块进行详细的设计。 4.1 前端设计:

首先对CIC 滤波器的各个参数进行设定:滤波器的输入数据为8位,级数N 为3,梳状部分的延迟D 为2,抽取因子为16 ,并且由(15)式可计算出它的最大内部位宽

为23。根据精度要求,输出可以取小于23,本设计中取23位。然后从CIC滤波器的功能要求出发,将该滤波器的输入信号设为以下几个:reset, clk, x_in, 其中reset是复位信号(防止程序运行过程中产生随机数),clk是输入的时钟信号,x_in是所输入的8位的数据。输出信号为:y_out,它表示所输出的23位的数据。则端口列表为:

input reset;

input clk;

input [7:0] x_in;

output [22:0] y_out;

寄存器型的变量可以理解为实际电路中的寄存器,它具有记忆特性,是一种存储元件,在输入信号消失后它可以保持原有的数值不变。寄存器型变量一般使用关键字reg 进行定义,并且在定义时可以加入位宽,位宽为1的变量也称为标量,位宽大于1的变量称为矢量。由于在Verilog HDL中默认的变量类型是wire型,所以如果某个变量的类型需要为寄存器型,则必须在程序中加以定义,而且值得注意的是,任何在always块内被赋值的变量都必须是寄存器型[9]。在本设计中,需定义如下变量:

reg derived_clk;

reg[3:0] counter;

reg[22:0] IntReg0[1:0],IntReg1[1:0],IntReg2[1:0],IntReg3;

reg[22:0] ComReg0[2:0],ComReg1[2:0],ComReg2[2:0],ComReg3;

4.2 积分器模块设计:

三级的CIC滤波器前面的积分部分是由三个一级的积分器级联而成,是一类IIR滤波器,但是它没有前馈,而只有回馈部分。分别用寄存器:IntReg0[1:0],IntReg1[1:0],IntReg2[1:0]来表示第一,第二,第三个一级积分器,积分器的输出放在寄存器IntReg3中。积分器实现的关键是如何实现输入信号的延时,本设计是通过将输入信号放在寄存器中,经过一个单位的延时以后再调用这个寄存器中的值,从而实现延时的,积分器模块的实现如下:

//积分器实现模块

always @(posedge clk) //时钟上升沿有效

begin: INTEGRATOR

//复位时所有的寄存器输出为0

if(!reset)

begin

IntReg0[0] <=0;

IntReg0[1] <=0;

IntReg1[0] <=0;

IntReg1[1] <=0;

IntReg2[0] <=0;

IntReg2[1] <=0;

IntReg3 <=0;

end

else

begin

IntReg0[0][7:0] <= x_in; //将输入信号赋值给IntReg0的低八位

IntReg0[1] <= IntReg0[0]; /*将IntReg0[0]赋值给IntReg0[1]相当于延时*/

IntReg1[0] <= IntReg0[1] + IntReg0[0];

IntReg1[1] <= IntReg1[0];

IntReg2[0] <= IntReg1[1] + IntReg1[0];

IntReg2[1] <= IntReg2[0];

IntReg3 <= IntReg2[1] + IntReg2[0];

end

end

4.3 抽取器模块设计:

改变系统的抽样频率有两种方法:其中减少抽样率的过程成为信号的“抽取”,也称为“抽样率压缩”;增加抽样率的过程称为信号的“插值”,亦称为“抽样率扩张”。抽取器的主要作用是转换抽样率,使系统工作在多抽样率状态。本设计中所要用到的是抽样压缩,其定义如下:

当信号的抽样数据量太大时,可以在每A个抽样中取一个,或者说每隔A-1个抽样取出一个,以便减小数据量,A是整数,称为抽取因子,这样的抽取称为整数倍抽取[10]。

本设计中抽取器的实现主要是通过一个计数器来实现的,因为抽取因子为16,所以定义了一个4位的计数器reg [3:0] counter,其具体的实现模块如下:

//计数器

always @(posedge clk)

begin

if(!reset)

counter <= 0;

else

begin

if(counter>=10) //生成下采样后的时钟

derived_clk = 1;

else

derived_clk = 0;

counter = counter + 1;

end

end

4.4 梳状器模块设计:

梳状滤波器的积分器是一类FIR滤波器,由于这种滤波器每个抽头系数非“0”,即“1”,因此仅需延时器和加法器就可以实现。它是由三个单级的微分器级联而成的,分别用ComReg0[2:0],ComReg1[2:0],ComReg2[2:0]来表示依次第一,第二,第三个一级的微分器,梳状器的输出放在寄存器ComReg3中。实现它的关键也是延时部分的实现,但是跟积分器不同的是,梳状器的延时是两个时间单位,因此要将信号连续赋值给两个寄存器来实现延时。其具体的实现模块如下:

//梳状器实现模块

always @(posedge derived_clk)

begin:COMB

if(!reset)

begin

ComReg0[0] <= 0;

ComReg0[1] <= 0;

ComReg0[2] <= 0;

ComReg1[0] <= 0;

ComReg1[1] <= 0;

ComReg1[2] <= 0;

ComReg2[0] <= 0;

ComReg2[1] <= 0;

ComReg2[2] <= 0;

ComReg3 <= 0;

end

else

begin

ComReg0[0] <= IntReg3;

ComReg0[1] <= ComReg0[0];

ComReg0[2] <= ComReg0[1]; //延时两个时间单位

ComReg1[0] <= ComReg0[0] - ComReg0[2];

ComReg1[1] <= ComReg1[0];

ComReg1[2] <= ComReg1[1];

ComReg2[0] <= ComReg1[0] - ComReg1[2];

ComReg2[1] <= ComReg2[0];

ComReg2[2] <= ComReg2[1];

ComReg3 <= ComReg2[0] - ComReg2[2];

end

end

将上述三个模块综合起来,就形成了一个完整的Verilog HDL的CIC滤波器的程序见附录2。

5. 在Modelsim环境下的功能仿真:

验证是保证设计在功能上的正确性的一个过程,要对所设计的程序进行仿真验证就要编写一个Testbench文本,即测试平台。简单来说,在仿真的时候Testbench用来产生测试激励给待验证设计(DUV),或者称为待测设计(DUT),同时检查DUV的输出是否与预期的一致,达到验证设计功能的目的。图12为基于Testbench的仿真流程:

图12. 基于Testbench的仿真流程

Fig.12 The simulation flow chart of Testbench

从图中可以清晰地看出Testbench的主要功能:

(1)为DUT(Design Under Test,待测设计)提供激励信号;

(2)正确实例化DUT;

(3)将仿真数据显示在终端或者存为文件,也可以显示在波形窗口中以供分析检查;

一个Testbench设计好以后,可以为芯片设计的各个阶段服务,比如在对RTL代码,综合网表和布线之后的网表进行仿真的时候,都可以采用同一个Testbench[11]。

将实现CIC滤波器功能的设计呈现在Modelsim环境下进行波形仿真,经过多次

的调试和程序修改后,运行的仿真波形图可将CIC滤波器的功能表示出来。图13为CIC 滤波器在Modelsim环境下进行波形仿真:

图13. Modelsim波形仿真

Fig.13 The wave Simulation of Modelsim

线网型(net)的变量可以理解为实际电路中的导线,通常用于表示结构体之间的物

理连接,就不可以存储任何值,并且一定要受到驱动器额驱动才有效。一个线网型变量可能同时受到几个驱动源的驱动,此时该线网型变量的取值由逻辑强度较高的驱动源决定;如果多个驱动源的逻辑强度相同,则取值为不定态,这和实际电路模型的情况是完全相符的。本设计中y_out被申明为wire型,因此在刚开始仿真的一段时间里y_out的输出值为不定态x。为了便于观察将波形进行缩小,并且将时间轴右移一些得到图14所示的波形图:

图14. Modelsim波形仿真

Fig.14 The wave Simulation of Modelsim

通过观察波形可以知道,每16个时钟周期,y_out输出一个数值,实现了抽取率为16的功能,基本实现了CIC抽取滤波器的功能。

在利用Modelsim进行仿真的过程中,首先利用MATLAB产生一个周期为16的正弦波,并从中采样了4096个点存储在sin.txt中,然后将这些数据导入测试程序中,因此为了能够更加直观的观察滤波器的功能,将输入和输出的数据模拟表示为图15。

从图15中可以看出:输出的波形较输入波形有一段时间的延时,波形前面一段输出的是直线,是由于积分器和梳状器的延时所导致的输出的不定态X,但输出波形整体上也是一个正弦波,和输入波形保持一致,并且是呈阶梯状的,其中每一个阶梯就是一个抽取因子。Testbench测试文件见附录3,正弦波数据产生程序见附录4。

图15. Modelsim波形仿真

Fig.15 The wave Simulation of Modelsim

6. 结束语:

CIC滤波器结构简单,仅有两个功能模块,能够节省资源,并且在工程上易于实现,是一种经济型滤波器。滤波是只做加法运算,无需一般的FIR滤波器所需的乘法运算,大大简化了计算量,从而降低了后续电路的处理速度。文中叙述了CIC滤波器的基本原理及其多级CIC滤波器的具体设计,仿真结果证明了设计方案的正确性和可行性。CIC 滤波器是多速率信号处理中的一种重要的部件,在软件无线电中起到了重要的作用,研究它具有重要意义。(Hogenauer还引入了“剪除”理论对每一级的位宽进行裁剪,在实际的应用中,考虑到资源和速度的问题,CIC滤波器应采用剪除理论来实现,文中未做介绍。)

参考文献:

[1]. ZHANG JIAN.CHEN Yan.WANG Hua. Performance Analysis of Cascaded Integrator-Comb Filter in

Modulator [J].Transaction of Beijing Institute of Technology.2006.26(04).345-348

[2]. 刘福奇.刘波.Verilog HDL应用程序设计实例精讲[M].北京:电子工业出版社.2009.11.189-205

[3]. QainLinjun.Design of CIC Filter Baced on ∑-△ADC [J].Electronic Component &. Device

Applications.2009.11(01).44-46

[4]. 高明伦. Verilog与PC机接口电路设计[M].合肥:安徽科学技术出版社.2002.62-63

[5]. 朱明程.现场可编程门阵列器件[M].北京:电子工业出版社.1994.12-32

[6]. 叶淦华.FPGA嵌入式应用系统开发典型实例[M].北京:中国电力出版社.2005.40-41

[7]. 刘凌.胡永生译.数字信号处理的FPGA实现[M].北京:清华大学出版社.2002.134-139

[8]. ZhuGuojun.ZhangHao.ZhangZhijun.Implementation of CIC Filter Based on FPGA [J].Electronic

Science and Technology.2006(11).19-22

[9]. 王冠.黄熙.王鹰. Verilog HDL与数字电路设计[M].北京:机械工业出版社.2005.30-32

[10]. 程佩青.数字信号处理教程[M].北京:清华大学出版社.2000.122-128

[11]. 吴继华,王城.设计与验证-Verilog HDL[M].北京:人民邮电出版社.2006.159-161

%单级CIC滤波器参数

m1=2; %延迟因子

n1=1; %滤波器阶数

r1=32; %抽取因子

%三级CIC滤波器的参数

m2 = 2;

n2= 3;

r2= 32;

dw=0.01;

w=0:dw:1*pi;

%计算滤波器的频率响应

h1= exp(i*n1*w/2*(1-r1*m1)).*(sin(r1*m1*w/2)./sin(w/2)).^n1;

%计算滤波器的频率响应

h2=exp(i*n2*w/2*(1-r2*m2)).*(sin(r2*m2*w/2)./sin(w/2)).^n2;

plot(w/pi,20*log10(abs(h1)),'m'); %绘制单级CIC滤波器的幅频特性

hold on;

plot(w/pi,20*log10(abs(h2)),'b:'); %绘制3级CIC滤波器的幅频特性

grid on;

legend('single stage','three-stage',2)

xlabel('Normalized Frequency Relative to the High Sampling Rate(\times\pirad/sample)'); ylabel('Magnitude (dB)');

title('Frequency Response');

基于FPGA的FIR数字滤波器设计

1、F PGA技术简介 现场可编程门阵列FPGA是80年代末开始使用的大规模可编程数字IC器件,它充分利用EDA技术进行器件的开发与应用。用户借助于计算机不仅能自行设计自己的专用集成电路芯片,还可在计算机上进行功能仿真和时序仿真,及时发现问题,调整电路,改进设计方案。这样,设计者不必动手搭接电路、调试验证,只需短时间内在计算机上操作即可设计出与实际系统相差无几的理想电路。而且,FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,因此成为科研产品开发及其小型化的首选器件,其应用极为广泛。 3.1 FPGA工作原理 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。 3.2 FIR滤波器特点 1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。同时,FPGA还存在以下五大优势。 1)性能:利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周 期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。著名 的分析与基准测试公司BDTI,发布基准表明在某些应用方面,FPGA每美元的 处理能力是DSP解决方案的多倍。2在硬件层面控制输入和输出(I/ O)为满足应用需求提供了更快速的响应时间和专业化的功能。 2)上市时间:尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快 速原型的能力。用户可以测试一个想法或概念,并在硬件中完成验证,而无需

【开题报告】基于FPGA的CIC滤波器的设计与仿真

开题报告 电子信息工程 基于FPGA的CIC滤波器的设计与仿真 一、综述本课题国内外研究动态,说明选题的依据和意义 基于多速率信号处理原理,设计了用于下变频的CIC抽取滤波器,由于CIC滤波器结构只用到加法器和延迟器,没有乘法器,很适合用FPGA来实现。滤波器的结构简单, 需要的存储量小, 是被证明在高速抽取和插值系统中非常有效的单元。 随着数字信号处理算法的不断优化,数字信号处理器(Digital Signal Processors, DSPs)性能的不断提高,数字信号处理技术越来越被广泛地应用在各个领域。数字信号处理技术正朝着高速高性能方向发展,因此这对数字信号处理的手段和工具也提出了更高的要求。 随着现场可编程门阵列(Field Programmable Gate Array, FPGA)制造工艺的不断改进,其集成度和性能的不断提高,采用FPGA对数字信号进行处理越来越受到重视。与DSP相比,FPGA有着不可比拟的优势。一方面,与DSP靠程序指针来运行程序相比,FPGA执行算法的本质是靠电路并行执行的,因此在同样的时钟频率下,使用FPGA完成数字信号处理算法要比使用DSP快得多。另一方面,由于FPGA编程灵活,资源可重新配置,使得在实现数字信号处理时更加灵活,成本更低。因此,FPGA性能的不断提高,能够满足未来复杂数字信号高速实时处理的要求。 用FPGA设计滤波器,无非是是设计一些乘累加单元,其滤波器的各种特性即滤波参数可以通过MATLAB仿真获得。所以首先要做的是确定你滤波器的设计要求,在MATLAB中仿真设计出该滤波器,从而导出滤波器系数,才能在FPGA中使用。 CIC滤波器由于其无需乘法器以及结构特殊,在移动电视直放站的数字信号处理中,可以高效地胜任抽取滤波的任务。然而C1C滤波器也有缺陷,一者通带下垂严重,二者信号折叠带衰减不充分,而且此两者难以兼顾。RS修正法和Kaiser—Hamming补偿法联合使用于CIC滤波器的改进技术中,有效地解决了该问题。 在移动通信系统中,软件无线电的概念已显得越来越重要。众所周知SRC滤波部分的一个重点就是抑制潜在的混叠部分,有一种时变CIC滤波器,他同样是通过先A倍内插再B倍抽样来实现采样率的转换。因此,改进的CIC滤波器在软件无线电中有大的重

基于FPGA的滤波器的设计

摘要 自适应滤波器是统计信号处理的一个重要组成部分。在现代滤波处理技术中,自适应滤波器的处理效果尤为突出。在众多滤波器中,特别是在一些对信号处理的实时性要求比较高,体积功耗有严格限制的场合,使用FPGA硬件实现的数字滤波器更为广泛。 本论文从自适应滤波器研究的重要意义入手,介绍了线性自适应滤波器的算法,对几种基于最小均方误差准则或最小平方误差准则的自适应滤波器算法进行研究,就滤波器的基本原理及设计方法做了简单的介绍,最终设计基于FPGA的LMS算法设计复数自适应滤波器,对设计方法进行叙述,并以VHDL语言编写程序进行仿真测试。 关键词:自适应滤波器;FPGA;自适应算法LMS;有限冲激响应滤波器

FPGA-based design of adaptive filter Student:TAN xx Teacher:CHEN xx Abstract:Adaptive filter is a statistical signal processing as an important component. Processing technology in the modern filter, the adaptive filter, particularly in the treatment effect. Among the filters, especially in some of the real-time signal processing requirements of higher power, there are strict restrictions on the size of the occasion, the use of FPGA hardware to achieve a wider range of digital filters. In this paper, adaptive filter from the importance of research to start to introduce the linear adaptive filter algorithm, based on several criteria MMSE or least square error criteria for the study of adaptive filter algorithm, it filters The basic principle and design method of a brief introduction, the final design of FPGA-based design of complex LMS adaptive filter algorithm, the design methods described, and VHDL languages in maxplus simulation test platform. Keywords: adaptive filter;FPGA;LMS adaptive algorithm;finite impulse response filter

FPGA实现FIR抽取滤波器的设计

FPGA实现FIR抽取滤波器的设计FIR(fini te impulse response)滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反馈,系统稳定。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。在工程实践中,往往要求对信号处理要有实时性和灵活性,而已有的一些软件和硬件实现方式则难以同时达到这两方面的要求。随着可编程逻辑器件的发展,使用FPG A来实现FIR滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用FPGA器件来实现FIR滤波器。 1 FIR滤波器工作原理 在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,使之成为8bit的数字信号,一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。

2 16阶滤波器结构 在滤波过程中实现抽取,对于抽取率为N的抽取滤波器而言,当进来N个数据时滤波器完成1次滤波运算,输出1次滤波结果。抽取滤波器的结果和先滤波后抽取的结果是一致的,只是对于同样的数据,进行滤波运算的次数大大减少。在数字系统中采用拙取滤波器的最大优点是增加了每次滤波的可处理时间,从而达到实现高速输入数据的目的。采样数据与滤波器系数在控制电路的作用下,分别对应相乘并与前一个乘积累加,经过多次(有多少阶就要多少次)反复的乘累加最后输出滤波结果,将相同系数归类,16阶滤波器公式: 乘法器的数量减少一半,但加法器的数量增多了,但相对乘法运算来说,加法运算所占用的资源少的多,运算的速度也快得多。 3 滤波器系数的求取 使用Matlab集成的滤波器设计工具FDAtool,可以完成多种滤波器的数值设计、分析与评估,设计16阶低通滤波器参数如下:

cic滤波器的fpga实现

cic滤波器的FPGA实现 发布时间:2016-01-26 15:07:21 技术类别:CPLD/FPGA 一、关于多采样率数字滤波器 很明显从字面意思上可以理解,多采样率嘛,就是有多个采样率呗。前面所说的FIR,IIR滤波器都是只有一个采样频率,是固定不变的采样率,然而有些情况下需要不同采样频率下的信号,具体例子我也不解释了,我们大学课本上多速率数字信号处理这一章也都举了不少的例子。 按照传统的速率转换理论,我们要实现采样速率的转换,可以这样做,假如有一个有用的正弦波模拟信号,AD采样速率是f1,现在我需要用到的是采样频率是f2的信号,传统做法是将这个经过f1采样后的信号进行DA转换,再将转换后的模拟信号进行以f2采样频率的抽样,得到采样率为f2的数字信号,至此完成采样频率的转换 但是这样的做法不仅麻烦,而且处理不好的话会使信号受到损伤,所以这种思想就被淘汰了,现在我们用到的采样率转换的方法就是抽取与内插的思想。 二、抽取 先来总体来解释一下抽取的含义:前面不是说,一个有用的正弦波模拟信号经采样频率为f1的抽样信号抽样后得到了数字信号,很明显这个数字信号序列是在f1频率下得到的,现在,假如我隔几个点抽取一个信号,比如就是5吧,我隔5个点抽取一个信号,是不是就是相当于我采用了1/5倍f1的采样频率对模拟信号进行采样了?所以,抽取的过程就是降低抽样率的过程,但是我们知道,这是在时域的抽样,时域的抽样等于信号在频域波形的周期延拓,周期就是采样频率,所以,为了避免在频域发生频谱混叠,抽样定理也是我们要考虑的因素 下面来具体来介绍 如上图所示,假如上面就是某一有用信号经采样频率f1抽样得到的频谱,假设这时候的采样频率为8 Khz ,可以通过数格子得到,从0到F1处有8个空格,每个空格代表1Khz,有些朋友可能会问,这不是在数字频域吗,单位不是π吗,哪来的hz?是的,这里是数字频域,采样频率F1处对应的是2π,这里只是为了好解释,我们用模拟频率来对应数字频率。 上面是采样频率为8K的数字信号频域图,现在我要对这个数字信号进行时域抽取,从而来降低信号的采样率,我们知道,一旦我们对数字信号进行时域抽取,那么采样率下降,而采样率就是数字信号频域的波形周期,那么也就是周期下降,所以,我们对信号进行抽取要有个度,要在满足抽样定理的条件下对信号进行抽取,否则就会发生频谱混叠。

基于FPGA的数字滤波器的设计

基于FPGA的数字滤波器的设计Graduation Design(Thesis) of Chongqing University Design of Digital Filter Based on FPGA Undergraduate: Huang Jianhua Supervisor: Yang Lisheng Major:ElectronicInformation Engineering

College of Communication Engineering Chongqing University June 2013

摘要 数字信号处理在通信、雷达、声纳等中有着广泛的应用。数字滤波器的设计是数字信号处理的关键技术之一,有着十分重要的理论和实际意义。随着数字技术的不断发展,在许多场合,数字滤波器正在快速取代模拟滤波器。FPGA(现场可编程门阵列)在现代数字电路设计中发挥着越来越重要的作用。从设计简单的接口电路到设计复杂的状态机,FPGA所扮演的角色已经不容忽视。 本论文完成了基于FPGA的FIR和IIR数字滤波器的设计与实现。本论文首先理论分析讨论了数字滤波器的设计方法,并使用MATLAB工具验证采用哪种窗函数来设计FIR数字滤波器,使用哪种模拟滤波器原型映射IIR数字滤波器。然后根据模拟滤波器的技术指标来确定数字滤波器的技术指标,在MATLAB环境下按照数字滤波器的技术指标设计数字滤波器,并得到滤波器系数,编程实现系数量化,并且比较分析量化前后系统响应的差异,由此得到合适的量化等级。然后在ISE软件平台下根据MATLAB工具得到的量化系数,使用VHDL语言进行FIR和IIR滤波器算法模块编程,同时对AMP电路(可编程预放大器)模块、AD电路(模拟到数字转换器)模块和DA电路(数字到模拟转换器)模块分别进行编程配置,并且对各模块进行严格的软件仿真验证,其中AMP电路模块、AD电路模块和DA电路模块必须进行硬件验证。最后将所有软件和硬件验证无误的模块整合,下载到FPGA硬件中,进行功能验证。验证结果符合设计要求。 关键词:FIR滤波器,IIR滤波器,MATLAB,FPGA,VHDL

基于FPGA的FIR滤波器设计与实现

目录 引言 (4) 第一章FPGA的设计流程 (5) 1.1 FPGA概述 (5) 1.2 FPGA设计流程 (9) 1.3硬件描述语言HDL(Hardware Description Language) (10) 1.4 FPGA开发工具Quartus Ⅱ软件设计流程 (13) 第二章有限冲激响应(FIR)滤波器的原理及设计 (16) 2.1数字信号处理基础原理 (16) 2.2 FIR滤波器背影知识 (19) 2.3 FIR数字滤波器原理 (21) 2.4 利用窗函数法设计FIR滤波器 (26) 第三章FIR 数字滤波器的FPGA实现 (31) 3.1串行FIR滤波器原理 (31) 3.2分布式算法基础 (32) 3.3直接型FIR滤波器的原理结构图 (34) 3.4具有转置结构的FIR滤波器 (36) 第四章结论与总结 (40) 谢辞 (42) 参考文献 (43)

摘要:本论文课题是《基于FPGA的FIR滤波器设计与实现》。数字滤波器是语音与图象处理、模式识别、雷达信号处理、频谱分析等应用中的一种基本的处理部件,它能满足滤波器对幅度和线性相位的严格要求,避免模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。有限冲激响应(FIR)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性。因此在许多应用领域都显示了强大的生命力,具有重要应用意义。本文介绍了用VHDL实现线性相位FIR(有限长单位冲激响应)滤波器。提出了一种基于FPGA的FIR滤波器设计方案。介绍了基于FPGA的FIR滤波器的数字信号处理的算法设计,采用直接型和转置型的基本结构来设计,其运算效率明显提高,并结合先进的EDA软件进行高效的设计和实现,并给出了用Quartus Ⅱ运行的仿真结果。该设计对FPGA硬件资源的利用高效合理,用VHDL编程,在PFGA中实现了高采样率的FIR滤波器。关键字:FIR滤波器;FPGA;VHDL;MATLAB;Quartus Ⅱ

FPGA的CIC滤波器的设计要点

基于FPGA的CIC数字滤波器的设计 摘要:级联积分梳状(Cascade Integrator Comb,CIC)滤波器是数字系统中实现大采样率变化的多速率滤波器,已经证明是在高速抽取和插值系统中非常有效的单元,在数字下变频(DDC)和数字上变频(DUC)系统中有广泛的应用。它不包含乘法器,只是由加法器,减法器和寄存器组成,而且需要的加法器的数目也减少了许多,因此CIC滤波器比FIR和IIR滤波器更节省资源,并且实现简单而高速。本文主要讨论了CIC滤波器的基本原理和基于FPGA的仿真实现方法,具体是采用Verilog HDL语言编程,将滤波器分为积分器模块和梳状器模块2个部分,对每个模块进行具体的功能分析和设计实现,最后通过Modelsim 仿真对滤波器的性能进行分析,验证了设计的正确性。 关键词:CIC滤波器;抽取;FPGA;Verilog HDL the Design of Cascade Integrator Comb Filter Based on FPGA Abstract:CIC (Cascade Integrator Comb, CIC) filter is a digital system to achieve large changes in multi-rate sampling rate filter, which has been proven to be a very effective unit in the high-speed extraction and interpolation system. It is widely used in the digital down conversion (DDC ) and digital up conversion (DUC) systems. It does not contain the multiplier, but just composes by adders, subtractors and registers, and the number of needing adders is reduced a lot. So it takes fewer resources than FIR filter and IIR filter. And the speed of CIC filter is very high and it is also very convenient to realize.This article discusses the basic principles of CIC filter and the simulation way based on FPGA. The modules were described with Verilog HDL. Firstly, the filter was divided into two parts which were integration module and the comb module. Then the function of each module were analyzed and designed. Finally the performance of the filter was analyzed under ModelSim and the correctness of the design was verified. Keywords:CIC filter; Decimation; FPGA; Verilog HDL 1. 引言: 数字滤波是数字信号分析中最重要的组成部分之一,数字滤波与模拟滤波相比,具

FIR带通滤波器的FPGA实现

FIR带通滤波器的FPGA实现 时间:2009-11-11 09:14:40 来源:现代电子技术作者:石兴华,吴光敏引言 在FPGA应用中,比较广泛而基础的就是数字滤波器。根据其单位冲激响应函数的时域特性可分为无限冲击响应(Infinite Impulse Response,IIR)滤波器和有限冲击响应(Finite Impulse Response,FIR)滤波器。DSP Builder集成了Altera和Matlab/Simulink基于FPGA的信号处理的建模和设计。该工具可以将数字信号处理算法(DSP)系统表示成为一个高度抽象的模块,在不降低硬件性能的前提下,自动将系统映射为一个基于FPGA的硬件设计方案。即支持设计者在Matlab中完成算法设计,在Simulink软件中完成系统集成,然后通过SignalCompiler(模块名)生成在QuartusⅡ软件中可以使用的硬件描述语言,最终实现硬件系统的设计。FIR滤波器是DSPBuilder应用中最为常用的模块之一,在此基于上述基础,设计实现了基于模块的FIR数字带通滤波器。 1 基于DSP Builder的滤波系统设计 1.1 FIR滤波器原理 有限冲激响应(Finite Impulse Response,FIR)滤波器是由有限个采样值组成,实现的方式是非递归、稳定的,在满足幅频响应要求的同时,可以获得严格的线性相位特性,因此在高保真的信号处理等领域得到广泛应用。 对于一个FIR滤波器系统,它的冲击相应总是有限长的,其系统函数可记为: 最基本的FIR滤波器可表示为: 式中:z(n)是输入采样序列;h(n)是滤波器系数;L是滤波器阶数;y(n)表示滤波器输出序列,为x(n)和h(n)的卷积。FIR滤波器基本结构如图1所示。 对于一个4阶滤波器子系统其输出可表示为: 可见在这个子系统中共需要4个延时器,4个乘法单元和一个4输入的加法器,并可以根据实际需要选择调用子系统构成多阶滤波器。 1.2 滤波的总体要求及实现

基于FPGA的数字滤波器

学士学位论文论文题目: 基于FPGA的数字滤波器设计 院 (部)名称:电气信息工程学院 学生姓名: 专业:测控技术与仪器学号: 指导教师姓名:

摘要 本论文设计了一个基于FPGA(现场可编程逻辑门阵列)FIR(有限脉冲响应)31阶低通滤波器,通带截止频率为0.1MHz,通带波纹最大1dB,阻带最小衰减-50dB,数据的输入输出宽度为8位,采样频率5MHz。 滤波器分为模拟滤波器和数字滤波器,在信号系统邻域中,一般除了A/D 转换前期的滤波和D/A转换后的滤波使用模拟滤波器,基本上其他的滤波一般优先考虑数字滤波器。数字滤波器与模拟滤波器相比有许多的优点:频域易控制,性能指标好;容易实现线性相位的系统,而且稳定,基本上不受外界影响;可重用性和灵活性比较高,只需编程就可以修改其特性,设计周期短。 数字滤波是推动数字信号处理与相关芯片快速发展的一个要素。本论文的FPGA芯片选用Altera公司Cyclone2系列的EP2C8Q208C8N芯片,模数转换使用ADC9280,数模转换使用DAC9708,来实现数字滤波器,FPGA与ASIC、DSP相比,具有明显的优势,在功耗,体积,成本都优于ASIC、DSP,并且处理效率高,可编程性好,并行处理能力非常强,能完成DSP很难完成的许多功能。 本论文首先简单的介绍数字滤波器、FIR滤波器、FIR的窗口函数选择以及FPGA分布式算法的实现,并对系统硬件各功能模块进行了说明;然后根据系统总体设计的要求指标,使用MATLAB来设计确定系数,因为FPGA不能表示浮点数,所以对系数进行了量化,使用verilog HDL硬件语言编程,Modelsim进行功能仿真;最后使用实物来验证结果,并达到预期的目的。 关键词:FPGA,FIR滤波器,MATLAB,分布式算法

CIC插值滤波器的FPGA设计与实现

CIC插值滤波器的FPGA设计与实现 摘要:基于多速率信号处理原理,设计了用于下变频的CIC插值滤波器,由于CIC 滤波器结构只用到加法器和延迟器,没有乘法器,很适合用FPGA来实现,所以本文分析了CIC滤波器的原理,性能及影响参数,借助MATLAB设计符合系统要求CIC 滤波器,并利用Modelsim软件建模仿真,验证CIC滤波器性能是否达到要求。(一)CIC滤波器基本原理 A.CIC滤波器的基本单元 CIC滤波器主要由积分滤波Integrator和梳状滤波Comb两个基本单元部分构成。 典型的CIC滤波器的结构,它由两个基本单元I(积分滤波器)和C(梳状滤波器)级联构成。本设计主要针对插值滤波器,所以插值滤波器的结构示意图如图1-1所示: 图 1-1 3级级联的CIC插值滤波器结构示意图 积分器和梳状滤波器之间是一个采样率转换器,对于CIC插值器而言,它完成在每一个样值后补上R-1个0值的工作,,对于CIC抽取器来说,它完成在实际的抽取工作,每R个样值中取样一个。 R(插值倍数),M(延迟因子,一般取1或者2)以及N(级联级数)是影响CIC 滤波器的三个参数,它们的值需根据通带性能的需求而设定。 (二)CIC插值滤波器的设计流程 根据CIC滤波器的原理,本设计的流程如图2-1所示:

图2-1 CIC 插值滤波器的设计流程图 (三)模型的建立和测试 A .位宽策略 对于数字滤波器,一个不得不考虑的问题是为防止溢出每一级所需的位宽。对于抽取器来说,CIC 滤波器的输出增益为 (*)N G R M = (3-1) 所以,在全精度的情况下,最后一级输出的位宽为 2log (*)out in B B N R M =+ (3-2) 其中in B 表示输入数据的宽度,为了保证精度,每一个积分器和梳状滤波器的输入输出位宽都为out B 。 对于插值器而言,输出增益为 212,1,2,....2(*)/,1, 2......2i i N i N i N G R M R i N N N --?? == ? ? =++?? (3-3) 因此,第i 级为避免溢出所需要的位宽为 2log ()i in i W B G =+ (3-4) 最后一级输出位宽为 22log (*)log out in B B N R M R =+- (3-5) 在实际当中,当差分延时M=1时,为保证稳定,所有积分器的位宽在理论值的基础上加一。 max B 不仅是滤波器输出的最大可能的位数,也是每一级滤波器的最大可能位

基于FPGA的FIR滤波器设计

长春理工大学毕业设计 摘要 在现代电子系统中,FIR数字滤波器以其良好的线性特性被广泛使用, 随着可编程逻辑器件和EDA技术的发展,使用FPGA来实现FIR滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用FPGA器件来实现FIR 滤波器。 本论文对基于FPGA的FIR数字滤波器实现进行了研究,以FIR数字滤波器的基本理论为依据,并且采用查找表以及线性FIR波器的对称性特点使得硬件规模极大的减小。为了验证仿真结果的正确性,文中应用了MATLAB和VHDL联合仿真方法对设计的电路进行仿真测试,结果达到设计指标。并用MATLAB对仿真结果进行了分析,证明了所设计的FIR数字滤波器功能正确。 关键词: 有限脉冲响应现场可编程门阵列查找表窗函数仿真 ABSTRACT In the modern electrical system, the FIR digital filter is used for many practical applications for its good linear phase character, Along with the development of PLD device and EDA technology, more and more electrical engineers use FPGA to implement FlR filter, as it not only meet the real-time requirement, but also has some flexibility. In this paper, a method to implement the FIR filter using FPGA is proposed. According to the basic theory of FIR filters, the thesis reduces it with the use of multiple coefficient memory banks and the symmetry characteristic of linear FIR filter. In order to make the verification more available, the complex simulation with Matlab and VHDL is used to testify the design whether fulfills the requirement. And also the result of the simulation is analyzed with the use of MATLAB, and it proved that the function of the design is correct. KEYWORDS: FIR FPGA Windows Function Simulation

基于FPGA的数字低通滤波器

泉州师范学院 毕业论文(设计) 题目基于FPGA的数字低通滤波器 物理与信息工程学院电子信息科学与技术专业07级学生姓名周志凯学号070303025 指导教师吴志伟职称讲师 完成日期2011年4月 教务处制

基于FPGA的数字低通滤波器 物理信息工程学院电子信息科学与技术专业 070303025 周志凯 指导老师:吴志伟讲师 【摘要】:低通滤波器是让某一频率以下的信号分量通过,而对该频率以上的信号分量大大抑制的电容、电感与电阻等器件的组合装置。数字滤波器能够满足对于相位特性跟幅度的严格要求,能够改善模拟滤波器无法解决的电压和温度漂移还有噪声等问题。利用FPGA,在QUARTUSⅡ平台上使用VHDL银剑描述语言改变滤波器的系数和阶数,通过结合MATLAB工具软件的辅助设计,使低通滤波器具有快速、灵活硬件资源损耗少。 【关键词】:FPGA;MATLAB;数字滤波器;QUARTUSⅡ

目录 1引言 (4) 2 EDA技术的主要内容 (4) 2.1大规模可编程器件 (4) 2.2硬件描述语言 (4) 2.3软件开发工具 (4) 2.4实验开发系统 (5) 3 FPGA简介 (5) 4 MATLAB简介 (5) 5 数字滤波器的工作原理 (6) 6低通滤波器的基本特性 (6) 7用MATLTAB设计低通滤波器 (7) 7.1在MATLAB中进行仿真设计 (7) 7.2运用QuatusⅡ检验滤波效果 (9) 7.3结果记录 (12) 8结束语 (12) 致谢 (13) 参考文献: (13) 附录: (15)

1引言 随着现在科学技术的高速发展,高精度集成电路的使用,生产力有了大幅度的发展,快捷的EDA工具,使用集成化设计环境,需要更快的速度来开发出质量一流性能优良的电子产品,这对于EDA技术有了更高的要求了。未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及开发操作平台等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展[1]。 本次设计的基于FPGA的数字低通滤波器是围绕EP2C8Q208C8芯片添加输入和输出电路而成的。用户通过QuartusⅡ进行编程、仿真、下载到芯片实现相应的功能,简单方便,具有很高的实用价值。 2 EDA技术的主要内容 EDA (Electronic Design Automation)是指利用计算机完成电子系统的设计,以计算机和微电子技术为先导,汇集了计算机图形学、逻辑学、微电子工艺和结构学以及计算数学等多种计算机应用学科最新成果的先进技术。 EDA技术一般包括以下四个方面:1.大规模可编程逻辑器件;2硬件描述语言;3软件开发工具;4实验开发系统。 2.1大规模可编程器件 可编程逻辑器件(PLD)是一种由用户变成以实现某种逻辑功能的新型逻辑器件。FPGA 和CPLD器件的应用广泛,随着EDA技术的发展成为电子设计领域的重要角色。FPGA包括可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分;而CPLD则包括可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。他们的最明显特点是高集成度、高速度和高可靠性[2]。 2.2硬件描述语言 VHDL:在电子科技工程领域里,作为IEEE的工业标准硬件描述语言,已成为通用的硬件描述语言。 Verilog:比较使用RTL级和门电路级的描述,综合过程比VHDL简单一点,在高级描述语言方面没有VHDL好。 2.3软件开发工具 当前比较流行的EDA软件工具有Altera公司的quartusⅡ、Lattice 公司的ispexpert、Xilinx公司的foundation Series。本次设计所用的软件是quartusⅡ。 Quartus II:支持原理图、VHDL和Verilog 语言文本文件以及波形与EDIF等格式的文件作为设计输入,并支持这些文件的任意形式混合设计。它具有门级仿真器,可以进行功能

FIR滤波器的FPGA实现方法

FIR滤波器的FPGA实现方法 关键字::FIR FFT FPGA 关键字 在数字信号处理系统中,有限脉冲响应(finite impulse response,FIR)数字滤波器是一个非常重要的基本单元。近年来,由于FPGA具有高速度、高集成度和高可靠性的特点而得到快速发展。随着现代数字通信系统对于高精度、高处理速度的需求,越来越多的研究转向采用FPGA来实现FIR滤波器。而对于FIR滤波器要充分考虑其资源与运行速度的合理优化,各种不同的FIR滤波结构各具优缺点,在了解各种结构优缺点后才能更好地选择合适结构来实现FIR滤波。 1FIR数字滤波器 FIR数字滤波器由有限个采样值组成,设计中在满足幅值特性时,还能保证精确、严格的相位特性,因此在信号处理等领域得到广泛的应用。 对于FIR滤波器,其输出y(n)表示为如下形式: 式中:N为滤波器的阶数(或抽头数);x(i)表示第i时刻的输入样本;h(i)为FIR滤波器的第i级抽头系数。 由于FIR滤波器的冲击响应为一个有限序列,其系统函数可表示为: FIR滤波器的基本结构如图1所示。FIR滤波器只在原点处存在极点,所以这使得FIR 滤波器具有全局稳定性。同时FIR滤波器满足线性相位条件,其冲击响应序列为实数且满足奇对称或偶对称条件,即: 2实现方法 运用FPGA来实现FIR数字滤波器的结构多种多样,但是主要有以下几类:串行结构、并行结构、转置型结构、基于FFT算法结构、分布式结构。其他类型的FIR滤波器结构都可以由以上几种结构衍生而来。 2.1串行结构

由表达式(1)可知,FIR滤波器实质是做一个乘累加运算,其滤波器的阶数决定了一次乘累加的次数,其串行结构如图2所示。 串行结构的FIR滤波器结构简单,硬件资源占用少,只需要复用1个乘法器和1个加法器,所以成本较低。但是,这种结构的FIR滤波器要经过多个时钟周期才有输出,同时,内部时钟周期还受到乘法器运算速度的影响,所以该结构的FIR滤波器处理速度慢,只适用于滤波阶数较低且处理速度要求低的系统。 2.2并行结构 将串行结构的FIR滤波器展开就可以得到并行结构的FIR滤波器,并行FIR滤波器结构又称作直接型FIR滤波器结构,这种结构是直接根据图1的滤波器结构,用多个乘法器和加法器并行实现。通常考虑到其滤波器系数的对称性,先对输入值进行加法运算,再进行乘法运算,最后累加输出,以此来减少乘法器的个数,其结构如图3所示。 并行结构的FIR滤波器在1个周期内可以完成1次滤波,运行速度快,虽然利用滤波系数对称性,但仍要占用大量的乘法器和加法器,特别对于滤波阶数高的滤波器,其资源占用较多,如对于256阶的滤波器,其需要128个乘法器来实现。为提高滤波器速度,常引入流水线结构,即在每次加法或者乘法运算后加入1个寄存器存储数据,使得滤波器可以运行在更高的频率上。 2.3转置型结构 根据转置定理,如果将网络中所有的支路方向倒转,并将输入x(n)和输出y(n)相互交换,则其系统函数H(z)不变。通过转置定理,将并行结构的FIR滤波器变换就可以得到转置型FIR滤波器,其结构如图4所示。

基于FPGA的数字滤波器的设计与实现

文章编号:1002-8684(2008)05-0023-03 基于FPGA的数字滤波器的设计与实现 陆宇鹏,邱宏安,田多华,邵立群 (西北工业大学航海学院,陕西西安710072) 【摘要】提出了一种基于FPGA的FIR线性相位滤波器设计方案,充分利用FPGA四输入查找表LUT结构构成向量乘法器,给出了对应的VHDL源程序及仿真结果,并讨论了设计误差原因及改进措施。与普通滤波器相比,基于查找表的FIR滤波器具有速度快、占用资源少的特点。采用流水线技术对加法运算进行处理,速度进一步提高。 【关键词】FPGA;FIR滤波器;VHDL;四输入查找表 【中图分类号】TN713【文献标识码】A DesignofFIRFilterBasedonFPGA LUYu-peng,QIUHong-an,TIANDuo-hua,SHAOLi-qun (CollegeofMarine,NorthwestPolytechnicalUniversity,Xi′an710072,China)【Abstract】ThedesignschemeofFIRlinearityphasicdigitalfilterbasedonFPGAisintroduced.TheFPGAfourimportLUTconfigurationisusedtomakeupofvectormultiplication,andtheVHDLsourceprogramandsimulatingresultsaregiven.Thedesignerrorcauseandimprovingmeasurearediscussed.Comparedwithcommonfilter,thefilterbasedLUThastheadvantagesofquickspeedandlessresource.Theproductionlinetechnologyisemployedtocarryouttreatmentonadditionarithmetic,andtoimprovespeed. 【Keywords】FPGA;FIRfilter;VHDL;LUT ?实用设计? 1指标的确定和滤波器系数的提取根据工程实际需要,选定FIR的性能指标如下:采样频率f s =1000Hz;截止频率fc=100Hz;类型:低通;阶数:16阶;8bit输入和输出数据宽度。 FIR滤波器的系数可用窗函数的方法来获得,窗函数法的基本思想是使其具有最窄主瓣宽度和尽可能小的旁瓣[1]。笔者选择利用矩形窗进行设计,因为在编制LUT表的过程中运算量较小。若不选择矩形窗而选择其他窗函数进行设计也是可行的,因为ROM的容量很大,在编制查找表时,常常只用到它的一小部分空间,只是在编制查找表时计算量会变得很大。 2系数的量化 Matlab模拟得到的脉冲成形滤波器的系数都是浮点数,转换成定点系数需要进行量化。理论上使量化误差最小的定点系数在数轴上是均匀分布的,而CSD编码的系数在数轴上是非均匀分布的。存在空隙,即使无限增加字长也不能减小这个空隙,要减小这个空隙只有增加非零位个数。而非零位个数L非常重要,直接关系到硬件规模,L每加1,每个抽头就需要增加一个加法运算。 h(n)是通过窗函数求得的,在实际编写查找表时,由于数据全部采用二进制的补码形式,因此若不改变表中h(n)的形式直接编制,则得到的结果会因为个别数据产生溢出而发生错误,如当有2个同符号数相加时就可能产生溢出,溢出现象是由于得到运算结果超出了8bit补码所能表示的数据范围。 为了防止这种情况的产生,笔者采用了将h(n)数据右移一位,并增加一位符号位的方法。此种方法在保持数据位数不变的前提下,是通过牺牲数据精度来得出正确结果的。 3FIR滤波器的算法分解及查找表的实现原理 基于FPGA进行FIR滤波器设计,主要是通过乘法器、加法器和移位寄存器来实现,其核心是乘累加功能[2]。查找表的方式是将乘法器用查找表来代替,由此来提高运算速度,减少资源占用,如图1所示,以8bit输入为例,说明如何使用查找表来实现乘累加运算的。以一个2bit正整数的例子加以说明。

32阶FIR滤波器的FPGA实现

32阶FIR滤波器的FPGA实现 随着软件无线电的发展。对于滤波器的处理速度要求越来越高。传统的FIR滤波器一般采用通用DSP处理器,但是DSP处理器采用的是串行运算,而FPGA是现场可编程阵列,可以实现专用集成电路,另外还可以采用纯并行结构及考虑流水线结构,因此在处理速度上可以明显高于DSP处理器。本文采用并行分布式算法在FPGA上设计并实现了高速处理的32阶FIR 低通滤波器,在此过程中利用Matlab的数值计算与分析功能来提高设计效率。 1 FlR低通滤波器的窗函数实现 理想的滤波器频率响应中傅里叶反变换ha(n)一定是无限长的序列,而且是非因果的,而实际要设计的滤波器h(n)是有限长的,因此要用有限长来逼近无限长的,其方法就是用一个有限长度的窗口函数序列ω(n)来截取,即:常见的窗函数有矩形窗、巴特利特窗、汉宁窗、哈明窗、布莱克曼窗、凯泽窗。其中,凯泽窗提供了可变的过渡带宽。本文采用凯泽窗对FIR滤波器进行设计,其窗函数表达式为: I0[·]为第一类变形零阶贝赛尔函数,形状参数β为依赖于滤波器阶数M的参数,用来调整主瓣宽度与旁瓣衰减,选择M可产生各种过渡带宽和接近最优的阻带衰减。给定通带截止频率ωp,阻带起始频率ωs,阻带衰减As,凯泽窗设计中有经典公式可供使用,如下:过渡带宽:滤波器阶数:形状参数:假设低通数字滤波器设计指标如下: 采用上面介绍的凯泽窗,利用Matlab编程计算得到32阶FIR低通滤波器参数如下: 32阶FIR低通滤波器幅频特性图。 上述求得的系数是浮点型的,而在FPGA设计中使用的数据是定点型的,所以在设计滤波器之前要将系数转化为定点型,即系数的量化。在本文中采用数字信号处理(DSP)技术中的Q 值法对系数进行量化。为了兼顾精度和所占用的资源,本文的系数用12位二进制来量化,得到的整数系数结果如下: 2 并行分布式算法原理及FPGA设计 32阶FIR滤波器的差分方程表达式为: 式中:x(n)为输入;y(n)为输出;h(n)为滤波器系数。设x(n)用二进制可表示为: 其中,最高位为符号位。则式(7)可写为: 式(10)为并行分布式算法,由上可以看出并行分布式算法是将滤波器表达式重新排列,分别加权求和。与传统算法最大的不同之处是在FPGA设计过程中以查找表代替乘法器,即根据输入数据的不同,将对应的滤波器系数预先求和保存在ROM中,也就是将每一项的乘法求和通过并行结构查表寻值完成,提高运行速度。具体FPGA实现时,首先将12位的输人数据并行输入到12列32位移位寄存器分别寄存,然后以寄存器中的值为地址,对应于查找表的结果,按照式(10),每列进行相应二次幂加权,最后各列累加,在第32个数据完全输入之后得到正确的滤波器输出。由于输入数据的延迟,在此之前滤波器输出会延迟或者产生不正确的结果,可以在实现过程中加入控制信号进行输出控制。由于查找表的规模是随着地址的增加呈指数增加的,可以将32位的查找表划分为四个8位的查找表,从而降低对ROM的需求。在本设计中可采用多级流水线技术,也就是将在明显制约系统速度的长路径上插入几级寄存器,虽然流水线会影响器件资源的使用量,但它降低了寄存器间的传播时延,允许

相关文档
最新文档