主要内容

基于循环前缀的OFDM及均衡

本例在ofdm调制的16-QAM数据前加上一个循环前缀。为了有效地实现均衡,循环前缀(CP)长度必须等于或超过信道长度。

定义QAM和OFDM处理的变量。生成符号,qam调制,ofdm调制,然后给信号加一个CP。可以同时处理多个OFDM符号,然后序列化。

BPS = 4;%每个符号的比特数M = 2^bps;调制阶数nFFT = 128;% FFT箱数nCP = 8;% CP长度txsymbols = randi([0 M-1],nFFT,1);txgrid = qammod(txsymbols,M,UnitAveragePower=true);txout = ifft(txgrid,nFFT);要处理多个符号,请向量化txout矩阵Txout = Txout (:);txcp = txout(nFFT- ncp +1:nFFT);Txout = [txcp;txout];

通过添加噪声、频率依赖性和接收信号延迟的信道对传输进行过滤。

Hchan = [0.4 1 0.4].';Rxin = awgn(txout,40);%添加噪音Rxin = conv(Rxin,hchan);添加频率依赖性channelDelay = dsp.Delay(1);%可以使用分数延迟rxin = channelDelay(rxin);%添加延迟

添加一个小于CP长度的随机偏移量。零的偏移量设置使发射和接收信号完美同步。任何小于CP长度的定时偏移都可以通过一个额外的线性相位进行均衡来补偿。

offset = randi(nCP) - 1;%随机偏移量小于CP长度删除CP并同步接收的信号rxsync = rxin(nCP+1+channelDelay.Length-offset:end);rxgrid = fft(rxsync(1:nFFT),nFFT);

实际系统需要信道估计作为信号恢复过程的一部分。OFDM和CP的组合将均衡简化为每个频率仓的复杂标量。只要延迟在CP的长度之内,同步就由信道估计器完成。这里的一个控件允许您通过禁用接收机前端的均衡来进行实验。将发射信号与接收机输出进行比较。

useEqualizer =真正的如果useEqualizer hfchan = fft(hchan,nFFT);与定时偏置有关的线性相位项offset = exp(-1i * 2*pi*offset * (0:nFFT-1).'/nFFT);Rxgrideq = rxgrid ./ (hfchan .* offsetf);其他的%没有均衡错误发生Rxgrideq = rxgrid;结束rxsymbols = qamdemod(rxgrideq,M,UnitAveragePower=true);如果Max (txsymbols - rxsymbols) < 1e-8 disp(“接收器输出匹配发射器输入。”);其他的disp (“接收到的符号与发送的符号不匹配。”结束
接收机输出与发射机输入匹配。

另请参阅

功能

相关的话题

外部网站