ofdm_waveform_simplified_diagram_v0.4

来源:互联网 发布:python marionette 编辑:程序博客网 时间:2024/06/06 09:54

2016.07.30 – 07.31
[个人学习/探索笔记 —— 理解OFDM]

基带。信息源,也称发射端,发出的没有经过调制(进行频谱搬移和变换)的原始电信号所固有的频带(频率带宽)。
频带。对基带信号调制后所占用的频率带宽。
带宽。一个信号所占有的从最低的频率到最高的频率之差。
频谱搬移。频谱搬移是指在发射端将调制信号从低频端搬移到高频端, 便于天线发送或实现不同信号源,不同系统的频分复用。

1 OFDM数学描述

在复基带上的在时间段mTut(m+1)Tu上的OFDM信号x(t)可由下式描述:

x(t)=k=0Nc1xk(t)=k=0Nc1a(m)kej2πkΔft

[反正看不懂]

1.1 ej2πkΔft

可将该复指数理解为[2]中提到的随着时间t在复平面做螺旋线运动的波形(复频域),它可作为OFDM中的子载波(共Nc个),每个子载波的频率为kΔf(k为第k个子载波,为子载波的序号, Δf为各子载波的频率间隔)。因为它们具有正交性:

(m+1)TumTuxk1xk2dt=(m+1)TumTuak1ak2ej2π(k1k2)Δftdt=0,fork1k2

[从时域看]
从时域上看,该式子对应的是cos(j2πkΔft)(欧拉公式,毫无我个人理解的根据),周期为Tu,开始于时间0。
这里写图片描述

[从频域看]
时域的子载波相当于其在整个时域与一个周期为Tu、开始于0、幅值为1的矩形波相乘。时域乘法对应于频域卷积:整个时域上的余弦函数的频谱为一个冲激(如cos(t)的频率为1Tu=12π),矩形窗的频谱为sinc函数(sinc(2π)),两者卷积可得每子载波频谱(度婆卷积,然后可用笔算得到:sinc函数频谱搬移到冲激处)。
这里写图片描述

为了看得清楚,不与时域的周期一致,将周期缩小一倍后的子载波频率图如下。
这里写图片描述

[请自动脑补傅里叶变换后得负频率 – 反正我还没脑补过来(唯有用螺旋线逆时针、顺时针旋转自圆其说)]

1.2 a(m)k

a(m)k代表PSK/QAM符号[参考OFDM符号ofdm_signal“1 映射”部分(挑对的看)]。

1.3 叠加

(子)载波:是一个特定频率的无线电波(某段频率内的波),是一种可用于传递(携带/表示)信息的波。
a(m)kej2πkTutPSK/QAM符号携带在第k个子载波上。

k=0Nc1a(m)kej2πkTut
将所有复数信息携带后叠在一起形成OFDM符号。

[解析OFDM符号时,因为各个子载波的正交性,在OFDM符号上乘以一个ej2πkTu,再在OFDM相应周期内积分就可得到第k个子载波上携带的信息a(m)k]。

1.4 总结

[1] 子载波。各子载波正交;各个子载波的频率相差1TuTu为OFDM符号的周期;各子载波的频谱有重叠,但因为子载波的正交性并不会使得子载波间有干扰,所以(载波频率重叠)比起频分复用,能够提高频带利用率。
[2] 子载波上的信息。子载波上的信息为PSK/QAM符号,是一个复数,它是源数据元素的一个映射。

2 OFDM符号的生成与解析

用以下简单的框图描述OFDM符号的生成与解析过程。(相应的经简易化的matlab仿真代码见附4)
这里写图片描述

2.1 generate data source

如生成以下数据:tx_data_source = [1 3 3 3 2 0 3 3]

2.2 generate PSK/QAM symbol

PSK/QAM符号是用来分别表示这些数据元素的一个复数。(参考链接的第一部分)

2.3 generate OFDM symbol

a(m)k,1kNc序列作为ifft的输入就可得到一个子载波数量为Nc的OFDM符号。

除了可参考[1],[3]外(无自己的理解),还可以在matlab中做个小小的证明。当Nc=8且以等间隔1Tu取子载波ej2πkΔft上的样点时,得到的结果跟ifft的变换矩阵(由conj(dftmax(8)求得)一样。这说明ifft首先会等间隔的频率差计算各个子载波的值,然后再将各个复数信号加载(乘)到相应的子载波上,最后求和得到OFDM符号。

2.4 get PSK/QAM symbol

从OFDM符号上提取各个子载波上携带的信息,即在OFDM符号上乘以一个ej2πkΔft再在该OFDM符号所在周期内作定积分就可以得到第k个子载波上的信息。这个过程由的fft变换统一完成。

2.5 get data source

原来的数据经过PSK/QAM映射成为了一个复数,这一步的工作就是根据PSK/QAM符号作映射的逆操作而得到相应的数据。

3 总结

[1] 依旧不懂傅里叶(逆)变换的计算过程。
[2] 一下子就接触OFDM,好陡。

参考

[1] 4G: LTE/LTE-Advanced for Mobile Broadband Second Edition – “CHAPTER 3 OFDM Transmission”
[2] 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
[3] OFDM for Wireless Multimedia Communications - R. van Nee, R. Prasad - Artech House, 2000.pdf [2.2]

[1] 绘制OFDM子载波在时域中的波形

% subcarrier_time_domain.m% 绘制OFDM的Nc个子载波在时域上的波形% 参考资料:4G: LTE/LTE-Advanced for Mobile Broadband Second Edition – \% “CHAPTER 3 OFDM Transmission”,理解e^(j * 2 * pi (k / T)t )对应的时域部分% 最后修改时间2016.07.30clearTu = 2 * pi;    % OFDM周期st = 0.0;       % OFDM符号开始时间sp = 0.01;      % 从OFDM的开始时间到结束时间的步长ed = Tu + st;   % OFDM符号的结束时间t = st : sp : ed; % x轴fn = 0;fn = fn + 1;figure(fn);plot(t, cos(0 * t), t, cos(1 * t), t, cos(2 * t), t, cos(3 * t)); % 子载波Nc = 4grid on;xlabel('t');ylabel('A');title(['N_c = 4, T_u= ', num2str(Tu)]);

[2] 绘制OFDM子载波的频谱波形

% subcarrier_frequency_domain.m% 绘制OFDM子载波的频谱% 首先理解“频谱”的含义% 然后理解OFDM子载波时域波形定长周期中的频谱:% [1] 余弦函数的频谱(率)为一个冲激,定周期的余弦函数相当于在时域乘以一个矩形窗% [2] 矩形窗的频谱为sinc函数(未用fft变换来求,而是直接写出了周期为2pi或pi的矩形窗函数函数的频谱函数sinc(2pi)和sinc(pi))% [3] 时域乘法相当于频域卷积% 最后修改时间2016.07.31clearTu  = pi;           % 2 * pifx  = 3 * Tu;       % 用来显示子载波频谱的频率轴的长度sf  = 0;sp  = 0.01;           % 频率变化的步长f   = sf - fx / 2 : sp : fx / 2; % 自动脑补傅里叶变换后的负频率的出现(请教一个真正懂负频率出现的人)z   = zeros(1, length(f));fn = 0;fn = fn + 1;    % 当要绘制多图时方便计数figure(fn);% 周期为T的矩形窗的频谱函数为sinc(T * x)plot(f, z,f, sinc(Tu * f + 0), f, sinc(Tu * (f - 1 / Tu)), f, sinc(Tu * (f - 2 / Tu)), f, sinc(Tu * (f - 3 / Tu))); %, f, sinc(Tu * (f + 3 / Tu)), f, sinc(Tu * (f + 2 / Tu)), f, sinc(Tu * (f + 1 / Tu)), grid on;xlabel('f');ylabel('A');title(['N_s = 4, T_u= ', num2str(Tu)]);

[3] 子载波抽样值

% subcarrier_sample_value.m% 参考资料:4G: LTE/LTE-Advanced for Mobile Broadband Second Edition –% “CHAPTER 3 OFDM Transmission”% 等间隔计算各个子载波上的离散值% 子载波数Nc = 8,% 取样点Ns = 8,每隔1取一个样点% 最后修改时间:2016.07.30clearNc  = 8;    % 子载波数目Nt  = 8;    % OFDM周期,同时以1为单位在子载波上取样点值ts  = 1;    % 每个子载波开始的时间myifftmtx = zeros(Nc, Nt);for m = 1 : Nc          % 第m个子载波    for t = ts : Nt     % 在周期Nt上以1为单位等间隔取样        myifftmtx(m, t) = exp( (1i * 2 * pi) * ((m - 1) / Nt) * (t - ts));    endendifftmtx = conj(dftmtx(8));% isequal(ifftmtx, myifftmtx) %% 验证子载波取样点是否与对应的ifft矩阵相同(用眼睛看,一一对照两个矩阵中的元素,两个矩阵是相等的;该函数将它们判断为不等,可能是计算精度或其它的原因^_^)

[4] OFDM符号的生成与解析

% ofdm_waveform_diagram.m% @ 仿真ofdm_waveform_diagram_v0.2.viso描述的基本框图% @ 参考资料:[1] 4G: LTE/LTE-Advanced for Mobile Broadband Second Edition – %                   “CHAPTER 3 OFDM Transmission”(3.3)%             [2] OFDM for Wireless Multimedia Communications - R. van Nee,%           R. Prasad - Artech House, 2000.pdf(2.2)%% @ OFDM符号参数:%           为OFDM符号分配的带宽 bw  = 10MHz;%           用于传递信息的子载波数量 Nuc = 600;%           子载波间隔 Delta_f = 15KHz;%% @ 由OFDM符号参数的计算:%           OFDM符号所占带宽 Nuc * Delta_f = 600 * 15KHz = 9MHz%           OFDM符号采样频率:采样频率要等于甚至大于OFDM符号频率,以保证对OFDM符号采样的充分(理解采样频率为单位时间采集的数据量),%           FFT/IFFT点数 Nsp = 1024;如此OFDM的采样频率为Nsp * Delta_f  = 15.36MHz%           % @ 文档:ofdm_waveform_diagram_v0.4.docx;(v0.1 - v0.4)% @ 最后修改时间:2017.07.31clear% -------------------------------- OFDM参数描述 --------------------------------Nuc = 600;  % 用于传递数据的子载波数Nsp = 1024; % 对OFDM符号的采样点,            %([1] 大于等于子载波数量;[2] 最好为2^m,方便fft/ifft运算)% -------------------------------- OFDM参数描述 --------------------------------% -------------------------------- 发送端 --------------------------------% &&&&&&&& generate data source &&&&&&&&nb  = 2;    % nb-比特数n   = Nuc;  % nb-比特数的个数tx_data_source     = generate_data_source( nb, n );% &&&&&&&& generate PSK/QAM symbol &&&&&&&&mod_type    = 'psk'; % 映射源数据元素的方式tx_PSKorQAM_symbol  = generate_PSKorQAM_symbol( mod_type, tx_data_source, nb );% &&&&&&&& generate OFDM symbol(IFFT) &&&&&&&&Nifft    = Nsp;tx_PSKorQAM_symbol_oversample =      ...    [tx_PSKorQAM_symbol(1 : Nuc / 2),...    zeros(1, Nsp - Nuc),             ...    tx_PSKorQAM_symbol(Nuc / 2 + 1 : end)];                         % 过采样,为何将0加在中间,见[2]tx_ofdm_symbol     = ifft(tx_PSKorQAM_symbol_oversample, Nifft);    % 将每个数据加载到每个子载波上% -------------------------------- 发送端 --------------------------------% -------------------------------- 信道 --------------------------------% &&&&&&&& Fading channel &&&&&&&&rx_ofdm_symbol  = tx_ofdm_symbol;   % 理想信道% -------------------------------- 信道 --------------------------------% -------------------------------- 接收端 --------------------------------% &&&&&&&& get PSK/QAM symbol(FFT) &&&&&&&&Nfft    = Nsp;rx_PSKorQAM_symbol_oversample  = fft(rx_ofdm_symbol, Nfft);% &&&&&&&& get data source &&&&&&&&rx_PSKorQAM_symbol  = ...    [rx_PSKorQAM_symbol_oversample(1 : Nuc / 2),...    rx_PSKorQAM_symbol_oversample(end - Nuc / 2 + 1 : end)];  % 去掉过采样数据rx_data_source      = demodulate_PSKorQAM_symbol( rx_PSKorQAM_symbol, mod_type, nb );% -------------------------------- 接收端 --------------------------------% 判断OFDM符号的解析是否成功isequal(tx_data_source, rx_data_source)

[2016.08.01 - 08:49]

0 0
原创粉丝点击