¿Funcionará el DSSS basado en software?

1

Estamos implementando un enlace RF de 2.4 GHz usando un chip TI CC2541 ( enlace ) y somos nuevos en el diseño de RF . Queremos un enlace robusto, con poco ancho de banda y baja latencia. Estábamos pensando en utilizar DSSS y GFSK.

Parece que no implementa DSSS basados en hardware. ¿Seguiré obteniendo los mismos beneficios de DSSS si realizo la secuenciación en el software? (es decir, podría transformar 1 => 0011110000101011 y 0 en 0111010000110011 y luego transmitir la secuencia transformada) ¿Seguiré logrando el rechazo de la interferencia? Parece que alguien podría simplemente transmitir 10101010... en mi frecuencia a una potencia más alta y bloquear mi señal antes de que llegue al demodulador. Me parece que la reconstrucción del espectro tiene que ocurrir en una etapa analógica.

¿Puede alguien explicar por qué o por qué no funcionaría el software basado en software? Si no funciona, qué hay de diferente en el sistema basado en hardware. Si lo hace, ¿cuáles son las matemáticas detrás de esto?

    
pregunta DrRobotNinja

1 respuesta

2

No soy un experto en el campo, pero no creo que puedas hacer DSSS en software (con este chip). El desensobrado DSSS requiere los valores analógicos de la portadora recibida, ya que suman y restan linealmente con múltiples estaciones que transmiten simultáneamente. Si no puede acceder al nivel analógico del operador recibido, no puede aplicar los cálculos con la tecla para recuperar sus datos. Incluso si su receptor GFSK se satura en 1 o -1, todavía necesita el valor de nivel medio 0 en la recepción como parte de los datos que se utilizarán con su clave para des-difundirlo. (Como un ejemplo donde se puede hacer , eche un vistazo a Radios definidas por software , estos dispositivos pueden muestrear el espectro de ancho completo y, por lo tanto, tener la señal analógica completa en un forma digital, y puede hacer DSSS; muchos receptores GPS se hacen de esta manera)

En cuanto a alguien que te está transmitiendo y bloqueando, si transmiten una potencia alta en un solo canal que no afectará tu flujo de datos de espectro expandido, pero si transmiten espectro expandido a una potencia más alta, simplemente sumará o restará Con su propio transportista y sus datos pueden ser recuperados.

Si transmiten (a cualquier nivel de potencia) y no tienen su clave PN, el despreader esencialmente los ignorará. Voy a demostrar esto a continuación. Pero si el malo usa la potencia de espectro expandido lo suficientemente alta como para sobrecargar su receptor, entonces probablemente se quedará atascado, y de todos modos no se puede hacer mucho al respecto.

Usemos un ejemplo simple ... tenemos un generador de PN que crea el siguiente flujo de bits: 001111000010101101110100001100 y usamos 6 de estos bits del flujo por 1 bit de datos. Los 6 bits se denominan chips para no confundirlos con bits de datos. Así que 1 bit es 6 chips y la tasa de chips es 6x la velocidad de datos. Usaremos los bits como este: 001111 000010 101101 110100 001100

Para enviar la secuencia de datos = {0,1,1,0,1}, se distribuiría con un XOR de los chips del generador de PN:

0 ⊕ 001111 = 110000  = [ 1  1 -1 -1 -1 -1 ]  ( bit 0 )
1 ⊕ 000010 = 000010  = [-1 -1 -1 -1  1 -1 ]  ( bit 1 )
1 ⊕ 101101 = 101101  = [ 1 -1  1  1 -1  1 ]  ( bit 2 )
0 ⊕ 110100 = 001011  = [-1 -1  1 -1  1  1 ]  ( bit 3 )
1 ⊕ 001100 = 001100  = [-1 -1  1  1 -1 -1 ]  ( bit 4 )

si el malo también transmite una secuencia de propagación de 01010101.... , se enviará así:

[ -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 ... ]

y no importa cómo se alinee con su secuencia, su secuencia puede recuperarse. Su transportista y el transportista del tipo malo agregarán o restarán de forma lineal, los datos se pueden recuperar después de hacer el producto interno y normalizar los valores. Continuando con tu ejemplo:

0: [ 1  1 -1 -1 -1 -1 ]  ( your data bit 0 )
+: [ 1 -1  1 -1  1 -1 ]  ( the bad guy trying to overwrite you )
=: [ 2  0  0 -2  0 -2 ]  ( what your receiver sees )

Si toma lo que ve su receptor y aplica el producto interno con su clave para el bit 0, que es 001111 o [-1 -1 1 1 1 1] , obtendrá esto:

bit 0 = [ 2  0  0 -2  0 -2 ] * [-1 -1  1  1  1  1] = (-2+0+0-2+0-2) = -6 => -1 => 0

Haré el segundo bit con 2 tipos malos que intentan sobrescribirte:

1: [-1 -1 -1 -1  1 -1 ]  ( your data bit 1 )
+: [ 1 -1  1 -1  1 -1 ]  ( the bad guy trying to overwrite you )
+: [-1  1  1 -1 -1  1 ]  ( second bad guy ! ) 
=: [-1 -1  1 -3  1 -1 ]  ( what your receiver sees )

Nuevamente, tome lo que su receptor ve y aplique el producto interno con la clave para el bit 1, que es 000010 , o [-1 -1 -1 -1 1 -1] :

bit 1 = [-1 -1  1 -3  1 -1 ] * [-1 -1 -1 -1  1 -1] = (1+1-1+3+1+1) = 6 => 1 => 1 

Por lo tanto, el bit \ $ 0 \ $ se recupera como \ $ 0 \ $, el bit \ $ 1 \ $ se recupera como \ $ 1 \ $, incluso con los tipos malos que intentan sobrescribir el flujo de datos. Esta es la esencia del DSSS, y dejaré el resto de los datos como un ejercicio. Es bastante inmune a la interferencia. Sin embargo, para que pueda hacer esto en el software, puede ver que necesita tener acceso a los valores analógicos del nivel de la portadora, como [-2, + 3, 0 ...] y no solo los bits.

Este chip solo da acceso al flujo de bits de GFSK demodulado, que no es suficiente información. Como se señala en los comentarios, se puede hacer en el software si tiene acceso a los datos de ancho de banda completo.

    
respondido por el Brian Onn

Lea otras preguntas en las etiquetas