Pregunta

Estoy tratando de simular la PHY IEEE 802.15.4 / ZigBee, ...

   chip_values = [
   1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0;
   1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0;
   0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0;
   0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1;
   0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,1;
   0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0;
   1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,0,1;
   1,0,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,1,0,1;
   1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1;
   1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1;
   0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1;
   0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0;
   0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,0;
   0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0,1,0,0,1;
   1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,0;
   1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0];

   tx = [];
   values = randsrc(1,1,[0:15]);
   for k=1:length(values)
    sym = values(k);
    tx = [tx chip_values((sym+1),1:end)];
   end;

   tx = tx.';
   h = modem.oqpskmod;
   y = modulate(h, tx);
   g = modem.oqpskdemod(h);
   z = demodulate(g, y);
   length(z)
   for k=1:length(tx)
    if(tx(k)~=z(k))
     fprintf('%d %d\n',tx(k),z(k)); 
    end;
   end;

mi pregunta es en este caso simple de por qué mi tx y Z no contienen los mismos valores eventhough yo no genere ningún ruido todavía? gracias!

valores de tx se presenta como sigue:

las columnas 1 a 13

 0     1     1     0     0     0     0     0     0     1     1     1     0

Columnas 14 a 26

 1     1     1     1     0     1     1     1     0     0     0     1     1

Columnas 27 a 32

 0     0     1     0     0     1

valores de la z viene como sigue:

las columnas 1 a 13

 3     0     1     1     0     0     0     0     0     0     1     1     1

Columnas 14 a 26

 0     1     1     1     1     0     1     1     1     0     0     0     1

Columnas 27 a 32

 1     0     0     1     0     0


  h =

         Type: 'OQPSK Modulator'
            M: 4
  PhaseOffset: 0
Constellation: [1x4 double]
  SymbolOrder: 'Binary'
SymbolMapping: [0 1 2 3]
    InputType: 'Integer'

  g =

         Type: 'OQPSK Demodulator'
            M: 4
  PhaseOffset: 0
Constellation: [1x4 double]
  SymbolOrder: 'Binary'
SymbolMapping: [0 1 2 3]
   OutputType: 'Integer'
 DecisionType: 'Hard decision'
¿Fue útil?

Solución

Es difícil para mí decir ya que no ha instalado la caja de herramientas de comunicación, pero yo sugeriría probar esto con una entrada simple como se da en los ejemplos en la documentación. Uso

tx = randint(10,1,8) 

por ejemplo. A continuación, busque en la salida en lugar de comparar. Son las diferencias en o cerca de precisión de la máquina? Usted no nos dice lo que está impreso (que se pongan en venta o no?). Trate de tomar la diferencia entre TX y z. ¿Está cerca de EPS (2.2204e-016 para mí)?

¿Hay un cambio entre los datos que entran y salen de los datos? Díganos lo que está pasando con los datos.

Actualizar

Me alegro de que usted fijó que la entrada y salida real. Parece que Z se desplaza de la derecha (y tiene un 3 al principio por alguna razón) lo que significa que pierde el último bit. En cuanto a la Matlab documentación , hay una nota que dice

  

demoduladores OQPSK tienen un símbolo 1   demora.

Creo que eso explica el problema. Básicamente, simplemente almohadilla extra 0 al final de la entrada al modulador, despegar el primer elemento de la salida del demodulador, y que está en el negocio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top