¿Por qué los FPGA tienen cierres cuando casi nunca se usan?

7

Esta pregunta es una pregunta de seguimiento de la pregunta existente: " Cuando se usan pestillos mejor que las chanclas en un fpga que admita a ambos ".

Si el uso de pestillos en los FPGA se limita a situaciones más raras o no, ¿por qué los FPGA tienen pestillos? Quiero decir que la mayoría de los diseños de FPGA no lo usan. Entonces, ¿por qué desperdiciar hardware FPGA para tal lógica?

    
pregunta nurabha

4 respuestas

5

Prólogo de esto con la advertencia de que no estoy tan actualizado sobre el funcionamiento interior de las arquitecturas FPGA recientes. Así que esta respuesta puede no ser apropiada. Dependiendo de si las herramientas FPGA soportan el flujo de diseño que discutiré.

Probablemente sea cierto que el volumen total de puertas sin procesar enviadas al mercado son probablemente diseños basados en pestillos. Esto se debe a la preponderancia de las contribuciones del microprocesador al número total de transistores de envío. Así que sí, una medida artificial. En total, hay relativamente pocas personas que diseñan de esta manera, pero la mayoría de los procesadores utilizan un esquema de:

Nube lógica - > pestillo (+ 've reloj) - > nube lógica - > pestillo (-ve reloj) - > repita semi ad-infinitum.

Lo que si lo miras es el formato canónico para un FF esclavo maestro, pero con más lógica insertada entre el maestro y el esclavo.

La gran mayoría de las personas, en términos de los diseños totales (como en número de diseños) utilizan el borde de dominio de un solo reloj activado. Para citar a Dally y Poulton (Ingeniería de sistemas digitales) "Sin embargo, la sincronización activada por flanco, rara vez se utiliza en microprocesadores de alta gama y diseños de sistemas en gran medida porque produce un tiempo de ciclo mínimo que depende del sesgo del reloj". El uso de pestillos accionados por relojes de dos fases no superpuestos resulta en una sincronización muy robusta que es en gran medida insensible a la inclinación. Esto agrega complejidades en el diseño, las señales de un dominio de reloj no se pueden mezclar.

La otra desventaja es que rara vez se enseña en las escuelas.

Si se trata de una pregunta sobre el diseño digital de sistemas de gama alta. Esa sería tu respuesta. Si esto se aplica a los FPGA, no lo sé con seguridad, pero sugiero que PODRÍA ser la razón.

Por cierto, sugeriría este libro a cualquier persona que se tome en serio el diseño digital avanzado de VLSI.

"Dally, William J. y John W." Poulton Ingeniería de sistemas digitales. Cambridge University Press.

    
respondido por el placeholder
6

Aquí hay una lista aproximada de por qué los cierres están en los FPGA:

  1. A veces es la única solución. Por lo general, cuando se conectan a estándares y / o equipos antiguos.
  2. A pesar de que FF está mejor, algunas personas insisten en usar pestillos. Esas personas también están dispuestas a gastar dinero en FPGA.

Y eso es todo lo que puedo pensar. En los últimos 10 años, solo usé un pestillo una vez y fue para la interfaz con un PowerPC donde el bus de datos / direcciones multiplexado requirió un pestillo para no multiplexar.

    
respondido por el user3624
0

El propósito principal de un FPGA es implementar en silicio un dispositivo que implemente algún comportamiento deseado; a veces esto requerirá que un dispositivo realice algunas funciones mientras el reloj principal está apagado, o que reaccione de manera limitada a los pulsos que son cortos en relación con el período del reloj. Como un simple ejemplo, supongamos que uno estaba diseñando una placa con un discreto 74HC373 que uno quería eliminar, y tenía 17 pines de repuesto en su CPLD (el supuesto / OE en el '373 estaba atado bajo). Esos pines deben comportarse básicamente de la siguiente manera:

Cada vez que Habilitar sea alto y D0-D7 haya sido válido por 10 ns o más, Q0-Q7 será válido y reflejará los valores en D0-D7. Los pines Qn pueden considerarse inválidos, cualquiera puede emitir cualquier cosa, para las primeras 10 ns después de que Habilitar sea alta, cada vez que Dn no sea válida o cambie, y para las 10 ns posteriores. Cualquiera de Q0-Q7 que sean válidos cuando la habilitación baja, mantendrán su valor hasta la próxima vez que la habilitación se convierta en alta.

Tenga en cuenta que se permite a D0-D7 cambiar en cualquier momento en relación con el flanco ascendente de Habilitar. Por lo tanto, el borde ascendente de Habilitar no se puede utilizar como un reloj. Tenga en cuenta también que debido a que la salida de un flop no será válida hasta algún tiempo después de un margen de reloj, pero se requiere que Q0-Q7 sean válidas en el momento en que Habilita baja si D0-D7 era válida para las 10 ns anteriores, la caída El borde de Habilitar tampoco se puede usar como reloj.

Mientras que uno podría en teoría usar puertas discretas para construir circuitos de retención asíncronos, tales técnicas no funcionan bien en los FPGA. El problema es que para que dichos circuitos funcionen correctamente, deben uno o más nodos cuyo retraso de propagación se garantiza que es mayor que cero. A pesar del hecho de que las puertas reales casi siempre tienen un retraso de propagación positivo (en presencia de niveles lógicos que cambian lentamente, la salida de una puerta puede cambiar antes de que su entrada se haya cambiado por completo) es posible que las puertas FPGA se comporten como si tuvieran un retraso de propagación negativo. Si los nodos incorrectos en un circuito de retroalimentación tienen un retardo negativo, el circuito puede dejar de funcionar como se espera. El uso de elementos de enclavamiento explícitos que se garantiza que tienen un retraso de retroalimentación positivo puede evitar tales problemas.

    
respondido por el supercat
0

Creo que la confusión se debe a la afirmación de que "la mayoría de las arquitecturas de FPGA soportan de forma nativa tanto los pestillos como los flip-flops". La mayoría de ellos incluye un flip-flop y un enrutamiento suficiente para que pueda utilizar los recursos lógicos para crear un circuito que se comporte como un latch. El esquema a continuación muestra una estructura simplificada pero bastante común para una sola celda lógica en FPGAs basados en LUT. Al sacrificar una entrada por la funcionalidad de retroalimentación con MUX2 y al mismo tiempo configurar MUX1 para omitir el flipflop, puede implementar un pestillo con dos entradas. Tenga en cuenta que estos muxes generalmente forman parte de la configuración y no pueden modificarse durante la operación. Este pestillo no es tan predecible o rápido como el uso del registro síncrono, especialmente si solo necesita un conjunto o reinicio asíncrono (normalmente solo uno a la vez), que tienden a tener. El resultado es que crear un pestillo ha desperdiciado el rendimiento del hardware y . Sin embargo, existen muchas variaciones del diseño, como el Cyclone IV, que puede enrutar otras señales a través de un registro no utilizado de este tipo, pero aún no he visto una arquitectura FPGA que proporcione un pestillo; Si sabes de uno, por favor dímelo.

simular este circuito : esquema creado usando CircuitLab

En cuanto a cuándo usar la lógica de retención, puedo pensar en dos escenarios. Lo primero es detectar eventos más rápido que su reloj, como agregar marcadores de error en un analizador lógico (el flipflop puede hacerlo a expensas de usar una red de configuración / reinicio). El segundo es omitir una capa de registros para acortar una tubería (contados en ciclos) cuando la escala de frecuencia es lo suficientemente baja como para permitir una lógica más profunda. Ambas son situaciones más bien especializadas para las cuales las herramientas FPGA no están generalmente diseñadas. En realidad, este último es un bypass como MUX1, no un pestillo, pero es probable que provoque una advertencia de pestillo precisamente porque las herramientas no lo esperan (y MUX1 no es controlable por señales lógicas), y una posible implementación utiliza un pestillo transparente .

    
respondido por el Yann Vernier

Lea otras preguntas en las etiquetas