著录项信息
专利名称 | 一种OFDM系统中功率放大器的频域线性化方法 |
申请号 | CN201510566527.5 | 申请日期 | 2015-09-08 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-12-30 | 公开/公告号 | CN105207628A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H03F1/32 | IPC分类号 | H;0;3;F;1;/;3;2;;;H;0;3;F;3;/;2;0查看分类表>
|
申请人 | 西安电子科技大学 | 申请人地址 | 陕西省西安市太白南路2号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 西安电子科技大学 | 当前权利人 | 西安电子科技大学 |
发明人 | 任智源;张平;陈晨;赵力强;张海林 |
代理机构 | 北京世誉鑫诚专利代理事务所(普通合伙) | 代理人 | 郭官厚 |
摘要
本发明涉及一种OFDM系统中功率放大器的频域线性化方法,包括如下步骤:S1:发送随机测试信号,通过反馈迭代得到二维查询表的初始值;S2发送实际信号,得到输出信号。本发明的优点体现在:本发明在OFDM系统的频域对功率放大器进行预失真,使其线性化。避免了现有技术中需要通过低通滤波器对功率放大器的线性失真和记忆性失真进行多次预失真的缺点,仅需一次预失真,其结构简单,易于实现,极大的提高了OFDM系统的稳定性,增加了OFDM系统的应用领域。
1.一种OFDM系统中功率放大器的频域线性化方法,其特征在于,包括如下步骤:
S1:发送随机测试信号,通过反馈迭代得到二维查询表的初始值:
S1.1建立二维预失真表,并初始化:
Ha(m,n)=1
Hp(m,n)=0
其中Ha表示信号经过功放后幅度缩放失真,Hp表示信号经过功放后相位旋转失真;m∈[1,carrier_count],carrier_count=512表示OFDM调制中子载波数目,对应着不同发送信号频率;n∈[1,16],分别对应16QAM调制星座图中16个不同的星座点;
S1.2产生输入随机测试比特流信号bit_x(n),为1*N串行数据:
N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度,其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;
S1.3步骤S1.2中得到的二进制信号bit_x转化为十六进制信号bit16_x:
把步骤2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤4中16QAM调制输入信号;
S1.4步骤S1.3得到的信号bit16_x,进行16QAM调制:
mo=modem.qammod(16);
symbol_x=modulate(mo,bit16_x)
symbol_x,为16QAM调制后的1*carrier_count串行信号;
根据星座图上16个不同的点,把调制后的信号的幅度标号保存到index(n)中,index范围从1到16,为二维表Ha和Hp的纵坐标,即第二维坐标;
S1.5步骤S1.4得到的信号symbol_x进行功率回退:
symbol_x2(n)=symbol_x(n)/num,为1*carrier_count串行符号;
其中num=sqrt(10*10^(ibo/10)),IBO=6dB,把dB转化为幅度,并且16QAM功率归一化;
S1.6步骤S1.5得到的信号symbol_x2进行串/并转换:
symbol_x2F=reshape(symbol_x2,length(symbol_x2),1),
把1*carrier_count的串行符号symbol_x2(n)转换为carrier_count*1的并行信号symbol_x2F(n);
S1.7步骤S1.6得到的信号symbol_x2F进行频域预失真处理:
xTa(n)=Ha(n,index(n))*xa(n);
xTp(n)=xp(n)+Hp(n,index(n));n∈[1,carrier_count],
其中xa(n)和xp(n)分别表示步骤S1.6得到的信号symbol_x2F(n)的幅度和相位;xTa(n)和xTp(n)表示预失真处理后得到信号symbolx_xF的幅度和相位;
S1.8步骤S1.7得到的信号symbolx_xF进行IFFT变换,即OFDM调制:
symbol_xt(n)=ifft(symbol_xF(n),IFFT_bin_length);
n∈[1,carrier_count],IFFT_bin_length=carrier_count,为IFFT变换长度;
把频域信号symbol_xF(n),变换到时域
symbol_xt(n),carrier_count*1的并行信号;
S1.9步骤S1.8得到的信号symbol_xt并/串转换:
symbol_xt2=reshape(symbol_xt,1,length(symbol_xt));
把并行carrier_count*1的信号symbol_xt转化为串行1*carrier_count的信号symbol_xt2;
S1.10步骤S1.9得到的信号symbol_xt2插入循环前缀:
CP=PrefixRatio*IFFT_bin_length=128;PrefixRatio为保护间隔与OFDM长度的比例;
即把信号symbol_xt2的后cp位添加到信号前面,变为加循环前缀信号symbol_xt3(n),为1*(carrier_count+cp)串行信号;
PrefixRatio取值为1/6~1/4;
S1.11步骤S1.10得到的信号symbol_xt2通过功率放大器HPA,即信号过等效的wiener模型:
(1)过记忆性FIR滤波器:
b=[0.7692,0.1538,0.0769];
a=1;
p=filter(b,a,symbol_xt3);
a,b为记忆性滤波器的参数,symbol_xt3为输入信号,p为记忆性失真输出信号;
(2)过非线性saleh功放模型;
pa=abs(p);pa为信号p的幅度;
pp=angle(p);pp为信号p的相位;
ya=(2.1587*pa)./(1.1517*pa.^2+1);
yp=4.0033*((pa.^2)./(9.1040*pa.^2+1))+pp;
ya、yp分别为信号p通过非线性saleh功放模型的输出信号symbol_xt4的幅度和相位;
symbol_xt4=ya*exp(1i*yp)为通过功放后的输出信号,属于1*(carrier_count+cp)串行的数据;
S1.12反馈信号Feedback=symbol_xt4:
通过功放放大且失真后的信号symbol_xt4作为反馈信号Feedback,属于1*(carrier_count+cp)串行的数据;
S1.13步骤S1.12得到的反馈信号Feedback去循环前缀:
1*(carrier_count+cp)串行的反馈信号Feedback去掉前面CP个符号,得到1*carrier_count的串行去前缀的反馈信号Feedback2;
S1.14步骤S1.13得到的信号Feedback2串/并转换:
Feedback3=reshape(Feedback2,length(Feedback2),1);
把1*carrier_count的串行信号Feedback2转化为carrier_count*1的并行信号Feedback3;
S1.15步骤S1.14得到信号Feedback3进行FFT变换:
Feedback_F=fft(Feedback3,IFFT_bin_length);
把carrier_count*1的并行信号Feedback3进行IFFT_bin_length点的FFT变换;将信号由时域变换到频域carrier_count*1的并行信号Feedback_F;
S1.16计算步骤S1.15中反馈信号Feedback_F和步骤S1.6得到的预失真前symbol_x2F信号均方误差
通过信号均方误差来观察算法对功放失真矫正的程度;
S1.17Rascal算法更新二维查询表:
Ha(n,index(n))=Ha(n,index(n))-uu*(Fa(n)-xa(n));
Hp(n,index(n))=Hp(n,index(n))-uu*(Fp(n)-xp(n));
其中,ua=0.1为幅度迭代步长,up=0.1为相位迭代步长;
xa和xp分别为步骤S1.6得到的信号symbol_x2F的幅度和相位,
Fa和Fp分别为步骤S1.15得到的信号Feedback_F的幅度和相位;
重复迭代步骤S1.2到步骤S1.17loop_test次,loop_test=10000,即发送loop_test组随机测试信号,更新得到的信号幅度缩放表Ha和信号相位旋转表Hp作为发送信号的Ha和Hp的初值;
S2发送实际信号,得到输出信号:
S2.1把步骤S1.1到S1.17发送的loop_test组随机测试信号,不断迭代更新得到的Ha和Hp,设置为发送信号的幅度缩放表Ha和信号相位旋转表Hp的初值:
S2.2发送实际比特流信号bit_x(n),为1*N串行数据;
N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度;其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;
S2.3步骤S2.2中得到二进制信号bit_x转化到十六进制:
把步骤S2.2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤S1.4中16QAM输入信号;
S2.4对实际信号重复步骤S1.3到S1.17loop_signal次,其中loop_signal=100;
S2.5过信道,加噪声:
将实际发送信号迭代loop_signal次后,得到1*(carrier_count+cp)串行的发送信号symblo_xt4,过信道,加噪声得到接收信号Yreceive;
Yreceive=awgn(symbol_xt4,snr);
标量snr指定了每一个采样点信号与噪声的比率,即信道信噪比,单位为dB;
为了检测频域线性化技术对功率放大器失真的矫正,信道信噪比snr取值范围为snr≥
18dB;
S2.6步骤S2.5中得到的接收信号Yreceive去循环前缀:
1*(carrier_count+cp)串行的接收信号Yreceive去掉前面CP个符号,得到1*carrier_count的串行去前缀后的接收信号Yreceive2;
S2.7步骤S2.6得到的信号Yreceive2串/并转换:
Yreceive3=reshape(Yreceive2,length(Yreceive2),1);
把1*carrier_count的串行信号Yreceive2转化为carrier_count*1的并行信号Yreceive3;
S2.8步骤S2.7得到的信号Yreceive3FFT变换:
Yreceive_F=fft(Yreceive3,IFFT_bin_length);
把carrier_count*1的并行信号Yreceive3进行IFFT_bin_length点的FFT;将信号由时域变换到频域carrier_count*1的并行信号Yreceive_F;
S2.9步骤S2.8得到的信号Yreceive_F并/串转换:
Yreceive_F2=reshape(Yreceive_F,length(Yreceive2),1);
把carrier_count*1的并行信号Yreceive_F转化为1*carrier_count的串行信号Yreceive_F2;
S2.10步骤S2.9得到的信号Yreceive_F2功率还原:
Yreceive_F3=Yreceive_F2*num;
把发送回退的功率还原;
S2.11步骤S2.10得到的信号16QAM解调:
de=modem.qamdemod(16);
out=demodulate(de,Yreceive_F3);
out为16QAM解调后的1*carrier_count的串行信号;
S2.12步骤S2.11得到的十六进制信号out转换到二进制:
把16QAM解调后1*carrier_count的串行信号out,转换为二进制
1*(carrier_count*symbols_per_carrier)的信号bit_y;
到步骤S2.12即可得到发送信号bit_x经过系统后的输出信号bit_y。
一种OFDM系统中功率放大器的频域线性化方法\n技术领域\n[0001] 本发明涉及无线通信技术领域,具体涉及一种OFDM系统中功率放大器的频域线性化方法。\n背景技术\n[0002] OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,是一种多载波调制技术。在4G LTE技术中已得到使用,是LTE三大关键技术之一,预计在5G仍然作为主要的调制方式。OFDM基本原理是将信号分割为N个子载波,然后用N个子信号分别调制N个互相正交的子载波。由于子载波的频谱相互重叠,因而可以得到较高的频谱效率。\nOFDM系统属于多载波调制技术,峰均功率比(PAPR)较高,使得发送端对功率放大器的线性要求高。因此在OFDM系统中,由于信号包络的不稳定性,使得该系统对非线性很敏感,如果没有改善非线性敏感的措施,OFDM系统的应用将会大大缩小。对于OFDM系统中的功率放大器线性化研究比较热门,但大多数是在时域进行预失真研究。需要对功率放大器的线性失真和记忆性失真进行两次预失真,并且需要低通滤波器。\n[0003] 目前,关于一种结构简单、易于实现的OFDM系统中功率放大器的频域线性化方法还未见相关报道。\n发明内容\n[0004] 本发明的目的是针对现有技术中的不足,提供一种应用于无线通信领域的、易于实现的OFDM系统中功率放大器的频域线性化方法。\n[0005] 为实现上述目的,本发明公开了如下技术方案:\n[0006] 一种OFDM系统中功率放大器的频域线性化方法,包括如下步骤:S1:发送随机测试信号,通过反馈迭代得到二维查询表的初始值:\n[0007] S1.1建立二维预失真表,并初始化:\n[0008] Ha(m,n)=1\n[0009] Hp(m,n)=0\n[0010] 其中Ha表示信号经过功放后幅度缩放失真,Hp表示信号经过功放后相位旋转失真;m∈[1,carrier_count],carrier_count=512表示OFDM调制中子载波数目,对应着不同发送信号频率;n∈[1,16],分别对应16QAM调制星座图中16个不同的星座点;\n[0011] S1.2产生输入随机测试比特流信号bit_x(n),为1*N串行数据:\n[0012] N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度,其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;\n[0013] S1.3步骤S1.2中得到的二进制信号bit_x转化为十六进制信号bit16_x:\n[0014] 把步骤2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤4中16QAM调制输入信号;S1.4步骤S1.3得到的信号bit16_x,进行16QAM调制:\n[0015] mo=modem.qammod(16);\n[0016] symbol_x=modulate(mo,bit16_x)\n[0017] symbol_x,为16QAM调制后的1*carrier_count串行信号;\n[0018] 根据星座图上16个不同的点,把调制后的信号的幅度标号保存到\n[0019] index(n)中,index范围从1到16,为二维表Ha和Hp的纵坐标,即第二维坐标;\n[0020] S1.5步骤S1.4得到的信号symbol_x进行功率回退:\n[0021] symbol_x2(n)=symbol_x(n)/num,为1*carrier_count串行符号;其中num=sqrt(10*10^(ibo/10)),IBO=6dB,把dB转化为幅度,并且16QAM功率归一化;\n[0022] S1.6步骤S1.5得到的信号symbol_x2进行串/并转换:\n[0023] symbol_x2F=reshape(symbol_x2,length(symbol_x2),1),把1*carrier_count的串行符号symbol_x2(n)转换为carrier_count*1的并行信号symbol_x2F(n);\n[0024] S1.7步骤S1.6得到的信号symbol_x2F进行频域预失真处理:\n[0025] xTa(n)=Ha(n,index(n))*xa(n);\n[0026] xTp(n)=xp(n)+Hp(n,index(n));n∈[1,carrier_count],\n[0027] 其中xa(n)和xp(n)分别表示步骤S1.6得到的信号symbol_x2F(n)\n[0028] 的幅度和相位;xTa(n)和xTp(n)表示预失真处理后得到信号symbolx_xF的幅度和相位;\n[0029] S1.8步骤S1.7得到的信号symbolx_xF进行IFFT变换,即OFDM调制:\n[0030] symbol_xt(n)=ifft(symbol_xF(n),IFFT_bin_length);\n[0031] n∈[1,carrier_count],IFFT_bin_length=carrier_count,为IFFT变换长度;\n[0032] 把频域信号symbol_xF(n),变换到时域\n[0033] symbol_xt(n),carrier_count*1的并行信号;\n[0034] S1.9步骤S1.8得到的信号symbol_xt并/串转换:\n[0035] symbol_xt2=reshape(symbol_xt,1,length(symbol_xt));\n[0036] 把并行carrier_count*1的信号symbol_xt转化为串行1*carrier_count的信号symbol_xt2;\n[0037] S1.10步骤S1.9得到的信号symbol_xt2插入循环前缀:\n[0038] CP=PrefixRatio*IFFT_bin_length=128;PrefixRatio为保护间隔与OFDM长度的比例;\n[0039] 即把信号symbol_xt2的后cp位添加到信号前面,变为加循环前缀信号symbol_xt3(n),为1*(carrier_count+cp)串行信号;\n[0040] PrefixRatio取值为1/6~1/4;\n[0041] S1.11步骤S1.10得到的信号symbol_xt2通过功率放大器HPA,即信号过等效的wiener模型:\n[0042] (1)过记忆性FIR滤波器:\n[0043] b=[0.7692,0.1538,0.0769];\n[0044] a=1;\n[0045] p=filter(b,a,symbol_xt3);\n[0046] a,b为记忆性滤波器的参数,symbol_xt3为输入信号,p为记忆性失真输出信号;\n[0047] (2)过非线性saleh功放模型;\n[0048] pa=abs(p);pa为信号p的幅度;\n[0049] pp=angle(p);pp为信号p的相位;\n[0050] ya=(2.1587*pa)./(1.1517*pa.^2+1);\n[0051] yp=4.0033*((pa.^2)./(9.1040*pa.^2+1))+pp;\n[0052] ya、yp分别为信号p通过非线性saleh功放模型的输出信号\n[0053] symbol_xt4的幅度和相位;\n[0054] symbol_xt4=ya*exp(1i*yp)为通过功放后的输出信号,属于1*(carrier_count+cp)串行的数据;\n[0055] S1.12反馈信号Feedback=symbol_xt4:\n[0056] 通过功放放大且失真后的信号symbol_xt4作为反馈信号Feedback,属于1*(carrier_count+cp)串行的数据;\n[0057] S1.13步骤S1.12得到的反馈信号Feedback去循环前缀:\n[0058] 1*(carrier_count+cp)串行的反馈信号Feedback去掉前面CP个符号,得到1*carrier_count的串行去前缀的反馈信号Feedback2;\n[0059] S1.14步骤S1.13得到的信号Feedback2串/并转换:\n[0060] Feedback3=reshape(Feedback2,length(Feedback2),1);\n[0061] 把1*carrier_count的串行信号Feedback2转化为carrier_count*1的并行信号Feedback3;\n[0062] S1.15步骤S1.14得到信号Feedback3进行FFT变换:\n[0063] Feedback_F=fft(Feedback3,IFFT_bin_length);\n[0064] 把carrier_count*1的并行信号Feedback3进行IFFT_bin_length点的FFT变换;将信号由时域变换到频域carrier_count*1的并行信号Feedback_F;\n[0065] S1.16计算步骤S1.15中反馈信号Feedback_F和步骤S1.6得到的预失真前symbol_x2F信号均方误差\n[0066]\n[0067] 通过信号均方误差来观察算法对功放失真矫正的程度;\n[0068] S1.17Rascal算法更新二维查询表:\n[0069] Ha(n,index(n))=Ha(n,index(n))-uu*(Fa(n)-xa(n));\n[0070] Hp(n,index(n))=Hp(n,index(n))-uu*(Fp(n)-xp(n));\n[0071] 其中,ua=0.1为幅度迭代步长,up=0.1为相位迭代步长;\n[0072] xa和xp分别为步骤S1.6得到的信号symbol_x2F的幅度和相位,\n[0073] Fa和Fp分别为步骤S1.15得到的信号Feedback_F的幅度和相位;\n[0074] 重复迭代步骤S1.2到步骤S1.17loop_test次,loop_test=10000,即发送loop_test组随机测试信号,更新得到的信号幅度缩放表Ha和信号相位旋转表Hp作为发送信号的Ha和Hp的初值;\n[0075] S2发送实际信号,得到输出信号:\n[0076] S2.1把步骤S1.1到S1.17发送的loop_test组随机测试信号,不断迭代更新得到的Ha和Hp,设置为发送信号的幅度缩放表Ha和信号相位旋转表Hp的初值:\n[0077] S2.2发送实际比特流信号bit_x(n),为1*N串行数据;\n[0078] N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度;\n其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;\n[0079] S2.3步骤S2.2中得到二进制信号bit_x转化到十六进制:\n[0080] 把步骤S2.2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤S1.4中16QAM输入信号;\n[0081] S2.4对实际信号重复步骤S1.3到S1.17loop_signal次,其中loop_signal=100;\n[0082] S2.5过信道,加噪声:\n[0083] 将实际发送信号迭代loop_signal次后,得到1*(carrier_count+cp)串行的发送信号symblo_xt4,过信道,加噪声得到接收信号Yreceive;\n[0084] Yreceive=awgn(symbol_xt4,snr);\n[0085] 标量snr指定了每一个采样点信号与噪声的比率,即信道信噪比,单位为dB;\n[0086] 标量snr指定了每一个采样点信号与噪声的比率,即信道信噪比,单位为dB;\n[0087] S2.6步骤S2.5中得到的接收信号Yreceive去循环前缀:\n[0088] 1*(carrier_count+cp)串行的接收信号Yreceive去掉前面CP个符号,得到1*carrier_count的串行去前缀后的接收信号Yreceive2;\n[0089] S2.7步骤S2.6得到的信号Yreceive2串/并转换:\n[0090] Yreceive3=reshape(Yreceive2,length(Yreceive2),1);把1*carrier_count的串行信号Yreceive2转化为carrier_count*1的并行信号Yreceive3;\n[0091] S2.8步骤S2.7得到的信号Yreceive3FFT变换:\n[0092] Yreceive_F=fft(Yreceive3,IFFT_bin_length);\n[0093] 把carrier_count*1的并行信号Yreceive3进行IFFT_bin_length点的FFT;将信号由时域变换到频域carrier_count*1的并行信号Yreceive_F;\n[0094] S2.9步骤S2.8得到的信号Yreceive_F并/串转换:\n[0095] Yreceive_F2=reshape(Yreceive_F,length(Yreceive2),1);把carrier_count*\n1的并行信号Yreceive_F转化为1*carrier_count的串行信号Yreceive_F2;\n[0096] S2.10步骤S2.9得到的信号Yreceive_F2功率还原:\n[0097] Yreceive_F3=Yreceive_F2*num;\n[0098] 把发送回退的功率还原;\n[0099] S2.11步骤S2.10得到的信号16QAM解调:\n[0100] de=modem.qamdemod(16);\n[0101] out=demodulate(de,Yreceive_F3);\n[0102] out为16QAM解调后的1*carrier_count的串行信号;\n[0103] S2.12步骤S2.11得到的十六进制信号out转换到二进制:\n[0104] 把16QAM解调后1*carrier_count的串行信号out,转换为二进制1*(carrier_count*symbols_per_carrier)的信号bit_y;\n[0105] 到步骤S2.12即可得到发送信号bit_x经过系统后的输出信号bit_y。\n[0106] 本发明公开的一种OFDM系统中功率放大器的频域线性化方法,具有以下有益效果:\n[0107] 本发明在OFDM系统的频域对功率放大器进行预失真,使其线性化。避免了现有技术中需要通过低通滤波器对功率放大器的线性失真和记忆性失真进行多次预失真的缺点,仅需一次预失真,其结构简单,易于实现,极大的提高了OFDM系统的稳定性,增加了OFDM系统的应用领域。\n附图说明\n[0108] 图1是本发明的系统框图;\n[0109] 图2是功放HPA的等效模型wiener模型示意图;\n[0110] 图3是只有记忆性失真的16QAM星座图;\n[0111] 图4是只有非线性失真的16QAM星座图;\n[0112] 图5是同时有记忆性和非线性失真的16QAM星座图;\n[0113] 图6是loop_test=10000组随机测试数据迭代后功放失真的16QAM星座图;\n[0114] 图7是一组发送信号迭代loop_signal=50次后16QAM星座图;\n[0115] 图8是一组发送信号迭代loop_signal=100次后16QAM星座图;\n[0116] 图9是一组发送信号迭代loop_signal=150次后16QAM星座图;\n[0117] 图10是loop_test=5000组随机测试数据迭代后接收信号的误比特率图;\n[0118] 图11是loop_test=1000组随机测试数据迭代后接收信号的误比特率图;\n具体实施方式\n[0119] 下面结合实施例并参照附图对本发明作进一步描述。\n[0120] 请参见图1、图2。一种OFDM系统中功率放大器的频域线性化方法,包括如下步骤:\n[0121] S1:发送随机测试信号,通过反馈迭代得到二维查询表的初始值:\n[0122] S1.1建立二维预失真表,并初始化:\n[0123] Ha(m,n)=1\n[0124] Hp(m,n)=0\n[0125] 其中Ha表示信号经过功放后幅度缩放失真,Hp表示信号经过功放后相位旋转失真;m∈[1carrier_count],carrier_count=512表示OFDM调制中子载波数目,对应着不同发送信号频率;n∈[1,16],分别对应16QAM调制星座图中16个不同的星座点;\n[0126] S1.2产生输入随机测试比特流信号bit_x(n),为1*N串行数据:\n[0127] N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度,其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;\n[0128] S1.3步骤S1.2中得到的二进制信号bit_x转化为十六进制信号bit16_x:\n[0129] 把步骤2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤4中16QAM调制输入信号;S1.4步骤S1.3得到的信号bit16_x,进行16QAM调制:\n[0130] mo=modem.qammod(16);\n[0131] symbol_x=modulate(mo,bit16_x)\n[0132] symbol_x,为16QAM调制后的1*carrier_count串行信号;\n[0133] 根据星座图上16个不同的点,把调制后的信号的幅度标号保存到index(n)中,index范围从1到16,为二维表Ha和Hp的纵坐标,即第二维坐标;\n[0134] S1.5步骤S1.4得到的信号symbol_x进行功率回退:\n[0135] symbol_x2(n)=symbol_x(n)/num,为1*carrier_count串行符号;\n[0136] 其中num=sqrt(10*10^(ibo/10)),IBO=6dB,把dB转化为幅度,并且16QAM功率归一化;\n[0137] S1.6步骤S1.5得到的信号symbol_x2进行串/并转换:\n[0138] symbol_x2F=reshape(symbol_x2,length(symbol_x2),1),把1*carrier_count的串行符号symbol_x2(n)转换为carrier_count*1的并行信号symbol_x2F(n);\n[0139] S1.7步骤S1.6得到的信号symbol_x2F进行频域预失真处理:\n[0140] xTa(n)=Ha(n,index(n))*xa(n);\n[0141] xTp(n)=xp(n)+Hp(n,index(n));n∈[1,carrier_count],\n[0142] 其中xa(n)和xp(n)分别表示步骤S1.6得到的信号symbol_x2F(n)的幅度和相位;\nxTa(n)和xTp(n)表示预失真处理后得到信号symbolx_xF的幅度和相位;\n[0143] S1.8步骤S1.7得到的信号symbolx_xF进行IFFT变换,即OFDM调制:\n[0144] symbol_xt(n)=ifft(symbol_xF(n),IFFT_bin_length);\n[0145] n∈[1,carrier_count],IFFT_bin_length=carrier_count,为IFFT变换长度;\n[0146] 把频域信号symbol_xF(n),变换到时域\n[0147] symbol_xt(n),carrier_count*1的并行信号;\n[0148] S1.9步骤S1.8得到的信号symbol_xt并/串转换:\n[0149] symbol_xt2=reshape(symbol_xt,1,length(symbol_xt));\n[0150] 把并行carrier_count*1的信号symbol_xt转化为串行1*carrier_count的信号symbol_xt2;\n[0151] S1.10步骤S1.9得到的信号symbol_xt2插入循环前缀:\n[0152] CP=PrefixRatio*IFFT_bin_length=128;PrefixRatio为保护间隔与OFDM长度的比例;\n[0153] 即把信号symbol_xt2的后cp位添加到信号前面,变为加循环前缀信号symbol_xt3(n),为1*(carrier_count+cp)串行信号;\n[0154] S1.11步骤S1.10得到的信号symbol_xt2通过功率放大器HPA,即信号过等效的wiener模型--wiener系统(即线性时不变系统(FIR)串联无记忆非线性模型)可以很好的模拟有记忆的高功率放大器模型:\n[0155] (1)过记忆性FIR滤波器:\n[0156] b=[0.7692,0.1538,0.0769];\n[0157] a=1;\n[0158] p=filter(b,a,symbol_xt3);\n[0159] a,b为记忆性滤波器的参数,symbol_xt3为输入信号,p为记忆性失真输出信号;\n[0160] (2)过非线性saleh功放模型;\n[0161] pa=abs(p);pa为信号p的幅度;\n[0162] pp=angle(p);pp为信号p的相位;\n[0163] ya=(2.1587*pa)./(1.1517*pa.^2+1);\n[0164] yp=4.0033*((pa.^2)./(9.1040*pa.^2+1))+pp;\n[0165] ya、yp分别为信号p通过非线性saleh功放模型的输出信号symbol_xt4的幅度和相位;\n[0166] symbol_xt4=ya*exp(1i*yp)为通过功放后的输出信号,属于1*(carrier_count+cp)串行的数据;\n[0167] S1.12反馈信号Feedback=symbol_xt4:\n[0168] 通过功放放大且失真后的信号symbol_xt4作为反馈信号Feedback,属于1*(carrier_count+cp)串行的数据;\n[0169] S1.13步骤S1.12得到的反馈信号Feedback去循环前缀:\n[0170] 1*(carrier_count+cp)串行的反馈信号Feedback去掉前面CP个符号,得到1*carrier_count的串行去前缀的反馈信号Feedback2;\n[0171] S1.14步骤S1.13得到的信号Feedback2串/并转换:\n[0172] Feedback3=reshape(Feedback2,length(Feedback2),1);把1*carrier_count的串行信号Feedback2转化为carrier_count*1的并行信号Feedback3;\n[0173] S1.15步骤S1.14得到信号Feedback3进行FFT变换:\n[0174] Feedback_F=fft(Feedback3,IFFT_bin_length);把carrier_count*1的并行信号Feedback3进行IFFT_bin_length点的FFT变换;将信号由时域变换到频域carrier_count*1的并行信号Feedback_F;\n[0175] S1.16计算步骤S1.15中反馈信号Feedback_F和步骤S1.6得到的预失真前symbol_x2F信号均方误差\n[0176]\n[0177] 通过信号均方误差来观察算法对功放失真矫正的程度;\n[0178] S1.17Rascal算法更新二维查询表:\n[0179] Ha(n,index(n))=Ha(n,index(n))-uu*(Fa(n)-xa(n));\n[0180] Hp(n,index(n))=Hp(n,index(n))-uu*(Fp(n)-xp(n));\n[0181] 其中,ua=0.1为幅度迭代步长,up=0.1为相位迭代步长;\n[0182] xa和xp分别为步骤S1.6得到的信号symbol_x2F的幅度和相位,\n[0183] Fa和Fp分别为步骤S1.15得到的信号Feedback_F的幅度和相位;\n[0184] 重复迭代步骤S1.2到步骤S1.17loop_test次,loop_test=10000,即发送loop_test组随机测试信号,更新得到的信号幅度缩放表Ha和信号相位旋转表Hp作为发送信号的Ha和Hp的初值;\n[0185] S2发送实际信号,得到输出信号:\n[0186] S2.1把步骤S1.1到S1.17发送的loop_test组随机测试信号,不断迭代更新得到的Ha和Hp,设置为发送信号的幅度缩放表Ha和信号相位旋转表Hp的初值:\n[0187] S2.2发送实际比特流信号bit_x(n),为1*N串行数据;\n[0188] N=carrier_count*symbols_per_carrier*bits_per_symbol为一组比特流长度;\n其中carrier_count=512为子载波数,symbols_per_carrier=1为每个子载波中OFDM符号数,bits_per_symbol=4为每个调制符号的比特数,16QAM调制每符号含有4个比特;\n[0189] S2.3步骤S2.2中得到二进制信号bit_x转化到十六进制:\n[0190] 把步骤S2.2中的1*N串行二进制信号bit_x转换为1*carrier_count的十六进制信号bit16_x,作为步骤S1.4中16QAM输入信号;\n[0191] S2.4对实际信号重复步骤S1.3到S1.17loop_signal次,其中loop_signal=100;\n[0192] S2.5过信道,加噪声:\n[0193] 将实际发送信号迭代loop_signal次后,得到1*(carrier_count+cp)串行的发送信号symblo_xt4,过信道,加噪声得到接收信号Yreceive;\n[0194] Yreceive=awgn(symbol_xt4,snr);\n[0195] 标量snr指定了每一个采样点信号与噪声的比率,即信道信噪比,单位为dB;\n[0196] S2.6步骤S2.5中得到的接收信号Yreceive去循环前缀:\n[0197] 1*(carrier_count+cp)串行的接收信号Yreceive去掉前面CP个符号,得到1*carrier_count的串行去前缀后的接收信号Yreceive2;\n[0198] S2.7步骤S2.6得到的信号Yreceive2串/并转换:\n[0199] Yreceive3=reshape(Yreceive2,length(Yreceive2),1);把1*carrier_count的串行信号Yreceive2转化为carrier_count*1的并行信号Yreceive3;\n[0200] S2.8步骤S2.7得到的信号Yreceive3FFT变换:\n[0201] Yreceive_F=fft(Yreceive3,IFFT_bin_length);\n[0202] 把carrier_count*1的并行信号Yreceive3进行IFFT_bin_length点的FFT;将信号由时域变换到频域carrier_count*1的并行信号Yreceive_F;\n[0203] S2.9步骤S2.8得到的信号Yreceive_F并/串转换:\n[0204] Yreceive_F2=reshape(Yreceive_F,length(Yreceive2),1);把carrier_count*\n1的并行信号Yreceive_F转化为1*carrier_count的串行信号Yreceive_F2;\n[0205] S2.10步骤S2.9得到的信号Yreceive_F2功率还原:\n[0206] Yreceive_F3=Yreceive_F2*num;\n[0207] 把发送回退的功率还原;\n[0208] S2.11步骤S2.10得到的信号16QAM解调:\n[0209] de=modem.qamdemod(16);\n[0210] out=demodulate(de,Yreceive_F3);\n[0211] out为16QAM解调后的1*carrier_count的串行信号;\n[0212] S2.12步骤S2.11得到的十六进制信号out转换到二进制:\n[0213] 把16QAM解调后1*carrier_count的串行信号out,转换为二进制1*(carrier_count*symbols_per_carrier)的信号bit_y;\n[0214] 到步骤S2.12即可得到发送信号bit_x经过系统后的输出信号bit_y。\n[0215] 本发明中,步骤S1.10中PrefixRatio取值为1/6~1/4。\n[0216] 步骤S2.5中,为了检测频域线性化技术对功率放大器失真的矫正,信道信噪比snr取值范围为snr≥18dB,优选20dB。\n[0217] 需要说明的是,步骤S2.5中,为了检测频域线性化技术对功率放大器失真的矫正,信道信噪比snr应当设置较大的值,或者不添加噪声。\n[0218] 星座图\n[0219] 见图3,图3为不加预失真只有记忆性失真的16QAM星座图。功放记忆性失真是对不同频率的信号放大倍数不同,OFDM调制有不同频率的子载波,所以通过功率放大器存在记忆性失真。\n[0220] 见图4,图4为不加预失真只有非线性失真的16QAM星座图。非线性失真是功放对不同幅度的信号放大倍数不同,OFDM调制中采用16QAM调制,信号幅度不同,所以通过功率放大器存在非线性失真。\n[0221] 见图5,图5为不加预失真同时存在记忆性和非线性失真的16QAM星座图。OFDM信号通过功率放大器存在记忆性失真和非线性失真,通过频域线性化技术,矫正这两种失真。\n[0222] 见图6,通过loop_test=10000组随机测试数据迭代产生的Ha和Hp,作为发送信号的Ha和Hp的初值。\n[0223] 见图7、8、9。由图7、8、9可知,当测试数据迭代次数loop_signal=150次,可以完全抵消功放非线性和记忆性失真,使其能够线性化放大。\n[0224] 发送loop_test组不同随机测试数据的得到的功放失真带来的误比特率。\n[0225] 见图10,在信道不添加噪声时,loop_test=5000组随机测试数据迭代后接收信号的误比特率;\n[0226] 见图11,在信道不添加噪声时,loop_test=1000组随机测试数据迭代后接收信号的误比特率。\n[0227] 由误码率图10和图11知:当不添加噪声时,只有功率放大器的线性和记忆性失真,发送1000组测试数据时,误码率可达为0,能很好的矫正功率放大器带来的失真。所以发送信号时,预失真迭代较正次数loop_signal=1,功率放大器带来的误码可以矫正。但星座图比较离散,为了使星座图更好,可以增加发送信号的迭代次数loop_signal。当loop_signal=100次左右,星座图比较理想。但增加迭代次数,会带来延迟。所以可以根据系统对延迟的敏感度,来设置每组实际发送信号的预失真迭代矫正次数。\n[0228] 以上所述仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员,在不脱离本发明的前提下,还可以对本发明做出的若干改进和补充,这些改进和补充,也应视为本发明的保护范围。
法律信息
- 2018-06-29
- 2016-01-27
实质审查的生效
IPC(主分类): H03F 1/32
专利申请号: 201510566527.5
申请日: 2015.09.08
- 2015-12-30
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-09-11
|
2013-06-24
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |