45 votos

¿Un diseño FPGA puede principalmente asincrónico (o totalmente)?

Tuvimos un muy corto FPGA/Verilog curso en la universidad (hace 5 años), y siempre se han usado los relojes en todas partes.

Yo ahora estoy empezando con FPGAs de nuevo como un hobby, y yo no puede dejar de preguntarse acerca de los relojes. Son absolutamente necesarios, o puede un FPGA diseño basado en ser completamente asíncrona? Se puede construir un complejo montón de lógica y tienen cosas ondulación a través de él tan rápido como pueda?

Me doy cuenta de que hay un montón de trampas con esto, como saber cuando la señal se propaga a través de todas las partes del circuito y la salida se ha estabilizado. Que del lado del punto. No es que, de hecho, quiero construir un diseño que es totalmente asíncrona, pero sólo para mejorar mi comprensión de las capacidades.

A mi principiante ojo, parece que la única construcción que es absolutamente necesario que un reloj es un reg, y a mi entender es que un típico FPGA (es decir, un Ciclón II) tendrá su flip-flops pre-cableado específicos de señales de reloj. Es esto correcto? Hay otros implícito relojes como este y puede que suelen ser manejada a mano por el diseño?

29voto

CanyonR Puntos 361

Una respuesta corta sería: sí; una mayor respuesta sería: no es digno de su tiempo.

Un FPGA se puede ejecutar completamente asíncrona diseño no hay problema. El resultado que se obtiene es el problema ya que la sincronización a través de cualquier FPGA no es muy predecible. El problema más grande es el hecho de que la duración y la resultante de diseño casi sin duda variar entre los diferentes lugar y la ruta de las sesiones. Usted puede poner en las limitaciones individuales asincrónica caminos asegurándose de que no tome demasiado tiempo, pero no estoy muy seguro de que usted puede especificar un retardo mínimo.

Al final significa que su diseño será impredecible y potencialmente completamente variable, incluso con un ligero cambio de diseño. Tendrías que mirar a través de todo el informe de tiempo cada vez que cambie nada en absoluto sólo para asegurarse de que todavía funciona. Por otro lado, si el diseño es sincrónico, usted sólo tiene que buscar un pase o no al final de su lugar y ruta (asumiendo que sus limitaciones son el programa de instalación correctamente, lo cual no tarda mucho en todos).

En la práctica, la gente tiene el objetivo totalmente sincrónico diseños, pero si usted simplemente necesita buffer o invertir una señal, usted no necesita ir a través de un flip flop siempre que limitan adecuadamente.

Espero que esto aclare un poco.

24voto

Jeremy Ruten Puntos 59989

"Se puede construir un complejo montón de lógica y tienen cosas ondulación a través de él tan rápido como pueda?" Sí. Toda la Cpu se han construido y que son totalmente asíncrona, al menos uno de ellos fue la CPU más rápida en el mundo. http://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU

Que me molesta que la gente rechaza asincrónica técnicas de diseño, incluso a pesar de que, teóricamente, tienen varias ventajas sobre los sincrónico técnicas de diseño, simplemente porque (como otros han dicho) asincrónica diseños no son tan bien apoyado por las herramientas disponibles.

Para mí, eso es como recomendar que todos los puentes estar hecho de madera, debido a que más personas tienen las herramientas de la carpintería de acero-herramientas de trabajo.

Afortunadamente, algunas de las ventajas de asincrónicas diseño se puede obtener mientras se sigue utilizando en su mayoría sincrónico técnicas de diseño mediante el uso de un asincrónica global local sincrónica (GAL) de diseño.

6voto

Alex Andronov Puntos 178

Un factor no mencionado aún es metaestabilidad. Si un circuito de enclavamiento es golpeado con una secuencia de entrada/las transiciones de modo que el estado resultante dependerá de retardos de propagación o de otros factores impredecibles, no hay ninguna garantía de que el estado resultante será una limpia "alta" o "baja". Considere, por ejemplo, un edge-triggered flip flop que actualmente está generando una "baja", y tiene su entrada cambia de bajo a alto en casi el mismo tiempo como un borde de reloj llega. Si el borde de reloj pasa el tiempo suficiente antes de que los cambios en la entrada, la salida será simplemente sentarse bajo hasta el siguiente flanco de reloj. Si el borde de reloj pasa el tiempo suficiente después de los cambios en la entrada, la salida será rápidamente una vez el interruptor de baja a alta y permanecer allí hasta el siguiente flanco de reloj. Si ninguna de estas condiciones se aplica, la salida se puede hacer nada. Podría permanecer bajo, o cambiar rápidamente de una vez y se mantiene alto, pero podría estar de baja por un tiempo y luego cambiar o cambiar y, a continuación, después de algún tiempo puede cambiar de nuevo, o cambiar de ida y vuelta un par de veces, etc.

Si un diseño es totalmente sincrónico, y todas las entradas son de doble sincronizado, es muy poco probable que un pulso de temporización, caería en el primer pestillo de un sincronizador de tal manera como para hacer que el interruptor en el momento perfecto para confundir a la segunda pestillo. En general, es seguro respecto a cosas tales como "simplemente no va a suceder". En una asincronía en el diseño, sin embargo, es a menudo mucho más difícil de razonar acerca de tales cosas. Si un tiempo de restricción en un circuito de enclavamiento (no sólo las chanclas, pero cualquier combinación de lógica que actuaría como un latch) es violado, no se sabe lo que el resultado va a hacer hasta la próxima vez que haya una entrada válida la condición de que las fuerzas de la pestillo a un estado conocido. Es enteramente posible que el retraso de salidas causa de la falta de tiempo de los insumos a ser violado, que conducen a situaciones inesperadas, especialmente si una salida se utiliza para calcular dos o más entradas (algunas pueden ser calculadas a pesar de que el pestillo estaba alta, los demás, como si se tratara de baja).

La manera más segura de modelo asíncrono de circuito sería tener casi cada circuito de salida de producir una "X" de salida para un poco de tiempo cada vez que se cambia entre "0" y "1". Por desgracia, este enfoque a menudo se traduce en casi todos los nodos que muestra una "X", incluso en los casos en que en la realidad se ha traducido en un comportamiento estable. Si un sistema puede trabajar cuando simulado como tener todas las salidas se convierten en "X" inmediatamente después de los cambios de la entrada, y siendo "X" hasta que las entradas son estables, es una buena señal de que el circuito funciona, pero llegar asincrónica circuitos para trabajar bajo tales restricciones es a menudo difícil.

4voto

Sixty4Bit Puntos 2664

Por supuesto, si sus requisitos de diseño son lo suficientemente lento como para que una gran cantidad de internos retrasos todavía son órdenes de magnitud más que la de veces que te importa, entonces no es un problema, y se puede ver en el informe de tiempo para mantener un ojo en esto, pero hay un límite a lo que puede ser útil que hacer con ningún estado interno info. Si lo que desea es hacer algo así como un 100 multiplexor de entrada, entonces está bien, sólo recuerda que cada entrada tendrá un retardo de propagación. De hecho, usted puede obtener algo de interesante y caótico efectos con un gran número de impredecible retardo a la oscilación de los bucles de retroalimentación - tal vez totalmente asíncrona FPGA basado en la síntesis podría ser la próxima 'analógica'..

2voto

Sixty4Bit Puntos 2664

Sí. Si no tienes construcciones del tipo de proceso que no debería hacer cosas como inferencia registros. Habrá cosas como memoria interna que requieren relojes, aunque si realmente quiere usted probablemente generarían estos asincrónicamente.

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