本发明属于数字信处理的多速率转换领域,尤其是涉及一种基于CIC滤波器降低邻道功率比的方法及CIC滤波器。
背景技术:
在数字基带处理的部分,通常需要对信号进行数字上变频或者下变频处理,CIC滤波器是一种低通速率变化滤波器,它是由积分器(integrator)和梳状(Comb)滤波器级联而成,根据其积分器和梳状器位置的不同,可分别实现抽取(Decimation)和插入(Interpolation)功能。抽取型CIC是积分器在前,后面是梳状器,实现的是下变频处理。插入型CIC则相反,梳状器在前,积分器在后,实现的是上变频处理。
数字基带信号送入调制器前,波形是矩形脉冲,但由于矩形脉冲的上升沿和下降沿是突变的,假设正弦波是250K的,它的信号频率只有250K,但是如果是矩形波1K,高频成分比较丰富,它的频率成分有250K,750K,1500K,……;如果设备工作在840M的时候,正弦波的占用带宽在840M+/-250K,矩形波的占用带宽在840M+/-250K,840M+/-750K,840M+/-1500K,……;而GB29768协议要求读写器工作频率为840~845M,频带内共40个信道,每个信道带宽是250K,这样上述情况频域占用的带宽很宽,通过带限信道时,当前信道的信号容易出现在其他信道上。因此需要设计脉冲成形滤波器,产生既减小码间串扰又不会占用过多额外带宽的更适合于信道传输的波形。
FPGA实现CIC滤波器会产生如下问题:CIC滤波器由于积分器会导致数据高位溢出问题,需要对原始数据进行位宽扩展;CIC滤波器的阻带衰减和过渡带不是很好,一般是通过CIC滤波器的级联来改善,但是CIC滤波器级联阶数又会使溢出问题更严重,这就需要更多的扩展位,导致一个恶性循环。
本发明针对降低阅读器的ACPR,提出一种新的实现算法通过CIC插入滤波器实现上变频处理,滤除高频部分,使其只有低频部分,减少与其他信道的干扰。
技术实现要素:
有鉴于此,本发明旨在提出一种基于CIC滤波器降低邻道功率比的方法及CIC滤波器,以通过CIC插入滤波器平滑矩形波,滤除高频部分使其只有低频部分,减少与其他信道的干扰。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于CIC滤波器降低邻道功率比的方法,包括以下步骤:
1)将数据信号输入CIC滤波器,CIC滤波器的梳状器输出数据;
2)生成积分脉冲cic_inter_fs,通过插值模块对数据信号进行插值;
3)组合逻辑控制梳状器输出数据和插“0”值的切换,若cic_inter_fs=’0’,插入“0”值,积分器输入全0数据;若cic_inter_fs=’1’,积分器输入梳状器的输出数据;
4)若插入“0”值,通过位宽控制包模块计算出数据位宽,积分器输出数据。
进一步的,所述步骤2)中,所述插值为在数据信号的每个数值后插入数值“0”,插入个数为R-1个,所述R为插值倍数。
进一步的,所述步骤4)中,位宽计算公式:binter=binput+bgrow=n+log2(RD)S,binter为梳状器和积分器的数据位宽,binput为输入数据位宽n bit,bgrow为S级CIC滤波器数据位宽,R为插值倍数,D为延迟因子。
进一步的,所述步骤4)中,若全插入“0”值,0增益输出的数据位宽为:S*log2(RD)-log2(R)到S*log2(RD)-log2(R)+n-1位,作为数据输出。
相对于现有技术,本发明所述的一种基于CIC滤波器降低邻道功率比的方法具有以下优势:提出一种新的实现算法通过CIC插入滤波器实现上变频处理,滤除高频部分,使其只有低频部分,减少与其他信道的干扰。
为达到上述目的,本发明的技术方案是这样实现的:
一种降低邻道功率比的CIC滤波器,包括S级梳状器,S级积分器、插值模块、位宽控制包模块,所述插值模块设于S级梳状器、S级积分器之间,
所述插值模块,用于对输入的数据信号进行插值;
所述位宽控制包模块,用于计算出输出数据的数据位宽。
进一步的,所述插值模块用于在输入的数据信号的每个数值后插入R-1个当前数值,所述R为插值倍数。
进一步的,所述每级梳状部分插入寄存器单元、触发器,用于实现流水线设计,增加系统运算的时钟主频。
相对于现有技术,本发明所述的一种降低邻道功率比的CIC滤波器具有以下优势:不需要增加时间开销,成本低,灵活性强,可靠性高。
附图说明
图1为本发明实施例所述的CIC滤波器框图;
图2为本发明实施例所述的CIC滤波器单元信号示意图;
图3为本发明实施例所述的逻辑算法仿真图。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。
一种基于CIC滤波器降低邻道功率比的方法,包括以下步骤:
1)将数据信号输入CIC滤波器,CIC滤波器的梳状器输出数据;
2)生成积分脉冲cic_inter_fs,通过插值模块对数据信号进行插值;
3)组合逻辑控制梳状器输出数据和插“0”值的切换,若cic_inter_fs=’0’,插入“0”值,积分器输入全0数据;若cic_inter_fs=’1’,积分器输入梳状器的输出数据;
4)若插入“0”值,通过位宽控制包模块计算出数据位宽,积分器输出数据。
其中,所述步骤2)中,所述插值为在数据信号的每个数值后插入数值“0”,插入个数为R-1个,所述R为插值倍数。
其中,所述步骤4)中,位宽计算公式:binter=binput+bgrow=n+log2(RD)S,binter为梳状器和积分器的数据位宽,binput为输入数据位宽n bit,bgrow为S级CIC滤波器数据位宽,R为插值倍数,D为延迟因子。
其中,所述步骤4)中,若全插入“0”值,0增益输出的数据位宽为:S*log2(RD)-log2(R)到S*log2(RD)-log2(R)+n-1位,作为数据输出。
一种降低邻道功率比的CIC滤波器,包括S级梳状器,S级积分器、插值模块、位宽控制包模块,所述插值模块设于S级梳状器、S级积分器之间,
所述插值模块,用于对输入的数据信号进行插值;
所述位宽控制包模块,用于计算出输出数据的数据位宽。
其中,所述插值模块用于在输入的数据信号的每个数值后插入R-1个当前数值,所述R为插值倍数。
其中,所述每级梳状部分插入寄存器单元、触发器,用于实现流水线设计,增加系统运算的时钟主频。
如图1所示,CIC插入型滤波器由S级梳状器、S级积分器和积分倍数R组成。其中S级积分器工作在高频率Fs下,每级积分器都是一个反馈系数为1的IIR滤波器,其传递函数为:1/1-z-1;
CIC梳状滤波部分工作在频率Fs/R的,每级微分延迟D个样本,系数为-1,工程实现中D一般取1或2。本发明中延迟因子D采用的是2。
图2为本发明实施例所述的CIC滤波器单元信号示意图,各信号说明如表1所示。
表1
具体工作流程为:
1、本发明要求积分因子可变,代码改动量小,所以设计了过程位宽控制包模块,该模块是根据位宽计算公式binter=binput+bgrow=n+log2(RD)S,其中binter指的是梳状器和积分器的数据位宽,binput指的是输入数据位宽n bit,bgrow指的是S级CIC滤波器,插值倍数为R,延迟因子D的系统增加的扩展位宽。所以设计了自定义控制包文件,单独定义位宽子类型subtype。
2、在CIC滤波器插入模块的设计中,生成积分脉冲cic_inter_fs,具体是在系统时钟下计数到插值倍数R,该脉冲信号cic_inter_fs=’1’,否则cic_inter_fs=’0’。
3、使用组合逻辑控制梳状器数据和插0值的切换,在cic_inter_fs=’0’时,积分器模块组输入值为全0数据;在cic_inter_fs=’1’的时候,积分器模块组输入的是梳状器组的输出数据。
4、在每个梳状器单元的和器件后再加一级触发器,实现流水线设计,可提高系统可以在更高主频时钟工作的稳定性。
5、若插值为全“0”,CIC滤波器输出的数据位宽公式:S*log2(RD)-log2(R)到S*log2(RD)-log2(R)+n-1位,作为数据输出。
6、编写测试程序,仿真结果表明:R=32的滤波性能优于R=8,且不会造成前向编码变形,如图3所示。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。