Правильный график символа и смещения доплера

Исправьте символы времени и ошибки смещения частоты при помощи comm.SymbolSynchronizer и comm.CarrierSynchronizer Системные объекты.

Строение

Инициализируйте параметры симуляции.

M = 16;           % Modulation order
nSym = 2000;      % Number of symbols in a packet
sps = 2;          % Samples per symbol
spsFilt = 8;      % Samples per symbol for filters and channel
spsSync = 2;      % Samples per symbol for synchronizers
lenFilt = 10;     % RRC filter length

Создайте соответствующую пару корневых приподнятых Системных объектов фильтра косинуса (RRC) для передатчика и приемника.

txfilter = comm.RaisedCosineTransmitFilter('FilterSpanInSymbols',lenFilt, ...
    'OutputSamplesPerSymbol',spsFilt,'Gain',sqrt(spsFilt));
rxfilter = comm.RaisedCosineReceiveFilter('FilterSpanInSymbols',lenFilt, ...
    'InputSamplesPerSymbol',spsFilt,'DecimationFactor',spsFilt/2,'Gain',sqrt(1/spsFilt));

Создайте системный объект со смещением частоты фазы, чтобы ввести доплеровский сдвиг на 100 Гц.

doppler = comm.PhaseFrequencyOffset('FrequencyOffset',100, ...
    'PhaseOffset',45,'SampleRate',1e6);

Создайте Системный объект переменной задержки, чтобы ввести смещения времени.

varDelay = dsp.VariableFractionalDelay;

Создайте несущую и символьный синхронизатор Системные объекты, чтобы исправить доплеровский сдвиг и смещение по времени, соответственно.

carrierSync = comm.CarrierSynchronizer('SamplesPerSymbol',spsSync);
symbolSync = comm.SymbolSynchronizer( ...
    'TimingErrorDetector','Early-Late (non-data-aided)', ...
    'SamplesPerSymbol',spsSync);

Создайте сигнальное созвездие Системные объекты, чтобы просмотреть результаты.

refConst = qammod(0:M-1,M,'UnitAveragePower',true);
cdReceive = comm.ConstellationDiagram('ReferenceConstellation',refConst, ...
    'SamplesPerSymbol',spsFilt,'Title','Received Signal');
cdDoppler = comm.ConstellationDiagram('ReferenceConstellation',refConst, ...
    'SamplesPerSymbol',spsSync,'Title','Frequency Corrected Signal');
cdTiming = comm.ConstellationDiagram('ReferenceConstellation',refConst, ...
    'SamplesPerSymbol',spsSync,'Title','Frequency and Timing Synchronized Signal');

Основной цикл обработки

Основной цикл обработки:

  • Генерирует случайные символы и применяет QAM модуляцию.

  • Фильтрует модулированный сигнал.

  • Применяет смещения частоты и времени.

  • Передает переданный сигнал через канал AWGN.

  • Фильтрует принятый сигнал.

  • Исправляет доплеровский сдвиг.

  • Исправляет смещение синхронизации.

for k = 1:15
    data = randi([0 M-1],nSym,1);
    modSig = qammod(data,M,'UnitAveragePower',true);         
    txSig = txfilter(modSig);            
    
    txDoppler = doppler(txSig);          
    txDelay = varDelay(txDoppler,k/15);  
    
    rxSig = awgn(txDelay,25);            
    
    rxFiltSig = rxfilter(rxSig);         
    rxCorr = carrierSync(rxFiltSig); 
    rxData = symbolSync(rxCorr);  
end

Визуализация

Постройте график сигнальных созвездий принимаемого сигнала, сигнала с поправкой на частоту и синхронизируемого сигнала частоты и синхронизации. Конкретные точки созвездия не могут быть идентифицированы в принятом сигнале и могут быть только частично идентифицированы в сигнале с коррекцией частоты. Однако синхронизируемый по времени и частоте сигнал выравнивается с ожидаемыми точками созвездия QAM.

cdReceive(rxSig)

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Received Signal contains 2 objects of type line. This object represents Channel 1.

cdDoppler(rxCorr)

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Frequency Corrected Signal contains 2 objects of type line. This object represents Channel 1.

cdTiming(rxData)

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Frequency and Timing Synchronized Signal contains 2 objects of type line. This object represents Channel 1.

См. также

|