¿Cuándo es mejor usar pestillos que los flip-flops en un FPGA que sea compatible con ambos?

20

La pregunta:

¿Cuándo es mejor usar pestillos que chanclas en un FPGA que admite ambos?

Background:

Es un principio bien conocido que los cierres transparentes sensibles al nivel deben evitarse en los FPGA, y los flip-flops sensibles al borde deben usarse exclusivamente. La mayoría de las arquitecturas de FPGA soportan de forma nativa tanto pestillos como chanclas.

El consejo general, incluso de los proveedores de FPGA, es tener cuidado con los cierres, o nunca usar cierres, etc. Existen muy buenas razones para este consejo, cuyos detalles son bien conocidos. Sin embargo, la mayoría de los consejos están enunciados, "no use pestillos a menos que sepa los necesite".

Soy un diseñador de FPGA con experiencia y, a lo largo de los años, cada vez que pensé que sabía que necesitaba un pestillo, rápidamente me di cuenta de que había una mejor manera de hacerlo con chanclas. Estoy interesado en escuchar ejemplos de cuando el uso de latches es inequívocamente mejor.

Nota importante:

Las pestañas contra las chanclas a menudo hacen que la gente se enoje. Sólo me interesa la respuesta a la pregunta. Las respuestas que explican la diferencia entre los latches y los flip-flops, explican las razones para usar el NO uso de los latches, explican por qué los flip-flops son mejores que los latches, hablar de cómo los latches son mejores en objetivos que no son FPGA, etc.

    
pregunta wjl

4 respuestas

11

Su pregunta es básicamente: "¿cuándo sabe que necesita pestillos?" Lo cual, como usted lo insinuó, es una pregunta subjetiva. Espera más opinión que hecho como respuestas. Dicho esto, aquí está mi opinión:

Yo, como usted, a menudo encuentro mejores formas de usar chanclas para evitar los pestillos. La lógica resultante es a menudo más elegante y robusta. Pero hay ocasiones en las que no tengo suficiente control sobre la lógica para evitar los cierres. Por ejemplo, podría estar conectándome a un bus de procesador que requiere que los pestillos cumplan con las especificaciones deseadas. Como no puedo rediseñar la CPU o el bus, me quedo atascado con el pestillo.

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

    
respondido por el user3624
8

Los flip flops a menudo son preferibles a los latches porque tienen solo cuatro condiciones / restricciones de carrera:

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

Si se cumplen esas restricciones, la salida de un flip flop será completamente "limpia" y sin tonterías. Además, la sincronización de un flip-flop es en un sentido "digital": siempre que se cumplan las restricciones de temporización, la salida solo cambiará dentro de una ventana predecible después de un borde de reloj activo, independientemente de la temporización de entrada. El efecto de los flip flops en cascada es predecible, independientemente de la profundidad. Por el contrario, la temporización de una salida de latch es mucho más "analógica". Un retraso en la señal que entra en un pestillo puede causar un retraso en la señal que sale. Incluso si se cumplen las propias restricciones del pestillo, este retraso puede causar problemas descendentes.

Recomendaría utilizar pestillos en los casos en que el comportamiento requerido de las salidas de un chip pueda ser modelado de manera más razonable por uno. Por ejemplo, se supone que el hardware de uno se comporta como un convertidor de serie a paralelo donde, entre los bordes ascendentes y descendentes del primer reloj después de una sincronización de cuadros, la primera salida rastrea la entrada; entre los bordes ascendentes y descendentes del segundo reloj, la segunda salida rastrea la entrada, etc. Se podría diseñar un circuito utilizando flip flops y lógica puramente combinatoria que produciría dicho comportamiento siempre que se cumplieran las restricciones de tiempo, pero tal circuito sería más Es complicado que uno utilice pestillos, y sería más propenso a comportarse de manera extraña si no se cumplieran las restricciones de tiempo.

    
respondido por el supercat
1

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

El problema principal es que el pestillo es un bloque asíncrono. Por lo tanto, debe asegurarse de que las funciones de combinación que generan señales de entrada para el pestillo son carrera -free. De lo contrario, pueden generar fallos , que pueden estar bloqueados, causando peligros en su sistema.

Para evitar carreras, debes implementar estas funciones combinatorias de una manera especial compensatoria. Desafortunadamente (en este caso particular ;-), de lo contrario es una propiedad muy buena) las herramientas de síntesis de FPGA optimizan su diseño eliminando toda redundancia. Por lo tanto, si desea implementar un pestillo en FPGA, debe implementarlo "a mano" y protegerse contra la optimización (por ejemplo, en VHDL es posible que deba configurar el atributo "mantener" en "verdadero" para las señales que se usan internamente en su pestillo) .

    
respondido por el wzab
-1

En términos de tiempo:

Si estamos usando flip flops en un diseño, entonces el rendimiento depende de los retrasos de ruta combinacional más largos.

Si utilizamos pestillos en lugar de flip flops, podemos compensar los retrasos de ruta combinados más largos al tomar prestado el tiempo de los retrasos de ruta más cortos en las siguientes etapas. Con esto podemos reducir los retrasos y aumentar el rendimiento del diseño.

    
respondido por el user43102

Lea otras preguntas en las etiquetas