Правильные смещения синхронизации и Доплера символа

Правильная синхронизация символа и частота возмещают ошибки при помощи 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)

cdDoppler(rxCorr)

cdTiming(rxData)

Смотрите также

|