|
摘 要: 脉冲成形技术能有效减小码间干扰和被调制信号的谱宽度,利用多相结构可以降低脉冲成形滤波器对硬件电路运算速度及处理字长的要求。根据TMS320C5402的特点,介绍了一种基于多相结构的任意倍内插均方根升余弦脉冲成形滤波器的实现方法,以及在实现过程中应注意的问题。该软件模块已成功应用于全数字低压电力载波机。 关键词: 多相滤波器; 脉冲成形; 数字信号处理器
Implementation of Pulse Shaping Filter Based on Multi phase Structure
ZHENG Yingqiang, ZHANG Zhenren
(The Second Artillery Engineering Institute, Xi'an 710025, China)
Abstract: Intersymbol interference(ISI) and frequency width expanding can be avoided by pulse shaping technique in most communication system. The multiphase structure filter needs less multiplication operations comparing with some other FIR filte r and it's a good choice for pulse shaping implementation.A pulseshaping schem e based on multiphase filter using TMS320C5402 is presented in this paper.Some key points for debugging are described. Key words: multiphase filter; pulse shaping; digital signa l processor
1前言 当矩形脉冲通过带限信道时,脉冲会在时间上扩展而在相邻符号的码元内造成码间干扰(ISI),并导致接收机在检测一个码元时发生错误的概率增加。一种常用的减小串扰的方法是增加信道带宽,然而在电力线宽带接入及其它各类通信系统中都要求系统使用的带宽尽可能小,所以不可能无限制增加所占用的信道带宽[1]。脉冲成形技术可以 有效减小码间影响和被调制信号的谱宽度。 在全数字载波机中,脉冲内插成形滤波需要较大的计算量,一般在基带由专用ASIC芯片或FPGA来实现。文献[2,3]分别介绍了一种采用FPGA实现的多相结构脉冲成形滤波器,文献[4]给出了在FPGA上采用流水线技术实现脉冲成形滤波器的方案。除了采用FPGA,一些专用芯片如AD9853、HSP50215等也具有脉冲成形滤波功能。与专用ASIC芯片和FPGA相比,数字信号处理器(DSP)芯片现场可编程性好[5],实现的脉冲成形滤波器具有更好的可移植性和扩展性,适于全数字电力载波机等数字通信系统[6]。 本文将介绍采用多相滤波结构的脉冲内插成形滤波器在全数字低压电力载波机中的实现方案,并给出该方案在DSP芯片TMS320C5402上的实现过程以及在实现过程中应该注意的若干问题。
2升余弦脉冲成形滤波器 实际通信系统中常用的脉冲成形滤波器是具有升余弦特性的滤波器,频域内表达式为
升余弦频率响应经常用来生成发射机、信道和接收机的组合波形。如果发射的脉冲波形为升余弦脉冲,则只有当接收机和信道的组合频率响应为常数时,整个通信系统的频率响应才是升余弦脉冲。然而即使是经过理想的信道,最优接收滤波器的响应在存在加性噪声的情况下一般也不是常数,所以可以采用的方案是使用均方根升余弦脉冲波形作为发射波形,其频率响应是式(1)的平方根。若信道是理想的,且接收机的频率响应与发射机的频率响应完全一致,则得到的系统响应将是升余弦频率响应[7]。 本文采用滚降系数为0.5的均方根升余弦脉冲成形滤波器,内插倍数选为5倍(根据需要可以 选用其它的内插倍数,倍数选为5并不影响本文下面的介绍)。该滤波器在Matlab下可采用以下语句进行设计:[Num,Den]=rcosine(1,5,′fir/sqrt′,0.5) 。


其中,Num为返回该滤波器的分子,Den为返回该滤波器的分母。由于滤波器类型是‘fir/sqrt’,即FIR类型的均方根升余弦滤波器,所以分母Den为1。其幅频、相频响应如图1、2所示。
3多相结构滤波器 在数字系统中进行抽样率变换时,数字滤波器是不可缺少的。抽取时作为抗混迭滤波器,内插时作为反镜像滤波器。图3和图4分别是抽取和内插的结构模型[8]


从图中可以看出,两种运算模型对运算速度的要求是相当高的,这主要表现在抽取模型 中的低通滤波器HLP(ejw)位于抽取算子D之前,也就是说低通滤波器是在降速之前实现的;而对于内插器,低通滤波又是在提速之后进行的。总之,无论是抽取还是内插,其抗混迭/反镜像数字滤波均在高取样率条件下进行,这无疑大大提高了对运算速度的要求,对信号的实时处理极为不利。 
用,此处给出一个L倍内插器多相滤波结构的实现框图,如图5所示。

由图可见,此时的数字滤波器Rk(z)位于内插器之前,即滤波是在数据流提速之前进行的,这就大大降低了对处理器的要求,提高了实时处理能力。此外,多相滤波器结构的另一个好处是每一分支滤波器的系数由原来的N个减少到N/L个,可以减小滤波运算的累积误差,有利于提高计算精度,降低对处理器字长的要求。 图6是多相结构内插滤波器的开关结构形式,它可以更清楚地说明多相结构内插滤波器是如何工作的。对输入速率为Fs的数据流,经 L个子滤波器后,每个子滤波器的数据流速度依然是Fs,但整个内插滤波器的数据流 速度提高为L*Fs,此时用速率为L*Fs的开关对输出数据流进行选择,即完成了L倍内插数据的获取。
4基于TMS320C5402的实现方法 TMS320C5402是TI公司新一代16位定点DSP TMS320C54x系列芯片中性价比很高的一种芯片,适于多种高速数字信号处理方案。本文所介绍的内插滤波器作为全数字电力载波机的重要组成部分,其实时性好坏对整个系统的实时性和可靠性将产生重要影响。TMS3 20C5402内部有16k×16bit的DRAM,这些RAM在一个时钟周期内可以访问两次,由于本系统不需要大量的存储器,为了达到较好的实时性,在以下介绍的实现方法中将采用牺牲存储空间来换取运算时间的原则。 根据Matlab的计算,滚降系数为0.5、内插倍数为5的均方根升余弦滤波器为一个31阶的滤波器(采用FIR结构)。由以上的讨论可知5个子滤波器的系数安排如表1所示。

首先为输入数据开辟一块长为6个单元的缓冲区,该数据缓冲区可以采用多种方法实现,既可以采用线性缓冲区加间接寻址方法,也可以采用循环缓冲区加双操作数寻址方法。采用循环缓冲区加双操作数寻址时,每完成一次滤波操作,数据循环缓冲区将会自动调整缓冲区中的数据位置。通过对多相结构内插滤波器进行分析可以发现,对每一组输入数据,只有在5个子滤波器都完成了滤波及数据输出后,才能对输入数据缓冲区进行调整。所以尽管采用循环缓冲区双操作数寻址具有较小的运算量,但在此处并不适于采用。本文采用线性缓冲区作为输入数据缓冲区。 考虑TMS320C5402具有的DELAY指令,可以在每输入一个新的数据后,采用DELAY 指令将线性数据缓冲区的数据位置进行调整。假设维特比编码后的同相数据放在变量vtb_ecdI1中,而多相结构滤波器的数据缓冲区为rcf_re_buf,可以使用如下的语句完成缓冲区的更新。
以上代码将占用12个时钟周期。 在各子滤波器对输入数据进行滤波时,可以采用MAC指令,该指令完成一次乘累加只需要1个时钟周期。下面以第一个子滤波器为例介绍滤波过程,其中mpf1_tab_buf为第一个子滤波器的滤波系数表首地址。
其它各子滤波器的实现,此处不再进行详细说明,只需将mpf1_tab_buf改成其它相应的滤波器系数表首地址即可。为了检验此滤波器的滤波效果,采用Matlab生成如下的一组随机数,并用这些数据模拟维特比编码所产生的数据。
图7为在CCS2下仿真得到的内插成形滤波后的数据波形,图8是在Matlab下得到的波形,通过比较发现TMS320C5402所产生的波形不存在失真,16位字长完全满足精度要求。


5设计中要注意的问题 由于TMS320C5402是一个16位的定点DSP,在两个16位整数相乘时,乘积总是“向左增长”,这就意味着多次相乘后乘积将会很快超出16的数据范围。然而小数相乘,乘积总是“向右增长”,这表明超出定点数据范围的将是不感兴趣的部分[9]。所以在定点DSP芯片中,大都采用小数相乘,对TMS320C5402而言,只需要将FRCT置为1即可。 通过观察不难发现,维特比编码后送入基带内插成形滤波的数据是集合[-3- 2- 1 0 1 2 3]中的某一个元素,而各子滤波器的系数最大值为5 083(为了保证计算精度,将系数统一扩大了10 000倍),这样一个子滤波器进行一次滤波后输出的最大可能值为19 281(可能出现在第一个子滤波器的输出中,假设输入为集合[-3 3]的元素)。这样16位有符号数就完全可以保证计算精度,所以本文建议在这一部分的运算中,不要采用小数运算方式。 另外,该部分程序模块的实现使用了辅助寄存器AR2、AR3、AR6,所以在采用中断方式 完成诸如信号采样和外设管理时应注意保护这些辅助寄存器,以防止数据混乱。 从图7和图8的对比可以发现,两图中前160点是完全一致的,只是存在一个缩放比例,而图8在160点后还存在一段波形,这并不是CCS2仿真下数据出现错误。通过对Matlab中y=rcosflt(x,Fd,Fs,′fir/sqrt′,r,delay)这一函数的分析可以发现,rcosflt输出的数据长度length(y)=(length(x)+2*delay)*Fs/Fd,所以Matlab下的波形比CCS2仿真得到的数据多出30个数值,这是由于Matlab中延迟选项delay引入的。
参考文献
[1]王金龙,沈良,任国春.无线通信系统的DSP实现[M].北京:人民邮电出版社 ,2002 [2]王建新,蒋立平,吉训生,等.基带成形滤波器的FPGA实现[J].电讯技术,200 1,41(5):43-46 [3]朱宇,卫国,朱近康.基于时分处理的FIR内插滤波器的设计与实现[J].无线通信技术,2002,11(1):33-36,39 [4]张维良,郭兴波,潘长勇,等.高速FIR滤波器的流水线结构[J].电讯技术,20 02,42(2):57-60 [5]单亚娟,郑建勇,曹晓华.TMS320F240 DSP处理器在电动机微机保护装置设计中的应用[J].电力系统及其自动化学报,2003,15(1):67-70 [6]刘红,张东来,孙光伟.电力线载波中传输线模型的建立及应用[J].电力系统及其自动化学报,2002,14(3):27-31 [7]张贤达,保铮.通信信号处理[M].北京:国防工业出版社,2002 [8]钮心忻,杨义先.软件无线电技术与应用[M].北京:北京邮电大学出版社,2 000 [9]戴明桢,周建江.TS320C54x DSP结构、原理及应用[M].北京:北京航空航天大学出版社,2001
|