OFDM标准系统原理及其实现.docx
- 文档编号:19752674
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:16
- 大小:748.83KB
OFDM标准系统原理及其实现.docx
《OFDM标准系统原理及其实现.docx》由会员分享,可在线阅读,更多相关《OFDM标准系统原理及其实现.docx(16页珍藏版)》请在冰豆网上搜索。
OFDM标准系统原理及其实现
通信系统综合设计
报告
题目:
OFDM系统原理及其实现
学部:
班级:
姓名:
学号:
指导教师:
撰写日期:
第一章
1.1要求
仿真实现OFDM调制解调,在发射端,经串/并变换和IFFT变换,加上保护间隔(又称“循环前缀”),形成数字信号,通过信道到达接收端,结束端实现反变换,进行误码分析。
1.2系统基本原理及基本模块
1.2.1设计思路
OFDM的基本原理就是把高速的数据流通过串并变换,分配到传输速率相对较低的若干个子信道中进行传输。
由于每个子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造成的影响。
并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。
而且,一般都采用循环前缀作为保护间隔,从而可以避免由多径带来的子载波间干扰((ICI)。
调制原理:
设OFDM系统中有N个子信道,第K个子信道采用的子载波为:
OFDM信号N路子信号之和
一个码元时间内任意两个子载波正交条件:
子载频条件:
子载频最小间隔:
OFDM
信号
解调原理:
根据子载波正交性质:
1.2.2系统基本模块
此OFMD包含4个模块,编码映射、串并/并串变换、OFDM调制/解调、添加/取出循环前缀等。
第二章
2.1编程思路及框架
OFDM实现框架如下
2.1.1信道编码映射
当调制好的信号在信道里进行传输的时候,必然要受到信道的影响,导致在接收端信号解调出现错误,使系统的误码率大大增加。
因而,为减少差错,提高通信系统抗干扰能力和可靠性,在一个实用的通信系统中,采用信道编码这一有效措施。
方法是在发送端的信号中加入一定的冗余度,而在接收端这些冗余度可以用来检测并且纠正信号通过信道后产生的错误。
当然,冗余度的加入降低了系统的工作效率,但是和系统误码率的降低(即信号更加正确地传送)相比,这些代价是可以接受的。
2.1.2串并/并串变换
设OFDM系统的输入信号为串行二进制码元,其码元序列时间为T,先将此输入码元序列分为帧,每帧中有F个码元,即有F比特。
然后将此F比特分成N组,每组中的比特数可以不同。
如下图所示。
2.1.3OFDM调制解调
调制
离散傅里叶变换
离散傅里叶逆变换;
子载波信号
OFDM信号
复数形式
解调
解调即为其逆过程,用傅里叶变换完成
2.1.4添加/取出循环前缀
OFDM系统中,每个并行数据支路都是窄带信号,可近似认为每个支路都经历平坦衰落,这样就减小了频率选择性衰落对信号的影响。
同时,每路子数据流速率的降低,减小了符号间干扰(ISI)。
此外,还可以通过加保护间隔的办法完全消除符号间干扰。
假设每个OFDM符号由Y个样值组成,由于时延扩展,接收端将会有和信道冲激响应持续时间相对应的前L(L 由于多径效应等因素,两个连续的分组信号之间会产生码间串扰,前一分组的信号可能会影响到后一分组信号的前面几个码元 第三章 3.1实验结果 3.1.1码率计算: bit_errors=find(baseband_in~=baseband_out)。 bit_error_count=size(bit_errors,2) baseband_out_length k=bit_error_count b=baseband_out_length ber=k/b(误码率) 3.1.2实验结果 原始数据(下图): 发送端数据(下图): 调制信号(下图): 还原出来的信号(下图): 3.2实验分析 K为误码数量: 为5 B为波形总量: 为2000 误码率BER=k/b=0.04% 16QAM误比特率为5.96% 总结得出OFDM系统的误码率远低于16QAM等,由此可以见OFDM系统具有一定优越性。 总结 通过本次实验,我懂得了如何仿真实现OFDM调制解调,在发射端,经串/并变换和IFFT变换,加上保护间隔(又称“循环前缀”),形成数字信号,通过信道到达接收端,结束端实现反变换,进行误码分析。 通过本次实验,我加深了OFDM的基本原理就是把高速的数据流通过串并变换,分配到传输速率相对较低的若干个子信道中进行传输。 由于每个子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造成的影响。 并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。 而且,一般都采用循环前缀作为保护间隔,从而可以避免由多径带来的子载波间干扰((ICI)。 此次实验不但给我巩固了课本的基础知识,还加强了我的动手能力。 附录 clearall。 closeall。 IDFT_bin_length=1024。 %DFT的点数 carrier_count=200。 %载波的数量 bits_per_symbol=2。 %每个符号代表的比特数 symbols_per_carrier=50。 %每个载波使用的符号数 SNR=10。 %信道中的信噪比(dB) baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symbol。 %总比特数 carriers=(1: carrier_count)+(floor(IDFT_bin_length/4)-floor(carrier_count/2))。 conjugate_carriers=IDFT_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)。 fork=1: (length(baseband_out)/bits_per_symbol) modulo_baseband(k)=0。 fori=1: bits_per_symbol modulo_baseband(k)=modulo_baseband(k)+convert_matrix(i,k)*2^(bits_per_symbol-i)。 end end %串并转换 carrier_matrix=reshape(modulo_baseband,carrier_count,symbols_per_carrier)'。 %对每一个载波的符号进行差分编码 carrier_matrix=[zeros(1,carrier_count)。 carrier_matrix]。 fori=2: (symbols_per_carrier+1) carrier_matrix(i,: )=rem(carrier_matrix(i,: )+carrier_matrix(i-1,: ),2^bits_per_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位置 IDFT_modulation=zeros(symbols_per_carrier+1,IDFT_bin_length)。 IDFT_modulation(: carriers)=complex_carrier_matrix。 IDFT_modulation(: conjugate_carriers)=conj(complex_carrier_matrix)。 %画出频域中的OFDM信号代表 figure (1) stem(0: IDFT_bin_length-1,abs(IDFT_modulation(2,1: IDFT_bin_length)),'b*-') gridon axis([0IDFT_bin_length-0.51.5]) ylabel('Magnitude') xlabel('IDFTBin') title('OFDMCarrierFrequencyMagnitude') %通过IFFT将频域转化为时域,得到时域信号 time_wave_matrix=ifft(IDFT_modulation')。 time_wave_matrix=time_wave_matrix'。 %画出一个符号周期的时域OFDM信号 figure (2) plot(0: IDFT_bin_length-1,time_wave_matrix(2,: )) gridon ylabel('Amplitude') xlabel('Time') title('OFDMTimeSignal,OneSymbolPeriod') %画出每一个载波对应的时域信号(分离的OFDM信号) forf=1: carrier_count temp_bins(1: IDFT_bin_length)=0+0j。 temp_bins(carriers(f))=IDFT_modulation(2,carriers(f))。 temp_bins(conjugate_carriers(f))=IDFT_modulation(2,conjugate_carriers(f))。 temp_time=idft(temp_bins')。 figure(3) plot(0: IDFT_bin_length-1,temp_time) holdon end gridon ylabel('Amplitude') xlabel('Time') title('SeparatedTimeWaveformsCarriers') fori=1: symbols_per_carrier+1 windowed_time_wave_matrix(i,: )=real(time_wave_matrix(i,: )).*hamming(IDFT_bin_length)'。 windowed_time_wave_matrix(i,: )=real(time_wave_matrix(i,: ))。 end %串并转换 ofdm_modulation=reshape(windowed_time_wave_matrix',1,IDFT_bin_length*(symbols_per_carrier+1))。 %画出整个时域OFDM temp_time=IDFT_bin_length*(symbols_per_carrier+1)。 figure(4) plot(0: temp_time-1,ofdm_modulation) gridon ylabel('Amplitude(volts)') xlabel('Time(samples)') title('OFDMTimeSignal') %上变频,这个模型中我们把经过IFFT运算后OFDM直接发送 Tx_data=ofdm_modulation。 %信道 %ThechannelmodelisGaussian(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))。 fori=2: length(ofdm_modulation) copy1(i)=ofdm_modulation(i-1)。 end Rx_Data=Tx_data+noise。 %根据符号长度和符号数将串行的符号转换为并行的 %-每一列是符号周期 Rx_Data_matrix=reshape(Rx_Data,IDFT_bin_length,symbols_per_carrier+1)。 %对每一列信号做FFT得到频域信号 Rx_spectrum=dft(Rx_Data_matrix)。 %抽取接收信号中有载波的点 Rx_carriers=Rx_spectrum(carriers,: )'。 %计算载波的相位 %-弧度转换为角度 %-归一化相位(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)。 %相位转化为符号 base_phase=360/2^bits_per_symbol。 delta_phase=base_phase/2。 Rx_decoded_symbols=zeros(size(Rx_decoded_phase,1),size(Rx_decoded_phase,2))。 fori=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 %Convertthematrixintoaserialsymbolstream Rx_serial_symbols=reshape(Rx_decoded_symbols',1,size(Rx_decoded_symbols,1)*size(Rx_decoded_symbols,2))。 %Convertthesymbolstobinary fori=bits_per_symbol: -1: 1 ifi~=1 Rx_binary_matrix(i,: )=rem(Rx_serial_symbols,2)。 Rx_serial_symbols=floor(Rx_serial_symbols/2)。 else Rx_binary_matrix(i,: )=Rx_serial_symbols。 end end baseband_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) baseband_out_length k=bit_error_count b=baseband_out_length ber=k/b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OFDM 标准 系统 原理 及其 实现