Como determinar onde amostrar para desmodulação de sinais BPSK?

8

Eu tenho um simples demodulador BPSK. Muito simplesmente, o sinal entra e é dividido em dois ramos, um para I e outro para Q.

  1. O ramo I é misturado com uma onda sin do transportador, e o ramo Q é misturado com a onda cosseno do transportador.
  2. Em seguida, cada uma das saídas é convoluída com um filtro correspondente (neste caso, um cosseno com raiz elevada, que inicialmente formava meus bits transmitidos).
  3. Agora, se eu combinar as duas saídas e calcular a magnitude de ambas (I ^ 2 + Q ^ 2), recebo o envelope.
  4. A partir daqui, procuro picos e escolho suas indicações.
  5. Eu então uso as mesmas indicações que obtive de (4) e provo meu I e Q nessas mesmas indicações. Agora, tenho valores complexos de softbits, sou capaz de corrigir qualquer desvio de fase ou de frequência e posso tomar decisões difíceis a partir daí. (Eu tenho o luxo de pós-processamento btw).

Essa técnica funcionou bem com SNR alto a médio. O problema é que, com SNR mais baixo (e talvez com vários caminhos), eu não sei como executar o marcador (4). O problema é que, em vez de um pico nos envelopes correspondente a um bit, agora tenho vários picos, e a "seleção de pico" não funcionará porque há muitos por onde escolher ... como esse problema é mitigado? Isso parece ser um gargalo, porque se eu não posso dizer onde está minha 'parte', não posso avançar. Alguma ideia?

Qualquer ajuda é apreciada, a matemática é boa, apesar de eu pedir que as respostas sejam mais orientadas antecipadamente ao código-conceito / pesudo. Obrigado!

Edit: Graças ao feedback de Dilip, devo acrescentar que posso ver claramente 'energia' no envelope quando há um sinal e não há um sinal. (ou seja, antes de meu sinal chegar), então isso me leva a acreditar que eu deveria poder sincronizar / demod e que não é um problema SNR apenas ...

Spacey
fonte
@DilipSarwate Sim, neste caso, eu sei exatamente meus Tbps. (Então, sim, o receptor saberá o espaçamento exato entre os meus bits) - mas como obter esse primeiro índice de bits? ... BTW, não tenho certeza do que vale, mas posso ver claramente 'energia' no envelope quando houver um sinal e não há sinal - e isso me leva a acreditar que meu SNR não é tão ruim que eu não deveria conseguir sincronizar / demod ... (Obrigado pelas informações da tag, tentarei adicionar mais algumas).
Spacey
@DilipSarwate Hmm ... Eu concordo com você sobre essa técnica - o que não estou claro é onde / como ajustar minha janela de um bit para que eu possa executar a técnica de que você está falando. Você vê o meu problema? Apenas para ter certeza de que o entendi corretamente: digamos que haja 10 amostras / bit no envelope. Ok, você está dizendo: pegue o envelope inteiro, divida-o em 10 pedaços de amostra e calcule a média de todos juntos para descobrir onde deve estar o pico?
Spacey
A sincronização pode ser um tópico muito complexo. Você poderia colocar um número nos valores de SNR com os quais está testando? O que é "alto", "médio" e "baixo"?
Jason R
@DilipSarwate Ok, estamos dizendo a mesma coisa. Agora, entendo que, ao longo de toda essa média, estamos apostando que podemos atingir o índice de amostra ideal, porque ele está sendo calculado pela média do ruído. Mas na presença de caminhos múltiplos, podemos contar com essa média de trabalho? O pico ideal não escorregaria com o tempo? Acho que é por isso que você teria que re-executar esta técnica de vez em quando ...
Spacey
@JasonR Eu não posso obter números precisos de SNR agora, mas posso tentar obtê-los em breve. (Mesmo assim, como não posso bloquear o bit, você gostaria de uma medida baseada no envelope de alguma forma? ...) Por enquanto, qualitativamente, posso dizer que no meu caso de alto SNR, posso ver claramente um pico por intervalo de bits nos meus envelopes sem ambiguidade, mas nos meus outros casos SNR inferiores (e possivelmente com caminhos múltiplos), posso ver que o envelope tem muitos picos durante a duração de um bit. (Dito isto, posso discriminar claramente quando meu sinal começa a olhar para o envelope).
Spacey

Respostas:

7

Eu fiz algo semelhante a isso no MATLAB. Na minha causa, usei um método de recuperação de relógio Early / Late Gate para obter uma estimativa do deslocamento entre o tempo de transmissão e recepção do símbolo. Este método usa 3 amostras por símbolo - uma no momento ideal da amostra, uma com 1 amostra atrasada e 1 com uma amostra avançada. Isso funciona bem para ligar / desligar os sinais de digitação, uma vez que não há uma parte negativa do sinal, mas os métodos abaixo acho que funcionarão melhor para sinais bipolares.

en=(yn^yn1)(yny^n1)enyn1ynyn^y^n1são os resultados da decisão (-1 ou +1 no seu caso). A M&M exige que a transportadora seja recuperada primeiro.

en=(ynynT)ynT/2ynTynT/2

O detector M&M está olhando para os picos , enquanto o método Gardner está olhando para o pico e a passagem zero para obter estimativas de tempo.

Em todos os casos, você fará a estimativa de erro, alimentará em um filtro de loop cuja saída será usada para avançar ou retardar o relógio de símbolo para a próxima estimativa de tempo. O filtro de loop pode ser considerado como um filtro passa-baixo, um filtro de suavização ou simplesmente como ponderar estimativas mais antigas que as mais recentes. O filtro de loop controla a) a velocidade com que o tempo converge eb) a quantidade de ruído que afeta as estimativas.

Outra opção é usar um equalizador que removerá o atraso de temporização do sinal. Isso também pode ajudar com sinais muito barulhentos, acredito.

Usei esses recursos para formar esta resposta: http://www.comlab.hut.fi/opetus/333/2004_2005_slides/CarrierTimingRecovery.pdf http://mobiledevdesign.com/tutorials/radio_matched_filtering_timing/

Este artigo é especialmente útil: http://rfdesign.com/images/archive/0901Litwin32.pdf Aqui está um link para o artigo original de Gardner de 1986: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber= 1096561 & tag = 1

Nota Geralmente, essa área é chamada de "recuperação de relógio e dados" ou "CDR". Especificamente, estamos lidando com "sincronização de símbolos". Esses termos devem ajudá-lo em sua pesquisa.

galamina
fonte
Muito obrigado! Eu tenho algumas perguntas de acompanhamento porque acho que isso está se tornando um cenário de galinha e ovo: para quem está atrasado - não entendo como posso usar 3 amostras, se não consigo encontrar meu tempo de amostragem ideal ... e tarde - mas como encontrar o ideal para começar? (Só para ter certeza de que estamos na mesma página, estamos nos referindo aqui para provar o envelope correto?)
Spacey
11
Mohammed, para minha implementação, fizemos duas coisas: 1) começamos com uma sequência de treinamento de 1 e 0 para ajudar o rastreador a travar e 2) fizemos um palpite inicial. Seu palpite inicial pode ser completamente ingênuo (0ª amostra) ou, você pode se correlacionar com a sequência de treinamento inicial para obter uma estimativa inicial.
gallamine
Além disso, continuando de cima, você sabe aproximadamente o número de amostras / símbolo, portanto, cada estimativa de tempo do símbolo subsequente será a amostra / símbolo +/- o sinal de erro do filtro de loop.
gallamine
Obrigado - vou tentar isso e informá-lo como vai. Para Early-Late, você está falando sobre o envelope, apesar de correto? As amostras de início precoce e tardio são do envelope do sinal? (ou seja, envelope = I ^ 2 + Q ^ 2). Estou confuso quanto ao que exatamente esses y_n estão se referindo nesse exemplo - eles estão se referindo ao envelope ou estão se referindo apenas ao uso do I? Ou a amostra complexa (I + Q)?
Spacey
Não tenho muita certeza. Para os métodos M&M e Gardner, você deseja observar os sinais bipolares. Portanto, para o BPSK, você não gostaria de ajustar o sinal. Para o detector de portões Early / Late, o quadrado do sinal não causaria um problema, eu não acho. Além disso, na prática, você não corrige a fase primeiro e depois ignora o componente Q do BPSK?
gallamine