一种基于并行运算的CIC滤波器设计方法与流程

文档序号:12277748阅读:1944来源:国知局
一种基于并行运算的CIC滤波器设计方法与流程

本发明属于高速信号处理领域,主要涉及基于并行运算的CIC滤波器的设计,提高信号处理速度,保证运行稳定性。



背景技术:

在数字信号处理的应用中,随着采样速率的提高,采样后的数据流速率也相应的变得很高。这导致了后续信号处理的速度跟不上,即便是FPGA这样的高速数字信号处理器件也很吃力。而我们处理的单个信号,相对于采样率来说往往是一个窄带信号。这时,我们可以将信号速率降低再处理。这样降低数据采样率可通过一个CIC滤波器后抽取实现。在软件无线电中,CIC滤波器作为数字上下变频后的抽取或插值滤波功能得到了广泛的应用。

CIC滤波器,其中文全名为积分梳状滤波器,是一种特殊的FIR滤波器,其冲击响应为:

其转移函数为:

令H1(z)=1/(1-z-1),H2(z)=1-z-D,则其相应的频率响应为:

H2(e)=1-e-jωD=e-jωD/2(ejωD/2-e-jωD/2)=2e-jωD/2sin(ωD/2)

H1(e)是一个IIR的积分梳状滤波器,H2(e)是一个FIR的梳状滤波器,两者级联后得到这个线性相位的FIR滤波器,所以称为积分梳状滤波器(CIC滤波器),其频率响应为:

幅频响应为:

在实际应用中,通常采用多级CIC级联的方式,可以有效的降低主副瓣电平比,增加阻带抑制效果。例如N级CIC级联后,主副瓣电平比可达到:

信号通过滤波器的数学表达式为:

y(n)=h(n)*x(n)

其中y(n)为输出信号,x(n)为输入信号。

根据上述h(n)表达式,我们可推知:

y(n)=x(n)+x(n-1)+…+x(n-D+1)

传统CIC滤波器通过上述公式实现,抽取后即可降低数据速率。

在数字接收机中,传统的CIC滤波器都是通过以上原理,采用的串行结构实现的。接收机通过串行结构的CIC滤波器抽取后降低数据率,降低处理速度。所以,CIC滤波器其本身的运行速度即为系统的最高运行速度。现有的常用AD芯片采样率一般可达到500MHz-1GHz,而现有的FPGA芯片,较为先进的如Xilinx的V7_690T,一般可在处理时钟250MHz情况下稳定工作。可见传统串行结构的CIC滤波器运行的最大速度也已跟不上现有的AD转化器后的高数据采样率。这是传统CIC滤波器处理速度的限制,也是它最大的缺陷。



技术实现要素:

本发明的目的在于提供一种基于并行运算的CIC滤波器设计方法,并对其进行硬件实现。传统的CIC滤波器在一个时钟内只能处理一个数据,而基于并行结构的CIC滤波器在一个时钟内可以处理M个数据。M取决于设计所需要的并行数。M的取值范围为2≤M≤D,D为CIC滤波器的抽取倍数。这样可提高信号处理的速度。

本发明的思路是:将待处理的信号数据流Si,0≤i≤N(其中N为数据长度,可以取无限长)。按段划分,每段有M个数据。即将信号数据流变为:

{(S0,S1,…,SM-1),(SM,SM+1,…,S2M-1),…}

采样数据速度设置为fs,CIC的处理速度定义为fcic,那么fs=M·fcic。每一个CIC运行时钟,可得一组数据:

{(Si·M,Si·M+1,…,S(i+1)·M-1)},0≤i≤N/M

在K1个时钟内,得到2组这样的数据:

{(Si·D,Si·D+1,…,S(i+1)·D-1),(S(i+1)·D,S(i+1)·D+1,…,S(i+1)·D-1)},0≤i≤N/D

K1=2D/M,2D/M向上取整。

将这两组数据重排成D组数据:

{(Si·D,Si·D+1,…,S(i+1)·D-1),(Si·D+1,…,S(i+1)·D),…,(S(i+1)·D-1,S(i+1)·D+1,…,S(i+2)·D-2)},0≤i≤N/D

同时运行重排后的M路数据,即可在K1个时间里运行完这一组数据。整个系统是流水线工作,可以连续不断,在每个时钟内输出一组M个数据。最后对输出数据做D倍抽取,即可得到后续想要的抽取后处理速率。此处的并行CIC滤波器是工作在fcic这个速度上,提高了整个系统处理速度。

一种基于并行运算的CIC滤波器设计方法,具体步骤如下:

S1、采样率为fs的待处理信号流Si,0≤i≤N(其中N为数据长度,可以取无限长),设计滤波器工作频率fcic和并行数M。满足关系fs=M·fcic。同时,确定需要的抽取数D。

S2、将其按照每M个数据一组划分,将信号流Si,0≤i≤N变成如下式子:

{(S0,S1,…,SM-1),(SM,SM+1,…,S2M-1),…}

每一个时钟得到一组M个数据:

{(Si·M,Si·M+1,…,S(i+1)·M-1)},0≤i≤N/M

S3、对信号采取流水线处理,将信号变成重排变为M组数据,用矩阵表达式表示为:

S4、将重排后的矩阵与滤波器做卷积得到输出:

每一个处理时钟将输出M个数据。

S5、步骤S1~S4实现了单级并行CIC滤波器,重复Q次步骤S2~S4,实现Q个单级CIC滤波器,然后对其进行级联,即可形成Q阶并行CIC滤波器。

S6、对最终输出的数据进行D倍抽取,得到降采样后的数据。

本发明的有益效果是:

通过将输入信号重排分组,每一组进行单独同时的并行运算。让本需要fs速度处理的信号,可以降低到用fcic的速度处理。由fs=M·fcic可知处理速度可降低M倍。将原本不能处理的高采样信号,通过新颖的并行CIC滤波器变得可以处理。可以处理更高采样信号的同时,也保证了系统运行的稳定。

附图说明

图1是本发明方法的流程图。

图2是在实施例1参数下,单级并行CIC滤波器运行结果与传统单级串行CIC滤波器运行结果对比图。

图3是在实施例2参数下,5阶并行CIC滤波器运行结果与传统5阶串行CIC滤波器运行结果对比图。

具体实施方式

下面结合实施例和附图,详细说明本发明的技术方案。

如图1所示:

S1、采样率为fs的待处理信号流Si,0≤i≤N(其中N为数据长度,可以取无限长),设计滤波器工作频率fcic和并行数M。满足关系fs=M·fcic。同时,确定需要的抽取数D。

S2、将其按照每M个数据一组划分,将信号流Si,0≤i≤N变成如下式子:

{(S0,S1,…,SM-1),(SM,SM+1,…,S2M-1),…}

每一个时钟得到一组M个数据:

{(Si·M,Si·M+1,…,S(i+1)·M-1)},0≤i≤N/M

S3、对信号采取流水线处理,将信号变成重排变为M组数据,用矩阵表达式表示为:

S4、将重排后的矩阵与滤波器做卷积得到输出:

每一个处理时钟将输出M个数据。

S5、步骤S1~S4实现了单级并行CIC滤波器,重复Q次步骤S2~S4,实现Q个单级CIC滤波器,然后对其进行级联,即可形成Q阶并行CIC滤波器。

S6、对最终输出的数据进行D倍抽取,得到降采样后的数据。

下面结合附图和实施例对本发明进一步说明。这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读本发明记载的内容之后,本领域技术人员可以对本发明做各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

实施例1

实施例1,由单级并行CIC滤波器与传统单级串行CIC滤波器运行结果相对比。

设输入信号采样频率为fs=1GHz。传统单级串行CIC的工作频率需要在fs=1GHz上。本发明的并行CIC设计M=4,D=8,单级CIC滤波器相当于Q=1。并行滤波器工作在fcic=fs/M=250MHz。

实施例1中的单级并行CIC滤波器设计包括以下步骤:

①对于采样率为fs=1GHz的输入信号Si,0≤i≤N(其中N为固定数据长度)。我们设计滤波器工作频率为fcic=250MHz,并行数为M=4。确定抽样数D=8;

②将其按照每4个数据一组划分,将信号流Si,0≤i≤N变成如下式子:

{(S0,S1,…,S3),(S4,S5,…,S7),…}

每一个时钟得到一组M个数据:

{(S4i,S4i,…,S4(i+1)·)},0≤i≤N/4;

③对信号采取流水线处理,将信号变成重排变为4组数据,用矩阵表达式表示为:

④将重排后的矩阵与滤波器做卷积得到输出:

每一个处理时钟将输出M个数据。

⑤由于Q=1,所以不用循环。步骤S1~S4即实现了单级并行CIC滤波器。

⑥对最终输出的数据进行8倍抽取,得到降采样后的数据。

如图2所示,为此实施例中单级串行CIC滤波器和M=4,D=8的并行CIC滤波器的处理数据对比图。图中第一行为串行CIC滤波器的处理时钟,第四行为并行CIC滤波器的处理时钟。可以很明显的看出,串行CIC滤波器的处理时钟是并行CIC滤波器的处理时钟4倍。第二行为串行CIC滤波器的数据输出,第三行为输出数据有效使能。第五行为并行CIC滤波器的数据输出,第六行为输出数据有效使能。通过比较两个结构的滤波器输出数据,我们可以知道结果完全一致。在处理速度上,并行CIC滤波器确实降低了信号处理的速度,达到了所需的效果。

实施例2

实施例2,由多级并行CIC滤波器与传统多级串行CIC滤波器运行结果相对比。

设输入信号采样频率为fs=1GHz。传统单级串行CIC的工作频率需要在fs=1GHz上。本发明的并行CIC设计M=4,D=8,单级CIC滤波器相当于Q=1。并行滤波器工作在fcic=fs/M=250MHz。

实施例2中的多级并行CIC滤波器设计包括以下步骤:

①对于采样率为fs=1GHz的输入信号Si,0≤i≤N(其中N为固定数据长度)。我们设计滤波器工作频率为fcic=250MHz,并行数为M=4。确定抽样数D=8;

②将其按照每4个数据一组划分,将信号流Si,0≤i≤N变成如下式子:

{(S0,S1,…,S3),(S4,S5,…,S7),…}

每一个时钟得到一组M个数据:

{(S4i,S4i,…,S4(i+1)·)},0≤i≤N/4;

③对信号采取流水线处理,将信号变成重排变为4组数据,用矩阵表达式表示为:

④将重排后的矩阵与滤波器做卷积得到输出:

每一个处理时钟将输出M个数据。

⑤由于Q=5,所以不用循环。步骤S1~S4一共执行5次。即可实现了多级并行CIC滤波器。

⑥对最终输出的数据进行8倍抽取,得到降采样后的数据。

如图3所示,为此实施例中多级(Q=5)串行CIC滤波器和M=4,D=8的并行CIC滤波器的处理数据对比图。图中六排信号所表达的含义与图2含义相同,不在赘述。从第二排的串行CIC滤波器数据和第五排的并行CIC滤波器数据对比可知道,输出数据结果完全一致。同时从第一排串行CIC滤波器的处理时钟和第四排的并行CIC滤波器的处理时钟可以看出,并行CIC滤波器的处理速度确实降低了4倍。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1