cic滤波器_cic滤波器 ip核 - CSDN
精华内容
参与话题
  • CIC滤波器

    千次阅读 2017-04-19 16:40:57
    1、CIC滤波器

    1、CIC基本原理

          级联积分梳状(CIC)滤波器是多速率滤波器,在数字系统中主要用于实现大采样率变化的数字滤波,例如在数字下变频(DDC)和数字上变频(DUC)中用于处理采样率远大于信号带宽的信号。CIC滤波器主要是实现CIC抽取器和CIC插值器,对输入信号用级联的N个单位幅度矩形窗进行滤波的低通响应,矩形窗的宽度为RxM。其系统响应为

                   

    其中,N是CIC级数,R是速率变化(抽取或者插值),M是滤波器的梳状部分的差分延时。

    CIC滤波器响应是梳状滤波器部分、积分部分和过采样(对于插值)和降采样(对于抽取)的组合,提高了CIC滤波器的硬件实现效率。

    1)频率响应特性

    CIC滤波器的频率响应可以根据其系统响应H(z)获得,其中,z = exp(2j*pi*f)。这里f表示归一化的离散时间频率。对于CIC抽取滤波器,用速率变化的滤波器输入采样频率归一化;对于CIC插值滤波器,用速率变化的滤波器的输出采样频率归一化,即归一化到较高的频率。在z平面上,对采样点的幅度响应的计算公式如下:


    这个幅度响应是低通的。在CIC滤波器实现的设计过程中,通过对参数R、M和N的选择来在指定频率范围(0到预定义的截止频率fc)提供足够的通带特性。典型地,通带频率范围是经过CIC滤波器处理后信号占用的带宽。



    展开全文
  • cic滤波器设计

    千次阅读 2015-05-15 14:39:00
    读取ROM中采样率为48KHZ的正弦波数据,并将输出数据送入CIC滤波器中,分别完成抽取和插值。 抽取滤波器 说明:因为是抽取滤波器,不需要过采样,所以设置CIC滤波器的处理速度和输入数据采样率一致,都是48KHZ...

    读取ROM中采样率为48KHZ的正弦波数据,并将输出数据送入CIC滤波器中,分别完成抽取和插值。


    抽取滤波器


    说明:因为是抽取滤波器,不需要过采样,所以设置CIC滤波器的处理速度和输入数据采样率一致,都是48KHZ即可。




    最后一页是整个IP核的参数。




    这是我最后的仿真图,还可以吧。明显看到cic_out 的采样率比rom_data的采样率要低。并且,抽取率正好是5.

    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    插值滤波器

    插值滤波器的使用大致上和抽取滤波器一致。主要是在时钟的频率上要多加注意。




    其他的设置,和抽取滤波差不多,暂不做介绍


    可以看到,正好插值了5倍


    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    下面一些观点,是自己分析来的,没有经过验证


    这是IP核中图,该图是幅频函数而来的衰减函数(损耗函数,A(w) = -20lg | H(jw)|^2 db)。截止频率在-3db处。但是该图形的横坐标是归一化频率,

    不能直接看出截止频率是多少。要将归一化频率转化为频率。

    Although the values in the GUI plot range from 0 to 1.0, they represent the same range of frequencies as
    in the other figures, that is, the range from 0 to 1/2 the sampling frequency.   -----IP 手册

    我理解的是将横坐标所有的值乘以采样频率的一半,就是归一化之前的频率。其中,采样频率是 经过该滤波器之前的采样频率。

    ///

    CIC滤波器基本原理

    1、整数倍内插

         假如在原始信号两个采样点之间插入(I -1)个0,则内插后的信号频谱为原始序列谱经 I 倍压缩后得到的谱。

    2、整数倍抽取

      整数倍抽取是指把原始采样序列x(n)每隔(D-1)个数据取一个




    这一点在抽取滤波之前一定要考虑到。抽取序列的频谱是为抽取前原序列的频谱经频移和D倍扩展后D个频率的叠加和。





    展开全文
  • CIC滤波器的参数详细方法与应用

    千次阅读 2018-06-02 11:18:15
  • CIC滤波器的FPGA实现

    万次阅读 多人点赞 2018-05-13 18:53:38
    一、关于多采样率数字滤波器 很明显从字面意思上可以理解,多采样率嘛,就是有多个采样率呗。前面所说的FIR,IIR滤波器都是只有一个采样频率,是固定不变的采样率,然而有些情况下需要不同采样频率下的信号,具体...

    一、关于多采样率数字滤波器

          很明显从字面意思上可以理解,多采样率嘛,就是有多个采样率呗。前面所说的FIR,IIR滤波器都是只有一个采样频率,是固定不变的采样率,然而有些情况下需要不同采样频率下的信号,具体例子我也不解释了,我们大学课本上多速率数字信号处理这一章也都举了不少的例子。

         按照传统的速率转换理论,我们要实现采样速率的转换,可以这样做,假如有一个有用的正弦波模拟信号,AD采样速率是f1,现在我需要用到的是采样频率是f2的信号,传统做法是将这个经过f1采样后的信号进行DA转换,再将转换后的模拟信号进行以f2采样频率的抽样,得到采样率为f2的数字信号,至此完成采样频率的转换

         但是这样的做法不仅麻烦,而且处理不好的话会使信号受到损伤,所以这种思想就被淘汰了,现在我们用到的采样率转换的方法就是抽取与内插的思想。

    二、抽取

        先来总体来解释一下抽取的含义:前面不是说,一个有用的正弦波模拟信号经采样频率为f1的抽样信号抽样后得到了数字信号,很明显这个数字信号序列是在f1频率下得到的,现在,假如我隔几个点抽取一个信号,比如就是5吧,我隔5个点抽取一个信号,是不是就是相当于我采用了1/5倍f1的采样频率对模拟信号进行采样了?所以,抽取的过程就是降低抽样率的过程,但是我们知道,这是在时域的抽样,时域的抽样等于信号在频域波形的周期延拓,周期就是采样频率,所以,为了避免在频域发生频谱混叠,抽样定理也是我们要考虑的因素

        下面来具体来介绍



    如上图所示,假如上面就是某一有用信号经采样频率f1抽样得到的频谱,假设这时候的采样频率为8Khz,可以通过数格子得到,从0到F1处有8个空格,每个空格代表1Khz,有些朋友可能会问,这不是在数字频域吗,单位不是π吗,哪来的hz?是的,这里是数字频域,采样频率F1处对应的是2π,这里只是为了好解释,我们用模拟频率来对应数字频率。
      
        上面是采样频率为8K的数字信号频域图,现在我要对这个数字信号进行时域抽取,从而来降低信号的采样率,我们知道,一旦我们对数字信号进行时域抽取,那么采样率下降,而采样率就是数字信号频域的波形周期,那么也就是周期下降,所以,我们对信号进行抽取要有个度,要在满足抽样定理的条件下对信号进行抽取,否则就会发生频谱混叠。
         
     
          上图就是对信号进行了1/5倍的F1采样频率抽取,可见,由于发生了频谱混叠现象,因为1/5倍的F1是1600hz,而信号的频带是1000hz,不满足抽样定理,导致发生了频谱混叠,所以,为了避免发生这种情况,除了要满足抽样定理之外,即抽样倍数不能太高,我们还需要把信号的频带设置在F1/2以下,才能确保信号不发生频谱混叠,因此,我们需要在抽取之前加一个低通滤波器,书上叫做抗混叠低通滤波器,用来限制信号的频带,然后再进行抽取,这样的话我们来算一下
     
         低通滤波器的截止频率就是1/2倍的经抽取后的采样速率,即fc = 1/2 * (F1/M) ,M是抽取倍数。而1/2*F1对应的数域频率是π,因此我们得出,
      
         抗混叠低通滤波器的截止频率是π/M
     

    三、内插

          抽取的过程是降低采样率的过程,那么插值的过程当然就是提高采样率的过程。大体的思路可以这么理解,我们将经f1抽样下得到的数字信号的每两个点之间进行插值,插入的值是0,插值之后,信号在单位时间内的采样点数增多,当然也就是采样速率的提升,采样速率提升后我们知道,那么信号的频谱的周期就会增加

     
          需要注意的一点就是,插值前后,我们只是在时域信号中间插入了D-1个零值,仅仅是改变了采样率,并没有改变信号的信息,因此,在频域,信号频谱的形状是不会改变的,改变的仅仅是周期,如上图,F1是插值之前信号的周期,插值之后,信号频谱的形状不变,周期成了F1*D,D是插值倍数。如果我们直接用F1*D倍的采样率采信号,得到的频谱会发现,就不会有中间两个波形,因此,这两个波形是多余的,书上叫做是镜像频谱。既然是多余的,我们就可以将它用一个低通滤波器滤掉,这样的低通滤波器,就叫做镜像低通滤波器。这样我们来计算一下镜像低通滤波器的截止频率
     

         根据上面这张图我们可以求出镜像低通滤波器的截止频率,可以看到,fc = 1/2 *F1,这里我们假设,内插之后的采样频率为F2 =F1*D,那么,fc =1/2*(F2/D),而1/2*F2对应的是π,注意,这里是1/2*F2对应π,不是1/2*F1了,因为这已经是插值之后采样率增加之后的频谱了,所以我们得出:

        镜像低通滤波器的截止频率为:π/D

     

    四、  分数倍抽取与内插

           根据前面抽取与内插的介绍我们知道了,内插的过程是先进行内插处理,再通过镜像低通滤波器,抽取的过程就是先进行抗混叠低通滤波,再进行抽取,我们可以看出来,假如我们想进行分数倍抽取,比如我要进行3/5倍抽取,就可以先进行3倍内插,再进行5倍抽取,这样就可以实现分数倍抽取。

          再来看一下,当进行分数倍抽取与内插的时候,镜像低通滤波器和抗混叠低通滤波器是连在一起的,因此,我们可以将这两个滤波器合二为一,截止频率取两个滤波器截止频率的最小值就可以了

     

    五、多速率滤波器的Matlab实现

     

          这里我们假设,要对一个频率为100hz的正弦波模拟信号进行抽样,抽样频率为900hz,现在我要对采样信号进行5/3倍提升

        根据我们前面分析的,进行分数倍的抽样率转换,先要进行内插处理,内插的过程就是在原有的时域信号之间,插入I- 1个零值点,采用matlab实现很简单,首先我们可以计算插值完成之后信号的长度,然后将原来信号进行填充即可

     
        插值完成之后,需要进行低通滤波,由前面的讨论可以知道,根据低通滤波器的截止频率计算公式,来计算滤波器截止频率为π/I,然后调用函数生成FIR滤波器系数即可。
     
        紧接着,需要进行的是抽取处理,抽取过程的算法跟内插类似,可以先计算抽取之后的信号的长度,然后每个D个采样点进行一次抽取
     
        
     
    下面看一张图,是我绘制了这个过程的整个流程
     
     
     
        根据上面这张图我们可以看到,最上面的是原始信号经900hz频率采样后得到的信号时域波形,然后我对其进行了5倍内插,也就是在每两个采样点之间插入了4个零值,之后通过了低通滤波器,去掉镜像波形后的时域波形,可以看到,此时的采样率已经是原来的5倍,接着对其进行3倍抽取,即每隔两个点抽取一个点作为新的采样点,得到最下面的时域波形,整个过程原始信号没有发生变化,变化的仅仅是采样率。
     
     
    六、关于CIC滤波器
     
         说了这么多,终于进入正题了。前面的都是些基础知识,只有先掌握了前面的内容,才能理解下面的知识,包括下两篇文章要讲的FIR半带滤波器和多相结构的FIR半带滤波器。
     
        CIC滤波器呢,是积分梳状滤波器的英文简称,先来看CIC滤波器的单位冲击响应
     
     
        很明显的一个特征就是,CIC滤波器的单位脉冲响应只有0和1,再来想一下,既然单位脉冲响应只有0和1,那么也就是意味着,我们在进行卷积运算的时候,就不需要乘法器,为什么呢?因为滤波器系数为1的话,相当于将输入信号乘了个1,所以就不需要乘法器,只需要加法器就可以完成卷积运算,正因为如此,CIC滤波器结构简单,非常适合工作在高采样率条件下
     
        但是这并不是我们常用的滤波器结构,既然是积分梳状滤波器,总得体现一下积分、和梳状这两个特点吧,这名字不是白叫的,因此有如下变形
     
       
     
         可以看到,上面的式子是CIC滤波器的系统函数,对其进行变换之后可以得到两个部分的乘积形式,即分子部分为一个梳状FIR滤波器,剩余部分为一个积分器,至此,我们CIC滤波器的结构才已经成型。
     
        根据变形后的CIC滤波器的系统函数可以知道,滤波器的极点为1,因此看上去滤波器是一个不稳定的系统,但是从整体角度来看,这个结构是由一个FIR滤波器变形而来的,本身是一个因果稳定的,因此,变形后的系统应该也是一个因果稳定的,因此我们考虑到零极点抵消的原因,致使变形后的系统仍是一个因果稳定的系统。
     
        从单级CIC滤波器的幅频响应考虑,由于其特殊的结构,导致单级CIC滤波器的衰减不足,可以见下图
     
        
     
        可见,单级CIC滤波器滤波器的衰减并不是很足,在阶数比较大的情况下,CIC滤波器的衰减一般稳定在13.6dB,要想加大衰减,就必须采用多级CIC滤波器级联的形式,每增加一级滤波器,阻带衰减增加13.6dB,但是为了增加阻带衰减而采用级联方式,也会导致一些弊端,为此,这方面的知识总结如下,具体理论不再解释了,书上的推导过程比较复杂,大家还是自己看书为好。
     
       总结:
     
            1、要同时满足通带容限跟阻带容限的误差的CIC滤波器实现起来比较困难,因为要想阻带衰减大,就要增大滤波器级数,但是会导致通带容限增大。
     
            2、如果要实现这样的滤波器,只有当有用信号的频带相对于采样信号的速率很小时才能设计出符合要求的滤波器,这样的话通带衰减较大的情况下也对有用信号影响较小。
     
           3、有用信号的频带相对于采样信号的速率很小也就是意味着信号的采样率很高,所以,CIC滤波器适合应用在多速率信号处理的前端,作为抗混叠滤波器来用,或者是作为后端的抗混叠插值滤波器。
     
     
    七、多级 HogenauerCIC抽取滤波器的FPGA实现
     
          HogenauerCIC抽取滤波器是一种特殊的结构,可以用来提高滤波器的运行速度,节省硬件资源等
     
         前面已经说过了,CIC滤波器的系统函数经过变形之后,可以得到一个M阶的梳状滤波器和一个积分器相乘的形式,二者共同组成了抗混叠低通滤波器,在抽取的过程中,一般是信号先经过抗混叠低通滤波器进行滤波,来避免频谱混叠现象的发生,然后再进行抽取处理,但是我们可以利用Noble恒等式,先对信号进行抽取,再对其进行滤波,即
     
       
           也就是说,在滤波器阶数跟抽取倍数相同的情况下,如果先滤波后抽取,那么滤波器的长度是M,但是如果先抽取后滤波,那么滤波器的长度就会降低为1阶,因此,采用Noble恒等式,先抽取后滤波,可以降低滤波器长度,从而达到节省硬件资源的目的。
     
           前面说了,单级的CIC滤波器很难满足需求,要达到一定的阻带衰减,就必须通过级联的方式
     
            
     
          我们可以看到,如果是三级的CICI滤波器级联的话,也就是有3个积分器和三个梳状滤波器,这时候我们可以利用Noble恒等式进行移位变换,让积分器放在一起,梳状滤波器放在一起,这时候的梳状滤波器是M阶的,因为此时还没有经过抽取,所以我们可以再利用Noble恒等式,将抽取器放到梳状滤波器之前,这样的话,梳状滤波器就会降为1阶,长度为2,从而大大节省了硬件资源
     
          
     
     
          现在我们假设抽取倍数是5,根据要求,这时我们的滤波器长度也应该是5,采用3级CIC滤波器级联的方式,用HogenauerCIC抽取滤波器结构在FPGA上设计
     
     
     
          1、三级积分器模块
     
               altera 的CIC滤波器的IP核手册中给出了CIC滤波器中间运算数据字长的计算公式,这里我们假设我们的输入数据是经过10bit量化过的正弦波数字信号,那么CIC滤波器的中间运算字长为:
     
          Wi  = Win +N*log2(MD)
     
          Win是输入字长为10,N为滤波器长度5,M为抽取倍数5,D位级联数3
     
         因此算得CIC滤波器的中间字长为 Wi = 10 +5*log2(5*3) =30
     
         知道了我们中间运算的字长就可以来设计我们的模块了,首先是积分器
     
         积分器的设计比较简单,就是一个反馈回路,输出结果跟输入相加后延时一个时钟单元后再与输入相加
     
     
      剩下两级积分器也是一样,第一级积分器的输出要送到第二级积分器的输入,代码这里不再列出,都是跟第一级积分器类似
     
      2、五倍抽取器
     
           抽取器的实现很简单,从积分器输出的数据,我们每隔5个数据抽取一个数据就好了
     
     
     
     
    3、三级梳状滤波器
     
         我们知道,经过抽取之后的梳状滤波器阶数降为1,长度为2的这样一个FIR滤波器,由于他的频谱很像一把梳子,因此得名为梳状滤波器。根据前面的变形后的公式,我们很容易得出,1阶梳状滤波器的单位脉冲响应为hn = 1 , -1,既然有了单位脉冲响应,我们做的就是一个简单的卷积运算就好了,而且这里的系数只有1和-1不需要乘法器,做一下加减法就好了
     
         
     
        我们可以看到,跟之前做FIR滤波器一样,我们先把数据送到移位寄存器,因为1阶FIR滤波器只有两个系数,因此只要两个移位寄存器就够了。然后我们把系数跟输入的数据对应相乘,因为系数是1,所以乘法器就省略了,只需要做些加减运算就好了。
     
        经过3级梳状滤波器滤波后的信号就是我们需要的信号了
     
       然后是关于滤波器输出信号的数据截尾问题,我们可以通过matlab仿真,看一下输出数据的最大数据可以用多少位表示来确定输出数据位宽,如果不想做仿真的话,可以根据altera的CIC滤波器 的IP核手册中给出了CIC滤波器输出数据位宽计算公式来算:
     
        即   Wo =Win  +log2(N^D)
      
       这里我算出来是17,因此,我们将梳状滤波器的输出值进行截低17位处理
     
       仿真的过程我是采用 一个1khz和一个40khz的正弦波信号合成的,用采样频率为200Khz对其进行采样,按照我们上面的设计,滤波器的截止频率应该是 
     
        fc = 1/2 * (200 / 5) = 20Khz 
     
      所以经滤波器滤波后,40Khz的高频信号将会被滤掉,下面是仿真结果
     
      
     
    接着,我们将FPGA的输出信号读到matlab中进行仿真,绘出输出信号的时域波形
     
         从这张图我们可以清楚的看到,上面的波形是滤波前的合成信号的波形,下面的是经过滤波后的波形,很明显,滤波前后,信号的频率没有发生改变,发生改变的是采样率,可以数一下,下面波形两点之间的距离,要比上面的信号宽4倍,也就是5倍抽取,仿真结果证明,我们的设计是正确的
    展开全文
  • 设计了采样频率为640 MHz...为了实现高频工作,CIC滤波器采用两级结构,第一级采用多相分解技术,使大部分结构工作在较低时钟频率下,极大地降低了CIC的功耗,第二级采用传统结构。CIC补偿滤波器使信号通带平坦,半...
  • Matlab调用函数实现CIC滤波器

    千次阅读 2018-06-03 22:19:17
    matlab里设计cic滤波器的函数有以下两种:1. fdesign.decimator 例如:设定好采样频率Fs, 信号带宽Fp, 阻带衰减As, 差分时延m及降采样比D就可以得到cic滤波器的传输函数d1 =fdesign.decimator(D,'CIC',m,Fpass,As,...
  • 关于CIC滤波器中积分器和梳状器的作用当时我也被这个问题困绕好久,然后去网上查找,关于这个问题的回复几乎是乱回答的,所以写了这篇博客,希望对研究这方面的有所帮助CIC滤波器的作用值得一提的是cic滤波器除了...
  • CIC抽取插值滤波器和RCF

    千次阅读 2018-05-13 18:27:32
    CIC积分梳状滤波器由一个积分器和一个梳状滤波器组成,其特点就是简单、便于处理,运算速度快,用Z函数为:H(Z)=H1(Z)*H2(Z),H1(Z)=1/(1-Z^(-1)), H2(Z)=1-Z^(-D),D也是CIC滤波器的抽取系数,其冲击响应函数为:h...
  • 鲜为人知的CIC滤波器发展历史

    千次阅读 2012-03-14 21:15:56
    鲜为人知的CIC滤波器发展历史 原文链接:http://www.dsprelated.com/showarticle/160.php  如果你曾经学习过或者设计过CIC滤波器(级联积分梳状滤波器),那么你一定读过Eugene Hogenauer 1981年在IEEE上的文章。...
  • FPGA数字信号处理(十六)单级CIC滤波器Verilog设计

    千次阅读 多人点赞 2018-07-02 10:58:05
    该篇是FPGA数字信号处理的第16篇,选题为多速率信号处理系统中常用的CIC滤波器。本文将详细介绍使用Verilog HDL设计单级CIC滤波器的方法。接下来几篇会介绍多级CIC滤波器的Verilog设计、使用Quartus和Vivado的IP核...
  • CIC滤波器溢出处理

    千次阅读 2018-06-04 00:00:44
    这两天在弄CIC滤波器,在调试自己搭建的CIC滤波器过程中,发现自己搭建的CIC滤波器和mfilter.cicdecim的结果总是不一致。最后在同事的帮助下找到了问题所在,需要对CIC中间计算结果进行溢出处理,最后才能得到想要的...
  • CIC滤波器传递函数的存在性问题

    千次阅读 2012-03-10 16:42:43
    CIC滤波器,也即是通常所说的级联积分梳状滤波器,是多速率采样信号处理中最常用的滤波器之一,本文要讨论的问题是,CIC滤波器存在传递函数吗?  在回答这个问题之前,我们先来回顾一下CIC滤波器的基本概念。图1(a...
  • FPGA数字信号处理(十七)多级CIC滤波器Verilog设计

    千次阅读 多人点赞 2018-07-02 16:24:32
    该篇是FPGA数字信号处理的第17篇,题接上篇,本文详细介绍多级CIC滤波器的特性、使用Verilog HDL设计多级CIC滤波器的方法。接下来两篇会介绍使用Quartus和Vivado的IP核设计CIC的方法。 多级CIC滤波器 根据上...
  • C++实现Cascaded Integrator Comb(CIC)滤波器

    千次阅读 2016-12-11 16:06:19
    由于需要实时反馈计算结果,48k采样的数据速率太大,手机的计算能力有限,故而需要把数据速率降低(到3k),同时实现低通滤波,故而需要CIC滤波器。 不同于一般的FIR滤波器需要乘法器,CIC滤波器实现简单,只用加法...
  • 实现cic 滤波器时的一点感想。

    千次阅读 2018-01-22 15:09:11
    前几天研究了下cic滤波器,先是网上搜了些论文,一看简单明了,可是一研究,没人提到溢出的处理。就很怀疑作者是否真正的做了fpga或者asic实现。 如果做了实现,虽然最后是不需要做溢出,但是文章不可能不提到溢出...
  • 基于MATLAB FDATOOL的CIC滤波器设计

    千次阅读 热门讨论 2018-05-27 22:21:36
    级联积分梳状(CIC)滤波器是...CIC滤波器是数据通信的常用模块,一般应用于数字下变频(DDC)和数字上变频(DUC)系统中,随着数据传输率的不断增加,级联梳状滤波器(CIC)的应用变得非常重要,CIC滤波器仅利用加法器、减...
  • CIC filter及其matlab实现

    千次阅读 2018-05-23 23:54:13
    References:[1] Understanding cascaded integrator-comb filters – By Richard Lyons, Courtesy of Embedded Systems Programming URL: http://www.us.design-reuse.com/articles/article10028.htm...
  • 学习笔记: CIC filter及其matlab实现

    万次阅读 多人点赞 2010-04-19 15:02:00
    References:[1] Understanding cascaded integrator-comb filters – By Richard Lyons, Courtesy of Embedded Systems Programming URL: http://www.us.design-reuse.com/articles/article10028.html[2] Exa
1 2 3 4 5 ... 14
收藏数 269
精华内容 107
关键字:

cic滤波器