Come determinare dove campionare per la demodulazione dei segnali BPSK?


8

Ho un semplice demodulatore BPSK. Molto semplicemente, il segnale arriva e viene diviso in due rami, uno per I e uno per Q.

  1. Il ramo I si mescola con un'onda sin del portatore e il ramo Q si mescola con l'onda del coseno del portatore.
  2. Quindi, ciascuna delle uscite è contorta con un filtro abbinato, (in questo caso un coseno rialzato, che inizialmente ha modellato i miei bit trasmessi).
  3. Ora, se combino entrambe le uscite e prendo la grandezza di entrambe (I ^ 2 + Q ^ 2), ottengo l'inviluppo.
  4. Da qui, cerco picchi e scelgo le loro indicazioni.
  5. Quindi uso quelle stesse indicazioni che ho ottenuto da (4) e campiono I e Q in quelle stesse indicazioni. Ora ho valori softbit complessi e sono in grado di correggere eventuali scostamenti di fase o frequenza e da lì posso prendere decisioni difficili. (Ho il lusso di post elaborazione tra l'altro).

Questa tecnica ha funzionato bene con SNR medio-alto. Il problema è che con SNR inferiore (e forse multipath), non so come eseguire il punto elenco (4). Il problema è che invece di un picco nelle buste corrispondente a un bit, ora ho più picchi e il "picco picking" non funzionerà perché ce ne sono così tanti tra cui scegliere ... come viene mitigato questo problema? Questo sembra essere un collo di bottiglia perché se non riesco a capire dove sia il mio "bit", non posso andare avanti. qualche idea?

Qualsiasi aiuto è apprezzato, la matematica è buona, anche se chiederei che le risposte siano più orientate al pesudo-codice / concetto in anticipo. Grazie!

Modifica: grazie al feedback di Dilip, dovrei anche aggiungere che posso vedere chiaramente "energia" nell'involucro quando c'è un segnale e non c'è un segnale. (vale a dire, prima che arrivasse il mio segnale), quindi questo mi porta a credere che dovrei essere in grado di sincronizzare / decodificare e che non si tratta solo di un problema SNR ...


@DilipSarwate Sì, in questo caso conosco esattamente il mio Tbps. (Quindi sì, il ricevitore conoscerà la spaziatura esatta tra i miei bit) - ma come ottenere quel primo indice di bit? ... A proposito, non sono sicuro di quanto valga la pena, ma posso vedere chiaramente "energia" nella busta quando c'è un segnale e non c'è un segnale - e questo mi porta a credere che il mio SNR non sia così male che non dovrei essere in grado di sincronizzare / decodificare ... (Grazie per le informazioni del tag proverò ad aggiungere altro).
Spacey,

@DilipSarwate Hmm ... Sono d'accordo con te su quella tecnica - ciò di cui non sono chiaro è dove / come adattare la mia finestra da un bit in modo tale che posso quindi eseguire la tecnica di cui stai parlando. Vedi il mio problema? Solo per essere sicuro di averti capito bene: diciamo che ci sono 10 campioni / bit nella busta. Ok, quindi stai dicendo di prendere l'intera busta, suddividerla in 10 pezzi campione e fare una media di tutti quelli insieme per trovare dove dovrebbe essere il picco?
Spacey,

La sincronizzazione può essere un argomento molto complesso. Potresti mettere un numero sui valori di SNR con cui stai testando? Che cosa è "alto", "medio" e "basso"?
Jason R,

@DilipSarwate Ok, stiamo dicendo la stessa cosa. Ora, capisco che su tutta questa media, stiamo scommettendo che possiamo raggiungere l'indice di campionamento ottimale perché viene mediata dal rumore. Ma in presenza di multipath, possiamo contare su tale media per funzionare? Il picco ottimale non "scivolerebbe" nel tempo? Suppongo sia per questo che dovresti ripetere questa tecnica ogni tanto ...
Spacey,

@JasonR Non riesco a ottenere cifre SNR precise in questo momento, ma posso provare a ottenerle presto. (Anche allora, dal momento che non riesco a bloccare i bit, ti piacerebbe una misura basata sull'inviluppo in qualche modo? ...) Per ora, qualitativamente, posso dire che nel mio caso high-SNR, posso vedere chiaramente un picco per intervallo di bit nelle mie buste in modo inequivocabile, ma negli altri miei casi SNR inferiori (e possibilmente con multipath) posso vedere che la busta ha molti picchi durante la durata di un bit. (Detto questo, posso chiaramente discriminare quando il mio segnale inizia a guardare l'inviluppo).
Spacey,

Risposte:


7

Ho fatto qualcosa di simile a questo in MATLAB. Nella mia causa, ho usato un metodo di recupero dell'orologio Early / Late Gate per ottenere una stima dell'offset tra trasmissione e ricezione temporizzazione dei simboli. Questo metodo utilizza 3 campioni per simbolo: uno al tempo di campionamento ottimale, uno con 1 campione ritardato e 1 con un campione avanzato. Questo funziona bene per i segnali di attivazione / disattivazione dei tasti, poiché non esiste una parte negativa del segnale, ma i metodi seguenti credo funzioneranno meglio per i segnali bipolari.

Un altro metodo è l' algoritmo Muller e Mueller , che utilizza 1 campione per simbolo. Questo utilizza l'equazioneen=(yn^yn-1)-(yny^n-1), dove en è l'errore, yn-1 e yn sono i campioni di simboli precedenti e attuali e yn^ e y^n-1sono gli output delle decisioni (-1 o +1 nel tuo caso). M&M richiede che il corriere venga recuperato per primo.

Un terzo algoritmo, che è molto simile a quello sopra, è l' algoritmo di Gardner . In questo algoritmo, il segnale di errore èen=(yn-yn-T)yn-T/2, dove yn-T è il simbolo un esempio nel passato e yn-T/2è mezzo simbolo in passato. Ciò richiede 2 campioni per simbolo, ma non è sensibile al corriere.

Il rilevatore M&M sta osservando i picchi , mentre il metodo Gardner sta osservando il picco e l' attraversamento zero per ottenere stime di temporizzazione.

In tutti i casi, prenderai la stima dell'errore, la inserirai in un filtro loop il cui output viene quindi utilizzato per avanzare o ritardare l'orologio dei simboli per la successiva stima del tempo. Il filtro loop può essere pensato come un filtro passa-basso, un filtro di livellamento o semplicemente come ponderare stime più vecchie meno di quelle più recenti. Il filtro loop controlla a) quanto velocemente convergono i tempi eb) quanto rumore influisce sulle stime.

Un'altra opzione è quella di utilizzare un equalizzatore che rimuoverà quindi il ritardo di temporizzazione dal segnale. Questo può anche aiutare per segnali molto rumorosi, credo.

Ho usato queste risorse per formare questa risposta: http://www.comlab.hut.fi/opetus/333/2004_2005_slides/CarrierTimingRecovery.pdf http://mobiledevdesign.com/tutorials/radio_matched_filtering_timing/

Questo articolo è particolarmente utile: http://rfdesign.com/images/archive/0901Litwin32.pdf Ecco un link al documento originale di Gardner del 1986: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber= 1096561 & tag = 1

Nota In generale questa area è denominata "recupero dati e clock" o "CDR". In particolare abbiamo a che fare con la "sincronizzazione dei simboli". Questi termini dovrebbero aiutarti nella tua ricerca.


Molte grazie! Ho alcune domande di follow-up perché penso che questo stia diventando uno scenario di pollo e uova: per l'inizio della fine - non capisco come posso usare 3 campioni se non riesco a trovare il mio tempo di campionamento ottimale per iniziare ... Ho bisogno di ottimale, in anticipo e tardi - ma come trovare l'ottimale per cominciare? (Solo per essere sicuri che siamo sulla stessa pagina, ci stiamo riferendo qui al campionamento della busta corretto?)
Spacey,

1
Mohammed, per la mia implementazione abbiamo fatto due cose: 1) iniziamo con una sequenza di allenamento di 1 e 0 per aiutare il tracker a bloccarsi e 2) abbiamo fatto un'ipotesi iniziale. La tua ipotesi iniziale può essere completamente ingenua (0 ° campione) oppure potresti correlare con la sequenza di allenamento iniziale per ottenere una stima iniziale.
Gallamina,

inoltre, proseguendo dall'alto, si conosce approssimativamente il numero di campioni / simboli, quindi ogni successiva stima della temporizzazione dei simboli sarà il campione / simbolo +/- il segnale di errore dal filtro del circuito.
Gallamina,

Grazie - Lo proverò e ti farò sapere come va. Per Early-Late, stai parlando della busta anche se corretta? I campioni early-ontime-late sono dell'inviluppo del segnale? (ovvero, busta = I ^ 2 + Q ^ 2). Sono confuso su cosa si riferiscano esattamente a quegli y_n in quegli esempi - si riferiscono alla busta o si riferiscono al solo utilizzo dell'io? O il campione complesso (I + Q)?
Spacey,

Non ne sono del tutto sicuro. Per i metodi M&M e Gardner, vuoi guardare i segnali bipolari. Quindi, per BPSK, non vorrai quadrare il segnale. Per il rilevatore di gate Early / Late, la quadratura del segnale non causerebbe un problema, non credo. Inoltre, in pratica, non correggeresti prima la fase e poi ignoreresti il ​​componente Q per BPSK?
Gallamina,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.