单级CIC滤波器理论与设计
项目简述
工欲善其事必先利其器,信号处理有强大的理论支撑。若是没有掌握这些理论,只是随便找一些符合要求的代码,那么自己很难更近一步。而且算法本身就是FPGA工程师的难点,而不是硬件逻辑。所以,本篇文章我们将进行CIC抗混叠滤波器的设计,这在信号处理中具有及其重要的地位。接下来,我们将从理论与FPGA设计的两个角度来讲解CIC的设计
多速率信号处理
这个概念是相对于单速率(Single Rate)信号处理而言的。单速率 是指整个信号处理流程中只有一种数据速率;多速率 是指系统中存在多个数据速率。使用多速率信号处理可以节省存储空间、减少通信数据量、减少运算量、减轻设计难度。
很明显从字面意思上可以理解,多采样率嘛,就是有多个采样率呗。前面所说的FIR,IIR滤波器都是只有一个采样频率,是固定不变的采样率,然而有些情况下需要不同采样频率下的信号,具体例子我们将以数字下变频(DDC)为例来进行讲解。
按照传统的速率转换理论,我们要实现采样速率的转换,可以这样做,假如有一个有用的正弦波模拟信号,AD采样速率是f1,现在我需要用到的是采样频率是f2的信号,传统做法是将这个经过f1采样后的信号进行DA转换,再将转换后的模拟信号进行以f2采样频率的抽样,得到采样率为f2的数字信号,至此完成采样频率的转换。所以我们引入了更好的抽取与内插方法。
比如在DDC(数字下变频)系统中,前级需要很高的采样率fs确保ADC采集到信号的信噪比;而在去载波并提取出低频的基带信号后,信号有效带宽已经很小,此时可以满足要求的采样率也远远低于fs,如果不进行数据速率转换的处理,会造成许多资源的浪费和设计上的困难:
多速率信号处理 主要包括 数据速率的转换 和 LPF的设计 两个过程。数据速率的转换包括 抽取(Decimation,降低采样率) 和 内插(interpolation,提高采样率) 。抽取/内插时应保证信号的有效频带内没有频谱混叠,因此需要完成LPF的设计,常用的有 多速率FIR滤波器、CIC滤波器、HB滤波器。
从上面的文章中,我们可以看出多速率滤波器最重要的也就是***抽取***与***内插***两个操作。
抽取
当需要降低采样率时,输入信号数据每隔D-1个取一个,取出的数据依次排序,这个过程称作D倍抽取,采样率变为原来的1/D。但是我们需要确保抽取之后的采样率仍然可以满足Nyquist采样定理,否则会造成频谱的混叠。当然由于ADC的转换也会在整个频段内引入白噪声,因此在抽取前还是需要加入***抗混叠滤波器***。如下图所示:
上面是抽取的主要操作,也是绝大多数FPGA工程师进行的操作,但是却不明白其中的原理。接下来我们将从信号处理的角度解释上面两点:
1、为什么一定要保证抽取后满足奈奎斯特抽样定理。
2、为什么要先经过抗混叠滤波器。
先来总体来解释一下***抽取***的含义:前面不是说,一个有用的正弦波模拟信号经采样频率为f1的抽样信号抽样后得到了数字信号,很明显这个数字信号序列是在f1频率下得到的,现在,假如我隔几个点抽取一个信号,比如就是5吧,我隔5个点抽取一个信号,是不是就是相当于我采用了1/5倍f1的采样频率对模拟信号进行采样了?所以,抽取的过程就是降低抽样率的过程,但是我们知道,这是在时域的抽样,时域的抽样等于信号在频域波形的周期延拓(信号系统中的公式),周期就是采样频率,所以,为了避免在频域发生频谱混叠,抽样定理也是我们要考虑的因素
下面来具体来介绍:
如上图所示,假如上面就是某一有用信号经采样频率f1抽样得到的频谱,假设这时候的采样频率为8Khz,可以通过数格子得到,从0到F1处有8个空格,每个空格代表1Khz,有些朋友可能会问,这不是在数字频域吗,单位不是π吗,哪来的hz?是的,这里是数字频域,采样频率F1处对应的是2π,这里只是为了好解释,我们用模拟频率来对应数字频率(如果这里不懂的话需要恶补信号系统与数字信号处理的知识)。
下图就是对信号进行了1/5倍的F1采样频率抽取,可见,由于发生了频谱混叠现象,因为1/5倍的F1是1600hz,而信号的频带是1000hz,不满足抽样定理,导致发生了***频谱混叠***,所以,为了避免发生这种情况,除了要满足抽样定理之外,即抽样倍数不能太高,我们还需要把信号的频带设置在F1/2以下,才能确保信号不发生频谱混叠,因此,我们需要在抽取之前加一个低通滤波器,书上叫做***抗混叠低通滤波***器,用来限制信号的频带,然后再进行抽取。
这样的话我们来算一下,低通滤波器的截止频率就是1/2倍的经抽取后的采样速率,即fc = 1/2 * (F1/M) ,M是抽取倍数。而1/2*F1对应的数域频率是π,因此我们得出,抗混叠低通滤波器的截止频率是π/M。
内插
当需要提高采样率时,在两个相邻的数据之间插入***I-1个零值***,再进行低通滤波,这个过程称作 I倍内插 ,采样率变为原来的I倍。只要LPF的通带为信号的有效带宽,即使插值时只插入零值点(没有插入采样值的点),也可以达到I倍内插的效果。经过插值后的信号由DAC输出会引入更小的高频噪声。如下图所示:
抽取的过程是降低采样率的过程,那么***插值***的过程当然就是***提高采样率***的过程。大体的思路可以这么理解,我们将经f1抽样下得到的数字信号的每两个点之间进行插值,插入的值是0,插值之后,信号在单位时间内的采样点数增多,当然也就是采样速率的提升,采样速率提升后我们知道,那么信 号的频谱的周期数就会增加:
信号系统学的好的同学可以试着推导一下上面的频谱变化,相信不是太难。
需要注意的一点就是,插值前后,我们只是在时域信号***中间插入了D-1个零值***,仅仅是改变了采样率,并没有改变信号的信息,因此,在频域,信号频谱的形状是不会改变的,改变的仅仅是模拟频率与数字频率的对应,如上图,F1是插值之前信号的抽样频率,插值之后,信号频谱的形状不变,抽样频率成了**F1D,D是插值倍数***。如果我们直接用F1D倍的采样率采信号,得到的频谱会发现,就不会有中间两个波形,因此,这两个波形是多余的,书上叫做是镜像频谱*。既然是多余的,我们就可以将***它用一个低通滤波器滤掉,这样的低通滤波器,就叫做镜像低通滤波器***。这样我们来计算一下镜像低通滤波器的截止频率
根据上面这张图我们可以求出镜像低通滤波器的截止频率,可以看到,fc = 1/2 F1,这里我们假设,内插之后的采样频率为F2 =F1D,那么,fc =1/2*(F2/D),而1/2F2对应的是π,注意,这里是1/2F2对应π,不是1/2*F1了,因为这已经是插值之后采样率增加之后的频谱了,所以我们得出,镜像低通滤波器的截止频率为:π/D
分数倍抽取与内插
上面抽取和内插实现的都是整数倍数据速率的转换。而实际设计中遇到的更多不会是整数倍关系。可以使用先内插、再抽取的方式完成采样率为有理数比值的数据速率转换,且可以共用一个LPF,截止频率选取二者的最小带宽即可。如下图所示:
根据前面抽取与内插的介绍我们知道了,内插的过程是先进行内插处理,再通过镜像低通滤波器,抽取的过程就是先进行抗混叠低通滤波,再进行抽取,我们可以看出来,假如我们想进行分数倍抽取,比如***我要进行3/5倍抽取,就可以先进行3倍内插,再进行5倍抽取,这样就可以实现分数倍抽取***。
再来看一下,当进行分数倍抽取与内插的时候,镜像低通滤波器和抗混叠低通滤波器是连在一起的,因此,我们可以将这两个滤波器合二为一,截止频率取两个滤波器截止频率的最小值就可以了。
上面关于数据的抽取与内插的知识已经介绍完毕,如果有哪里不懂,可以查阅书本知识。从这篇文章我们也可以看出来数字***信号处理理论知识***的重要性。如果上大学的同学看到这篇文章,这里劝诫一定学好基础理论,否则只能做个调参侠。
CIC滤波器
CIC滤波器 是无线通信的常用模块,一般用于 数字下变频(DDC)和数字上变频(DUC)系统。CIC滤波器结构简单,没有乘法器,只有加法器、积分器和寄存器,可以实现高速滤波,***常用在输入采样率最高的第一级。从上面可以看出来CIC滤波器的优点:CIC(Cascaded Integrator Comb)积分梳状与其他多速率FIR滤波器滤波器***运算速度快、占用资源少C、工作频率高(因为CIC只使用加法器、减法器和寄存器),在多速率信号处理系统中应用更广泛。
CIC滤波器理论推导
单级CICI滤波器
CIC滤波器包括两个基本组成部分:积分部分和梳妆部分,如图所示:
积分部分的积分器是单极点的IIR滤波器,并且反馈系数为1,状态方程为:
y ( n ) = y ( n − 1 ) + x ( n ) y(n)=y(n−1)+x(n) y(n)=y(n−1)+x(n)
上述的积分器也可以看做是累加器。根据Z变换,积分器的传输函数为:
H 1 ( z ) = 1 1 − z − 1 H_1(z)=\frac{1}{1−z^{-1}} H1(z)=1−z−11
梳妆器是一份FIR滤波器,其状态方程为:
y ( n ) = x ( n − 1 ) − x ( n − D M ) y(n)=x(n−1)-x(n−DM) y(n)=x(n−1)−x(n−DM)
式中,D是设计参数,称为微分延迟,其传输函数为:
H c ( z ) = 1 − z − D M H_c(z)=1−z^{-DM} Hc(z)=1−z−DM
那么:单级CIC滤波器的传递函数为:
H ( z ) = 1 1 − z − 1 ( 1 − z D M ) H(z)=\frac{1}{1−z^{-1}}(1−z^{DM})