Actualmente estoy trabajando en escribir firmware para el módem en un satélite cúbico para el equipo de satélites de mi universidad. Mi objetivo principal es implementar el enlace ascendente de datos & enlace descendente.
El sistema de RF, completado antes de mi llegada, recibe en la banda de 2 m y transmite en la banda de 70 cm. El sistema de RF toma las señales (IF de 10.7 MHz) y las convierte utilizando un transceptor I-Q en una banda base compleja de IF de cero kHz de 48 kHz, que se transmiten hacia y desde el reino digital a través de un códec de audio estéreo.
El propio DSP se realizará en un microcontrolador PIC32 usando aritmética de punto fijo, y mi tarea es escribir el firmware para él.
Para el canal de datos, solo estaba planeando hacer algo "simple" como BPSK o QPSK ya que tienen un buen rendimiento en condiciones de alto ruido.
Mi pregunta es la siguiente: ¿cuál es la estructura ideal de un transceptor BPSK óptimo y cuál sería la forma más eficiente de hacerlo en SDR?
Sé que tendré que incluir algún tipo de modelado de pulso, como un filtro de coseno elevado a raíz. Por lo que sé, el transmisor BPSK ideal debería tener este aspecto:
- flujo de bits de entrada a 2 kB / s
- Codificación diferencial de bits
- Secuencia de bits diferencial de muestra máxima a 48 kS / sy pase a través del filtro Cosine Raised Raised para el modelado de pulsos.
- Tome la salida del filtro RRC como I (t), y tome Q (t) como cero
- Multiplica por sinusoide complejo para subir unos pocos kHz (también habrá un canal de voz FM y me gustaría mantenerlos bien separados)
- Pase muestras complejas a la salida del códec donde se mezclarán con RF en la cadena de conversión ascendente.
¿Esto parece correcto?
Aunque estoy un poco perdido para el receptor. Por lo que sé, esto es lo que tengo que hacer:
- Recupere y rastree el operador, utilícelo para entrenar el oscilador local.
- Conversión descendente mediante un oscilador sincronizado, que da I (t) y Q (t)
- Suponiendo una sincronización perfecta, I (t) es la señal de mensaje y Q (t) es cero, así que pase I (t) a través de un filtro RRC para eliminar el ruido y el ISI.
- Realice la sincronización del reloj, la decodificación diferencial y la recuperación de datos en I (t)
Estoy un poco confundido sobre cómo realizar mejor la recuperación del operador. Sé de Multiply-Filter-Divide, pero eso significaría que podría necesitar remuestrear la señal dependiendo de su desplazamiento de frecuencia (ya que el aliasing puede ocurrir si el borde exterior de la banda es menor que la mitad de mi ancho de banda superior, o menos de un cuarto en el caso de QPSK).
Sé que los Costas Loops existen, pero no mucho más allá de eso (mi universidad nunca ha sido muy grande en materia práctica y mi libro de texto de comunicaciones básicamente menciona "esto es una cosa"). ¿Sería esta una manera razonable de hacer la recuperación del operador? en SDR?
La sincronización del reloj es otro punto dudoso: ¿cuál es la mejor manera de hacer esto? ¿Preámbulo de código de Barker? 8b / 10b?