主要内容

均衡 BPSK 信号

使用具有最小均方 (LMS) 算法的线性均衡器均衡 BPSK 信号。

生成随机二进制数据并应用 BPSK 调制。

M = 2;
data = randi([0 1],1000,1);
modData = pskmod(data,M);

对调制信号应用二抽头静态衰落并添加 AWGN 噪声。

rxSig = conv(modData,[0.02+0.5i; 0.05]);
rxSig = awgn(rxSig,30);

创建一个线性均衡器 System object™,配置为使用 LMS 自适应算法、8 个抽头、0.1 步长,并将第 4 个抽头作为参考抽头。将星座图设置为与发射信号的调制匹配。

lineq = comm.LinearEqualizer( ...
    NumTaps=8, ...
    StepSize=0.1, ...
    Constellation=complex([-1 1]), ...
    ReferenceTap=4)
lineq = 
  comm.LinearEqualizer with properties:

                Algorithm: 'LMS'
                  NumTaps: 8
                 StepSize: 0.1000
            Constellation: [-1.0000 + 0.0000i 1.0000 + 0.0000i]
             ReferenceTap: 4
               InputDelay: 0
    InputSamplesPerSymbol: 1
    TrainingFlagInputPort: false
       AdaptAfterTraining: true
     InitialWeightsSource: 'Auto'
       WeightUpdatePeriod: 1

均衡接收信号 rxSig。使用前 200 个数据位作为一个训练序列。显示在均衡前后接收信号的星座图。

trSeq = modData(1:200);
[eqSig,err] = lineq(rxSig,trSeq);

constdiag = comm.ConstellationDiagram( ...
    NumInputPorts=2, ...
    ChannelNames={'Before equalization','After equalization'}, ...
    ReferenceConstellation=pskmod([0 M-1],M));
constdiag(rxSig(400:end),eqSig(400:end))

绘制误差估计的幅值。如误差信号的减小和稳定所示,均衡在不到 200 位内收敛。

plot(abs(err))
title('Error Estimate')
xlabel('Bits')
ylabel('Amplitude (V)')

Figure contains an axes object. The axes object with title Error Estimate, xlabel Bits, ylabel Amplitude (V) contains an object of type line.

另请参阅

主题