demodulación FSK utilizando DSP

1

Específicamente hablando, necesito demodular una señal FSK de baja frecuencia (entre 120 y 140 kHz). Ya tengo un circuito de antena que recibe la señal y ya puedo muestrearla, pero aún tengo dudas de cómo podría ser la mejor manera, más rápida y confiable, de procesar la señal.

Básicamente, estoy usando un comparador con interrupción para contar el número de ciclos del operador y un temporizador para medir el tiempo entre un número predeterminado de ciclos. Dependiendo del tiempo para contar el número predeterminado de ciclos, se decodifica como cero o uno.

Esto no está funcionando muy bien, funciona, pero también se pierde mucho, así que me estaba preguntando una forma alternativa.

Para aquellos que quieran saberlo, estoy usando un dsPIC33EP64MC202.

Aquí hay dos figuras que ilustran mi situación:

Por favor, si alguien tiene alguna idea, lo apreciaría mucho. Con mis mejores deseos, Daniel.

    
pregunta Daniel

3 respuestas

4

Un enfoque muy simple pero elegante para demodular FSK es retrasar y multiplicar. (Seguido de un simple filtro de paso bajo). Este es un detector de FM no coherente que utiliza el principio de que la salida de un multiplicador es proporcional a la fase de las dos entradas. Una compuerta XOR puede usarse como un multiplicador de este tipo. Por sí solo, un multiplicador o compuerta XOR es un detector de fase, dado lo que describí, pero si ambas entradas provienen de la misma fuente, mientras que una pasa a través de un retardo fijo en relación con la otra, el resultado será una fase que es proporcional a la frecuencia de entrada y, por lo tanto, la combinación es un discriminador de frecuencia.

Esto puede ser más fácil de ver / entender con mis fotos a continuación.

Primero, un multiplicador seguido de un filtro de paso bajo es un detector de fase. Si multiplica dos señales, la salida será la suma y la diferencia de la fase y la frecuencia de las dos entradas. Después del filtro de paso bajo, solo se obtiene la diferencia. Si las dos entradas están en la misma frecuencia, la salida dependerá de la diferencia de fase de la entrada. Para un multiplicador (mezclador) la función es \ $ V_ {out} = \ cos (\ phi) \ $, por lo que forma un detector de fase lineal en el cruce de 90 °. Con una compuerta XOR, esta función es una rampa, por lo que es lineal en el rango de 0 a \ $ \ pi \ $ en ese caso. El uso de una compuerta XOR como tal es realmente "analógico", por lo que para una implementación digital completa, me atendría al concepto de simplemente multiplicar las dos señales.

Acontinuación,parautilizarestedetectordefasecomoundiscriminadordefrecuencia,introducimosunretardofijo.Unretardofijotieneunafasenegativaencomparaciónconlafrecuenciaqueaumentalinealmente,yporlotanto,comosemuestra,conviertelafrecuenciaenfase,antesdeaplicarlamismaseñalalmultiplicador.

Para el caso de FSK, un valor de retardo óptimo es el que hace que los dos símbolos de FSK F1 y F2 se coloquen como se muestra en el diagrama anterior, por lo que los valores que corresponderían a un cambio de fase de 0 ° y 180 ° para la frecuencia portadora en uso en la entrada al demodulador.

Tenga en cuenta que esto es simple (ya menudo se debe a su simplicidad) pero tendrá peores aproximaciones de desmodulación de SNR a coherente, como el enfoque de PLL previamente respondido (no más de 3 dB peor). Está claro cómo es este el caso, ya que el ruido en ambas entradas del multiplicador no estará correlacionado debido al retraso (sobre una esquina igual a 1 / T donde T es el retraso) y, por lo tanto, se agregará en relación con la señal.

También he visto equivalentes analógicos a este demodulador donde el elemento de retardo está formado por un tanque paralelo de LC a tierra seguido de un pequeño capacitor (para introducir un cambio de 90 ° para centrar el discriminador). El tanque tiene una fase de 0 grados en la resonancia, pero una fase alta frente a la pendiente de frecuencia correspondiente al retardo deseado. Esta señal retardada se multiplica con la señal original, y el resultado se filtra en paso bajo para ser la señal demodulada de FM.

    
respondido por el Dan Boschen
2

Hay muchos enfoques para decodificar FSK. La detección de cruce por cero será bastante sensible al ruido.

A estas bajas tasas, no tiene que preocuparse. Cada milkcan en estos días tiene suficiente poder de cómputo para hacer eso.

Simplemente puede tener un filtro para cada una de sus frecuencias de símbolos FSK, y pasar a través de su señal de recepción, luego tener una conversión de valor a magnitud² y una decisión decisiva basada en el máximo. Esto se presta incluso mejor para sistemas con una forma de pulso bien definida, donde básicamente puede aplicar un filtro coincidente.

Otro enfoque se basa en calcular el ángulo de cada muestra (suponiendo que se trata de una señal compleja) y luego calcular la velocidad angular (frecuencia conocida) a partir de muestras sucesivas, pase esto por debajo y obtenga su flujo de datos.

Similar al enfoque de filtrado, puede empujar sus señales a través de un DFT, y decidir basándose en eso. Por supuesto, hay todo un mundo de estimadores de frecuencia basados en autocorrelación, pero supongo que eso dejaría el alcance de su pregunta.

    
respondido por el Marcus Müller
0

La elección de la solución a menudo depende de la calidad SNR de la señal y del uso de un detector lineal con toda la energía de la señal y no solo los cruces por cero para mezclarse con un VCO de seguimiento para recuperar la modulación de banda base. Por supuesto, también depende de las herramientas, habilidades y hardware con los que tenga que comenzar.

También puede haber requisitos importantes no declarados de tamaño, potencia, tiempo de sincronización y rechazo de AM, ruido de fase, linealidad y precisión.

Para mí, la solución más fácil sería un mezclador de Tipo II con el clásico CMOS PLL '4046 o el antiguo NE567. Ref. sobre el diseño de PLL y filtro de bucle

Después de definir la señal de salida, puede agregar un amplificador operacional para escalar la señal de la salida VCO según sea necesario.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas