¿Estoy usando el teorema de Shannon-Hartley y el ruido térmico correctamente aquí?

4

Estoy tratando de aprender sobre el ruido, la sensibilidad y el teorema de Shannon-Hartley , y estoy usando algunas especificaciones para un nodo LoRa IC para probarlo.

El teorema de Shannon-Hartley dice que la tasa de datos máxima \ $ C \ $ está dada por

$$ C = BW \ log_2 \ left (1 + \ frac {S} {N} \ right). $$

Donde \ $ S \ $ y \ $ N \ $ son las potencias de señal y ruido dentro del ancho de banda totalmente utilizado \ $ BW \ $. LoRa ocupa el ancho de banda utilizando un Chirp Spread Spectrum bastante bueno del cual puedes leer más en esta gran respuesta y la pregunta allí también.

El piso fundamental para el ruido en la electrónica analógica de pequeña señal suele ser ruido térmico, y si lo comprendo correctamente, esto se debe a

$$ N \ = \ k_B \ T \ BW. $$

Calculé el límite de Shannon-Hartley para la tasa de datos máxima teórica posible para los diversos valores en la Tabla 12 de la hoja de datos, y en comparación con los bits por segundo realmente implementados a las sensibilidades citadas, me alegró mucho ver que Estoy en el estadio correcto y siguiendo muy bien la tendencia.

El límite de Shannon-Hartley siempre es un factor de 20 a 30 más rápido que la tasa indicada.

Sólo tengo curiosidad; ¿Podría ser esto un margen de seguridad, o una especificación conservadora (¿mantuvieron la sensibilidad para asegurarse de que podrían cumplirlo) o hay un factor que he olvidado?

Pregunta: ¿Estoy utilizando el teorema de Shannon-Hartley y el ruido térmico correctamente aquí?

Como beneficio adicional, ¿alguna idea de si los 14 dB son un margen de seguridad, o si el nivel de ruido en realidad no es térmico?

nota: A estas tasas, la señal está muy por debajo del ruido que también se señala en la hoja de datos.

Tabla 12 de la Rev. 5 - Agosto de 2016 de SX1276 / 77/78 de SEMTECH / 79 Hoja de datos . © 2016 Semtech Corporation www.semtech.com

deflog2(x):returnnp.log(x)/np.log(2.)importnumpyasnpimportmatplotlib.pyplotaspltkB=1.38064852E-23#JoulesK^-1"Boltzman's Constant"
T  = 298.  # about 25C

BW  = np.array(2*[10400] + 2*[20800] + 2*[62500] + 2*[125000], dtype=float)
SF  = np.array(4*[6, 12], dtype=float)
bps = np.array([782, 24, 1562, 49, 4688, 146, 9380, 293], dtype=float)
dBm = np.array([-131, -147, -128, -144, -121, -139, -118, -136], dtype=float)

lines  = np.arange(1, 9)
noise  = kB * T * BW        # Joules K^-1 * K * s^-1 = Watts
signal = 10**(0.1*dBm-3.)   # Watts

Shannon = BW * log2(1. + signal/noise)

plt.figure()

plt.plot(lines, bps,     linewidth=2)
plt.plot(lines, Shannon, linewidth=2)

plt.yscale('log')

lfs, tfs = 16, 16
plt.text(6, 50, 'bps', fontsize=tfs)
plt.text(5, 250000, 'Shannon', fontsize=tfs)
plt.xlabel('line in Table 12', fontsize=lfs)
plt.ylabel('rate (Hz)', fontsize=lfs)

plt.show()
    
pregunta uhoh

1 respuesta

2

Me parece razonable.

No olvide que está calculando el rendimiento TEÓRICO máximo posible para ese canal, suponiendo que en realidad está limitado por el ruido térmico, en VHF y hasta ese no es el caso.

El extremo frontal de la radio en un chipset barato en UHF no tendrá un rendimiento particularmente moderno, y obtener una modulación real y un rendimiento de codificación muy cerca del límite teórico es una gran pregunta y no es probable que sea posible utilizando tal esquema de codificación simple.

En efecto, han intercambiado ancho de banda de información por simplicidad, baja potencia y cierto rechazo de interferencia, no es un mal intercambio por los usos previstos (alguna forma de COFDM tendría una mejor eficiencia de codificación de canal pero necesita amplificadores lineales en el transmisor, por ejemplo, mucho más difícil de hacer).

    
respondido por el Dan Mills

Lea otras preguntas en las etiquetas