1、5串并转换。将一路高速数据转换成多路低速数据6IFFT。2 , 110 , 142 .输出的复数对上一步得到的相同分量和正交分量按照(Ich+Qch*i)进行 IFFT 运算。并将得到的复数的实部作为新的 Ich,虚部作为新的 Qch。在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。 由于 OFDM 信号的带宽为 B=Nf, 信号必须以t=1/B=1/(Nf)的时间间隔进行采样。 采样后的信号用 sn,i表示, i = 0, 1, , N-1,则有sn,i= 1 N -1 Sk =0n,ke j2 ik / N从该式可以看出,它是
2、一个严格的离散反傅立叶变换(IDFT)的表达式。IDFT 可以采用快速反傅立叶变换(IFFT)来实现7加入保护间隔。由IFFT 运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G长度的数据加到头部,构成循环前缀。如果加入空的间隔,在多径传播的影响下,会造成载波间干扰 ICI。保护见个的长度 G 应该大于多径时的扩张的最大值。保护时间 FFT积分时间OFDM符号周期图 1-2 多径情况下,空闲保护间隔在子载波间造成的干扰8加窗图 1-3 保护间隔的插入过程加窗是为了降低系统的 PAPR,滚降系数为 1/32。通过这种方法,可以显著地改善 OFDM通信系统高的 PAPR 分布,
3、大大降低了峰值信号出现的概率以及对功率放大器的要求,节约成本。经常被采用的窗函数是升余弦窗w(t )0.5 + 0.5cos( + t ( Ts )=1.00 t Ts Ts t Ts0.5 + 0.5cos(t - Ts ) ( Ts )Ts t (1 + )Ts(1-2)图 1-9 经过加窗处理后的 OFDM 符号示意图9通过信道。信道分为多径实验信道和高斯白噪声信道。多径时延信道直射波河延迟波对于标准时间按照固定比率递减,因此多径时延信道参数为比率和对大延迟时间。10同步。同步是决定 OFDM 系统高性能十分重要的方面,实际 OFDM 系统都有同步过称。主要同步方法有使用导频,循环前缀,
4、忙算法三种。研究目的为同步的可以详细实现本步,基本的方针可以略过此步,假设接收端已经于发射端同步。11去掉保护间隔。根据同步得到的数据,分别见给每个符号的同相分量和正交分量开头的保护间隔去掉。12并串转换。将每个符号分布在子信道上的数据,还原为一路串行数据。13FFT。对每个符号的同相分量和正交分量按照(Ich+Qch*i)进行 FFT 运算。并将得到的实部作为新的 Ich,虚部作为新的 Qch。与发端相类似,上述相关运算可以通过离散傅立叶变换(DFT)或快速傅立叶变换(FFT) 来实现, 即:Rn,k 1 N -1n,ii=0e- j2ik / N14子载波解调FFT 后的同相粉脸感和正交分
5、量两组数据在星座图上对饮高的点,由于噪声和信道的影响,不再是严格的发送端的星座图。将得到的星座图上的点按照最近原则判决为原星座图上的点,并按映射规则还原为一组数据。15解码解交织。按照编码交织对应解码,解交织的方法,还原为原始数据,并进行纠错处理。16计算误码率。比较第 2 步产生的数据和接收到的数据,计算误码率 BER17统计误码率使用 for 循环,将 SNR 从 0dB 到 30dB 逐五变化,运行主函数,统计误码率,画出误码率曲线。四、仿真结果及结论16QAM下 下 下 下 下 下4321-1-2-3-4-4 -3 -2 -1 0 1 2 3 4下 下 下 下 下 下 下 下 下 OF
6、DM Time SignalAmplitude (volts)0.5-0.50 1000 2000 3000 4000 5000 6000 7000 8000Time (samples)下 下 下 下 下 下 下 下 OFDM Time Signal-0.50 1000 2000 3000 4000 5000 6000 7000 8000下 下 下 下 下 下 下 下 下2010-10-20-30-400 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5Normalized Frequency (0.5 = fs/2)下 下 下 下 下 下 下 下 下
7、下 下 下 下180 0270XY下 下 下 下 下 下 下 下 下 下-4 -3 -2 -10 1 2 3 4下 下 下 下 下 下 下 下 下 下 下 下0 10 20 30 40 50 60 70 80 90 10000 10 20 30 40 50 60 70 80 90 100100Rayleigh fading10-110-210-30 5 10 15SNR1该函数基本能实现本次实验的要求,概括了 OFDM 主要的实现过程,能画出每一个步骤的图像,更具体形象地反应了 OFDM 的过程。同时也能统计并绘制出在不同信噪比情况下的误码率曲线。五、总结与体会本程序没有添加信道估计部分,与峰
8、均值仿真,如果添加了将更加完善对 OFDM 的研究。且通过本次仿真实验,让我更加清楚地明白了 OFDM 调制技术的过程与其优缺点。OFDM 技术的优点主要有:(1)OFDM 调制方式适用于多径和衰落信道中的高速数据传输。当信道因为多径的影响出现频率选择性衰落时,只有落在频率凹陷处的载波及其携带的信息受到影响,其它子载波未受损害;。(2)在 OFDM 调制方式中,通过插入保护间隔,可以很好地克服符号间干扰(ISI)和载波间干扰(ICI)(3)由于 OFDM 各子载波相互正交,允许各子载波有 1/2 重叠,因此可以大大提高频谱利用率:(4)由于深度衰落而丢失的一些子载波可通过编码、交织等措施来很好
9、的恢复,提高系统抗误码性能,且通过各子载波的联合编码,具有很强的抗衰落能力;(5)OFDM 技术抗脉冲及窄带干扰的能力很强,因为这些干扰仅仅影响到很小一部分的子信道;(6)与单载波系统相比,对采样定时偏移不敏感。OFDM 技术的缺点主要有:(1)由于要求各子载波正交,所以对频率偏移和相位噪声很敏感;(2)由于各子载波相互独立,峰值功率与均值功率比相对较大,且随子载波数目的增加而增加。高峰均比信号通过功放时,为了避免信号的非线性失真和带外频谱再生,功放需要具有较大的线性范围,导致射频放大器的功率效率降低。六、主要仿真代码clear all;close all;carrier_count=200;
10、%子载波数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);%循环后缀的长度 20 SNR=15; %信噪比 d
11、B%=%=信号产生=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=rou
12、nd(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_ca rrier*carrier_count 矩阵figure(1);plot(complex_carrier_matrix,*r);%16QAM 调制后星座图title(16QAM 调制后星
13、座图)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
14、(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)
15、;endGI;XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀for j=1:GIP;XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀time_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:
16、symbols_per_carrierwindowed_time_wave_matrix_cp(i,:) =real(time_wave_matrix_cp(i,:).*rcoswindow(beta,IFFT_bin_length+GI)%加窗 升余弦窗%=生 成 发 送 信 号 , 并 串 变 换=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,:s
17、ymbols_per_carrier-1 ;windowed_Tx_data(IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matri x_cp(i+1,:%并串转换,循环后缀与循环前缀相叠加%=Tx_data=reshape(windowed_time_wave_matrix_cp,(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)%加窗后 循环前缀与后缀不叠加 的串行信号temp_time1 = (symbols_per_carrier)*
18、(IFFT_bin_length+GI+GIP);%加窗后 循环前缀与后缀不叠加 发送总位数figure (2) subplot(2,1,1);plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加 发送的信号波形ylabel(Amplitude (volts) xlabel(Time (samples)title(循环前后缀不叠加的 OFDM Time Signaltemp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP; subplot(2,1,2);temp_time2-1,windowed_Tx_dat
19、a);%循环后缀与循环前缀相叠加 发送信号波形循环前后缀叠加的 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:(ave
20、rages-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
21、_time-1)/avg_temp_time, average_fft_log)%归一化 0/avg_temp_time : (avg_temp_time- 1)/avg_temp_timehold on1/IFFT_bin_length:1, -35, rd) grid onaxis(0 0.5 -40 max(average_fft_log) ylabel(Magnitude (dB)Normalized Frequency (0.5 = fs/2) title(加窗的发送信号频谱%=添加噪声=Tx_signal_power = var(windowed_Tx_data);%发送信号功率l
22、inear_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=
23、zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP); for i=1:Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换Rx_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(极坐标下的接收信号的星座图%=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1