6 votos

¿Multiplicar la frecuencia de una señal digital utilizando una circuitería digital pura (es decir, sin PLL)?

¿Es posible multiplicar la frecuencia de una señal digital utilizando únicamente componentes digitales y, al mismo tiempo, conservar el ciclo de trabajo?

Finalmente pude dar con el circuito de abajo: duplica la frecuencia aprovechando los retrasos de propagación de los componentes, pero sacrifica el ciclo de trabajo.

enter image description here

Me preguntaba si existe una solución mejor (que conserve el ciclo de trabajo), pero no he podido encontrar ninguna. Sé que esto se puede hacer utilizando PLL, pero estoy buscando una solución que utiliza sólo los componentes digitales.

Gracias por su ayuda

EDITAR:

Siento no haberlo mencionado antes, pero la señal de entrada es la más rápida del sistema. Por lo tanto, el muestreo no sería posible.

EDITAR 2:

Un poco de historia detrás de esta pregunta: Durante el último año de mi carrera de ingeniería (allá por 2009), tuvimos un concurso de diseño de circuitos en nuestra universidad y yo formé parte del equipo que lo organizó. Queríamos que el evento fuera bastante animado y, después de una lluvia de ideas, se nos ocurrió esta extraña idea de un "multiplicador de frecuencia utilizando sólo puertas lógicas discretas" como uno de los retos. Éramos muy conscientes de que la lógica booleana pura nunca podría lograr algo así, pero las puertas lógicas del mundo real tenían retrasos de propagación; así que rápidamente preparamos el circuito anterior utilizando puertas 74xx y vimos que funcionaba. Así que se lo dimos a los concursantes, con una oferta de bonificación para cualquier equipo que preservara el ciclo de trabajo de la onda de entrada. A pesar de que muchos de ellos llegaron con el circuito anterior, nadie fue capaz de hacer la parte de la bonificación. Hasta ahora no he tenido éxito en hacerlo yo mismo; Google tampoco fue de mucha ayuda.

Así que me preguntaba si alguien en EE podría ayudarme en caso de que ya haya tenido alguna experiencia en esto. Incluso una respuesta que diga "esto no se puede hacer nunca" es bienvenida, aunque tengo la sensación de que hay alguna solución por ahí..

0 votos

Hay una configuración de duplicador de frecuencia, puede encontrarla en la wiki.

0 votos

¿Qué pretende hacer con la señal de salida? Si el "reloj" no tiene una frecuencia estable y conocida, le resultará difícil cumplir con la sincronización del resto del chip. Además, la frecuencia de la señal de salida variará mucho de una pieza de silicio a otra, probablemente al menos un 50% más o menos debido a la variación del proceso.

0 votos

Los retrasos de propagación no son digitales. Son un artefacto analógico. Digital significa que podemos describir este duplicador de frecuencia utilizando álgebra booleana y autómatas.

5voto

GSerg Puntos 33571

Incluso un PLL no va a preservar la forma de onda (incluyendo el ciclo de trabajo) de su entrada de referencia, a menos que se añada un segundo circuito para hacerlo específicamente. Por ejemplo, el PLL podría manejar un one-shot cuyo ancho de pulso es controlado por un bucle de retroalimentación que compara el ciclo de trabajo de salida con el ciclo de trabajo de entrada.

La mejor manera de hacer esto de forma totalmente digital es tener un circuito que mida la frecuencia y el ciclo de trabajo de la señal de entrada (si esos son los dos únicos parámetros que te importan), y tener otro circuito que sintetice una nueva señal con el mismo ciclo de trabajo y la frecuencia deseada basándose en esos valores medidos. (Yo mismo he hecho algo así al construir FPGAs que necesitan hacer la duplicación/alternancia de la velocidad de fotogramas en las señales de vídeo).

La señal de salida será, en la mayoría de los casos, una aproximación de la señal que realmente quieres, y tendrás que decidir lo buena que debe ser esa aproximación.

0 votos

Tu sugerencia de medir la señal de entrada y utilizar esas medidas para crear una nueva señal es un buen enfoque. Tal vez valga la pena señalar que una cuestión más fundamental que "lo buena que debe ser la aproximación" es cuál debe ser la salida "correcta" si la señal de entrada cambia. Como ejemplo sencillo, si (muestreada a intervalos de 1us) la señal de entrada es ____----__--____----__-- debería ser una versión de doble velocidad __--_-__--_-__--_-__--_- o __--__--_-_-__--__--_-_- ? O quizás _-__--_--_-__-__--_--_-_ ¿o algo más?

0 votos

@DaveTweed: Este enfoque funciona bien si la frecuencia de la señal de entrada es lo suficientemente baja. ¿Pero qué pasa si la frecuencia de entrada es bastante alta, digamos del orden de 1GHz o más? (bueno, perdón por los 10MHz en la imagen, lo arreglaré :) ). Para un muestreo fiable y la posterior cosa DSP, necesitaríamos al menos un reloj 10x para alimentar la FPGA; no es muy práctico a 1GHz..

0 votos

¿Y si es así? Está implícito en la pregunta que la lógica digital de la que hablas es capaz de manejar las frecuencias de entrada y salida en cuestión.

1voto

Florian Puntos 3564

Alimentar un reloj rápido a dos contadores binarios. Poner a cero un contador en los flancos + de la señal de entrada. Reinicia el otro en los flancos -. Mientras uno se reinicia, almacena la salida del otro en un latch. De esta manera, medirás los periodos altos y bajos de la entrada, en proporción al ciclo de trabajo, con la precisión que permite el reloj rápido, y se actualizará rápidamente si la señal de entrada cambia de velocidad o de ciclo de trabajo. (El inconveniente es que puede ser demasiado sensible al jitter aleatorio, al ruido).

Utiliza un reloj aún más rápido para manejar dos contadores más, correspondientes a los dos contadores de la entrada. Cuando cada uno de ellos llegue a cero, dispara un flip flop según el que haya llegado a cero. Restablece ese contador a los valores enganchados de su contador de entrada correspondiente.

La salida Q del flip-flop es la salida deseada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X