OFDM调制解调仿真
- 格式:doc
- 大小:593.00 KB
- 文档页数:11
实验三基带OFDM系统及其仿真一、实验原理正交频分复用(OFDM)系统是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。
多载波传输把数据流分解成若干个子比特流,这样每个子数据流将具有低得多的比特速率,用这样的低比特率形成的低速率多状态符号再去调制相应的子载波,就构成多个低速率符号并行发送的传输系统。
正交频分复用是对多载波调制(MCM)的一种改进。
它的特点是各子载波相互正交,所以扩频调制后的频谱可以相互重叠,不但减小了子载波间的相互干扰,还大大提高了频谱利用率。
选择OFDM的一个主要原因在于该系统能够很好地对抗频率选择性衰落和窄带干扰。
在单载波系统中,一次衰落或者干扰就可以导致整个链路失效,但是在多载波系统中,某一时刻只会有少部分的子信道会受到深衰落的影响。
1.原理框图图1所示为OFDM系统原理框图:图1 OFDM系统原理框图2.DFT实现对于N比较大的系统来说,OFDM复等效基带信号可以采用离散傅立叶逆变换(IDFT )方法来实现。
对信号)(t s 以N T 的速率进行抽样,即令N kT t =)1,,1,0(-⋅⋅⋅=N k ,则得到:210(/),01ik N j N k i i s s kT N d e k N π-===≤≤-∑ 可以看到k s 等效为对i d 进行IDFT 运算。
同样在接收端,为了恢复出原始的数据符号i d ,可以对k s 进行逆变换 ,即DFT 得到:210,01ikN j Ni k k d s e i N π--==≤≤-∑OFDM 系统的调制和解调可以分别由IDFT 和DFT 来代替。
通过N 点的IDFT 运算,把频域数据符号i d 变换为时域数据符号k s ,经过射频载波调制之后,发送到无线信道中。
其中每个IDFT 输出的数据符号k s 都是由所有子载波信号经过叠加而生成的,即对连续的多个经过调制的子载波的叠加信号进行抽样得到的。
白噪声下OFDM调制解调基带系统仿真一、实验要求1、信噪比 2~14dB,步进2dB2、误码率性能<10-43、仿真分析OFDM信号的功率谱特性二、实验程序流程图和程序本实验中只进行了OFDM基带的系统设计仿真,分别采用了16QAM和QPSK两种方式进行映射和逆映射,OFDM基带系统程序流程图如图1所示:图1 OFDM基带系统程序流程图实验程序:1、QPSK映射程序function [out_message]=QPSK(Sig)[a1,b1]=find(Sig(:,1)==0&Sig(:,2)==0); out_message(a1)=-1-j;[a2,b2]=find(Sig(:,1)==0&Sig(:,2)==1);out_message(a2)=-1+j;[a3,b3]=find(Sig(:,1)==1&Sig(:,2)==0);out_message(a3)=1-j;[a4,b4]=find(Sig(:,1)==1&Sig(:,2)==1);out_message(a4)=1+j;end2、QPSK逆映射程序function [out_symbol,out_bit]=DeQPSK(Sig_noise)m1=find(angle(Sig_noise)<=pi/2&angle(Sig_noise)>0);out_symbol(1,m1)=1+j; out_bit(m1,1)=1; out_bit(m1,2)=1;m2=find(angle(Sig_noise)>pi/2&angle(Sig_noise)<=pi);out_symbol(1,m2)=-1+j; out_bit(m2,1)=0; out_bit(m2,2)=1;m3=find(angle(Sig_noise)>-pi&angle(Sig_noise)<=-pi/2);out_symbol(1,m3)=-1-j; out_bit(m3,1)=0; out_bit(m3,2)=0;m4=find(angle(Sig_noise)>-pi/2&angle(Sig_noise)<=0);out_symbol(1,m4)=1-j; out_bit(m4,1)=1; out_bit(m4,2)=0;end3、复高斯白噪声程序function [sig_noise,snr_dB] = fu_awgn (Sig,SNR,Num_signal)L_SNR = 10.^(SNR/10); % 转换为线性信噪比Eb = sum(abs(Sig).^2)/Num_signal; % 每比特的能量N0 = Eb/L_SNR; % 噪声功率谱密度noise_R1 = randn(1,length(Sig)); % 实际产生均值为0,方差为1的随机高斯序列,功率谱密度是1noise_R2 = noise_R1-mean(noise_R1); % 让均值再更接近0noise_R3 = noise_R2./std(noise_R2); % 标准差归一化让均值等于0 noise_R = noise_R3*sqrt(N0/2); % 使得功率谱密度是N0/2noise_I1 = randn(1,length(Sig)); % 实际产生均值为0,方差为1的随机高斯序列,功率谱密度是1noise_I2 = noise_I1-mean(noise_I1); % 让均值再更接近0noise_I3 = noise_I2./std(noise_I2); % 标准差归一化让均值等于0 noise_I = noise_I3*sqrt(N0/2); % 使得功率谱密度是N0/2x = noise_R + j*noise_I; % 生成复噪声sig_noise = Sig+x; % 此时加入的就是Eb/N0snr=sum(abs(Sig).^2)/sum(abs(x).^2);snr_dB=10*log10(snr); % 实际加入的信噪比SNRend4、主程序(求误比特率曲线)%% OFDM基带系统clear all;close all;clc%% 参数设置N = 256; % fft点数Num_carriers = 256; % 载波数length_symbol =10000; % 符号长度bit_num = Num_carriers*length_symbol*M; % 数据个数Pe_check = [];for SNR = 2:2:14 % 输入信噪比%% 产生基带数据信号Sig= randi([0 1],1,bit_num);%% QPSK调制Sig =reshape(Sig,2,bit_num/2)'; %QPSK映射[out_message]=QPSK(Sig);%% 串并转换Sig__modulation = reshape(out_message,Num_carriers,length_symbol);%% 插值interp_Sig_modulation = [Sig__modulation(1:Num_carriers/2,:);zeros(N-Num_carriers,length_symbol);Sig__modulation(Num_carriers/2+1:Num_carriers,:)]; %% ifftifft_message = ifft(interp_Sig_modulation,N);% 求PSDfft_ps_ifft_message = fftshift(fft(ifft_message,1024));PSD_message =10*log10(abs(fft_ps_ifft_message).^2/max(abs(fft_ps_ifft_message).^2));f1 = (0:length(PSD_message)-1)/length(PSD_message);figure(1)plot(f1,PSD_message);hold on ;plot(0:1/N:1, 0, 'r*');axis([0 1 -400]);xlabel('归一化频率');ylabel('归一化功率');title('OFDM信号功率谱')%% 加入复高斯白噪声Re_message = reshape(ifft_message,1,N*length_symbol);[sig_noise,snr_dB] = fu_awgn (Re_message,SNR,length(Re_message));%% 并串转换ps_sig_noise = reshape(sig_noise,N,length_symbol);fft_Re_message = fft(ps_sig_noise,N);%% 抽值samp_fft_Re_message =[fft_Re_message(1:Num_carriers/2,:);fft_Re_message(Num_carriers/2+1:Num_carriers,:) %% QPSK解调samp_fft_Re_message =reshape(samp_fft_Re_message,1,Num_carriers*length_symbol);[out_symbol,out_bit]=DeQPSK(samp_fft_Re_message); % QPSK逆映射[resum,ratio1]=symerr(Sig,out_bit);Pe = ratio1;Pe_check = [Pe_check,Pe];endSNR = 2:2:14;figuresemilogy(SNR,Pe_check,'-kd');xlabel('信噪比/dB');ylabel('误比特率');axis([2 14 1e-6 1]);5、主程序(绘制功率谱和频谱)%% OFDM基带系统clear all;close all;clc%% 参数设置N = 64; % fft点数Num_carriers = 32; % 载波数length_symbol =100; % 符号长度M = 2;bit_num = Num_carriers*length_symbol*M; % 数据个数%% 产生基带数据信号Sig= randi([0 1],1,bit_num);%% QPSK调制Sig =reshape(Sig,2,bit_num/2)'; %QPSK映射[Sig_modulation]=QPSK(Sig);%% 串并转换Sig_modulation = reshape(Sig_modulation,Num_carriers,length_symbol);%% 插值interp_Sig_modulation_psd = [Sig_modulation(1:Num_carriers/2,:);zeros(N-Num_carriers,length_symbol);Sig_modulation(Num_carriers/2+1:Num_carriers,:)]; %求功率谱插值Sig_modulation = [Sig_modulation';zeros(length_symbol,Num_carriers)];%每隔一个信道插值一个符号长度的0;此时得到的频谱不正交interp_Sig_modulation =reshape(Sig_modulation,length_symbol,2*Num_carriers)';%% ifftifft_message = ifft(interp_Sig_modulation_psd,N);% 求PSDfft_ps_ifft_message = fftshift(fft(ifft_message,1024));PSD_message =10*log10(abs(fft_ps_ifft_message).^2/max(abs(fft_ps_ifft_message).^2));f1 = (0:length(PSD_message)-1)/length(PSD_message);figure(1)plot(f1,PSD_message)hold onplot(0:1/N:1, 0, 'r*')axis([0 1 -40 0]);xlabel('归一化频率');ylabel('归一化功率谱');title('OFDM符号功率谱')%求频谱fft_ps_ifft_message1 = fftshift(interp_Sig_modulation(:,1),2048); %进行了插值fft_ps_ifft_message2 = fftshift(Sig_modulation(:,1),2048); %未进行插值f1 = (0:length(fft_ps_ifft_message1)-1)/length(fft_ps_ifft_message1);f2 = (0:length(fft_ps_ifft_message2)-1)/length(fft_ps_ifft_message2);figure(2)subplot(211)plot(f1,abs(fft_ps_ifft_message1)/max(abs(fft_ps_ifft_message1)));axis([0 1 0 1.2]);xlabel('归一化频率');ylabel('归一化频谱');title('一倍插值后的OFDM符号频谱')subplot(212)plot(f2,abs(fft_ps_ifft_message2)/max(abs(fft_ps_ifft_message2)));axis([0 1 0 1.2]);xlabel('归一化频率');ylabel('归一化频谱');title('未插值的OFDM符号频谱')三、实验结果1、OFDM基带系统误比特曲线Image图2 采用QPSK映射时OFDM基带系统的误比特曲线2、OFDM信号功率谱Image图3 OFDM信号功率谱(64点fft)3、OFDM信号频谱Image图4 OFDM符号的频谱四、总结本实验只进行了OFDM基带调制解调系统的设计仿真,数字信号的映射和逆映射采用的是QPSK调制方式,得到了OFDM基带系统的误比特性能曲线以及OFDM信号的功率谱和OFDM符号的频谱,从得到的仿真结果来看,在信噪比等于14dB的时候系统的误比特率小于10-4 ,符合设计要求。
4 系统仿真与性能分析4.1 仿真参数设置结合OFDM调制解调系统原理图与仿真流程图,基于MATLAB软件平台,设置系统仿真参数,如表4-1所示:由OFDM系统原理和仿真流程可知,由信源产生一个待传输的二进制随机信号。
此处,我们以QPSK调制为例,根据表4-1设置的系统默认仿真参数,子载波数目1024个,每个子载波中OFDM符号数为50个,每OFDM符号数所含的比特数为2 bit,信噪比(SNR)为2 dB,经过运算、取整等操作,可产生一组包含20000(子载波数⨯符号数/载波⨯位数/符号)个由0和1构成的一维随机二进制数组,即待传信号,截取待传信号的前101(0—100)个码元,其对应的波形与经过OFDM系统传输、解调还原后所得到的信号波形,如图4-1所示:图4-1 待传输信号与解调还原信号对比图由图4-1可知,经过系统发送、传输、解调过后的信号经过并串变换后,还原后所得到的信号与原信号相比,存在数据出错的情况,即产生误码,此时的误码率如图4-3所示:图4-2 默认参数下QPSK调制的系统误码率误码率(SER)是衡量数据在规定时间内数据传输精确性的指标。
即,数据经过通信信道传输以后,接收端所接收到的数据与发送端发送的原始数据相比,发生错误的码元个数占发送端发送的原始数据的总码元个数之比,误码率的计算公式如下所示:误码率=错误码元数/传输总码元数一个通信系统在进行数据传输时的误码率越小,则说明该通信系统的传输精确度越高。
4.2 OFDM系统仿真实现以QPSK调制为例,系统的仿真参数为默认值。
即,子载波数目1024个,每个子载波中OFDM符号数为50个,每OFDM符号数所含的比特数为2 bit,信噪比(SNR)为2 dB。
4.2.1 待传信号与还原信号图4-3 待传信号与还原信号码元波形由仿真参数默认值及仿真程序,信源产生的随机序列的长度为20000(子载波数⨯符号数/载波⨯位数/符号),大小介于0到 1之间,经过取整后即得到长度为20000,大小为0或1的待发送的一维随机二进制数组。
基于MATLAB的OFDM系统仿真及分析OFDM(正交频分复用)是一种广泛应用于无线通信系统中的多载波调制技术。
在OFDM系统中,信号被分为多个独立的子载波,并且每个子载波之间正交。
这种正交的特性使得OFDM系统具有抗频率选择性衰落和多径干扰的能力。
本文将基于MATLAB对OFDM系统进行仿真及分析。
首先,我们需要确定OFDM系统的参数。
假设我们使用256个子载波,其中包括8个导频符号用于信道估计,每个OFDM符号的时域长度为128个采样点。
接下来,我们需要生成调制信号。
假设我们使用16QAM调制方式,每个子载波可以传输4个比特。
在MATLAB中,我们可以使用randi函数生成随机的比特序列,然后将比特序列映射为16QAM符号。
生成的符号序列可以通过IFFT(Inverse Fast Fourier Transform)将其转换为时域信号。
OFDM系统的发射端包括窗函数、导频符号插入、IFFT和并行到串行转换等模块。
窗函数用于增加OFDM符号之间的过渡带,导频符号用于信道估计和符号同步。
通过将符号序列与导频图案插入到OFDM符号序列中,然后进行IFFT变换,再进行并行到串行转换即可得到OFDM信号的时域波形。
接下来,我们需要模拟OFDM信号在信道中传输和接收。
假设信道是Additive White Gaussian Noise(AWGN)信道。
在接收端,OFDM信号的时域波形通过串行到并行转换,然后进行FFT(Fast Fourier Transform)变换得到频域信号。
通过在频域上对导频符号和OFDM信号进行正交插值,可以进行信道估计和等化。
最后将频域信号进行解调,得到接收后的比特序列。
通过比较发送前和接收后的比特序列,我们可以计算比特误码率(BER)来评估OFDM系统的性能。
比特误码率是接收到错误比特的比特数与总传输比特数之比。
通过改变信噪比(SNR)值,我们可以评估OFDM系统在不同信道条件下的性能。
无线通信——OFDM系统仿真一、实验目的1、了解OFDM 技术的实现原理2、利用MATLAB 软件对OFDM 的传输性能进行仿真并对结论进行分析。
二、实验原理与方法1 OFDM 调制基本原理正交频分复用(OFDM)是多载波调制(MCM)技术的一种。
MCM 的基本思想是把数据流串并变换为N 路速率较低的子数据流,用它们分别去调制N 路子载波后再并行传输。
因子数据流的速率是原来的1/N ,即符号周期扩大为原来的N 倍,远大于信道的最大延迟扩展,这样MCM 就把一个宽带频率选择性信道划分成N 个窄带平坦衰落信道,从而“先天”具有很强的抗多径衰落和抗脉冲干扰的能力,特别适合于高速无线数据传输。
OFDM 是一种子载波相互混叠的MCM ,因此它除了具有上述毗M 的优势外,还具有更高的频谱利用率。
OFDM 选择时域相互正交的子载波,创门虽然在频域相互混叠,却仍能在接收端被分离出来。
2 OFDM 系统的实现模型利用离散反傅里叶变换( IDFT) 或快速反傅里叶变换( IFFT) 实现的OFDM 系统如图1 所示。
输入已经过调制(符号匹配) 的复信号经过串P 并变换后,进行IDFT 或IFFT 和并/串变换,然后插入保护间隔,再经过数/模变换后形成OFDM 调制后的信号s (t ) 。
该信号经过信道后,接收到的信号r ( t ) 经过模P 数变换,去掉保护间隔以恢复子载波之间的正交性,再经过串/并变换和DFT 或FFT 后,恢复出OFDM 的调制信号,再经过并P 串变换后还原出输入的符号。
图1 OFDM 系统的实现框图从OFDM 系统的基本结构可看出, 一对离散傅里叶变换是它的核心,它使各子载波相互正交。
设OFDM 信号发射周期为[0,T],在这个周期内并行传输的N 个符号为001010(,...,)N C C C -,,其中ni C 为一般复数, 并对应调制星座图中的某一矢量。
比如00(0)(0),(0)(0)C a j b a b =+⋅和分别为所要传输的并行信号, 若将其合为一个复数信号, 很多个这样的复数信号采用快速傅里叶变换, 同时也实现对正交载波的调制, 这就大大加快了信号的处理调制速度(在接收端解调也同样) 。
实验四 OFDM调制解调仿真一、实验目的1.了解OFDM调制解调的原理。
2.学会用星座图分析系统性能。
二、实验内容1.编写MATLAB程序,实现OFDM系统调制解调。
2.绘制各步骤图形并分析系统特性。
三、实验代码1)程序主代码clear all;close all;N=input('请输入码元数');SNR=input('请输入信噪比');xx=randint(1,4*N);figure(1),stem(xx,'.k');title('原序列');B=0;for m=1:4:4*NA=xx(m)*8+xx(m+1)*4+xx(m+2)*2+xx(m+3);B=B+1;ee(B)=A;endfigure(2),stem(ee,'.b');title('化为0~15的码元');yy=star(ee,N);figure(3),plot(yy,'.r');title('映射后的星座图');ff=ifft(yy,N);N1=floor(N*1/4);N3=floor(N*3/4);N5=floor(N*5/4);figure(4),stem(ff,'.m');title('傅里叶反变换后');for j=1:N1ss(j)=ff(N3+j);for j=1:Nss(N1+j)=ff(j);endfigure(5),stem(ss,'.k');title('加N/4循环前后缀');%ss=wgn(1,N5,0,10,'dBW','complex');ss=awgn(ss,SNR);figure(6),stem(ss,'.m');title('加入噪声后');zz=fft(ss((N1+1):N5),N);figure(7),plot(zz,'.b');title('傅里叶变换后');rr=istar(zz,N);figure(8),plot(rr,'.r');title('纠错后的星座图');dd=decode(rr,N);figure(9),stem(dd,'.m');title('星座图纠错并解码后');%bb=d2b(dd,N);bb=d2bb(dd,N);figure(10),stem(bb,'.b');title('转化为0/1比特流后');2)十进制转二进制函数%十进制转二进制function bb=d2b(dd,N)for j=1:N*4bb(j)=0;endfor j=1:4:N*4bb1=dec2bin(dd(floor(j/4)+1),4); for k=1:4bb(4*(j-1)+k)=bb1(k);endend3)十进制转化为01比特流函数%十进制转化为01比特流function bb=d2bb(dd,N)for j=1:N*4bb(j)=1;endwhile(j<=N*4)N1=ceil(j/4)a4=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2); a3=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2); a2=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2); a1=mod(dd(N1),2);bb(j)=a1;j=j+1;bb(j)=a2;j=j+1;bb(j)=a3;j=j+1;bb(j)=a4;j=j+1;end4)星座图逆映射函数%星座图逆映射function yy=decode(rr,N)for j=1:Nswitch(rr(j))case -3-3*i yy(j)=0;case -3-iyy(j)=1;case -1-3*i yy(j)=2;case -1-iyy(j)=3;case -3+3*iyy(j)=4;case -3+iyy(j)=5;case -1+3*i yy(j)=6;case -1+iyy(j)=7;case 3-3*i yy(j)=8;case 3-iyy(j)=9;case 1-3*iyy(j)=10;case 1-iyy(j)=11;case 3+3*iyy(j)=12;case 3+iyy(j)=13;case 1+3*iyy(j)=14;case 1+iyy(j)=15;otherwise break;endend5)星座图逆映射函数%星座图逆映射function rr=istar(zz,N)for j=1:Nif(mod((floor(real(zz(j)))),2)==0)zz1(j)=ceil(real(zz(j)));else zz1(j)=floor(real(zz(j)));endif(mod((floor(imag(zz(j)))),2)==0)zz1(j)=zz1(j)+ceil(imag(zz(j)))*i;else zz1(j)=zz1(j)+floor(imag(zz(j)))*i;endrr(j)=zz1(j);end6)星座图映射函数%星座图映射function yy=star(xx,N)B=[-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i,1+i];for j=1:Nyy(j)=B(xx(j)+1);end四、实验结果五、实验结论OFDM技术可以有效地对抗信号波形间的干扰,适用于多径环境和衰落信道中的高速数据传输。
目录摘要 (2)ABSTRACT (3)第一章绪论 (4)第二章OFDM系统的基本介绍 (5)2.1OFDM的基本原理 (5)2.1.1 OFDM的产生和发展 (6)2.1.2 DFT的实现 (7)2.1.3 保护间隔、循环前缀和子载波数的选择 (8)2.1.4 子载波调制与解调 (10)2.2OFDM系统的优缺点 (11)2.3OFDM系统的关键技术 (11)第三章OFDM系统仿真实现 (13)3.1OFDM信号的时域及频域波形 (13)3.2带外功率辐射以及加窗技术 (15)3.3在不同信道环境和系统不同实现方式下的仿真 (18)3.3.1 调制与解调 (18)3.3.2 不同信道环境下的系统仿真实现 (20)3.3.3 系统不同实现方式的仿真实现 (22)第四章OFDM系统的仿真结果及性能分析 (23)4.1不同信道环境下的误码特性 (23)4.2不同系统实现方式下的误码特性 (28)第五章总结 (30)摘要本论文以OFDM系统为基础,介绍了OFDM系统的基本原理,以及使用OFDM技术的优势所在,并且展望了今后的无线移动技术的发展前景。
在简单介绍OFDM原理的同时,着重阐述了OFDM系统在不同信道环境和不同实现方式下的误码性能。
主要包括了OFDM系统在加性白高斯信道,在加性白高斯信道和多径干扰两种不同信道环境下系统的误码性能,其中后者还研究了系统在有保护间隔与无保护间隔的误码性能比较。
在理论分析的基础上,用MATLAB进行仿真,最后做出误码性能的分析和比较。
关键字: 正交频分复用(OFDM),离散傅立叶变换,AWGN,,多径干扰,保护间隔。
ABSTRACTThis paper presents you the basic priciple of OFDM(Orthogonal Frequency Division Multiplexing)and where it excels based on OFDM system , following with the prospective of wireless mobile communication. After a brief introduction to OFDM principle , it mainly focuses on the effect of OFDM system under different channels and with different system realizations on the Binary Error Rate (BER). It mainly includes two kinds of channels: the AWGN channel and the AWGN channel with Rayleigh fading. In the latter, we compare the BER with two different system realizations: one with Guarded Intervals(GI), and the other without (GI).Key Words : OFDM, DFT, AWGN, Rayleigh fading ,GI第一章绪论现代移动通信是一门复杂的高新技术,不但集中了无线通信和有线通信的最新技术成就,而且集中了网络接收和计算机技术的许多成果。
实验四OFDM调制解调仿真一、实验目的(1)了解OFDM调制解调的原理。
(2)学会用星座图分析系统性能。
二、实验内容(1)编写MATLAB程序,实现OFDM系统调制解调。
(2)绘制各步骤图形并分析系统特性。
三、实验代码1、主代码如下:clear all;close all;N=input('请输入码元数');SNR=input('请输入信噪比');xx=randint(1,4*N); %原序列figure(1),stem(xx,'.k'); %原序列图形title('原序列');B=0;for m=1:4:4*NA=xx(m)*8+xx(m+1)*4+xx(m+2)*2+xx(m+3);B=B+1;ee(B)=A;endfigure(2),stem(ee,'.b');title('化为0~15的码元');yy=star(ee,N);figure(3),plot(yy,'.r'); %映射后的星座图title('映射后的星座图');ff=ifft(yy,N); %傅里叶反变换N1=floor(N*1/4);N3=floor(N*3/4);N5=floor(N*5/4);figure(4),stem(ff,'.m');title('傅里叶反变换后');for j=1:N1 %加循环前缀ss(j)=ff(N3+j);endfor j=1:N %变成长度为N*5/4的序列ss(N1+j)=ff(j);endfigure(5),stem(ss,'.k'); %画出图形title('加N/4循环前后缀');%ss=wgn(1,N5,0,10,'dBW','complex');ss=awgn(ss,SNR); %加入噪声figure(6),stem(ss,'.m'); %加入噪声后的图形title('加入噪声后');zz=fft(ss((N1+1):N5),N); %傅里叶变换figure(7),plot(zz,'.b'); %画图title('傅里叶变换后');rr=istar(zz,N); %星座图纠错figure(8),plot(rr,'.r'); %画图title('纠错后的星座图');dd=decode(rr,N); %解码figure(9),stem(dd,'.m'); %画图title('星座图纠错并解码后');%bb=d2b(dd,N);bb=d2bb(dd,N); %转化为0/1比特流figure(10),stem(bb,'.b');title('转化为0/1比特流后');2、调用的函数:(1)星座图映射%星座图映射function yy=star(xx,N)B=[-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i, 1+i];for j=1:Nyy(j)=B(xx(j)+1);end(2)星座图逆映射%星座图逆映射function rr=istar(zz,N)for j=1:Nif(mod((floor(real(zz(j)))),2)==0)zz1(j)=ceil(real(zz(j)));else zz1(j)=floor(real(zz(j)));endif(mod((floor(imag(zz(j)))),2)==0)zz1(j)=zz1(j)+ceil(imag(zz(j)))*i;else zz1(j)=zz1(j)+floor(imag(zz(j)))*i;endrr(j)=zz1(j);end(3)十进制转二进制function bb=d2b(dd,N)%十进制转二进制for j=1:N*4bb(j)=;endfor j=1:4:N*4bb1=dec2bin(dd(floor(j/4)+1),4);for k=1:4bb(4*(j-1)+k)=bb1(k);endend(4)十进制转化为01比特流%十进制转化为01比特流function bb=d2bb(dd,N)for j=1:N*4bb(j)=1;endj=1;while(j<=N*4)N1=ceil(j/4)a4=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2);a3=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2);a2=mod(dd(N1),2);dd(N1)=floor(dd(N1)/2);a1=mod(dd(N1),2);bb(j)=a1;j=j+1;bb(j)=a2;j=j+1;bb(j)=a3;j=j+1;bb(j)=a4;j=j+1;end(5)星座图逆映射function yy=decode(rr,N)for j=1:Nswitch(rr(j))%星座图逆映射case -3-3*iyy(j)=0;case -3-iyy(j)=1;case -1-3*iyy(j)=2;case -1-iyy(j)=3;case -3+3*iyy(j)=4;case -3+iyy(j)=5;case -1+3*iyy(j)=6;case -1+iyy(j)=7;case 3-3*iyy(j)=8;case 3-iyy(j)=9;case 1-3*iyy(j)=10;case 1-iyy(j)=11;case 3+3*iyy(j)=12;case 3+iyy(j)=13;case 1+3*iyy(j)=14;case 1+iyy(j)=15;otherwise break;endend四、五、实验结果。
OFDM系统仿真与实现1. OFDM的应用意义在近几年以内,无线通信技术正在以前所未有的速度向前发展。
由于用户对各种实时多媒体业务需求的增加和互联网技术的迅猛发展,未来的无线通信及技术将会有更高的信息传输速率,为用户提供更大的便利,其网络结构也将发生根本的变化。
随着人们对通信数据化、个人化和移动化的需求,OFDM技术在无线接入领域得到了广泛的应用。
OFDM是一种特殊的多载波传输方案,它将数字调制、数字信号处理、多载波传输技术结合在一起,是目前已知的频谱利用率最高的一种通信系统,具有传输速率快、抗多径干扰能力强的优点。
目前,OFDM技术在数字音频广播(DAB)、地面数字视频广播(DVB-T)、无线局域网等领域得到广泛应用。
它将是4G移动通信的核心技术之一。
OFDM广泛用于各种数字传输和通信中,如移动无线FM信道,高比特率数字用户线系统(HDSL),不对称数字用户线系统(ADSL),甚高比特率数字用户线系统HDSL,数字音频广播(DAB)系统,数字视频广播(DVB)和HDTV地面传播系统。
1999年,IEEE802.11a通过了一个SGHz的无线局域网标准,其中OFDM调制技术被采用为物理层标准,使得传输速率可以达54MbPs。
这样,可提供25MbPs的无线ATM 接口和10MbPs的以太网无线帧结构接口,并支持语音、数据、图像业务。
这样的速率完全能满足室内、室外的各种应用场合。
OFDM由于技术的成熟性,被选用为下行标准很快就达成了共识。
而在上行技术的选择上,由于OFDM的高峰均比(PAPR)使得一些设备商认为会增加终端的功放成本和功率消耗,限制终端的使用时间,一些则认为可以通过滤波,削峰等方法限制峰均比。
不过,经过讨论后,最后上行还是采用了SC-FDMA方式。
拥有我国自主知识产权的3G标准一一TD-SCDMA在LTE演进计划中也提出了TD-CDM-OFDM的方案B3G/4G是ITU提出的目标,并希望在2010年予以实现。
clear all;close all;IFFT_bin_length = 1024; % FFT的点数carrier_count = 200; % 载波的数量bits_per_symbol = 2; % 每个符号代表的比特数symbols_per_carrier = 50; % 每个载波使用的符号数SNR = 10; % 信道中的信噪比(dB)baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symb ol;%总比特数carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_co unt/2));conjugate_carriers = IFFT_bin_length - carriers + 2;%发送端>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>%产生随机二进制数据:baseband_out = round(rand(1,baseband_out_length));convert_matrix=reshape(baseband_out,bits_per_symbol,length(baseband _out)/bits_per_symbol);for k = 1:(length(baseband_out)/bits_per_symbol)modulo_baseband(k) = 0;for i = 1:bits_per_symbol modulo_baseband(k)=modulo_baseband(k)+convert_matrix(i,k)*2^(bits_per_symbol-i);endend% 串并转换carrier_matrix = reshape(modulo_baseband, carrier_count, symbols_per_ carrier)'; % 对每一个载波的符号进行差分编码carrier_matrix = [zeros(1,carrier_count);carrier_matrix];for i = 2:(symbols_per_carrier + 1)carrier_matrix(i,:)=rem(carrier_matrix(i,:)+carrier_matrix(i-1,:),2^bits_p er_symbol);end% 把差分符号代码转换成相位carrier_matrix = carrier_matrix * ((2*pi)/(2^bits_per_symbol)); % 把相位转换成复数[X,Y] = pol2cart(carrier_matrix, ones(size(carrier_matrix,1),size(carrier_ matrix,2)));complex_carrier_matrix = complex(X,Y); % 分配载波到指定的IFFT位置IFFT_modulation = zeros(symbols_per_carrier + 1, IFFT_bin_length); IFFT_modulation(:,carriers) = complex_carrier_matrix;IFFT_modulation(:,conjugate_carriers) = conj(complex_carrier_matrix); % 画出频域中的OFDM信号代表figure (1)stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)), 'b*-')grid onaxis ([0 IFFT_bin_length -0.5 1.5])ylabel('Magnitude')xlabel('IFFT Bin')title('OFDM Carrier Frequency Magnitude')%figure (2)plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bi n_length)), 'go')hold onstem(carriers-1, (180/pi)*angle(IFFT_modulation(2,carriers)),'b*-') stem(conjugate_carriers-1, (180/pi)*angle(IFFT_modulation(2,conjugate _carriers)),'b*-')axis ([0 IFFT_bin_length -200 +200])grid onylabel('Phase (degrees)')xlabel('IFFT Bin')title('OFDM Carrier Phase')% 通过IFFT将频域转化为时域,得到时域信号time_wave_matrix = ifft(IFFT_modulation');time_wave_matrix = time_wave_matrix';%画出一个符号周期的时域OFDM信号figure (3)plot(0:IFFT_bin_length-1,time_wave_matrix(2,:))grid onylabel('Amplitude')xlabel('Time')title('OFDM Time Signal, One Symbol Period')%画出每一个载波对应的时域信号(分离的OFDM信号)for f = 1:carrier_counttemp_bins(1:IFFT_bin_length)=0+0j;temp_bins(carriers(f))=IFFT_modulation(2,carriers(f));temp_bins(conjugate_carriers(f))=IFFT_modulation(2,conjugate_carrie rs(f));temp_time = ifft(temp_bins');figure(4)plot(0:IFFT_bin_length-1, temp_time)hold onendgrid onylabel('Amplitude')xlabel('Time')title('Separated Time Waveforms Carriers')for i = 1:symbols_per_carrier + 1windowed_time_wave_matrix(i,:)=real(time_wave_matrix(i,:)).*hammin g(IFFT_bin_length)';windowed_time_wave_matrix(i,:) = real(time_wave_matrix(i,:));end%串并转换ofdm_modulation=reshape(windowed_time_wave_matrix',1,IFFT_bin_le ngth*(symbols_per_carr ier+1));% 画出整个时域OFDMtemp_time = IFFT_bin_length*(symbols_per_carrier+1);figure (5)plot(0:temp_time-1,ofdm_modulation)grid onylabel('Amplitude (volts)')xlabel('Time (samples)') title('OFDM Time Signal')% 画出频域OFDM信号symbols_per_average = ceil(symbols_per_carrier/5);avg_temp_time = IFFT_bin_length*symbols_per_average;averages = floor(temp_time/avg_temp_time);average_fft(1:avg_temp_time) = 0;for a = 0:(averages-1)subset_ofdm=ofdm_modulation(((a*avg_temp_time)+1):((a+1)*avg_tem p_time));subset_ofdm_f = abs(fft(subset_ofdm));average_fft = average_fft + (subset_ofdm_f/averages);endaverage_fft_log = 20*log10(average_fft);figure (6)plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)hold onplot(0:1/IFFT_bin_length:1, -35, 'rd')grid onaxis([0 0.5 -40 max(average_fft_log)])ylabel('Magnitude (dB)')xlabel('Normalized Frequency (0.5 = fs/2)')title('OFDM Signal Spectrum')% 上变频,这个模型中我们把经过IFFT运算后OFDM直接发送 Tx_data = ofdm_modulation;%信道==================================================== ===% The channel model is Gaussian (AWGN) +Multipath(时延为1) Tx_signal_power = var(Tx_data);linear_SNR = 10^(SNR/10);noise_sigma = Tx_signal_power/linear_SNR;noise_scale_factor = sqrt(noise_sigma);noise = randn(1, length(Tx_data))*noise_scale_factor;copy1=zeros(1,length(ofdm_modulation));for i=2:length(ofdm_modulation)copy1(i)=ofdm_modulation(i-1);endRx_Data = Tx_data + noise;%RECEIVE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<< % 根据符号长度和符号数将串行的符号转换为并行的 % - 每一列是符号周期Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, symbols_per_car rier + 1);%对每一列信号做FFT得到频域信号Rx_spectrum = fft(Rx_Data_matrix);% 画出接收到的OFDM信号频域代表%--------1---------2---------3---------4---------5---------6---------7---------8 figure (7)stem(0:IFFT_bin_length-1, abs(Rx_spectrum(1:IFFT_bin_length,2)),'b*-')grid onaxis ([0 IFFT_bin_length -0.5 1.5])ylabel('Magnitude')xlabel('FFT Bin')title('OFDM Receive Spectrum, Magnitude')figure (8)plot(0:IFFT_bin_length-1, (180/pi)*angle(Rx_spectrum(1:IFFT_bin_leng th,2)), 'go')hold onstem(carriers-1, (180/pi)*angle(Rx_spectrum(carriers,2)),'b*-')stem(conjugate_carriers-1, (180/pi)*angle(Rx_spectrum(conjugate_carrie rs,2)),'b*-') axis ([0 IFFT_bin_length -200 +200])grid onylabel('Phase (degrees)')xlabel('FFT Bin')title('OFDM Receive Spectrum, Phase') % 抽取接收信号中有载波的点Rx_carriers = Rx_spectrum(carriers,:)';%画出每个接收符号分布图figure (9)Rx_phase_P = angle(Rx_carriers);Rx_mag_P = abs(Rx_carriers);polar(Rx_phase_P, Rx_mag_P,'bd');% 计算载波的相位% - 弧度转换为角度% - 归一化相位(0-360)Rx_phase = angle(Rx_carriers)*(180/pi);phase_negative = find(Rx_phase < 0);Rx_phase(phase_negative) = rem(Rx_phase(phase_negative)+360,360); % 用diff()计算相位差Rx_decoded_phase = diff(Rx_phase);phase_negative = find(Rx_decoded_phase < 0);Rx_decoded_phase(phase_negative) = rem(Rx_decoded_phase(phase_ne gative)+360,360);%--------1---------2---------3---------4---------5---------6---------7---------8 %相位转化为符号base_phase = 360/2^bits_per_symbol;delta_phase = base_phase/2;Rx_decoded_symbols= zeros(size(Rx_decoded_phase,1),size(Rx_decode d_phase,2));for i = 1:(2^bits_per_symbol - 1)center_phase = base_phase*i;plus_delta = center_phase+delta_phase;minus_delta = center_phase-delta_phase;decoded=find((Rx_decoded_phase<=plus_delta)&(Rx_decoded_phase> minus_delta));Rx_decoded_symbols(decoded)=i;end% Convert the matrix into a serial symbol streamRx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded_s ymbols,1)*size(Rx_decoded_symbols,2));% Convert the symbols to binaryfor i = bits_per_symbol: -1: 1if i ~= 1Rx_binary_matrix(i,:) = rem(Rx_serial_symbols,2);Rx_serial_symbols = floor(Rx_serial_symbols/2);elseRx_binary_matrix(i,:) = Rx_serial_symbols;endendbaseband_in=reshape(Rx_binary_matrix,1,size(Rx_binary_matrix,1)*size (Rx_binary_matrix,2));% 查找错位比特bit_errors = find(baseband_in ~= baseband_out);bit_error_count = size(bit_errors,2);d_out,bits_per_symbol,length(baseband_out)/bits_per_symbol);for k = 1:(length(baseband_out)/bits_per_symbol)modulo_baseband(k) = 0;for i = 1:bits_per_symbolmodulo_baseband(k)=modulo_baseband(k)+convert_matrix(i,k)*2^(bits_ per_symbol-i);endend% 串并转换carrier_matrix = reshape(modulo_baseband, carrier_count, symbols_per_ carrier)';% 对每一个载波的符号进行差分编码carrier_matrix = [zeros(1,carrier_count);carrier_matrix]; for i = 2:(symbol s_per_carrier + 1)carrier_matrix(i,:)=rem(carrier_matrix(i,:)+carrier_matrix(i-1,:),2^bits_p er_symbol);end% 把差分符号代码转换成相位carrier_matrix = carrier_matrix * ((2*pi)/(2^bits_per_symbol));% 把相位转换成复数[X,Y] = pol2cart(carrier_matrix, ones(size(carrier_matrix,1),size(carrier_ matrix,2)));complex_carrier_matrix = complex(X,Y);% 分配载波到指定的IFFT位置IFFT_modulation = zeros(symbols_per_carrier + 1, IFFT_bin_length); IFFT_modulation(:,carriers) = complex_carrier_matrix;IFFT_modulation(:,conjugate_carriers) = conj(complex_carrier_matrix); % 画出频域中的OFDM信号代表figure (1)stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)), 'b*-') grid onaxis ([0 IFFT_bin_length -0.5 1.5])ylabel('Magnitude')xlabel('IFFT Bin')title('OFDM Carrier Frequency Magnitude')figure (2)plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bi n_length)), 'go')hold onstem(carriers-1, (180/pi)*angle(IFFT_modulation(2,carriers)),'b*-') stem(conjugate_carriers-1, (180/pi)*angle(IFFT_modulation(2,conjugate _carriers)),'b*-') axis ([0 IFFT_bin_length -200 +200])grid onylabel('Phase (degrees)')xlabel('IFFT Bin')title('OFDM Carrier Phase')% 通过IFFT将频域转化为时域,得到时域信号time_wave_matrix = ifft(IFFT_modulation');time_wave_matrix = time_wave_matrix';%画出一个符号周期的时域OFDM信号figure (3)plot(0:IFFT_bin_length-1,time_wave_matrix(2,:))grid onylabel('Amplitude')xlabel('Time')title('OFDM Time Signal, One Symbol Period')%画出每一个载波对应的时域信号(分离的OFDM信号)for f = 1:carrier_counttemp_bins(1:IFFT_bin_length)=0+0j;temp_bins(carriers(f))=IFFT_modulation(2,carriers(f));temp_bins(conjugate_carriers(f))=IFFT_modulation(2,conjugate_carrie rs(f));temp_time = ifft(temp_bins');figure(4)plot(0:IFFT_bin_length-1, temp_time)hold onendgrid onylabel('Amplitude') xlabel('Time')title('Separated Time Waveforms Carriers')for i = 1:symbols_per_carrier + 1windowed_time_wave_matrix(i,:)=real(time_wave_matrix(i,:)).*hammi ng(IFFT_bin_length)';windowed_time_wave_matrix(i,:) = real(time_wave_matrix(i,:));end%串并转换ofdm_modulation=reshape(windowed_time_wave_matrix',1,IFFT_bin_ length*(symbols_per_carrier+1));% 画出整个时域OFDMtemp_time = IFFT_bin_length*(symbols_per_carrier+1);figure (5)plot(0:temp_time-1,ofdm_modulation)grid onylabel('Amplitude (volts)')xlabel('Time (samples)')title('OFDM Time Signal')% 画出频域OFDM信号symbols_per_average = ceil(symbols_per_carrier/5);avg_temp_time = IFFT_bin_length*symbols_per_average; averages = floor(temp_time/avg_temp_time);average_fft(1:avg_temp_time) = 0;for a = 0:(averages-1)subset_ofdm=ofdm_modulation(((a*avg_temp_time)+1):((a+1)*avg_te mp_time));subset_ofdm_f = abs(fft(subset_ofdm));average_fft = average_fft + (subset_ofdm_f/averages);endaverage_fft_log = 20*log10(average_fft);figure (6)plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)hold onplot(0:1/IFFT_bin_length:1, -35, 'rd')grid onaxis([0 0.5 -40 max(average_fft_log)])ylabel('Magnitude (dB)')xlabel('Normalized Frequency (0.5 = fs/2)')title('OFDM Signal Spectrum')% 上变频,这个模型中我们把经过IFFT运算后OFDM直接发送Tx_data = ofdm_modulation;%信道==================================================== ===% The channel model is Gaussian (AWGN) +Multipath(时延为1) Tx_signal_power = var(Tx_data);linear_SNR = 10^(SNR/10);noise_sigma = Tx_signal_power/linear_SNR;noise_scale_factor = sqrt(noise_sigma);noise = randn(1, length(Tx_data))*noise_scale_factor;copy1=zeros(1,length(ofdm_modulation));for i=2:length(ofdm_modulation)copy1(i)=ofdm_modulation(i-1);endRx_Data = Tx_data + noise;%RECEIVE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<% 根据符号长度和符号数将串行的符号转换为并行的% - 每一列是符号周期Rx_Data_matrix = reshape(Rx_Data, IFFT_bin_length, symbols_per_c arrier + 1);%对每一列信号做FFT得到频域信号Rx_spectrum = fft(Rx_Data_matrix);% 画出接收到的OFDM信号频域代表%--------1---------2---------3---------4---------5---------6---------7---------8 figure (7)stem(0:IFFT_bin_length-1, abs(Rx_spectrum(1:IFFT_bin_length,2)),'b *-')grid onaxis ([0 IFFT_bin_length -0.5 1.5])ylabel('Magnitude')xlabel('FFT Bin')title('OFDM Receive Spectrum, Magnitude')figure (8)plot(0:IFFT_bin_length-1, (180/pi)*angle(Rx_spectrum(1:IFFT_bin_le ngth,2)), 'go')hold onstem(carriers-1, (180/pi)*angle(Rx_spectrum(carriers,2)),'b*-')stem(conjugate_carriers-1, (180/pi)*angle(Rx_spectrum(conjugate_carr iers,2)),'b*-')axis ([0 IFFT_bin_length -200 +200])grid onylabel('Phase (degrees)')xlabel('FFT Bin')title('OFDM Receive Spectrum, Phase')% 抽取接收信号中有载波的点Rx_carriers = Rx_spectrum(carriers,:)';%画出每个接收符号分布图 figure (9)Rx_phase_P = angle(Rx_carriers);Rx_mag_P = abs(Rx_carriers);polar(Rx_phase_P, Rx_mag_P,'bd');% 计算载波的相位% - 弧度转换为角度% - 归一化相位(0-360)Rx_phase = angle(Rx_carriers)*(180/pi);phase_negative = find(Rx_phase < 0);Rx_phase(phase_negative) = rem(Rx_phase(phase_negative)+360,360) ; % 用diff()计算相位差Rx_decoded_phase = diff(Rx_phase);phase_negative = find(Rx_decoded_phase < 0);Rx_decoded_phase(phase_negative) = rem(Rx_decoded_phase(phase_ negative)+360,360);%--------1---------2---------3---------4---------5---------6---------7---------8 % 相位转化为符号base_phase = 360/2^bits_per_symbol; delta_phase = base_phase/2; Rx_decoded_symbols= zeros(size(Rx_decoded_phase,1),size(Rx_deco ded_phase,2));for i = 1:(2^bits_per_symbol - 1)center_phase = base_phase*i;plus_delta = center_phase+delta_phase;minus_delta = center_phase-delta_phase;decoded=find((Rx_decoded_phase<=plus_delta)&(Rx_decoded_phase >minus_delta));Rx_decoded_symbols(decoded)=i;end% Convert the matrix into a serial symbol streamRx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded _symbols,1)*size(Rx_decoded_symbols,2));% Convert the symbols to binaryfor i = bits_per_symbol: -1: 1if i ~= 1Rx_binary_matrix(i,:) = rem(Rx_serial_symbols,2);Rx_serial_symbols = floor(Rx_serial_symbols/2);elseRx_binary_matrix(i,:) = Rx_serial_symbols;endendbaseband_in=reshape(Rx_binary_matrix,1,size(Rx_binary_matrix,1)*si ze(Rx_binary_matrix,2));% 查找错位比特bit_errors = find(baseband_in ~= baseband_out); bit_error_count = size(bit_errors,2);。
实验报告一.实验目的:深刻理解正交频分复用技术的原理,通过simulink对OFDM 技术调制和解调过程仿真,进一步理解正交频分复用技术的原理。
二.实验器材:电脑一台,MATLAB 2013a及以上版本三.实验原理:1. OFDM技术的基本原理:OFDM 的基本原理就是把串行的数据流分解成若干个数据速率低得多的并行子数据流,每个子数据流再去调制相应各个正交的子载波,最后把各个子载波上的信号叠加合成一起输出。
OFDM 系统的基本原理如图 1 所示:图1 OFDM系统基本原理模型从上图可以看出:OFDM 的发送端的基本原理就是把输入数据经过串并变换成 N 路子信道数据,然后分别调制相应各个正交的子载波后叠加合成一起输出。
而在接收端则用各个子载波分别混频和积分得到各路数据,经过并串变换便输出原始数据。
从上面对 OFDM 基本原理的论述可以看出:其实现的根本思想是通过串并变换把串行的高速数据流变成并行的低速数据流,实现的关键点是保证各个子载波之间的正交性。
串并变换是很容易实现的,而正交性是如何实现的呢?下面先看看 OFDM 信号的表达式。
一个OFDM符号之内包括多个经过调制的子载波的合成信号,其中每个子载波信号都可以进行相移键控(PSK)或者正交幅度调制(QAM)。
如果N表示子信道的个数,T表示一个OFDM符号的时间宽度,为每个子信道的数据符号,是第0个子载波的载波频率,则开始的一个已经调制的OFDM符号可表示为:(1)其中实部和虚部分别对应于OFDM符号的同相和正交分量,在实际中可以分别与相应的子载波的cos 分量和sin分量相乘,再叠加成OFDM信号。
(2)从式(2-1)和试(2-2)都可以看出,OFDM信号相邻子载波的间隔的码元速率1/T,这样就有:(3)式(3)说明了只要使各个子载波之间的间隔为1/T就保证了各个子载波之间的正交性。
正是这种正交性使频谱互相重叠的各个子载波信号能够被正确的分离出来。
(通信⼯程毕设)OFDM调制解调系统仿真与结果分析4 系统仿真与性能分析4.1 仿真参数设置结合OFDM调制解调系统原理图与仿真流程图,基于MATLAB软件平台,设置系统仿真参数,如表4-1所⽰:由OFDM系统原理和仿真流程可知,由信源产⽣⼀个待传输的⼆进制随机信号。
此处,我们以QPSK调制为例,根据表4-1设置的系统默认仿真参数,⼦载波数⽬1024个,每个⼦载波中OFDM符号数为50个,每OFDM符号数所含的⽐特数为2 bit,信噪⽐(SNR)为2 dB,经过运算、取整等操作,可产⽣⼀组包含20000(⼦载波数?符号数/载波?位数/符号)个由0和1构成的⼀维随机⼆进制数组,即待传信号,截取待传信号的前101(0—100)个码元,其对应的波形与经过OFDM系统传输、解调还原后所得到的信号波形,如图4-1所⽰:图4-1 待传输信号与解调还原信号对⽐图由图4-1可知,经过系统发送、传输、解调过后的信号经过并串变换后,还原后所得到的信号与原信号相⽐,存在数据出错的情况,即产⽣误码,此时的误码率如图4-3所⽰:图4-2 默认参数下QPSK调制的系统误码率误码率(SER)是衡量数据在规定时间内数据传输精确性的指标。
即,数据经过通信信道传输以后,接收端所接收到的数据与发送端发送的原始数据相⽐,发⽣错误的码元个数占发送端发送的原始数据的总码元个数之⽐,误码率的计算公式如下所⽰:误码率=错误码元数/传输总码元数⼀个通信系统在进⾏数据传输时的误码率越⼩,则说明该通信系统的传输精确度越⾼。
4.2 OFDM系统仿真实现以QPSK调制为例,系统的仿真参数为默认值。
即,⼦载波数⽬1024个,每个⼦载波中OFDM符号数为50个,每OFDM符号数所含的⽐特数为2 bit,信噪⽐(SNR)为2 dB。
4.2.1 待传信号与还原信号图4-3 待传信号与还原信号码元波形由仿真参数默认值及仿真程序,信源产⽣的随机序列的长度为20000(⼦载波数?符号数/载波?位数/符号),⼤⼩介于0到 1之间,经过取整后即得到长度为20000,⼤⼩为0或1的待发送的⼀维随机⼆进制数组。
毕业设计论文高速光纤通信系统中的OFDM调制解调技术的仿真与实现摘要光正交频分复用(O-OFDM)通信系统,其带宽资源丰富,无需色散管理,抗色散能力强,这些优点使得光正交频分复用通信系统成为下一代高速率光纤传输的备选方案之一,并成为高速光纤通信系统领域的研究热点。
本文对高速O-OFDM通信系统的研究现状进行了总结,并对高速O-OFDM通信系统的设计和实现进行了探讨和研究。
对于一个通信系统的研究,首先要进行建模和仿真,从理论层面上分析该系统的大致性能和现实可行性。
论文在给出了高速0-OFDM通信系统的设计方案的基础上,基于MATLAB建立了O-OFDM光纤通信系统的简单模型,并分析了实现过程中的有限字长效应、定时同步、偏振模色散等因素对O-OFDM光纤通信系统的性能影响;在这些理论分析的基础上,给出了一套高速O-OFDM光纤通信系统的实现方案。
在O-OFDM系统的电信号处理部分,OFDM调制解调的实现是关键部分,而OFDM调制解调就是输入数据信号的快速傅里叶(逆)变换(IFFT-FFT)运算。
在64点IFFT-FFT运算实现时,基于Quartus2设计了64点IFFT核和FFT核模块,并对模块进行了功能和时序仿真验证。
该OFDM调制解调模块运算效率很高,可达到最大11.7G·S/S(吉符号每秒)的数据吞吐量,运用该工FFT核实现的O-OFDM光纤通信系统理论上可完成最大46.8Gbit/S的传输容量。
由于人们对通信系统的传输容量的需求越来越大,研究者正努力提高O-OFDM光纤通信系统的传输速率。
本文对提高O-OFDM光纤通信系统的传输容量提出了一些可行的方案,如采用光波分复用技术、光偏振复用技术和增加子载波传输个数等,并对这些方案进行了简单的介绍。
关键词:高速光纤通信,光正交频分复用,快速傅里叶(逆)变换目录第一章绪论 (3)1. 1光纤通信的发展历史 (3)1. 2光纤通信的应用与发展趋势 (7)1. 2. 1光纤通信的应用.......................... .. (7)1.2.2光纤通信的发展趋势 (8)1.3 0-OFDM通信系统发展简述 (9)第二章0-OFDM通信系统原理简介 (12)2. 1基本原理 (12)2.1.1光纤通信系统简介 (12)2.1.2 0-OFDM通信系统简介 (14)2. 1. 3正交频分复用(OFDM)的基本原理 (15)2.2 0-OFDM通信系统研究现状 (18)2. 2. 1 0-OFDM通信系统实验室仿真实验现状 (18)2.2.2 0-OFDM通信系统的实验室实现现状 (19)2.2.3 0-OFDM通信系统的实现的制约因素分析 (21)2. 3本章小结 (23)第三章高速CO-OFDM通信系统设计与仿真分析.................... .. (24)3. 1高速CO-OFDM通信系统的设计方案 (24)3. 1. 1 0-OFDM通信系统分类 (24)3.1.2 20Gb/s高速CO-OFDM通信系统设计方案 (25)3.2 CO-OFDM通信系统实现关键因素的建模与仿真 (27)3. 2. 1高速CO-OFDM通信系统的基本模型设计 (27)3.2.2 CO-OFDM通信系有限字长效应的仿真 (27)3.2. 3 CO-OFDM通信系统定时同步仿真 (29)3. 2. 4 CO-OFDM系统有限字长效应和定时同步的联合仿真 (32)3.2.5 CO-OFDM通信系统的偏振模色散效应的研究 (33)3. 2. 5. 1偏振模色散效应建模原理 (33)3. 2. 5. 2偏振模色散干扰下的系统频率响应仿真 (34)3. 2. 5. 3偏振模色散效应的补偿 (36)3. 4本章小结 (39)论文总结 (40)参考文献 (42)图目录图2-1通信系统的基本结构图 (12)图2-2 OFDM系统基本模型框图 (16)图2-3基于快速傅里叶变换(工FFT)的OFDM系统框图 (17)图3-1 CO-OFDM光纤通信实验系统的基本组成框图 (25)图3-2 6bit, 8bit量化误码率曲线比较 (29)图3-3基于CP的OFDM块定时同步算法示意图 (30)图3-4基于MATLAB的误帧率仿真曲线 (31)图3-5 CO-OFDM光纤通信系统有限字长效应和定时同步的联合仿真 (33)图3-6偏振模色散效应示意图 (34)图3-7 OFDM符号采样示意图 (34)图3-8偏振模色散效应下的系统相位误差曲线 (35)图3-9偏振模色散效应下的系统幅度响应曲线 (36)图3-10(高斯白噪声+PMD)相位补偿后的误码率曲线 (37)图3-11不同调制方式的误码率曲线 (38)表目录表目录表3-1 6bit, 8bit量化的高速CO-OFDM光纤通信系统仿真参数设置 (28)表3-2基于CP的OFDM块定时同步仿真参数设置 (31)表3-3 CO-OFDM通信系统有限字长效应和定时同步联合仿真参数设置表 (32)表3-4偏振模色散效应下的系统相位误差曲线仿真参数设置表 (35)表3-5偏振模色散效应下的系统幅度响应曲线仿真参数设置表 (36)表3-6(高斯白噪声+PMD)相位补偿后的误码率曲线仿真参数设置表 (37)表3-7(高斯白噪声+PMD)子载波采用不同的调制方式仿真参数设置表 (38)第一章绪论1.1光纤通信的发展历史时代进步了,科技发展了,人们对物质和精神文化生活的要求越来越高。
OFDM完整仿真过程及解释(MATLAB)OFDM(正交频分复用)是一种多载波调制技术,在无线通信系统中得到广泛应用。
其基本原理是将高速数据流分成多个较低速的子载波,使得每个子载波的传输速率降低,从而提高了系统的可靠性和抗干扰性能。
以下是OFDM的完整仿真过程及解释。
1. 生成数据:首先,在MATLAB中生成需要传输的二进制数据,可以使用随机数生成函数randi(生成0和1的二进制序列。
2.编码:将生成的二进制数据进行编码,例如使用卷积码、块码等编码方式。
编码可以提高数据传输的可靠性,对抗信道中的噪声和干扰。
3.映射:将编码后的数据映射到调制符号,例如使用QPSK、16-QAM 等调制方式。
调制方式决定了每个符号所携带的比特数,不同调制方式具有不同的抗噪声和传输速率性能。
4.并行-串行转换:将映射后的调制符号进行并行-串行转换,将多个并行的调制符号转换为串行的数据流。
这是OFDM的关键步骤,将高速数据流分成多个较低速的子载波。
5. 添加保护间隔:为了消除多径传播引起的码间干扰,需要在串行数据流中插入保护间隔(Guard Interval),通常是循环前缀。
保护间隔使得子载波之间相互正交,从而避免了码间干扰。
6.IFFT:对添加保护间隔后的数据进行反快速傅里叶变换(IFFT),将时域信号转换为频域信号。
IFFT操作将子载波映射到频域,每个子载波代表系统的一个子信道。
7.添加导频:在OFDM符号的频域信号中添加导频,用于估计信道的频率响应和相位差。
导频通常位于频谱的首尾或者分布在整个频谱中,用于信道估计和均衡。
8.加载子载波:将导频和数据子载波合并,形成完整的OFDM符号。
数据子载波携带着编码后的数据,导频子载波用于信道估计。
9.加性高斯白噪声(AWGN)信道:将OFDM符号通过加性高斯白噪声信道进行传输。
AWGN信道是一种理想化的信道模型,可以模拟实际信道中的噪声和干扰。
10.解调:接收端对接收到的OFDM符号进行解调,包括载波恢复、频偏补偿、信道估计和均衡等操作。
ofdm信号时域表达式和频域表达式以及仿真
OFDM(正交频分复用)信号是一种在高速无线通信系统中广泛使用的调制技术。
它将信号分成多个子载波,这些子载波之间正交,使得它们可以在同一个频带上传输,并减少子载波之间的干扰。
OFDM信号的时域表达式:
OFDM信号可以表示为时域上的多个正弦波的叠加。
例如,对于一个具有N个子载波的OFDM信号,它的时域表达式可以写为:
x(t) = ∑[A(k) * cos(2πf(k)t + Φ(k))] - N/2 ≤ k ≤ N/2
其中,A(k)是第k个子载波的振幅,f(k)是第k个子载波的频率,Φ(k)是第k个子载波的相位。
OFDM信号的频域表达式:
OFDM信号的频域表达式是它的时域表达式的傅里叶变换。
频域上的OFDM信号可以表示为多个复式正弦波的叠加。
具体而言,对于一个具有N个子载波的OFDM信号,它的频域表达式可以写为:
X(f) = ∑[A(k) * exp(-j2πf(k)t)] - N/2 ≤ k ≤ N/2
其中,A(k)是第k个子载波的振幅,f(k)是第k个子载波的频率,t是时间,j是虚数单位。
OFDM信号的仿真:
OFDM信号的仿真可以通过计算和绘制其时域和频域表达式来实现。
可以使用数值计算软件(如MATLAB)编写脚本或使用通信系统仿真软件来模拟和分析OFDM信号。
在仿真过程中,可以选择合适的子载波数量、振幅、频率和相位,并通过计算和绘制时域和频域表达式来观察OFDM信号的特性。
还可以对OFDM信号进行调制和解调,模拟不同的信道条件和干扰情况,并对信号的误码率和性能进行评估。
OFDM的系统仿真与实现OFDM(Orthogonal Frequency Division Multiplexing)是一种用于无线通信的调制技术,将高速数据流分成多个低速子载波进行并行传输,提高了信道利用率和抗干扰能力。
在本文中,将介绍OFDM系统仿真和实现的相关内容。
首先,对于OFDM系统的仿真,可以使用Matlab等仿真软件进行模拟。
仿真过程可以分为以下几个步骤:生成原始信号、进行IFFT变换、添加循环前缀、进行FFT变换、接收端信号处理。
下面将分别详细介绍这些步骤。
首先,生成原始信号。
可以使用随机生成的比特序列作为原始信号。
比特序列可以通过随机生成函数生成,并可以根据系统需求设置比特序列长度和比特率。
然后,进行IFFT(Inverse Fast Fourier Transform)变换。
IFFT变换将高速频域信号转换为低速时域信号。
在OFDM系统中,将比特序列通过码型映射转换为复数符号,然后通过IFFT变换将复数符号转换为时域信号。
接下来,添加循环前缀。
循环前缀是从IFFT变换输出的时域信号中取一段连续的数据,插入到传输信号的前面。
循环前缀可以解决多径效应引起的符号间干扰问题。
然后,进行FFT(Fast Fourier Transform)变换。
FFT变换将时域信号转换为频域信号。
在OFDM系统中,将添加了循环前缀的时域信号通过FFT变换将其转换为频域信号。
最后,进行接收端信号处理。
接收端信号处理包括频率偏移补偿、信道估计、信号解调等。
频率偏移补偿可以校正发送端和接收端之间的频率误差。
信道估计可以通过接收到的OFDM符号估计信道响应,用于后续的信号解调和解码。
对于OFDM系统的实现,可以分为两个关键部分:发送端和接收端。
在发送端,需要进行数据的调制、IFFT变换、循环前缀添加等操作。
数据调制可以将输入的比特序列转换为复数符号。
IFFT变换将复数符号转换为时域信号。
循环前缀添加可以解决多径效应引起的符号间干扰问题。
毕业设计OFDM系统原理及仿真实现摘要
OFDM系统是一种广泛应用于高速无线数据传输的数字通信技术,具有高数据传输率、宽带容量和低误码率的优点。
本文介绍了OFDM系统的原理,包括OFDM信号的产生、OFDM系统结构及其优缺点,以及OFDM系统的常用技术(如信道编码、时间分多址、调制和调制解调)以及其特性分析。
本文的主要目的是基于MATLAB实现OFDM系统的仿真。
首先,通过MATLAB环境建立OFDM系统仿真模型,然后模拟噪声信号对OFDM系统的影响,最后仿真OFDM系统的正确性及通信效率。
仿真结果表明,加入噪声信号后OFDM系统的信号-噪声比下降了,相应的误比特率也上升了;在正确译码的情况下,OFDM系统的效率可达到一定的水平。
结论是,OFDM 是一种具有高带宽和高数据传输速率的信号技术,能有效抑制多径效应的影响,具有较高的容量和低的误码率,因此在高速无线数据传输中得到了广泛应用。
关键词:OFDM,OFDM系统,仿真,MATLAB
1绪论
OFDM(Orthogonal Frequency Division Multiplexing)系统是一种高效的数字信号处理技术,具有高数据传输率、宽带容量和低误码率的优点,已成为当今无线通信领域的一项主流技术。
O F D M调制解调仿真
------------------------------------------作者xxxx
------------------------------------------日期xxxx
实验四 OFDM调制解调仿真
一、实验目的
(1)了解OFDM调制解调的原理。
(2)学会用星座图分析系统性能。
二、实验内容
(1)编写MATLAB程序,实现OFDM系统调制解调。
(2)绘制各步骤图形并分析系统特性。
三、实验代码
1、主代码如下:
clear all;
close all;
N=input('请输入码元数');
SNR=input('请输入信噪比');
xx=randint(1,4*N); %原序列
figure(1),stem(xx,'.k'); %原序列图形
title('原序列');
B=0;
for m=1:4:4*N
A=xx(m)*8+xx(m+1)*4+xx(m+2)*2+xx(m+3);
B=B+1;
ee(B)=A;
end
figure(2),stem(ee,'.b');
title('化为0~15的码元');
yy=star(ee,N);
figure(3),plot(yy,'.r'); %映射后的星座图
title('映射后的星座图');
ff=ifft(yy,N); %傅里叶反变换
N1=floor(N*1/4);
N3=floor(N*3/4);
N5=floor(N*5/4);
figure(4),stem(ff,'.m');
title('傅里叶反变换后');
for j=1:N1 %加循环前缀
ss(j)=ff(N3+j);
end
for j=1:N %变成长度为N*5/4的序列 ss(N1+j)=ff(j);
end
figure(5),stem(ss,'.k'); %画出图形
title('加N/4循环前后缀');
%ss=wgn(1,N5,0,10,'dBW','complex');
ss=awgn(ss,SNR); %加入噪声
figure(6),stem(ss,'.m'); %加入噪声后的图形title('加入噪声后');
zz=fft(ss((N1+1):N5),N); %傅里叶变换figure(7),plot(zz,'.b'); %画图
title('傅里叶变换后');
rr=istar(zz,N); %星座图纠错
figure(8),plot(rr,'.r'); %画图
title('纠错后的星座图');
dd=decode(rr,N); %解码
figure(9),stem(dd,'.m'); %画图
title('星座图纠错并解码后');
%bb=d2b(dd,N);
bb=d2bb(dd,N); %转化为0/1比特流figure(10),stem(bb,'.b');
title('转化为0/1比特流后');
2、调用的函数:
(1)星座图映射
%星座图映射
function yy=star(xx,N)
B=[-3-3*i,-3-i,-1-3*i,-1-i,-3+3*i,-3+i,-1+3*i,-1+i,3-3*i,3-i,1-3*i,1-i,3+3*i,3+i,1+3*i,1+i];
for j=1:N
yy(j)=B(xx(j)+1);
end
(2)星座图逆映射
%星座图逆映射
function rr=istar(zz,N)
for j=1:N
if(mod((floor(real(zz(j)))),2)==0)
zz1(j)=ceil(real(zz(j)));
else zz1(j)=floor(real(zz(j)));
end
if(mod((floor(imag(zz(j)))),2)==0)
zz1(j)=zz1(j)+ceil(imag(zz(j)))*i;
else zz1(j)=zz1(j)+floor(imag(zz(j)))*i;
end
rr(j)=zz1(j);
end
(3)十进制转二进制
function bb=d2b(dd,N)
%十进制转二进制
for j=1:N*4
bb(j)=;
end
for j=1:4:N*4
bb1=dec2bin(dd(floor(j/4)+1),4);
for k=1:4
bb(4*(j-1)+k)=bb1(k);
end
end
(4)十进制转化为01比特流
%十进制转化为01比特流
function bb=d2bb(dd,N)
for j=1:N*4
bb(j)=1;
end
j=1;
while(j<=N*4)
N1=ceil(j/4)
a4=mod(dd(N1),2);
dd(N1)=floor(dd(N1)/2);
a3=mod(dd(N1),2);
dd(N1)=floor(dd(N1)/2);
a2=mod(dd(N1),2);
dd(N1)=floor(dd(N1)/2);
a1=mod(dd(N1),2);
bb(j)=a1;
j=j+1;
bb(j)=a2;
j=j+1;
bb(j)=a3;
j=j+1;
bb(j)=a4;
j=j+1;
end
(5)星座图逆映射
function yy=decode(rr,N)
for j=1:N
switch(rr(j))%星座图逆映射
case -3-3*i
yy(j)=0;
case -3-i
yy(j)=1;
case -1-3*i
yy(j)=2;
case -1-i
yy(j)=3;
case -3+3*i
yy(j)=4;
case -3+i
yy(j)=5;
case -1+3*i
yy(j)=6;
case -1+i
yy(j)=7;
case 3-3*i
yy(j)=8;
case 3-i
yy(j)=9;
case 1-3*i
yy(j)=10;
case 1-i
yy(j)=11;
case 3+3*i
yy(j)=12;
case 3+i
yy(j)=13;
case 1+3*i
yy(j)=14;
case 1+i
yy(j)=15;
otherwise break;
end
end
四、
五、实验结果
【精品文档】【精品文档】。