首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Matlab和FPGA的CIC滤波器的设计(2)

基于Matlab和FPGA的CIC滤波器的设计(2)

ISOP滤波器转移函数定义为:


  由于信号的归一化通带带宽FC1 = 60 /*4 =0. 009 8, 而抽取因子D1 = 16, 则由1 ≤ k ≤1 / (2D1 FC1 ) ,可以得到, 则I = kD1。在根据使通带容差最小的原则进行优化设计,即使k满足1 < k <4,而本文是通过FDATool设计ISOP滤波器的,通过调节它的参数满足性能的要求的,不过补偿是以减小阻带衰减为代价的。
  从以上的分析综合:本文选用5级级联的CIC滤波器来实现16倍抽取滤波,并在后面级联一ISOP补偿滤波器。CIC滤波器采用工作在频率为6. 144MHz的5个积分器和工作在385 kHz的5个微分器的流水线组成,积分器采用累加器实现,微分器采用全减器实现。他们中间由一个16倍的抽取机构相连接。
  2. 3 MATLAB频谱分析及ISOP的补偿验证
此CIC滤波器要求其通带纹波小于0. 5 dB,阻带衰减要大于60 dB。通过MATLAB中的FDATool工具箱,根据上面分析得到的CIC滤波器的参数,设计次C IC滤波器,其频谱如图3所示,从图中可看出其阻带衰减有大于60 dB,满足要求。
  然而从图4中可看出其带通内的纹波大于0. 5dB,即在60 kHz内的带通纹波大致为1. 75 dB,和前面分析的是一致的,不满足要求,必须进行补偿。
  进行补偿是在后面级联一个ISOP补偿滤波器,经过MATLAB的仿真级联后的CIC滤波器的带内纹波如图5,从图可以看出带内纹波有所改善,大约为0. 3 dB,满足设计的要求。


图3 CIC滤波器的频谱图


图4 CIC滤波器的带内纹波图


图5 补偿后的CIC滤波器的带内纹波图

  3 CIC滤波器的FPGA实现
  本文是采用Verilog语言描述,在Xilinx ISE9. 1开发环境下仿真综合的,具体实现结构如图6所示,主要有三部分构成:首先是5个积分器,其次是抽取器实现16倍抽取,最后组成部分是5个梳状滤波器。


图6 CIC滤波器的结构图

  通过MATLAB产生输入信号为20 kHz的正弦信号,叠加上4 MHz的噪声信号,如图7 所示的。
  将产生的正弦信号量化存储后作为输入信号,最后又将模拟仿真后的数据通过MATLAB 读出画出图形如图8所示。而在ISE自带的仿真工具仿真的结果如图9所示的,从rdy的16个时钟变化一次,可以看出对输入信号进行16倍的抽取。
  图7、图8和图9的时序仿真可以看出,输出均实现了对输入信号的抽取,特别是当输入的正余弦信号叠加了噪声,抽取后输出的波形频率上变化不大,只有幅值上的一些变化。也就是说对于高频信号噪声,经过CIC和FIR滤波器的抽取后可将其有效滤除。


图7 输入的有叠加噪声的正弦信号


图8 经过抽取滤波后的输出信号


 图9 ISE仿真结果图

  4 结论
  本文介绍了积分梳状滤波器的基本原理,分析了影响其性能主要参数,根据具体的指标,计算出所需要的各个参数的值,借助MATLAB的FDATool工具根据所得参数设计CIC滤波器,仿真,分析其频谱和带通纹波,带阻纹波是否符合要求,最后给出了FPGA的设计方案,并借助了MATALB 的Simulink工具搭建具体的模块,验证仿真了滤波器的各项技术指标是符合要求的,设计是合理可行的,同时也可以得出:这种借助MATLAB的建模验证的设计方式是非常高效的,对其他数字系统设计也是具有借鉴意义的。
继承事业,薪火相传
返回列表