Loading [MathJax]/jax/element/mml/optable/MathOperators.js

23 votos

¿Cuándo es mejor utilizar latches que flip-flops en una FPGA que admita ambos?

La pregunta:

¿Cuándo es mejor utilizar latches que flip-flops en una FPGA que admita ambos?

Antecedentes:

Es un principio bien conocido que los latches transparentes sensibles al nivel deben evitarse en las FPGAs, y que los flip-flops sensibles al flanco deben utilizarse exclusivamente. La mayoría de las arquitecturas FPGA admiten de forma nativa tanto latches como flip-flops.

El consejo general, incluso de los proveedores de FPGAs, es tener cuidado con los latches, o no usarlos nunca, etc. Hay muy buenas razones para este consejo, cuyos detalles son bien conocidos. Sin embargo, la mayoría de los consejos están redactados en los siguientes términos: "no utilices latches a menos que conozca los necesitas".

Soy un experimentado diseñador de FPGAs, y a lo largo de los años cada vez que pensaba que conocía que necesitaba un latch, rápidamente me di cuenta de que había una forma mejor de hacerlo con flip-flops. Estoy interesado en escuchar ejemplos de cuando el uso de latches es inequívocamente mejor.

Nota importante:

Los pestillos frente a los flip-flops a menudo sacan de quicio a la gente. A mí sólo me interesa la respuesta a la pregunta. Las respuestas que explican la diferencia entre latches y flip-flops, exponiendo razones para NO usar latches, detallando por qué los flip-flops son mejores que los latches, hablando de cómo los latches son mejores en objetivos no FPGA, etc, estarían totalmente fuera de tema.

12voto

Tu pregunta es básicamente: "¿cuándo sabes que necesitas pestillos?". Que, como ya has insinuado, es una pregunta subjetiva. Espera más opiniones que hechos como respuestas. Dicho esto, aquí está mi opinión:

Yo, como tú, a menudo encuentro mejores formas de utilizar flip-flops evitando así los latches. La lógica resultante suele ser más elegante y robusta. Pero hay veces en las que no tengo suficiente control sobre la lógica para evitar los latches. Por ejemplo, es posible que la interfaz con el bus de un procesador requiera latches para cumplir las especificaciones deseadas. Como no puedo rediseñar la CPU o el bus, me veo obligado a utilizar el latch.

En los últimos más de 13 años, es la única vez que he necesitado pestillos.

10voto

Alex Andronov Puntos 178

Los flip flops suelen ser preferibles a los latches porque sólo tienen cuatro condiciones/restricciones de carrera:

  1. tiempo de configuración entre un cambio en la entrada de datos y el siguiente flanco de reloj activo, y
  2. tiempo de espera entre un flanco de reloj y el siguiente cambio en la entrada de datos;
  3. duración mínima del impulso de reloj activo;
  4. duración mínima del impulso de reloj inactivo.

Si se cumplen estas condiciones, la salida de un flip flop será totalmente "limpia" y libre de imprecisiones. Además, la temporización de un flip flop es en cierto sentido "digital": siempre que se cumplan las restricciones de temporización, la salida sólo cambiará dentro de una ventana predecible después de un flanco de reloj activo, independientemente de la temporización de entrada. Por tanto, el efecto de los flip flops en cascada es predecible, independientemente de su profundidad. En cambio, la temporización de la salida de un latch es mucho más "analógica". Un retraso en la señal que entra en un latch puede provocar un retraso en la señal que sale. Incluso si se cumplen las restricciones propias del latch, este retraso puede causar problemas aguas abajo.

Yo recomendaría el uso de latches en los casos en que el comportamiento requerido de las salidas de un chip pueda ser modelado más razonablemente por uno. Por ejemplo, se supone que el hardware debe comportarse como un convertidor serie-paralelo en el que, entre los flancos ascendente y descendente del primer reloj tras una sincronización de trama, la primera salida sigue a la entrada; entre los flancos ascendente y descendente del segundo reloj, la segunda salida sigue a la entrada, etc. Se podría diseñar un circuito utilizando flip flops y lógica puramente combinatoria que produjera este comportamiento siempre que se cumplieran las restricciones de temporización, pero este circuito sería más complicado que uno que utilizara latches, y sería más propenso a comportarse de forma extraña si no se cumplieran las restricciones de temporización.

2voto

just a guest Puntos 31

En mi trabajo a veces he tenido que implementar latches en la FPGA, pero siempre era una solución de "último recurso". Las aplicaciones típicas incluían conexiones con interfaces o buses asíncronos, si no podía asegurar un reloj con velocidad suficiente para asegurar un correcto sincronización del bus y las señales de control.

El principal problema es que el latch es un bloque asíncrono. Por lo tanto, debe asegurarse de que las funciones combinacionales que generan señales de entrada para el latch son carrera -gratis. De lo contrario, pueden generar fallos que puede estar bloqueado, causando peligros en su sistema.

Para evitar carreras, hay que implementar estas funciones combinacionales de una manera especialmente reduntante. Desafortunadamente (en este caso en particular ;-), por lo demás es una propiedad muy buena) las herramientas de síntesis FPGA optimizan tu diseño eliminando toda redundancia. Por lo tanto, si quieres implementar un latch en FPGA, tienes que implementarlo "a mano", y protegerlo contra la optimización (por ejemplo, en VHDL puede que necesites establecer el atributo "keep" a "true" para las señales utilizadas internamente en tu latch).

0voto

itai alter Puntos 199

En términos de tiempo:

Si utilizamos flip flops en un diseño, el rendimiento depende de los retardos más largos de la ruta combinacional.

si utilizamos latches en lugar de flip flops podemos compensar los retardos más largos de la ruta combinada tomando tiempo prestado de los retardos más cortos de la ruta en las etapas siguientes. De este modo podemos reducir los retardos y aumentar el rendimiento del diseño.

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