zoukankan      html  css  js  c++  java
  • 05单级CIC滤波器8倍抽取

    01实战原理

    在数字信号处理中,CIC滤波器是FIR滤波器中最优的一种,其使用了积分,梳状滤波器级联的方式。CIC滤波器由一堆或多对积分-梳状滤波器组成,在抽取CIC中,输入信号依次经过积分,降采样,以及与积分环节数目相同的梳状滤波器。在内插CIC中,输入信号依次经过梳状滤波器,升采样,以及与梳状数目相同的积分环节。

    CIC滤波器的两个特点:

    1、线性相位响应

    2、仅需延迟,加减法便可实现,不需要乘法,在FPGA等平台上易于实现

    CIC滤波器的冲击响应为:

    02matlab实现

    此次实战是设计一个单级CIC滤波器将采样率为352.8kHZ的1kHZ sin波向下降采样率到44.1kHz的1kHZ sin波(8倍抽取)。

    %Single CIC 
    %352.8khz sample rate down to 44.1khz sample rate
    close all
    clc
    clear all
    
    %参数定义
    FS =352800; %Sample rate Frequncy
    fc = 1000; %1khz
    N = 1024;
    Q = 16;
    M= 8;
    D = 8;
    t =0:2*pi/FS:2*pi*(N-1)/FS;%时间序列
    
    %波形产生
    sin_osc =sin(t*fc);
    
    %y = decimate(sin_osc,D);
    %y = downsample(sin_osc,D);
    
    %滤波器系数
    b=ones(1,M);
    a = 1;
    
    %8倍抽值处理
    sf=filter(b,a,sin_osc);     
    sm =sf./M;
    sd=sm(1:D:length(t));
    si0=zeros(1,length(sd)*D);
    si0(1:D:length(si0))=sd;
    
    [h,f]=freqz(b,a,N,FS);       %freqz函数求频率响应
    mag=20*log(abs(h))/log(10);  %幅度转换成dB单位    
    ph=angle(h)*180/pi;          %相位值单位转换
    
    figure(1),
    subplot(221),stem(sin_osc);
    title('采样频率352.8khz 1khz sin','fontsize',8);
    subplot(222),stem(si0);
    title('采样频率44.1khz 1khz sin','fontsize',8);
    subplot(223);plot(f,mag);
    xlabel('频率(Hz)','fontsize',8);
    ylabel('幅度(dB)','fontsize',8);
    title('freqz()幅频响应','fontsize',8);
    subplot(224);plot(f,ph);
    xlabel('频率(Hz)','fontsize',8);
    ylabel('相位(度)','fontsize',8);
    
    figure(2),
    subplot(211),stem(sin_osc);
    title('采样频率352.8khz 1khz sin','fontsize',8);
    subplot(212),stem(si0);
    title('采样频率44.1khz 1khz sin','fontsize',8);
    View Code

     8倍抽取前后的1kHZ sin时域波形

     滤波器系数的幅频和相频响应

    由图分析可知,单级CIC滤波器的降采样率设计成功。

    03FPGA实现

    fpga的单级cic滤波器的设计其实就是一个滑动平均滤波器,由一个累加器和一个移位操作完成。

    04modelsim仿真

    波形的间距是1khz,采样率352.8khz与采样率44.1khz的采样率从图中可以看出两者的不同。

     问题:仿真用到的这三个不知道是如何生成的?

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/FPGAer/p/14300786.html
Copyright © 2011-2022 走看看