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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 不仅是滤波器输出的最大可能的位数,也是每一级滤波器的最大可能位

数。但有时候,输出位宽需要根据实际需要引入四舍五入或截取的方法来减少位数。简单的做法是直接在输出端做四舍五入或者截取,更复杂点的方式是在每一级都做四舍五入或者进行截取。这自然需要研究一下因四舍五入或截取所引起的滤波器输出端误差,具体的方法就是通过单独研究每一级误差源(指每一级滤波器截取或四舍五入引起的误差)的均值和方差,利用统计特性研究滤波器输出端总的均值和方差。

表 3.1不同参数全精度下的输出位宽

根据实际时的滤波器结构,可以认为误差源有2N+1个:2N个滤波器级因四舍五入或截取所产生的误差源和一个输出寄存器因四舍五入或截取所产生的误差源。

对于CIC滤波器的三个基本单元,都不涉及乘法器,而采样率变换器不使用任何运算单元。

(四)CIC滤波器的matlab仿真

在matlab的程序里,分三部分即根据CIC插值滤波器的原理进行描述。

激励信号采样正弦信号,以及白噪声信号的测试模型。测试信号的点数,正弦信号的频率和采样率可以根据需要设定。

1.仿真结果

图4-1是CIC插值滤波器的频率响应曲线,其中正弦频率fs=200Hz,采样率Fs=800Hz。

图4-1 CIC插值滤波器的频响曲线

图4-2是正弦信号做完4倍插值前后曲线的比较

图4-2 正弦信号经过CIC插值滤波器前后的信号(N=3,R=4,M=1)

白噪声信号的频率响应曲线如图4-3所示,而经CIC滤波器处理后的白噪声信号频率响应曲线如图4-4所示。

图4-3 白噪声的频率响应

图4-4 白噪声经过CIC插值滤波器处理后的频率响应(N=3,M=1,R=4)

(五) CIC 滤波器的FPGA 实现

1. 接口设计

图5-1 CIC 插值滤波器的接口符号

表5.1:CIC 滤波器的管脚说明

2.子模块的划分和定义

按照MATALB 仿真时的方式,将子模块划分为积分器(interg ),梳状滤波器(comb )和采样率变换器(in )三个子模块。

图5-2 子模块的划分框图及接口声明 梳状滤波器的实现(M=3):

图5-3 梳状滤波器RTL框图,N=3

积分滤波器的实现(M=3):

图5-4 积分滤波器RTL框图,N=3

采样率变换器(插值补零)的实现:

图5-5 采样率变换器RTL框图

其中cnt为计数器,即实现的插值倍数。

3.测试方式

在传统的设计方法中,一般采用图4-2的方式进行测试,这种方式结构简单,目标明确,但是testbench模块以及其激励信号是不可综合的,因而无法在FPGA 上进行测试和调试。因此本设计testbench的模块流程如下:

图5-6 testbench模块的结构图

这种结构更方便结果的对比,而且是可综合模块,可以在FPGA上进行调试。4测试结果

图5-7是N=3,R=4,M=1时的4倍插值RTL仿真结果。从上到下,依次是输入使能,时钟,输入,复位,使能,插值后的正弦波形,插值前的正弦波形。

图5-7 一个周期128采样点的正弦信号4倍插值RTL仿真结果从图中可以看出CIC滤波器很好的完成了正弦信号的插值工作。

相关文档
最新文档