Simular el sistema de transmisión de datos binarios en pitón

Como un experimento sencillo, este estudio de caso genera tres señales BPSK forma SRC apretadas. La señal de interés se centra en F = 0, mientras que las señales cocanal - los que son vecinos más cercanos son - en desplazamientos de +/- 1.5 Rsegundo Hz. El nivel de potencia de las señales adyacentes es 0 dB con respecto a la señal deseada.

Video: Modos De Transmisión De Datos

Comprobar el rendimiento con el espectro de potencia, el ojo y gráficos de dispersión

Para caracterizar la señal recibida, ver el espectro de potencia en la entrada del receptor, la trama ojo de la parte real de la salida del filtro adaptado, y un gráfico de dispersión de la envolvente compleja completo de la salida del filtro adaptado. Tenga en cuenta que el filtro adaptado tiene una respuesta de impulso idéntica a la función del transmisor de impulsos de forma.

La trama ojo opera en el nivel de forma de onda, típicamente observando la salida del filtro adaptado mediante la superposición de múltiplos enteros del intervalo de señalización (periodo de bit). El periodo de esta simulación es nortes = 10 muestras.

Para la trama ojo, se utiliza una ventana de 20 muestras. La señal de una transición suave entre +/- 1 niveles de acuerdo con el patrón de bits transmitida. Cuando se superponen las rebanadas de forma de onda contiguos, hay un punto donde una vez por símbolo la forma de onda no está en transición. Aquí es donde se toman las decisiones de símbolos. Fue un 1 o un -1 enviado? El vacío región de transiciones aparece como un ojo abierto.

El gráfico de dispersión recoge las salidas complejas desde el filtro adaptado una vez por período de bits (símbolo). Los lugares ideales de puntos de muestra constituyen lo que se conoce como el constelación de la señal. Los puntos se representan en forma de puntos, para que pueda ver la calidad de los puntos de muestreo que entran en el bloque de decisión Símbolo receptor.

Para BPSK, se puede esperar ver dos grupos de puntos: Un grupo corresponde a las decisiones -1 bits, y el otro grupo corresponde a las decisiones +1 bits. Esta es la naturaleza de la constelación de señales BPSK: racimos en estos grados

Si un error de fase va sin corregir más corriente arriba en el procesamiento de la señal del receptor, la constelación se puede girar con respecto al eje real.

espectro de potencia, de los ojos, y de dispersión gráficos se muestran como una colección de seis subtramas PyLab.

[Ilustración de Mark Wickert, PhD]

Aquí están los comandos abreviado IPython:

en [733]: R, b, Data0 = ssd.BPSK_tx (100000,10,1.5,0, `src`) # 100000 símbolos, Ns = 10, Df = 1,5 * Rb, 0dB Downin [734]: R = ssd.cpx_AWGN (r, 100,10) # EsN0 = 100 dB, Ns = 10In [735]: Pr, f = ssd.psd (r, 2 ** 10, Fs = 10) En [737]: Parcela (f, 10 * log10 (Pr)) En [743]: Z = signal.lfilter (b, 1, r) # b es el SRC filterIn [748]: Ssd.eye_plot (real (z [2000: 6000]), 20) # 20 samp windin [750]: Ssd.scatter_plot (z [2000: 6000], 10,0) En [775]: R, b, Data0 = ssd.BPSK_tx (100000,10,1.5,0, `src`) En [776]: R = ssd.cpx_AWGN (r, 20,10) # EsN0 = 20dB, Ns = 10In [777]: Pr, f = ssd.psd (r, 2 ** 10, Fs = 10) En [778]: Parcela (f, 10 * log10 (Pr)) En [784]: Z = signal.lfilter (b, 1, r) En [785]: Ssd.eye_plot (real (z [2000: 6000]), 20) # 20 samp windin [787]: Ssd.scatter_plot (z [2000: 6000] * exp (1j * pi / 5), 10,0)

Incluso con señales adyacentes en +/- 1,5 Rsegundo, hay poco impacto notable en la trama ojo y gráfico de dispersión. Tenga en cuenta que la tasa de bit se establece en 1,0 por conveniencia. Sí, los grupos deben ser puntitos si los filtros SRC son perfectos y sin ISI se produce. Aún así, el rendimiento es bueno para el embalaje espectro dado.

A medida que la energía por símbolo a densidad espectral de ruido (misegundo / norte0) Se reduce para 100 dB (esencialmente sin ruido) a tan sólo 20 dB, el ruido es notable en la columna de la derecha de parcelas. No hay errores de bits están presentes porque la trama ojo todavía está abierta. El error de fase introducido en el gráfico de dispersión aún no altera el proceso de decisión.

Para BPSK, la frontera de decisión es la y-eje. Los dos grupos se encuentran en lados opuestos.

Busque errores de bit

Se puede implementar el proceso de bits (símbolo) decisión en la línea de comandos IPython y compara los bits resultantes con los bits transmitidos devueltos por ssd.BPSK_tx () para Data0. La salida del filtro adaptado es vector z. Para mover más allá de la demora forma de impulso debido al procesamiento transmisor y el receptor requiere un retardo de bit 2 x 6 = 12, o 10 x 12 = 120 muestras.

Se toma muestras de la salida del filtro adaptado con una paso (Múltiple) de 10 a partir de la apertura máxima de los ojos. El paso de los 10 se usa porque este es el número de muestras por bit, nortes, utilizado en la simulación. Mediante la alineación en la apertura máxima del ojo que está realizando el manual la sincronización de bits.

decisiones de bits se realizan mediante el uso de la parte real y utilizando el firmar() función de declarar 1 para valores mayores que cero y -1 para valores menores que cero. Por último, usted cambia los valores de decisión firme de nuevo a 0/1 valores.

Video: DETECCION DE ERRORES BIT DE PARIDAD CAPT_4 PARTE 12

en [850]: Data0 [doce y veinte] fuera [850]: Array ([1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,1, 0, 0, 0, 1, 0]) En [851]: Int64 ((signo (real (z [120: 320: 10])) + 1) / 2) de salida [851]: Array ([1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,1, 0, 0, 0, 1, 0])

Para los 20 bits comparados, todo está bien! Por XORing (usando el operador Python ^) Recortado versiones de los dos vectores, puede contar con errores de bit y estimar la probabilidad de error de bit, PAGmi, dividiendo por el número total de bits en la comparación. Comprobación de los primeros 10.000 bits de produce el siguiente código:

en [862]: Sum (Data0 [0: 10000] ^ Int64 ((signo (real (z [120: (120 + 10 000 * 10): 10])) + 1) / 2)) / flotador (len (Data0 [0: 10000])) de salida [862]: 0.0 # Pe_est

No hay errores contados, por lo que la probabilidad de error estimado es igual a cero. ¿Estás sorprendido? Para un estudio adicional, disminuir (misegundo / norte0)dB hasta que los errores de bits comienzan a aparecer.

Artículos Relacionados