杨德伟, 宋雪松, 王 华, 王 正
(北京理工大学 通信技术研究所,北京 100081)
在无线通信系统中,为得到大的信号功率,以满足发射要求,需要通过高功率放大器对射频信号进行放大。为提高射频功放的效率,功放往往工作在非线性状态,会导致非线形失真。功率放大器的非线性失真严重影响了通信的质量[1]。当今移动通信系统中,为了增加传输速率和信道容量,采用了复杂的具有高频谱利用率的数字调制方式。采用这些数字调制方式,信号包络的变化产生了记忆效应,这种记忆效应引入了更大的带外扩散,增加邻道干扰,同时也产生了带内失真,因此,误比特率更加严重。在设计射频功放时,除了满足功放输出功率的要求外,效率和线性度是必须考虑的两个因素,但功放的效率和线性度是相互对立的。改善射频功率放大器线性度的线性化技术的预失真技术具有稳定、高效、宽带宽与自适应等优势[2]。数字基带预失真在基带进行信号处理,自适应技术能够容易地应用到预失真结构中。为了实现数字基带信号预失真处理,需要对预失真系统中相关硬件进行控制。目前,针对数字基带预失真系统的控制及算法多采用单片机、FPGA、DSP[3-4]。然而基于单片机的控制系统由于单片机本身的局限性,运行速度低,移植性比较差,无法进行多任务操作。基于FPGA的控制系统可操作性差,每改变一次控制参数,需要对FPGA重新写入一遍程序,不方便控制。基于DSP的控制系统虽然能够实现算法,但是对预失真系统的控制同样不方便。而基于嵌入式Linux[5-6]的控制不但能够实现预失真算法,而且能够方便地对预失真系统进行控制,从而弥补了几者之间的缺陷。
图1 间接学习结构框图
数字基带预失真系统由数字基带处理部分和射频处理部分组成,其硬件实现如图2所示。调制信号首先映射为I/Q两路,然后经过根升余弦滤波器成形滤波后,进入预失真器得到预失真器输出信号;经过预失真器处理后的信号,通过D/A变换、低通滤波、模拟正交调制和上变频变成射频信号,然后进入高功率放大器,功放输出信号中一部分信号通过天线发送,另一部分经过定向耦合器反馈给预失真系统,反馈信号经过下变频和正交解调得到基带模拟信号,利用高速A/D变换器变成数字基带信号,通过定时同步算法对齐反馈数据与发送数据,再利用自适应算法调整预失真器系数,从而实现预失真的目的。数字基带预失真控制系统通过同步算法和自适应算法完成对预失真器系数的调整,通过对DA/AD、调制模块参数的调整,来实现对传输信号的控制。
图2 系统结构原理图
数字基带预失真控制系统硬件由ARM[8]、键盘模块和显示模块共同组成,如图3所示。
图3 系统框架图
键盘模块由HD7279A控制芯片和4*4矩阵键盘组成[9]。HD7279A是一种专门管理键盘和LED显示器的专用智能控制芯片,它具有自动消除按键抖动并识别按键代码的功能,从而可以提高CPU工作的效率,同时具有较高的可靠性。HD7279A和ARM之间采用串行接口,当HD7279A检测到有效按键时,其KEY脚产生一个中断发送到ARM,当HD7279A接收到读取键值指令时,输出当前按键的键值代码到ARM。
采用LCM12832ZK作为显示模块,LCM12832ZK是一种具有8位/4位并行、2线/3线串行多种接口方式,内带简体中文字库的图形点阵液晶显示模块[10]。它具有显示信息丰富,体积小、功耗低、使用方便等特点,该模块在系统中的功能主要是根据具体的按键显示相关的操作指令。
ARM作为整个控制系统的核心,必须能够具有较强的运算能力和丰富的接口便于对外设的控制,基于以上考虑,系统设计选用S3C6410。S3C6410不仅能满足任务需求,而且成本低、功耗低,其操作系统的开源代码,便于软件实现。ARM在本文中主要有两个功能,一方面负责读取键值代码,并将相应的操作指令传输到预失真系统和显示模块上,另一方面负责与FPGA通信,完成数据的读取、处理和发送工作。
程序开发编译环境包括Fedora9.0,交叉编译工具采用的是arm-linux-gcc-4.5.1。嵌入式Linux采用的是Linux2.6.38。
在数字基带预失真系统中,其算法包括同步算法和自适应算法。由于放大器环路反馈信号存在着延时,因此必须对采集的数据进行数据对齐,即进行同步算法。对采集的数据完成同步算法处理之后,再进行自适应算法,之后将得到的系数复制到预失真模块,即完成了整个预失真的过程。
通常,数据对齐的步骤分为两步[11],即整数部分延时的数据对齐及小数部分延时的数据对齐,采用两步处理的目的是为了提高估计的准确度和最大限度地减少资源占用。本文整数部分的数据对齐采用基于协方差法的算法,小数部分的数据对齐采用基于Lagrange内插的协方差法的算法[12]。
自适应算法中多采用最小均方误差(Least Mean Square,LMS)算法[13]、最小二乘(Least Square,LS)算法[14]、递归最小二乘(Recursive Least Square,RLS)算法[14]三种经典自适应算法。本文采用RLS算法,它的更新目的是使输出信号与期望信号在最小二乘意义上最匹配,具有快速收敛的特点,因而被广泛应用于实时系统辨识和快速的信道均衡等领域。
3.1.1基于协方差法的算法
协方差法公式如下所示:
Rxz(m)=
-L+1≤m≤L-1
(1)
图4 协方差法求整数倍延时的曲线
3.1.2基于Lagrange内插的协方差法的算法
Lagrange内插实际上是使用了内插滤波器,这种插值滤波器使用了拉格朗日(Lagrange)多项式内插。由于这种插值滤波器使用了Farrow结构,是一种高效的结构,非常适合高速实现。对于已知的I个采样点,Lagrange内插公式[15]可以表示为:
(2)
其中,Ci为每个采样值的权重,由不同的采样时刻决定,且满足:
(3)
(4)
对插值后的输入和输出数据按照整数倍延时估计的方法,求得协方差曲线,在得到最大值所在的位置以后,除以内插倍数P后得到的值即为小数部分延时。需要说明的是,该算法的适应性比较强,对放大器环路中固定相偏和频偏抖动均不敏感,因此即使放大器非线性特性及记忆性很明显,估计的结果依然稳定而且准确。
3.1.3递归最小二乘算法
把待最小化的代价函数表示为J(n),其中n是可测数据的可变长度。另外,习惯上还在J(n)的定义中引入遗忘因子0<λ<1,其使用是为了保证“遗忘”掉久远的过去数据,以便当滤波器工作在非平稳环境中时,能跟踪观测数据的统计变化:
(5)
其中:e(n)是图1间接学习结构中所表示的误差;a是由akq组成的K(Q+1)行1列的列向量;u是由y对应a构造多项式组成的列向量:
(6)
为了后续的计算,给出输入向量的自相关矩阵:
(7)
并设其逆矩阵R-1(n)为P(n),RLS算法的主要步骤如下:
(1) 初始化:a(0)=0,P(0)=δ-1I,其中δ是一个很小的值;
(2) 更新增益向量k(n):
(8)
(3) 更新预失真器系数:
(9)
(4) 更新逆矩阵:
(10)
(5)n=n+1,转到步骤(2)。
本文将ARM应用于数字基带预失真系统,利用ARM实现了预失真算法[16]。其工作流程如图5所示。系统上电后,预失真算法软件经过初始化后,从FPGA的RAM中读取数据,经过预失真算法程序,进行同步算法和自适应算法,得到一组参数,然后将这组参数发送到预失真器,之后再次读取数据,判断是否需要更新预失真器中的系数,如果需要更新,就进行预失真算法处理;如果不需要更新,就继续读取数据进行判断。
为了使系统能够实现人机交互及控制界面,设计了AD控制模块、DA控制模块、上变频控制模块以及下变频控制模块。当系统上电后,S3C6410通过GPIO端口对各个模块进行初始化设置,等所有初始化工作都完成以后S3C6410进入中断等待状态,等待按键中断的到来。当S3C6410检测到按键中断时,向HD7279A发送读取键值指令读取键值,根据不同的键值,将对应操作显示到液晶上,并发送相应的控制指令到AD/DA模块或者上下变频模块,完成操作后回到中断等待状态,等待中断发生。其工作流程如图6所示。
图5 预失真算法程序流程图图6 键盘显示控制程序流程图
经过测试,本设计能够实现数字基带预失真系统的算法以及对该系统的控制。通过键盘显示控制程序,实现了对AD/DA模块、上下变频模块的控制;通过预失真算法程序,实现了预失真同步算法和自适应算法。在图7中显示了有无预失真算法时,信号的AM/AM对比图。从图中可以看出预失真效果明显,功放输出信号为线性信号。
图7 数字基带预失真AM/AM特性图
Linux是当前最受欢迎的操作系统之一,它具有内核小、效率高、源码开放的优点,所以也被广泛应用于嵌入式系统中。本文将嵌入式Linux引入预失真系统中,实现了对传输信号的控制,为用户提供了简洁的可操作平台,嵌入式Linux具有良好的移植性、可重用性和扩展性,便于预失真控制系统的优化和调整,同时也减少了后续开发工作,对于其它设备驱动的开发具有一定的参考价值。
[1] Kenington P. High-Linearity RF Amplifier Design[M]. Norwood,MA: Artech House,2000.
[2] 王佳涛,郭裕顺.功放的数字基带预失真技术研究[J].电子器件,2009,32(6):1074-1076.
WANG Jia-tao, GUO Yu-shun. Research of Amplifier’s Digital Baseband Predistortion[J]. Electron Devices(Chinese), 2009,32(6):1074-1076.
[3] Saleh A, Salz J. Adaptive linearization of power amplification in digital radio systems[J]. Bell System Technical Journal, 1983,62(4):1019-1033.
[4] Nagata Y. Linear amplification technique for digital mobile communications[C]//IEEE 39th Vehicular Technology Conference,1989(1):159-164.
[5] 宋宝华.Linux设备驱动开发详解[M].2版.北京:人民邮电出版社,2010.
[6] 李 俊.嵌入式Linux设备驱动开发详解[M].北京:人民邮电出版社,2008.
[7] C Eun, E J Powers. A new Volterra predistorter based on the indirect learning architecture[J]. IEEE Transactions on Signal Processing,1997,45(1):223-227.
[8] 邓华文. ARM嵌入式Linux系统研究与开发[D].成都:电子科技大学,2011.
[9] 姜 楠,宋文龙,郭晓刚. 基于HD7279A的单片机显示及键盘系统设计[J]. 自动化仪表,2007(11):22-24.
JIANG Nan, SONG Wenlong, GUO Xiaogang. Design of HD7279A-based Display and Keyboard System for Single Chip Computer[J]. Process Automation Instrumentation, 2007(11):22-24.
[10] 张文广,周绍磊,史贤俊,等. LCM12832ZK型串/并行图形点阵液晶显示模块及其应用[J]. 国外电子元器件,2005(12):59-63.
ZHANG Wen-guang, ZHOU Shao-lei, SHI Xian-jun,etc. Parallel/Serial graphics dot-matrix LCD modular LCM12832ZK and its application[J]. International Electronic Elements,2005(12):59-63.
[11] LI Hao, K. Dae Hyun, CHEN Deming. A Fast Digital Predistortion Algorithm for Radio-Frequency Power Amplifier Linearization With Loop Delay Compensation[J]. IEEE Journal of Selected Topics in Signal Processing, 2009,3(3):374-383.
[12] LIU Taijun, S. Boumaiza, F. M. Ghannouchi. Deembedding static nonlinearities and accurately identifying and modeling memory effects in wide-band RF transmitters[J]. IEEE Trans Microw Theory Tech., 2005,53(11):3578-3587.
[13] H Besbes, T Le-Ngoc. A fast adaptive predistorter for nonlinearly amplified M-QAM signals[C]. IEEE Global Telecommunications Conference, 2000,11(1): 108-112.
[14] S Haykin. Adaptive Filter Theory (Fourth Edition)[M]. 北京:电子工业出版社,2006.
[15] R Seroul. Programming for Mathematicians, Berlin[M]. Springer-Verlag,2000.
[16] 钱 晨,徐荣华,王钦若.基于Linux操作系统的设备驱动程序开发[J].微计算机信息,2004,20(9):132-135.
QIAN Chen, XU Rong-hua, WANG Qin-ruo. The Development of Device Driver on Linux[J]. Microcomputer Information, 2004,20(9):132-135.