Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

OFDM ed equalizzazione con prefisso ciclico anteposto

Questo esempio antepone un prefisso ciclico ai dati 16-QAM modulati OFDM. Affinché sia efficace per l'equalizzazione, la lunghezza del prefisso ciclico (CP) deve essere uguale o superiore alla lunghezza del canale.

Definire le variabili per le elaborazioni QAM e OFDM. Generare i simboli, eseguire la modulazione QAM, eseguire la modulazione OFDM, quindi aggiungere un CP al segnale. Più simboli OFDM possono essere elaborati contemporaneamente e poi serializzati.

bps = 4;    % Number of bits per symbol 
M = 2^bps;  % Modulation order
nFFT = 128; % Number of FFT bins
nCP = 8;    % CP length

txsymbols = randi([0 M-1],nFFT,1);
txgrid = qammod(txsymbols,M,UnitAveragePower=true);
txout = ifft(txgrid,nFFT);
% To process multiple symbols, vectorize the txout matrix
txout = txout(:);
txcp = txout(nFFT-nCP+1:nFFT);
txout = [txcp; txout];

Filtrare la trasmissione attraverso un canale che aggiunge rumore, dipendenza di frequenza e ritardo al segnale ricevuto.

hchan = [0.4 1 0.4].';
rxin = awgn(txout,40);       % Add noise   
rxin = conv(rxin,hchan);     % Add frequency dependency
channelDelay = dsp.Delay(1); % Could use fractional delay
rxin = channelDelay(rxin);   % Add delay

Aggiungere un offset casuale inferiore alla lunghezza del CP. Un offset impostato su zero modella la sincronizzazione perfetta tra i segnali trasmessi e ricevuti. Qualsiasi offset temporale inferiore alla lunghezza del CP può essere compensato mediante equalizzazione, tramite una fase lineare aggiuntiva.

offset = randi(nCP) - 1; % random offset less than length of CP
% Remove CP and synchronize the received signal
rxsync = rxin(nCP+1+channelDelay.Length-offset:end);
rxgrid = fft(rxsync(1:nFFT),nFFT);

I sistemi pratici richiedono la stima del canale come parte del processo di recupero del segnale. La combinazione dell’OFDM e del CP semplifica l’equalizzazione a uno scalare complesso per ciascun bin di frequenza. Finché la latenza ricade nella lunghezza del CP, la sincronizzazione si ottiene tramite lo stimatore di canale. Qui, un controllo consente di effettuare la sperimentazione disabilitando l’equalizzazione sul front-end del ricevitore. Confrontare il segnale trasmesso con l’uscita del ricevitore.

useEqualizer = true;
if useEqualizer
    hfchan = fft(hchan,nFFT);
    % Linear phase term related to timing offset
    offsetf = exp(-1i * 2*pi*offset * (0:nFFT-1).'/nFFT);
    rxgrideq = rxgrid ./ (hfchan .* offsetf);
else % Without equalization errors occur
    rxgrideq = rxgrid;
end
rxsymbols = qamdemod(rxgrideq,M,UnitAveragePower=true);
if max(txsymbols - rxsymbols) < 1e-8
    disp("Receiver output matches transmitter input.");
else
    disp("Received symbols do not match transmitted symbols.")
end
Receiver output matches transmitter input.

Vedi anche

Funzioni

Argomenti complementari

Siti web esterni