《2022年OFDM标准系统原理及其实现.docx》由会员分享,可在线阅读,更多相关《2022年OFDM标准系统原理及其实现.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通信系统综合设计报告题目: OFDM系统原理及其实现学 部:班 级:姓 名:学 号: 指导老师: 撰写日期:1 / 18目录第一章 31.1 要求 31.2 系统基本原理及基本模块31.2.1 设计思路 31.2.2 系统基本模块 4其次章 42.1 编程思路及框架 42.1.1 信道编码映射 52.1.2 串并 / 并串变换 6 2.1.3OFDM调制解调 62.1.4添加 / 取出循环前缀7第三章 73.1 试验结果 73.1.1 码率运算: 73.1.2 试验结果 8总结 12附录 132 / 181.1 要求第一章12 / 18仿真实现 OFDM调制解调,在发射端,经串 / 并变换和
2、IFFT 变换,加上爱护间隔(又称“循环前缀” ),形成数字信号,通过信道到达接收端, 终止端实现反变换,进行误码分析;1.2 系统基本原理及基本模块1.2.1 设计思路OFDM的基本原理就是把高速的数据流通过串并变换,安排到传输速率 相对较低的如干个子信道中进行传输;由于每个子信道中的符号周期会相 对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对 系统造成的影响;并且仍可以在 OFDM符号之间插入爱护间隔,令爱护间隔大于无线信道的最大时延扩展,这样就可以最大限度地排除由于多径而带 来的符号间干扰 ISI;而且,一般都采纳循环前缀作为爱护间隔,从而可以防止由多径带来的子载波间干
3、扰 ICI;调制原理:设 OFDM系统中有 N个子信道,第 K 个子信道采纳的子载波为:OFDM信号N路子信号之和一个码元时间Ts内任意两个子载波正交条件:子载频条件:子载频最小间隔 :解 调 原理:依据子载波正交性质:1.2.2 系统基本模块此 OFMD包含 4 个模块,编码映射、串并 / 并串变换、 OFDM调制/ 解调、添加/ 取出循环前缀等;其次章2.1 编程思路及框架OFDM实现框架如下2.1.1 信道编码映射当调制好的信号在信道里进行传输的时候,必定要受到信道的影响, 导致在接收端信号解调显现错误,使系统的误码率大大增加;因而,为减 少差错,提高通信系统抗干扰才能和牢靠性,在一个有
4、用的通信系统中, 采纳信道编码这一有效措施; 方法是在发送端的信号中加入肯定的冗余度, 而在接收端这些冗余度可以用来检测并且订正信号通过信道后产生的错误;当然,冗余度的加入降低了系统的工作效率,但是和系统误码率的降低(即信号更加正确地传送)相比,这些代价是可以接受的;2.1.2 串并/ 并串变换设 OFDM系统的输入信号为串行二进制码元,其码元序列时间为 T,先将此输入码元序列分为帧,每帧中有 F 个码元,即有 F 比特;然后将此 F 比特分成 N组,每组中的比特数可以不同;如下图所示;2.1.3 OFDM调制解调调制离散傅里叶变换离散傅里叶逆变换 ;子载波信号OFDM信号复数形式解调解调即为
5、其逆过程,用傅里叶变换完成2.1.4 添加/ 取出循环前缀OFDM系统中 , 每个并行数据支路都是窄带信号 , 可近似认为每个支路都经受平整衰落 , 这样就减小了频率挑选性衰落对信号的影响;同时, 每路子数据流速率的降低 , 减小了符号间干扰 ISI;此外, 仍可以通过加爱护间隔的方法完全排除符号间干扰;假设每个OFDM符号由 Y个样值组成 , 由于时延扩展, 接收端将会有和信道冲激响应连续时间相对应的前L L Y个样值发生错误 , 为此, 可以在发送信号前端加上 M个样值 , 接收端收到信号时 , 先去掉前 M个样值 , 然后再进行 FFT,只要M L就可完全排除 ISI ;由于多径效应等因
6、素,两个连续的分组信号之间会产生码间串扰,前一分组的信号可能会影响到后一分组信号的前面几个码元第三章3.1 试验结果3.1.1 码率运算:bit_errors = findbaseband_in = baseband_out;bit_error_count = sizebit_errors,2 baseband_out_length k=bit_error_count b=baseband_out_lengthber=k/b(误码率)3.1.2 试验结果原始数据(下图):发送端数据(下图):调制信号(下图):仍原出来的信号(下图) :3.2 试验分析K为误码数量:为 5B为波形总量:为 200
7、0误码率 BER=k/b=0.04% 16QAM 误比特率为 5.96%总结得出 OFDM 系统的误码率远低于 16QAM 等,由此可以见 OFDM 系统具有肯定优越性;总结通过本次试验,我懂得了如何仿真实现 OFDM调制解调,在发射端,经串/ 并变换和 IFFT 变换,加上爱护间隔(又称“循环前缀” ),形成数字信号,通过信道到达接收端,终止端实现反变换,进行误码分析;通过本次试验, 我加深了 OFDM的基本原理就是把高速的数据流通过串并变换,安排到传输速率相对较低的如干个子信道中进行传输;由于每个 子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造
8、成的影响; 并且仍可以在 OFDM符号之间插入爱护间隔,令爱护间隔大于无线信道的最大时延扩展,这样就可以最大限度地排除由于多径而带来的符号间干扰ISI;而且,一般都采纳循环前缀作为爱护间隔,从而可以防止由多径带来的子载波间干扰ICI;此次试验不但给我巩固了课本的基础学问,仍加强了我的动手才能;12 / 18附录clear all;close all;IDFT_bin_length = 1024; % DFT 的点数carrier_count = 200;%载波的数量bits_per_symbol = 2;%每个符号代表的比特数symbols_per_carrier = 50; %每个载波使用的
9、符号数SNR = 10;%信道中的信噪比( dB)baseband_out_length=carrier_count*symbols_per_carrier*bits_per_s ymbol;%总比特数carriers=1:carrier_count+floorIDFT_bin_length/4-floorcarrier_count/2;conjugate_carriers = IDFT_bin_length - carriers + 2;%发送端%产生随机二进制数据 :baseband_out = roundrand1,baseband_out_length;convert_matrix=r
10、eshapebaseband_out,bits_per_symbol,lengthbaseb and_out/bits_per_symbol;for k = 1:lengthbaseband_out/bits_per_symbolmodulo_basebandk = 0;for i = 1:bits_per_symbol modulo_basebandk=modulo_basebandk+convert_matrixi,k*2bit s_per_symbol-i;endend% 串并转换carrier_matrix=reshapemodulo_baseband,carrier_count,sy
11、mbols_per_carrier;% 对每一个载波的符号进行差分编码13 / 18carrier_matrix = zeros1,carrier_count;carrier_matrix;for i = 2:symbols_per_carrier + 1carrier_matrixi,:=remcarrier_matrixi,:+carrier_matrixi-1,:,2bits_per_symbol;end% 把差分符号代码转换成相位carrier_matrix = carrier_matrix * 2*pi/2bits_per_symbol;% 把相位转换成复数X,Y=pol2cartc
12、arrier_matrix,onessizecarrier_matrix,1,sizec arrier_matrix,2;complex_carrier_matrix = complexX,Y;% 安排载波到指定的 IFFT 位置IDFT_modulation= zerossymbols_per_carrier+ 1, IDFT_bin_length;IDFT_modulation:,carriers = complex_carrier_matrix;IDFT_modulation:,conjugate_carriers= conjcomplex_carrier_matrix;% 画出频域中的
13、 OFDM信号代表figure 1 stem0:IDFT_bin_length-1,absIDFT_modulation2,1:IDFT_bin_length,b*- grid onaxis 0 IDFT_bin_length -0.5 1.5 ylabelMagnitudexlabelIDFT BintitleOFDM Carrier Frequency Magnitude% 通过 IFFT 将频域转化为时域,得到时域信号time_wave_matrix = ifftIDFT_modulation;time_wave_matrix = time_wave_matrix;%画出一个符号周期的时
14、域 OFDM信号14 / 18figure 2plot0:IDFT_bin_length-1,time_wave_matrix2,: grid onylabelAmplitudexlabelTimetitleOFDM Time Signal, One Symbol Period%画出每一个载波对应的时域信号(分别的OFDM信号) for f = 1:carrier_counttemp_bins1:IDFT_bin_length=0+0j;temp_binscarriersf=IDFT_modulation2,carriersf;temp_binsconjugate_carriersf=IDFT
15、_modulation2,conjugate_car riersf;temp_time = idfttemp_bins;figure3plot0:IDFT_bin_length-1, temp_time hold onend grid onylabelAmplitudexlabelTimetitleSeparated Time Waveforms Carriers for i = 1:symbols_per_carrier + 1windowed_time_wave_matrixi,:=realtime_wave_matrixi,:.*hamm ingIDFT_bin_length;windo
16、wed_time_wave_matrixi,: = realtime_wave_matrixi,:;end%串并转换ofdm_modulation=reshapewindowed_time_wave_matrix,1,IDFT_bin_le ngth*symbols_per_carrier+1;15 / 18% 画出整个时域 OFDMtemp_time = IDFT_bin_length*symbols_per_carrier+1;figure 4plot0:temp_time-1,ofdm_modulation grid onylabelAmplitude volts xlabelTime
17、samples titleOFDM Time Signal% 上变频,这个模型中我们把经过 IFFT 运算后 OFDM直接发送Tx_data = ofdm_modulation;%信道% The channel model is Gaussian AWGN +Multipath时延为 1Tx_signal_power = varTx_data;linear_SNR = 10SNR/10;noise_sigma = Tx_signal_power/linear_SNR;noise_scale_factor = sqrtnoise_sigma;noise = randn1, lengthTx_da
18、ta*noise_scale_factor;copy1=zeros1,lengthofdm_modulation;for i=2:lengthofdm_modulation copy1i=ofdm_modulationi-1;endRx_Data = Tx_data + noise;% 依据符号长度和符号数将串行的符号转换为并行的%-每一列是符号周期Rx_Data_matrix=reshapeRx_Data,IDFT_bin_length, symbols_per_carrier + 1;%对每一列信号做 FFT得到频域信号Rx_spectrum = dftRx_Data_matrix;% 抽
19、取接收信号中有载波的点Rx_carriers = Rx_spectrumcarriers,:;16 / 18%运算载波的相位%-弧度转换为角度%-归一化相位( 0-360 )Rx_phase = angleRx_carriers*180/pi;phase_negative = findRx_phase 0;Rx_phasephase_negative = remRx_phasephase_negative+360,360;% 用 diff()运算相位差Rx_decoded_phase = diffRx_phase;phase_negative = findRx_decoded_phase 0;
20、Rx_decoded_phasephase_negative=remRx_decoded_phasephase_negative+360,360;% 相位转化为符号base_phase = 360/2bits_per_symbol;delta_phase = base_phase/2;Rx_decoded_symbols=zerossizeRx_decoded_phase,1,sizeRx_decoded_phase,2;for i = 1:2bits_per_symbol - 1 center_phase = base_phase*i;plus_delta = center_phase+de
21、lta_phase;minus_delta = center_phase-delta_phase;decoded=findRx_decoded_phasemi nus_delta;Rx_decoded_symbolsdecoded=i ;end% Convert the matrix into a serial symbol stream Rx_serial_symbols=reshapeRx_decoded_symbols,1,sizeRx_decoded_ symbols,1*sizeRx_decoded_symbols,2;% Convert the symbols to binaryf
22、or i = bits_per_symbol: -1: 1 if i = 117 / 18Rx_binary_matrixi,: = remRx_serial_symbols,2;Rx_serial_symbols = floorRx_serial_symbols/2;elseRx_binary_matrixi,: = Rx_serial_symbols;end endbaseband_in=reshapeRx_binary_matrix,1,sizeRx_binary_matrix,1* sizeRx_binary_matrix,2;% 查找错位比特运算误码率bit_errors = findbaseband_in = baseband_out;bit_error_count = sizebit_errors,2 baseband_out_length k=bit_error_count b=baseband_out_lengthber=k/b18 / 18