Eu tenho um simples demodulador BPSK. Muito simplesmente, o sinal entra e é dividido em dois ramos, um para I e outro para Q.
- O ramo I é misturado com uma onda sin do transportador, e o ramo Q é misturado com a onda cosseno do transportador.
- 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).
- Agora, se eu combinar as duas saídas e calcular a magnitude de ambas (I ^ 2 + Q ^ 2), recebo o envelope.
- A partir daqui, procuro picos e escolho suas indicações.
- 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 ...
Respostas:
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.
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.
fonte