已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实习目的1、 熟悉通信相关方面的知识、学习并掌握OFDM技术的原理2、 熟悉MATLAB语言3、 设计并实现OFDM通信系统的建模与仿真2、 实习要求仿真实现OFDM调制解调,在发射端,经串/并变换和IFFT变换,加上保护间隔(又称“循环前缀”),形成数字信号,通过信道到达接收端,结束端实现反变换,进行误码分析三、实习内容1. 实习题目 正交频分复用OFDM系统建模与仿真2. 原理介绍OFDM的基本原理就是把高速的数据流通过串并变换,分配到传输速率相对较低的若干个子信道中进行传输。由于每个子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造成的影响。并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。而且,一般都采用循环前缀作为保护间隔,从而可以避免由多径带来的子载波间干扰(ICI) 。3. 原理框图高速数据图1-1 OFDM 原理框图 4. 功能说明4.1确定参数需要确定的参数为:子信道,子载波数,FFT长度,每次使用的OFDM符号数,调制度水平,符号速率,比特率,保护间隔长度,信噪比,插入导频数,基本的仿真可以不插入导频,可以为0。4.2产生数据使用个随机数产生器产生二进制数据,每次产生的数据个数为carrier_count * symbols_per_carrier * bits_per_symbol。4.3编码交织交织编码可以有效地抗突发干扰。4.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,, , .输出的复数序列即为映射后的调制结果。4.5串并转换。将一路高速数据转换成多路低速数据4.6 IFFT。对上一步得到的相同分量和正交分量按照(Ich+Qch*i)进行IFFT运算。并将得到的复数的实部作为新的Ich,虚部作为新的Qch。在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。 由于OFDM信号的带宽为B=Nf, 信号必须以t=1/B=1/(Nf)的时间间隔进行采样。 采样后的信号用sn,i表示, i = 0, 1, , N-1,则有 从该式可以看出,它是一个严格的离散反傅立叶变换(IDFT)的表达式。IDFT可以采用快速反傅立叶变换(IFFT)来实现 4.7加入保护间隔。由IFFT运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G长度的数据加到头部,构成循环前缀。如果加入空的间隔,在多径传播的影响下,会造成载波间干扰ICI。保护见个的长度G应该大于多径时的扩张的最大值。 图 1-2 多径情况下,空闲保护间隔在子载波间造成的干扰图1-3 保护间隔的插入过程4.8加窗加窗是为了降低系统的PAPR,滚降系数为1/32。通过这种方法,可以显著地改善OFDM通信系统高的PAPR分布,大大降低了峰值信号出现的概率以及对功率放大器的要求,节约成本。经常被采用的窗函数是升余弦窗 (1-2) 图1-9 经过加窗处理后的OFDM符号示意图4.9通过信道。信道分为多径实验信道和高斯白噪声信道。多径时延信道直射波河延迟波对于标准时间按照固定比率递减,因此多径时延信道参数为比率和对大延迟时间。4.10同步。同步是决定OFDM系统高性能十分重要的方面,实际OFDM系统都有同步过称。主要同步方法有使用导频,循环前缀,忙算法三种。研究目的为同步的可以详细实现本步,基本的方针可以略过此步,假设接收端已经于发射端同步。4.11去掉保护间隔。根据同步得到的数据,分别见给每个符号的同相分量和正交分量开头的保护间隔去掉。4.12并串转换。将每个符号分布在子信道上的数据,还原为一路串行数据。4.13 FFT。对每个符号的同相分量和正交分量按照(Ich+Qch*i)进行FFT运算。并将得到的实部作为新的Ich,虚部作为新的Qch。与发端相类似,上述相关运算可以通过离散傅立叶变换(DFT)或快速傅立叶变换(FFT)来实现, 即: 4.14子载波解调FFT后的同相粉脸感和正交分量两组数据在星座图上对饮高的点,由于噪声和信道的影响,不再是严格的发送端的星座图。将得到的星座图上的点按照最近原则判决为原星座图上的点,并按映射规则还原为一组数据。4.15解码解交织。按照编码交织对应解码,解交织的方法,还原为原始数据,并进行纠错处理。4.16计算误码率。比较第2步产生的数据和接收到的数据,计算误码率BER5. 实现步骤5.1 16QAM的调制函数function complex_qam_data=qam16(bitdata)%modulation of 16QAM,modulate bitdata to 16QAM complex signalX1=reshape(bitdata,4,length(bitdata)/4);d=1;%min distance of symble for i=1:length(bitdata)/4; for j=1:4 X1(i,j)=X1(i,j)*(2(4-j); end source(i,1)=1+sum(X1(i,:);%convert to the number 1 to 16endmapping=-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)/4 qam_data(i,:)=mapping(source(i),:);%data mapping end complex_qam_data=complex(qam_data(:,1),qam_data(:,2);5.2 16QAM的解调函数。function demodu_bit_symble=demoduqam16(Rx_serial_complex_symbols)%将得到的串行16QAM数据解调成二进制比特流complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_complex_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); 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) ; %将离某星座点最近的值赋给decode_symble(i) end decode_bit_symble=de2bi(decode_symble-1),left-msb); demodu_bit_symble=reshape(decode_bit_symble,1,length(Rx_serial_complex_symbols)*4);5.3加窗函数function rcosw=rcoswindow(beta, Ts)%定义升余弦窗,其中beta为滚降系数,Ts为包含循环前缀的OFDM符号的长度,Ts为正偶数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:(1+beta)*Ts+1; rcosw(j-1)=0.5+0.5*cos(t(j)-Ts)*pi/(beta*Ts);endrcosw=rcosw;%变换为列向量5.4 OFDM主程序clear all;close all;carrier_count=200;%子载波数symbols_per_carrier=12;%每子载波含符号数bits_per_symbol=4;%每符号含比特数,16QAM调制IFFT_bin_length=512;%FFT点数PrefixRatio=1/4;%保护间隔与OFDM数据的比例 1/61/4GI=PrefixRatio*IFFT_bin_length ;%每一个OFDM符号添加的循环前缀长度为1/4*IFFT_bin_length 即保护间隔长度为128beta=1/32;%窗函数滚降系数GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度20SNR=15; %信噪比dB%=%=信号产生=baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;%所输入的比特数目carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2);%共轭对称子载波映射 复数数据对应的IFFT点坐标conjugate_carriers = IFFT_bin_length - carriers + 2;%共轭对称子载波映射 共轭复数对应的IFFT点坐标baseband_out=round(rand(1,baseband_out_length);%输出待调制的二进制比特流%=16QAM调制=complex_carrier_matrix=qam16(baseband_out);%列向量complex_carrier_matrix=reshape(complex_carrier_matrix,carrier_count,symbols_per_carrier);%symbols_per_carrier*carrier_count 矩阵figure(1);plot(complex_carrier_matrix,*r);%16QAM调制后星座图title(16QAM调制后星座图)axis(-4, 4, -4, 4);grid on%=IFFT=IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);%添0组成IFFT_bin_length IFFT 运算 IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号 ,子载波映射在此处IFFT_modulation(:,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射%=signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制 即IFFT变换time_wave_matrix =signal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N个子载波映射在其内,每一行即为一个OFDM符号%=%=添加循环前缀与后缀=XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for k=1:symbols_per_carrier; for i=1:IFFT_bin_length; XX(k,i+GI)=signal_after_IFFT(k,i); end for i=1:GI; XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀 end for j=1:GIP; XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀 endendtime_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660%=OFDM符号加窗=windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);for i = 1:symbols_per_carrier windowed_time_wave_matrix_cp(i,:) = real(time_wave_matrix_cp(i,:).*rcoswindow(beta,IFFT_bin_length+GI);%加窗 升余弦窗end %=生成发送信号,并串变换=windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);windowed_Tx_data(1:IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:);for i = 1:symbols_per_carrier-1 ; windowed_Tx_data(IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matrix_cp(i+1,:);%并串转换,循环后缀与循环前缀相叠加end%=Tx_data=reshape(windowed_time_wave_matrix_cp,(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1);%加窗后 循环前缀与后缀不叠加 的串行信号%=temp_time1 = (symbols_per_carrier)*(IFFT_bin_length+GI+GIP);%加窗后 循环前缀与后缀不叠加 发送总位数figure (2)subplot(2,1,1);plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加 发送的信号波形grid onylabel(Amplitude (volts)xlabel(Time (samples)title(循环前后缀不叠加的OFDM Time Signal)temp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP;subplot(2,1,2);plot(0:temp_time2-1,windowed_Tx_data);%循环后缀与循环前缀相叠加 发送信号波形grid onylabel(Amplitude (volts)xlabel(Time (samples)title(循环前后缀叠加的OFDM Time Signal)%=加窗的发送信号频谱=symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号averages = floor(temp_time1/avg_temp_time);average_fft(1:avg_temp_time) = 0;%分成5段for a = 0:(averages-1) subset_ofdm = Tx_data(a*avg_temp_time)+1):(a+1)*avg_temp_time);%利用循环前缀后缀未叠加的串行加窗信号计算频谱 subset_ofdm_f = abs(fft(subset_ofdm);%分段求频谱 average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加endaverage_fft_log = 20*log10(average_fft);figure (3)subplot(2,1,2)plot(0:(avg_temp_time-1)/avg_temp_time, average_fft_log)%归一化 0/avg_temp_time : (avg_temp_time-1)/avg_temp_timehold 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(加窗的发送信号频谱)%=添加噪声=Tx_signal_power = var(windowed_Tx_data);%发送信号功率linear_SNR=10(SNR/10);%线性信噪比 noise_sigma=Tx_signal_power/linear_SNR;noise_scale_factor = sqrt(noise_sigma);%标准差sigmanoise=randn(1,(symbols_per_carrier)*(IFFT_bin_length+GI)+GIP)*noise_scale_factor;%产生正态分布噪声序列Rx_data=windowed_Tx_data +noise;%接收到的信号加噪声%=接收信号 串/并变换 去除前缀与后缀=Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for i=1:symbols_per_carrier; Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换endRx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_length+GI);%去除循环前缀与循环后缀,得到有用信号矩阵%=% OFDM解码 16QAM解码%=FFT变换=Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);%OFDM解码 即FFT变换Rx_carriers=Y1(:,carriers);%除去IFFT/FFT变换添加的0,选出映射的子载波Rx_phase =angle(Rx_carriers);%接收信号的相位Rx_mag = abs(Rx_carriers);%接收信号的幅度figure(4);polar(Rx_phase, Rx_mag,bd);%极坐标坐标下画出接收信号的星座图title(极坐标下的接收信号的星座图)%=M, N=pol2cart(Rx_phase, Rx_mag); Rx_complex_carrier_matrix = complex(M, N);figure(5);plot(Rx_complex_carrier_matrix,*r);%XY坐标接收信号的星座图title(XY坐标接收信号的星座图)axis(-4, 4, -4, 4);grid on%=16qam解调=Rx_serial_complex_symbols=reshape(Rx_complex_carrier_matrix,size(Rx_complex_carrier_matrix, 1)*size(Rx_complex_carrier_matrix,2),1) ;Rx_decoded_binary_symbols=demoduqam16(Rx_serial_complex_symbols);%=baseband_in = Rx_decoded_binary_symbols;figure(6);subplot(2,1,1);stem(baseband_out(1:100);title(输出待调制的二进制比特流)subplot(2,1,2);stem(baseband_in(1:100);title(接收解调后的二进制比特流)%=误码率计算=bit_errors=find(baseband_in =baseband_out);bit_error_count = size(bit_errors, 2) ber=bit_error_count/baseband_out_length5.5实验仿真结果误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国铝蒸饭器行业市场前景预测及投资价值评估分析报告
- 2026广西百色那坡县人民医院人才招聘36人笔试考试参考试题及答案解析
- 2025四川宜宾市屏山县住房和城乡建设局第二次招聘编外聘用人员1人笔试考试备考试题及答案解析
- 2025山东德德州天衢建设发展集团有限公司招聘工作人员20人考试笔试备考题库及答案解析
- 2025恒银期货有限公司校园招聘5人考试笔试备考题库及答案解析
- 2025年甘肃省平凉市灵台县上良镇文化站管理员招聘笔试考试参考试题及答案解析
- 消化内科慢性胃炎症状管理方案
- 麻醉科全麻术前检查流程
- 2026年四川体育职业学院单招职业技能考试题库必考题
- 工程渣土清运合同范本
- 2025年职业道德知识考试题库
- DB37∕T 5302-2024 既有城市桥梁现场检测及承载能力评估技术标准
- 安全生产法培训 课件
- 公司行政部费用管理制度
- 中国麻醉医生
- 快消品公司财务管理制度
- 房建市政安全监管图文口袋书课件
- DB31/T 1333-2021城市供水管网运行安全风险监测技术规范
- 数字普惠金融对农村居民收入增长的影响机制研究
- 12.2.3 趋势图( 分层作业) 七年级数学下册 (人教版2024)
- 中国补习班行业市场发展现状及前景趋势与投资分析研究报告2025-2028版
评论
0/150
提交评论