OFDM在光纤通信中的卷积编码的研究
一、实验工具:Mathworks Matlab
二、实验目的:掌握信道编码,卷积编码的编码与解码方式,熟练
操作Matlab 软件;
三、实验要求:
1、Matlab 完成简单的OFDM 信号的产生与解调程序; 2、信道编码采用卷积编码,解码采用维特比译码; 3、OFDM 符号采用QPSK 映射方式;
4、采用不同的编码速率进行编码,如:1/3, 1/2, 5/8, or 3/4; 5、在AWG 信道下,比较卷积编码的OFDM 系统的误比特率性能; 6、具体的编码要求,见参考文献pp55-59。
五、实验内容
3.1 OFDM
3.1.1 OFDM基本原理
OFDM(Orthogonal Frequency Division Multiplexing)即正交频分 复用技术,OFDM是一种无线环境下的高速传输技术。无线信道的频率响应曲线大多是非平坦的,而OFDM技术的主要思想就是在频域内将给定信道分成许多正交子信道,在每个子信道上使用一个子载波进行调制信号带宽小于信道的相应带宽,因此就可以大大消除信号波形间的干扰。由于在OFDM系统中各个子信道的载波相互正交,它们的频谱是相互重叠的,这样不但减小了子载波间的相互干扰,同时又提高了频
谱利用率。
OFDM的基本思想是把高速率的信源信息流通过串并变换,变换成低速率的N路并行数据流,然后将这N路数据流分别调到N个相互正交的子载波上,再将N路调制后的信号相加即得发射信号。
3.1.2、OFDM调制原理框图
其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰 ICI 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。OFDM通过把需要发射的数据流分解为若干个并行的数据子流,这样每个数据子流在速率上就会降低很多,然后再进行相关调制,将它们调制到一组总数为N,频率之间的间隔相等,且又两两正交的子载波上。设一个OFDM符号之内包含N个经过相移键控(PSK)或者正交幅度调制(QAM)的子载波。T 表示OFDM符号的持续时间(周期),则OFDM的基带信号为 s(t)??dnen?0N?1j2?ntT (3一1) 对于信号s(t)以T/N的速率进行抽样,即令t=kT/N(k=0,1,…,N-1),则可得: sk?s(kT/N)??dnen?0N?1j2?nkT(0?k?N?1) (3一2) 可以看出,抽样值刚好为N点反离散傅里叶变换(IDFT)。同样在接收端,恢复sdn原始数据符号的处理就可以通过对k 进行N点离散傅里叶变换(DFT)获得。由此可见,OFDM系统的调制和解调可以分别通过IDFT/DFT 来实现。
下图 为OFDM系统的调制与解调框图。
2、OFDM解调原理框图
3.1.3 Matlab完成简单的OFDM信号的产生于解调 方案一:
c=6; %子载波个数
bits=108; %每个信道的比特数 n=c*bits; %总的传送比特数
data=2*round(rand(1,n))-1; %产生信源数据 s=reshape(data,c,bits); %串/并变换 tp=1:0.1:(1+10.8)-0.1; for i=1:c
carrier(i,:)=cos(2*i*pi*tp); %产生载波信号
bpsk_sig(i,:)=s(i,:).*carrier(i,:); %产生调制信号 fin(i,:)=ifft(bpsk_sig(i,:)); %对信号进行IFFT end
%并串变换
transmit=reshape(fin,1,648); %加噪声 snr=10;
rxdata=awgn(transmit,snr,'measured'); %并串变换
rec=reshape(rxdata,c,bits); for i=1:c
rd(i,:)=fft(rec(i,:)); %进行FFT处理
uncarry(i,:)=rd(i,:).*carrier(i,:); %解调 end
rdata=sign(real(uncarry)); %判决输出结果 %并串变换
rdout=reshape(rdata,1,648); 通过对比rdata和data
方案二:
Tu=224e-6; %useful OFDM symbol period 224微秒作用符号周期 T=Tu/2048; oseband elementary period基带基本周期 %求每个子载波的周期,2k模式里有2048个子载波(方便FFT/IFFT计算)
48=1512(数据载波)+17(参数信令载波TPS)+176(导频载波)+343(虚拟载波)
G=1/4; %choice of 1/4, 1/8, 1/16, and 1/32保护间隔长度,这里为1/4 delta=G*Tu; %guard band duration
Ts=delta+Tu; %total OFDM symbol period
Kmax=1705; %number of subcarriers有效子载波1705=1512(数据载波)+17(参数信令载波TPS)+176(导频载波) Kmin=0;
FS=4096;%IFFT/FFT length2N-IFFT,N=2048.
%一般情况下我觉得取2048就可以了,我猜想用4096的目的是考虑中心频率,而且这样的话采样频率不变, q=10; êrrier period to elementary period ratio
fc=q*1/T; êrrier frequency f=1/T=9.124 这个关系使得载波频率接近于90 MHz,这个频率是VHF信道5的范围内,
Rs=4*fc; %simulation period是基带信号初始周期长度,
t=0:1/Rs:Tu; úta generator (A确定一个符号周期内的采样点数 ) M=Kmax+1;06便于计算,产生1706个4QAM符号 rand('state',0);
a=-1+2*round(rand(M,1)).'+i*(-1+2*round(rand(M,1))).';%有0,1转换成-1,1调制信号,将二进制信息映射到星座图上
%从A开始到info结束是串并转换,将每个OFDM符号的串行数据分配到多个信道上,每个信道上若干个数据(子载波是并行的,每个子载波上的数据也是并行的,所以数据要经过串并转换,分别调制个个子载波)。 A=length(a);
info=zeros(FS,1);
info(1:(A/2))=[a(1:(A/2)).']; %Zero padding
info((FS-((A/2)-1)):FS)=[a(((A/2)+1):A).'];%info的长度是4096,前853和后853的a值的倒置,中间补0 %Subcarriers generation(B)
carriers=FS.*ifft(info,FS);%频域转时域,始于信号可以世家顺序依次发送 %IFFT保证各个子载波之间的正交性,%把数据调制(频谱搬移)到不同的的正交子载波上 tt=0:T/2:Tu; figure(1); subplot(211);
stem(tt(1:20),real(carriers(1:20)));%绘制针状图 %real函数是求实部,imag函数求虚部,
?s函数是求模,angle函数求这个复数在复平面内的角度 subplot(212);
stem(tt(1:20),imag(carriers(1:20)));
figure(2);
f=(2/T)*(1:(FS))/(FS);