OFDM的系统仿真与实现

合集下载

OFDM系统仿真实现

OFDM系统仿真实现

OFDM系统的仿真与实现1.OFDM系统基本介绍正交频分复用<OFDM)技术与已经普遍熟知应用的频分复用<FDM:Frequency Division Multiplexing)技术十分相似,与FDM基本原理相同,OFDM把高速的数据流通过串并变换,分配到速率相对较低的若干个频率子信道中进行传输,不同的是,OFDM技术利用了更好的控制方法,使频谱利用率有所提高。

OFDM与FDM的主要差别为以下几方面:第一:在常规的广播系统中,每一个无线站在不同的频率上发送信号,有效的运用FDM来保证每个站点的分隔,广播系统中的每一个站点没有任何的同位或同步;但使用OFDM传播技术,譬如DAB,从多个无线站来的信息信号被组合成一个单独的复用数据流,这些数据是由多个子载波密集打包组成,然后将在OFDM体系中传输,在OFDM信号内的所有子载波都是在时间和频率上同步的,使子载波之间的干扰被严格控制。

这些复用的子载波在频域中交错重叠,但因为调制的正交性且采用循环前缀作为保护间隔,所以不会发生载波间干扰ICI<Inter-Carrier Interference)。

第二:对传统的频分复用<FDM)系统而言,传播的信号需要在两个信道之间存在较大的频率间隔即保护带宽来防止干扰,这降低了全部的频谱利用率;然而应用OFDM的子载波正交复用技术大大减少了保护带宽,提高了频谱利用率。

如图 11。

在早期时候,正交频分复用<OFDM)系统中,各子载波采用正交滤波器将信道分成多个子信道,但要用很多的滤波器,尤其是当路数增多的时候。

1971年,Weinstein及Ebert等将DFT应用在多载波传输系统中,从而很方便地实现了多路信号的复合和分解。

OFDM系统的一个重要优点就是可以利用快速傅立叶变换实现调制和解调,从而大大简化系统实现的复杂度。

图 11FDM与OFDM带宽利用率的比较正交频分复用<OFDM)系统是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。

OFDM系统原理及仿真与实现毕业设计(论文)

OFDM系统原理及仿真与实现毕业设计(论文)

毕业设计(论文) 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技术的优势所在,并且展望了今后的无线移动技术的发展前景。

基于MATLAB的OFDM系统仿真及分析

基于MATLAB的OFDM系统仿真及分析

基于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仿真

(完整版)OFDM仿真

一、题目OFDM系统的Matlab仿真二、仿真要求要求一:OFDM系统的数据传输①传输的数据随机产生;②调制方式采用16QAM;③必须加信道的衰落④必须加高斯白噪声⑤接收端要对信道进行均衡。

要求二:要求对BER的性能仿真设计仿真方案,得到在数据传输过程中不同信噪比的BER性能结论,要求得到的BER曲线较为平滑。

三、仿真方案详细设计(一)基于IFFT/FFT 实现的OFDM 系统方框图:(二)详细设计方案: 1确定参数需要确定的参数为:子信道,子载波数,FFT 长度,每次使用的OFDM 符号数,调制度水平,符号速率,比特率,保护间隔长度,信噪比,插入导频数,基本的仿真可以不插入导频,可以为0。

2产生数据使用个随机数产生器产生二进制数据,每次产生的数据个数为carrier_count * symbols_per_carrier * bits_per_symbol 。

3编码交织交织编码可以有效地抗突发干扰。

4子载波调制OFDM 采用BPSK 、QPSK 、16QAM 、64QAM4种调制方式。

按照星座图,将每个子信道上的数据,映射到星座图点的复数表示,转换为同相Ich 和正交分量Qch 。

其实这是一种查表的方法,以16QAM 星座为例,bits_per_symbol=4,则每个OFDM 符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch 。

为了所有的映射点有相同高的平均功率,输出要进行归一化,所以对应BPSK,PQSK,16QAM,64QAM ,分别乘以归一化系数系数1,21, 101, 421.输出的复数序列即为映射后的调制结果。

5串并转换。

将一路高速数据转换成多路低速数据 6 IFFT 。

对上一步得到的相同分量和正交分量按照(Ich+Qch*i )进行IFFT 运算。

并将得到的复数的实部作为新的Ich ,虚部作为新的Qch 。

OFDM系统仿真实验报告

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系统的仿真实现

完整的OFDM系统的仿真实现

%窗函数子程序,子程序名称:recoswindow.mfunction[rcosw]=rcoswindow(beta,Ts)%输入参数:beta为升余弦窗关键系数,Ts为IFFT长度家循环前缀长度t=0:(1+beta)*Ts;rcosw=zeros(1,(1+beta)*Ts);%计算升余弦窗,共有三部分for i=1:beta*Ts;rcosw(i)=0.5+0.5*cos(pi+t(i)*pi/(beta*Ts));%计算升余弦窗的第一部分endrcosw(beta*Ts+1:Ts)=1;%计算升余弦窗低二部分for j=Ts:(1+beta)*Ts+1;rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts));%计算升余弦窗第三部分endrcosw=rcosw';%转换为列矢量%将16QAM信号的解调子程序,子程序的名称:demoduqam16.mend%16QAM调制子程序,子程序名称为qam16.m%将二进制数目流转换为16QAM信号function [complex_qam_data]=qam16(bitdata)%输入参数:bitdata为二进制数码流%输出参数:complex_qam_data为16QAM副信号X1=reshape(bitdata,4,length(bitdata)/4)';%将二进制数码流以4bitte分段d=1;%转换4bit二进制码为十进制码1~16,生态农场mapping映射表中的索引for i=1:length(bitdata)/4;for j=1:4X1(i,j)=X1(i,j)*(2^(4-j));endsource(i,1)=1+sum(X1(i,:));end%16QAM映射表,改表中存放的16对,没对两个实数,表示星座位置mapping=[-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;-3*d d;-d d;d d;3*d d;-3*d -d;-d -d;d -d;3*d -d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d];for i=1:length(bitdata)/4qam_data(i,:)=mapping(source(i),:);%数据映射endcomplex_qam_data=complex(qam_data(:,1),qam_data(:,2));%组合为负数形式,形成16QAM信号end%将16QAM信号的解调子程序,子程序的名称:demoduqam16.m%该子程序测试function [demodu_bit_symble]=demoduqam16(Rx_serial_complex_symbols)%输入参数为:Rx_serial_complex_symbols为接收端接收到的复16QAM信号%输出参数:demodu_bit_symble为二进制数码流complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_comple x_symbols),1);d=1;mapping=[-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;-3*d d;-d d;d d;3*d d;-3*d -d;-d -d;d -d;3*d -d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d];complex_mapping=complex(mapping(:,1),mapping(:,2));%将数据映射表中转换为16QAM信号,即3组合为复数;for i=1:length(Rx_serial_complex_symbols);for j=1:16;metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1));end[min_metric decode_symble(i)]=min(metrics);%将接收数据与标准16QAM信号比,找到差最小的,将其对应恢复成标准的16QAM信号enddecode_bit_symble=de2bi((decode_symble-1)','left-msb');%将16QAM转为二进制demodu_bit_symble=reshape(decode_bit_symble',1,length(Rx_serial_complex_sy mbols)*4);%转换为一行endbaseband_out_length=16000;rand('twister',0);baseband_out=round(rand(1,baseband_out_length));%产生16000bit待传输的二进制比特流。

OFDM系统设计与仿真共3篇

OFDM系统设计与仿真共3篇

OFDM系统设计与仿真共3篇OFDM系统设计与仿真1OFDM系统设计与仿真OFDM技术是一种多载波信号传输技术,将整个信道分割成数个互不干扰的子载波,每个子载波都可以进行调制传输数据,使得OFDM技术具有抗多径和高速传输的优点,因此在现代通信系统中得到广泛应用。

本文将介绍OFDM系统的设计和仿真过程。

一、OFDM系统的设计OFDM系统的设计首先需要确定系统的参数,包括子载波数量、调制方式、误码率等。

具体的设计流程如下:1. 确定子载波数量OFDM系统中子载波数量的选择与系统的带宽有关系,可以通过下式计算出子载波数量:N = B/Δf其中,N是子载波数量,B是系统的带宽,Δf是子载波的带宽。

2. 确定调制方式OFDM系统的调制方式有许多种,如BPSK、QPSK、16QAM、64QAM等。

不同的调制方式可以达到不同的传输速率和误码率,通常选用16QAM和64QAM,可以提高系统的信噪比和传输速率。

3. 确定误码率OFDM系统在传输数据时会受到各种干扰和噪声的影响,因此需要确定合适的误码率。

在一般情况下,当误码率为10^-5时,OFDM系统的性能最优。

二、OFDM系统的仿真OFDM系统的仿真可以通过软件或硬件实现。

其中,软件仿真可以通过Matlab软件实现,硬件实现需要使用FPGA等电路设计工具。

1. Matlab仿真Matlab软件提供了许多工具箱,可以方便地进行OFDM系统的仿真。

例如,可以使用Communications Toolbox进行信道估计、信号变换和误码率分析等,可以使用Simulink进行系统建模和仿真。

下面以Simulink仿真为例,介绍OFDM系统的仿真过程。

首先,将OFDM调制器、仿真信道和OFDM解调器添加到Simulink模型中。

然后,对OFDM信号进行比特随机分配、IFFT和加前缀(保障多径传播),并对信道进行加性白噪声、多径衰减和时间延迟的模拟,最后进行OFDM解调和误码率计算。

(通信工程毕设)OFDM调制解调系统仿真与结果分析

(通信工程毕设)OFDM调制解调系统仿真与结果分析

(通信⼯程毕设)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的待发送的⼀维随机⼆进制数组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OFDM的系统仿真与实现一、实验器件Matlab编程软件、PC机二、实验目的1、通过实验过程熟悉OFDM的系统运行过程.2、进一步练习通过MATLAB解决通信系统的仿真问题.3、掌握导频插入、训练序列等原理与实际运用.4、掌握通过实际仿真与理论分析的结合的方法.三、OFDM的基本原理OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是多载波调制的一种。

其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。

正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰ICI 。

每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。

而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。

在向B3G/4G演进的过程中,OFDM是关键的技术之一,可以结合分集,时空编码,干扰和信道间干扰抑制以及智能天线技术,最大限度的提高了系统性能。

包括以下类型:V-OFDM,W-OFDM,F-OFDM,MIMO-OFDM,多带-OFDM。

OFDM是一种无线环境下的高速传输技术。

无线信道的频率响应曲线大多是非平坦的,而OFDM技术的主要思想就是在频域内将给定信道分成许多正交子信道,在每个子信道上使用一个子载波进行调制,并且各子载波并行传输。

这样,尽管总的信道是非平坦的,具有频率选择性,但是每个子信道是相对平坦的,在每个子信道上进行的是窄带传输,信号带宽小于信道的相应带宽,因此就可以大大消除信号波形间的干扰。

由于在OFDM系统中各个子信道的载波相互正交,它们的频谱是相互重叠的,这样不但减小了子载波间的相互干扰,同时又提高了频谱利用率。

OFDM技术属于多载波调制(Multi-Car rierModulation,MCM)技术。

有些文献上将OFDM和MCM混用,实际上不够严密。

MCM与OFDM 常用于无线信道,它们的区别在于:OFDM技术特指将信道划分成正交的子信道,频道利用率高;而MCM,可以是更多种信道划分方法。

OFDM技术的推出其实是为了提高载波的频谱利用率,或者是为了改进对多载波的调制,它的特点是各子载波相互正交,使扩频调制后的频谱可以相互重叠,从而减小了子载波间的相互干扰。

在对每个载波完成调制以后,为了增加数据的吞吐量、提高数据传输的速度,它又采用了一种叫作HomePlug的处理技术,来对所有将要被发送数据信号位的载波进行合并处理,把众多的单个信号合并成一个独立的传输信号进行发送。

另外OFDM之所以备受关注,其中一条重要的原因是它可以利用离散傅立叶反变换/离散傅立叶变换(IDFT/DFT)代替多载波调制和解调。

OFDM增强了抗频率选择性衰落和抗窄带干扰的能力。

在单载波系统中,单个衰落或者干扰可能导致整个链路不可用,但在多载波的OFDM系统中,只会有一小部分载波受影响。

此外,纠错码的使用还可以帮助其恢复一些载波上的信息。

通过合理地挑选子载波位置,可以使OFDM的频谱波形保持平坦,同时保证了各载波之间的正交。

OFDM尽管还是一种频分复用(FDM),但已完全不同于过去的FDM。

OFDM的接收机实际上是通过FFT实现的一组解调器。

它将不同载波搬移至零频,然后在一个码元周期内积分,其他载波信号由于与所积分的信号正交,因此不会对信息的提取产生影响。

OFDM的数据传输速率也与子载波的数量有关。

OFDM每个载波所使用的调制方法可以不同。

各个载波能够根据信道状况的不同选择不同的调制方式,比如BPSK、QPSK、8PSK、16QAM、64QAM等等,以频谱利用率和误码率之间的最佳平衡为原则。

我们通过选择满足一定误码率的最佳调制方式就可以获得最大频谱效率。

无线多径信道的频率选择性衰落会使接收信号功率大幅下降,经常会达到30dB之多,信噪比也随之大幅下降。

为了提高频谱利用率,应该使用与信噪比相匹配的调制方式。

可靠性是通信系统正常运行的基本考核指标,所以很多通信系统都倾向于选择BPSK或QPSK调制,以确保在信道最坏条件下的信噪比要求,但是这两种调制方式的频谱效率很低。

OFDM技术使用了自适应调制,根据信道条件的好坏来选择不同的调制方式。

比如在终端靠近基站时,信道条件一般会比较好,调制方式就可以由BPSK(频谱效率1bit/s/Hz)转化成16QAM-64QAM (频谱效率4~6bit/s/Hz),整个系统的频谱利用率就会得到大幅度的提高。

自适应调制能够扩大系统容量,但它要求信号必须包含一定的开销比特,以告知接收端发射信号所应采用的调制方式。

终端还要定期更新调制信息,这也会增加更多的开销比特。

OFDM还采用了功率控制和自适应调制相协调工作方式。

信道好的时候,发射功率不变,可以增强调制方式(如64QAM),或者在低调制方式(如QPSK)时降低发射功率。

功率控制与自适应调制要取得平衡。

也就是说对于一个发射台,如果它有良好的信道,在发送功率保持不变的情况下,可使用较高的调制方案如64QAM;如果功率减小,调制方案也就可以相应降低,使用QPSK方式等。

自适应调制要求系统必须对信道的性能有及时和精确的了解,如果在差的信道上使用较强的调制方式,那么就会产生很高的误码率,影响系统的可用性。

OFDM系统可以用导频信号或参考码字来测试信道的好坏。

发送一个已知数据的码字,测出每条信道的信噪比,根据这个信噪比来确定最适合的调制方式。

三、OFDM系统实现的整体思路1、系统图如下:2、具体实现过程(1)先进行信道编码为了提高数字通信系统的性能,信道编码(通常还伴有交织)是普遍采用的方法。

在OFDM系统中,如果信道衰落不是太严重,均衡是无法再利用信道的分集特性来改善系统性能的,因为OFDM系统自身具有利用信道分集特性的能力,一般的信道特性信息已经被OFDM 这种调制方式本身所利用了。

但是,OFDM系统的结构却为在子载波间进行编码提供了机会,形成COFDM(前置编码OFDM)方式。

编码可以采用各种码,如分组码、卷积码等,其中卷积码的效果要比分组码好,但分组码的编解码实现更为简单。

(2)子载波调制传输信号进行信道编码后,要进行子载波的数字调制将其转换成载波幅度和相位的映射,一般采用QAM或MPSK方式。

各子载波不必要采用相同的状态数(进制数),甚至不必要采用相同的调制方式。

这使得OFDM支持的传输速率可以在一个较大的范围内变化,并可以根据子信道的干扰情况,在不同的子信道上采用不同状态数的调制,甚至采用不同的调制方式。

调制信号星座在IFFT之前根据调制模式形成。

(3)加入保护间隔应用OFDM的一个重要原因在于它可以有效地对抗多径时延扩展。

把输入数据流串并变换到个并行的子信道中,使得每一个调制子载波的数据周期可以扩大为原始数据符号周期的N倍,因此时延扩展与符号周期的数值比也同样降低N倍。

另外,通过在每个OFDM 符号间插入保护间隔可以进一步抵制符号间干扰(ISI),还可以减少在接收端的定时偏移错误。

这种保护间隔是一种循环复制,增加了符号的波形长度,在符号的数据部分,每一个子载波内有一个整数倍的循环,此种符号的复制产生了一个循环的信号,即将每个OFDM符号的后时间中的样点复制到OFDM符号的前面,形成循环前缀,在交接点没有任何的间断。

因此将一个符号的尾端复制并补充到起始点增加了符号时间的长度。

符号的总长度为,其中为OFDM符号的总长度,为抽样的保护间隔长度,TFFT为FFT变化产生的无保护间隔的OFDM符号长度,则可以完全克服ISI的影响。

同时,由于OFDM延时副本内所包含的子载波的周期个数也为整数,时延信号就不会破坏子载波间的正交性,在FFT解调过程中就不会产生载波间干扰(ICI)。

(3)将信号进行上变频(载波调制)后,发送出去,在接收端经过解调、逆快速傅里叶变换、去掉保护间隔等过程即可恢复原始的信号。

四、OFDM系统的具体实现1、详细设计思路接收端采用的算法和程序流程与发送端发送的OFDM符号的帧结构有关系。

具体的帧结构,以及定时估计,频偏估计,剩余误差跟踪的算法可参考算法说明文档。

这里对程序的流程进行说明。

首先根据短训练字的特性进行相关运算,进行信号到达检测,当检测到相关值大于门限一定次数后,认为有信号到达。

然后根据长训练字的特性,进行相关运算,进行OFDM符号FFT窗口起始位置的估计。

估计出FFT窗口的位置后,先在时域进行小频偏的估计,将两个长训练字进行小频偏补偿后,进行FFT运算,根据FFT运算的结果进行整数倍频偏的估计。

这些参数估计完成后,就可以进行数据解调了。

先对数据部分进行完整的频偏补偿,然后根据估计的FFT窗口位置进行FFT运算得到频域的数据,进行解调。

然后在对应于导频的子载波位置上提取出导频信息,根据导频信息估计出剩余定时误差以及剩余的信道响应误差,将误差量送入环路进行跟踪。

当收到所有数据后,重新回到信号到达检测状态,进行下一次信号到达的检测和信号接收。

2、程序流程图3、具体代码实现Nfft=128*2; %256 进行256点的FFTNg=32*2; %64Nzero=0;Nzerosub=floor((Nfft*0.5)/2); %for paddingNtotal=Ng+2*Nzero+Nfft; %320Constellation_num=16;Symbol_num=20; %ableN=Symbol_num*Nfft; %totalNs=Symbol_num*Ntotal;Pnum_least(1:Symbol_num)=10000;Pnum(1:Symbol_num)=0;Ndata_o=Symbol_num*(Nfft/2-Nfft/16/2);sita=0;sita1=1;sita2=0;sita3=0; % 测试变量sign=1;%for filterLHBF1=23; % 半带滤波器长度% I1=zeros(1,Ndata_o);% I2=zeros(1,Ndata_o);% I3=zeros(1,Ndata_o);% I4=zeros(1,Ndata_o);CHBF1(1:LHBF1)=0;InsertGIout(1:Symbol_num,1:Ntotal)=0;% 半带滤波器系数fid2=fopen('HBF23.txt','r');CHBF1=fscanf(fid2,'%f');fclose(fid2);IHBF1in(1:LHBF1)=0;QHBF1in(1:LHBF1)=0; % 进行半带滤波时的缓冲区IHBF1out(1:2*Ns)=0;QHBF1out(1:2:Ns)=0; % 两倍上采样后时域数据的存放数组% I、Q分别表示I、Q两路信号ii=1;k=1;k1=1;k2=1;k3=1;k4=1;k5=1;t=1;t2=1;t3=1;SoutI(1:Ns)=0;SoutQ(1:Ns)=0; % 没有进行两倍上采样之前的时域数据存放数组% I、Q分别表示I、Q两路信号IFFToutI(1:Symbol_num,1:Nfft)=0;IFFToutQ(1:Symbol_num,1:Nfft)=0;IFFToutIQ(1:Symbol_num,1:Nfft)=0;IFFToutIQS(1:Symbol_num,1:Nfft)=0; % 进行IFFT运算后OFDM符号存放数组% I、Q分别表示I、Q两路信号% IQ表示复数信息FFTout_t_1(1:Symbol_num,1:2*Nfft)=0;FFTout_t_2(1:Symbol_num,1:4*Nfft)=0;FFTout_t_3(1:Symbol_num,1:8*Nfft)=0; % 测试变量ii=1;M_pilot=8;subcarrier(1:N)=0;subcarriercom(1:N)=0;%train_word% 获得短前导字频域信息fid3=fopen('data_I_train_word_re_i0_256.txt','r');I_train_word_re_temp=fscanf(fid3,'%f');fclose(fid3);I_train_word_re = (I_train_word_re_temp)';fid3=fopen('data_Q_train_word_re_i0_256.txt','r');Q_train_word_re_temp=fscanf(fid3,'%f');fclose(fid3);Q_train_word_re = (Q_train_word_re_temp)';% 获得一个长前导字频域信息fid3=fopen('data_I_train_word_1_i0_256.txt','r');I_train_word_1_temp=fscanf(fid3,'%f');fclose(fid3);I_train_word_1 = (I_train_word_1_temp)';fid3=fopen('data_Q_train_word_1_i0_256.txt','r');Q_train_word_1_temp=fscanf(fid3,'%f');fclose(fid3);Q_train_word_1 = (Q_train_word_1_temp)';% 获得二个长前导字频域信息fid3=fopen('data_I_train_word_2_i0_256.txt','r');I_train_word_2_temp=fscanf(fid3,'%f');fclose(fid3);I_train_word_2 = (I_train_word_2_temp)';fid3=fopen('data_Q_train_word_2_i0_256.txt','r');Q_train_word_2_temp=fscanf(fid3,'%f');fclose(fid3);Q_train_word_2 = (Q_train_word_2_temp)';l=1;% 加窗处理的参数设置wind=zeros(1,(Nfft+Ng));windo=hamming(Nfft+Ng);wind((Ng+1):Nfft)=windo((Ng+1):Nfft);wind(1:Ng)=windo(Ng+1);wind((Nfft+1):(Nfft+Ng))=windo(Nfft);stst=1;% 获得随机数,当作用户信息,调制到各个子载波上fid3=fopen('I1.txt','r');I1=fscanf(fid3,'%d,');fclose(fid3);fid3=fopen('I2.txt','r');I2=fscanf(fid3,'%d,');fclose(fid3);fid3=fopen('I3.txt','r');I3=fscanf(fid3,'%d,');fclose(fid3);fid3=fopen('I4.txt','r');I4=fscanf(fid3,'%d,');fclose(fid3);% Bits Mapping to constellationsfor i=1:N% 前面4个符号是前导字if(i < Nfft*4+1)% 短前导字if( i>0 & i < 2*Nfft+1)if(rem(i,Nfft) == 0)Imapped(i) = I_train_word_re(Nfft);Qmapped(i) = Q_train_word_re(Nfft);elseImapped(i) = I_train_word_re(rem(i,Nfft));Qmapped(i) = Q_train_word_re(rem(i,Nfft));endend% 第一个长前导字if( i>2*Nfft & i < 3*Nfft+1)if(rem(i,Nfft) == 0)Imapped(i) = I_train_word_1(Nfft);Qmapped(i) = Q_train_word_1(Nfft);elseImapped(i) = I_train_word_1(rem(i,Nfft));Qmapped(i) = Q_train_word_1(rem(i,Nfft));endend% 第二个长前导字if (i>3*Nfft & i<Nfft*4+1)if(rem(i,Nfft) == 0)Imapped(i) = I_train_word_2(Nfft);Qmapped(i) = Q_train_word_2(Nfft);elseImapped(i) = I_train_word_2(rem(i,Nfft));Qmapped(i) = Q_train_word_2(rem(i,Nfft));endendelse% 前导字发送完后,发送用户信息,这里用随机数代替用户信息% 中间查0的虚拟子载波没有用户信息if ((rem(i,Nfft) < (Nfft/2-Nzerosub+1)) | (rem(i,Nfft) > (Nfft/2+Nzerosub))) if(rem(i,Nfft/(2*M_pilot))==0) % insert pilotsif (sign==1)Isignal=3*1.414;Qsignal=0;elseIsignal=-3*1.414;Qsignal=0;end %% sub-carrier polit scheme is BPSKstst=stst+1;else% 插入导频信息Isignal = 2*(I1(l)*1+I2(l)*2)-3;Qsignal = 2*(I3(l)*1+I4(l)*2)-3;l=l+1;endImapped(i)=Isignal;Qmapped(i)=Qsignal;else% 中间查0的虚拟子载波没有用户信息Imapped(i)=0;Qmapped(i)=0;endendif (rem(i,Nfft)==0)now_step = [num2str(ii)]sign=rem(sign+1,2);Imappedfs(1:Nfft)=Imapped(i-Nfft+1:i);Qmappedfs(1:Nfft)=Qmapped(i-Nfft+1:i);% 对频域信息进行IFFT变换,获得时域信息IFFToutI(ii,1:Nfft)=ifft(Imappedfs,Nfft);IFFToutQ(ii,1:Nfft)=ifft(Qmappedfs,Nfft);%IFFToutIQ(ii,1:Nfft)=IFFToutI+j*IFFToutQ;IFFToutIQS(ii,1:Nfft)=ifft(Imappedfs(1:Nfft)+j*Qmappedfs(1:Nfft),Nfft);IFFToutIQ(ii,1:Nfft)=IFFToutIQS(ii,1:Nfft);ii=ii+1;end;end; % end of fft symbol generationfor (ig=1:Symbol_num)% 插入循环前缀InsertGIout(ig,1:Nzero)=0;InsertGIout(ig,Ng+Nzero+1:(Ng+Nfft+Nzero))=IFFToutIQ(ig,1:Nfft);InsertGIout(ig,Nzero+1:(Ng+Nzero))=IFFToutIQ(ig,(Nfft-Ng)+1:Nfft);InsertGIout(ig,(Ng+Nfft+Nzero)+1:Ntotal)=0;% 加窗处理if(ig > 4)InsertGIouta(ig,1:Ntotal)=InsertGIout(ig,1:Ntotal);InsertGIout(ig,1:Ntotal)=InsertGIouta(ig,1:Ntotal).*wind;endFFTout_t(ig,1:Nfft)=fft(InsertGIout(ig,Ng+1-sita:Nfft+Ng-sita),Nfft); % 进行中间变量的测试% 将生成的OFDM时域信号依次写入一个数组里,形成一个连续的OFDM时域数据流for (is=1:Ntotal)SoutI((ig-1)*Ntotal+is)=real(InsertGIout(ig,is));SoutQ((ig-1)*Ntotal+is)=imag(InsertGIout(ig,is));end;end;% 对生成的OFDM时域信号进行两倍上采样% sample rate interpolation and modulationfor(k=1:Ns)% HBF1for j1=1:2IHBF1in(2:LHBF1)=IHBF1in(1:LHBF1-1);QHBF1in(2:LHBF1)=QHBF1in(1:LHBF1-1);if (j1==1)IHBF1in(1)=SoutI(k);QHBF1in(1)=SoutQ(k);elseIHBF1in(1)=0;QHBF1in(1)=0;end;IHBF1out(k1)=2*IHBF1in*CHBF1;QHBF1out(k1)=2*QHBF1in*CHBF1;if (rem(k1,2*Ntotal)==0)FFTout_t_1(t,1:2*Nfft)=fft(IHBF1out(k1-2*Nfft+1-sita1:k1-sita1),2*Nfft)+j*fft(QHBF1out(k1-2*Nff t+1-sita1:k1-sita1),2*Nfft);t=t+1;end;k1=k1+1;end;% end of j1end; %end of k% MODULATION% 将基带信号转换成中频信号M=2;NN=length(IHBF1out);phase0=pi/30;error_f=0;w=pi/M; % IF=8*(symbol rate) or (sample rate)/4IMOD(1:NN)=0;QMOD(1:NN)=0;Modout(1:NN)=0;for i=1:NNIMOD(i)=cos(rem(i*w+phase0,2*pi))*IHBF1out(i);QMOD(i)=-sin(rem(i*w+phase0,2*pi))*QHBF1out(i);Modout(i)=IMOD(i)+QMOD(i);end;zB=20*log10(abs(fft(SoutI+j*SoutQ)));zF=20*log10(abs(fft(Modout)));% 记录基带信号的频谱情况fid=fopen('SoutI_4_BF.txt','w');fprintf(fid,'%d,',zB);fclose(fid);% 记录中频信号的频谱情况fid=fopen('SoutI_4_IF.txt','w');fprintf(fid,'%d,',zF);fclose(fid);% 观测时域信号figure(1);plot(SoutI(1:length(SoutI)));figure(2);plot(SoutQ(1:length(SoutQ)));% 观察频域情况figure(3);plot (real(FFTout_t(1,1:Nfft)));figure (4);plot(20*log10(abs(fft(Sooty*SoutQ))));figure(5);plot(20*log10(abs(fft(IHBF1out+j*QHBF1out)))); figure(6);plot(20*log10(abs(fft(Modout))));五、OFDM的仿真结果1、输入时域I路数据信号2、输入时域Q路数据信号3、I路、Q路数据合并后的频域波形4、频域信息的理论输出波形如下5、第一个数据OFDM符号的星座图6、最后一个数据OFDM符号的星座图7、所有数据OFDM符号的星座图分析及说明:经过OFDM调制之后,信号星座图上的点更加集中,说明峰均比相对调制之前有所降低。

相关文档
最新文档