Comunicação sem fio Estudo de Caso: A transmissão de dados binários
Como um experimento simples, este estudo de caso gera três sinais BPSK em forma SRC hermeticamente embalados. O sinal de interesse está centrado na f
Menu
Verifique o desempenho com o espectro de potência, olho, e gráficos de dispersão
Para caracterizar o sinal recebido, ver o espectro de potência na entrada do receptor, o enredo olho da parte real da saída do filtro casado, e um gráfico de dispersão do envelope complexo completa na saída do filtro casado. Tenha em atenção que o filtro emparelhado tem resposta de impulso idênticos para a função de forma do impulso do transmissor.
A trama olho opera a nível da forma de onda, tipicamente observando a saída do filtro adaptado sobrepondo múltiplos inteiros do intervalo de sinalização (período de bit). O período nesta simulação é Ns = 10 amostras.
Para o enredo olho, uma janela de 20 amostra é utilizada. O sinal suavemente transições entre +/- 1 níveis de acordo com o padrão de bits transmitidos. Quando fatias de forma de onda contíguos são sobrepostas, há um ponto de uma vez por símbolo, onde a forma de onda não está em transição. Este é o lugar onde as decisões são feitas símbolo. Foi um +1 ou -1 enviados? O vazio região de transições aparece como um olho aberto.
O gráfico de dispersão recolhe as saídas complexas do filtro casado uma vez por período de bit (símbolo). Os locais ideais ponto de amostragem constituem o que é conhecido como o constelação de sinal.Os pontos são representados como pontos, assim você pode ver a qualidade dos pontos de amostragem que entram no receptor Símbolo bloco de decisão.
Para BPSK, você pode esperar para ver dois conjuntos de pontos: Um conjunto corresponde às decisões -1 bits e o outro cluster corresponde às decisões +1 bits. Esta é a natureza da constelação de sinal BPSK: aglomerados nestes graus
Se um erro de fase não é corrigido mais a montante no processamento de sinal do receptor, a constelação vai ser rodado em relação ao eixo real.
espectro de potência, de olho, e de dispersão parcelas são mostrados como uma coleção de seis subtramas Pylab.
Aqui estão os comandos abreviados IPython:
Dentro [733]: R, b, DATA0 = ssd.BPSK_tx (100000,10,1.5,0, 'src') # 100000 símbolos, NS = 10, Df = 1.5 * Rb, 0dB od [734]: R = ssd.cpx_AWGN (r, 100,10) # EsN0 = 100dB, Ns = 10Em [735]: Pr, F = ssd.psd (r, 2 ** 10, Fs = 10) [737]: Plot (f, 10 * log10 (Pr)) em [743]: Z = signal.lfilter (b, 1, r) # b é o SRC filterIn [748]: Ssd.eye_plot (real (z [2000: 6000]), 20) # 20 SAMP windIn [750]: Ssd.scatter_plot (z [2000: 6000], 10,0) Em [775]: R, b, DATA0 = ssd.BPSK_tx (100000,10,1.5,0, 'src') Em [776]: R = ssd.cpx_AWGN (r, 20,10) # EsN0 = 20dB, Ns = 10Em [777]: Pr, F = ssd.psd (r, 2 ** 10, Fs = 10) [778]: Plot (f, 10 * log10 (Pr)) em [784]: Z = signal.lfilter (b, 1, r) Em [785]: Ssd.eye_plot (real (z [2000: 6000]), 20) # 20 SAMP windIn [787]: Ssd.scatter_plot (z [2000: 6000] * exp (1-J * pi / 5), 10,0)
Mesmo com sinais adjacentes a +/- 1,5 Rb, há pouco impacto notável na trama olho e gráfico de dispersão. Note-se que a taxa de bit é ajustado para 1,0 por conveniência. Sim, os clusters deve ser pontinhos se os filtros SRC são perfeitos e sem ISI ocorre. Ainda assim, o desempenho é bom para o dado de embalagem espectro.
Como a energia por símbolo de ruído densidade espectral (Eb / N0) É reduzido para 100 dB (essencialmente sem ruído) para apenas 20 dB, o ruído é perceptível na coluna da direita de parcelas. Não há erros de bits estão presentes porque o enredo olho ainda está aberta. O erro de fase adicionado ao gráfico de dispersão ainda não altera o processo de decisão.
Para BPSK, o limite de decisão é a y-eixo. Os dois grupos se encontram em lados opostos.
Procure por erros de bits
Você pode implementar o processo de bits (símbolo), a decisão na linha de comando IPython e comparar os bits resultantes com os bits transmitidos retornados por ssd.BPSK_tx () para DATA0. A saída do filtro combinado é vetor z. Para ultrapassar o atraso forma de pulso devido ao processamento de transmissor e receptor requer um atraso bit 2 x 6 = 12, ou 10 x 12 = 120 amostras.
Você recolher amostras de saída do filtro combinado com um caminhar (Múltiplo), de 10 a começar no máximo de abertura dos olhos. O passo de 10 é utilizado porque este é o número de amostras por bit, Ns, usado na simulação. Ao alinhar no máximo de abertura do olho que você está executando o manual A sincronização de bits.
decisões bits são feitas usando a parte real e, em seguida, usando o placa() função de declarar uma para valores maiores do que zero e -1 para valores inferiores a zero. Finalmente, você muda os valores decisão difícil volta para 0/1 valores.
Dentro [850]: DATA0 [00:20] Out [850]: Matriz ([1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,1, 0, 0, 0, 1, 0]) Em [851]: Int64 ((sinal (real (z [120: 320: 10])) + 1) / 2) Out [851]: Matriz ([1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,1, 0, 0, 0, 1, 0])
Para os 20 bits em comparação, está tudo bem! Por XORing (usando o operador Python ^) Aparado versões dos dois vetores, você pode contar erros de bits e estimar a probabilidade de erro de bit, Pe, dividindo-se pelo número total de bits na comparação. Verificando as primeiras 10.000 pedaços produz o seguinte código:
Dentro [862]: Soma (DATA0 [0: 10000] ^ int64 ((sinal (real (z [120: (120 + 10000 * 10): 10])) + 1) / 2)) / float (len (DATA0 [0: 10000])) out [862]: 0,0 # Pe_est
Sem erros contadas, então a estimativa de probabilidade de erro de bit é zero. Você está surpreso? Para um estudo mais aprofundado, diminuir (Eb / N0)dB até erros de bits começam a aparecer.