160 likes | 309 Views
Sistemas Sincrónicos vs. Asincrónicos. Las señales pueden cambiar en cualquier momento La sincronización y pasaje de datos se realiza mediante handshakes. Hay un clock que rige el instante en que se pueden producir cambios
E N D
Sistemas Sincrónicos vs. Asincrónicos • Las señales pueden cambiar en cualquier momento • La sincronización y pasaje de datos se realiza mediante handshakes • Hay un clock que rige el instante en que se pueden producir cambios • Todos los bloques se comunican mediante el clock y señales sincrónicas http://en.wikipedia.org/wiki/Asynchronous_circuit
Flip-flops y Metaestabilidad • Las señales deben permanecer “quietas” en las proximidades de los flancos de clock
Flip-flops y Metaestabilidad • De no cumplirse esta premisa, se entra en un estado de metaestabilidad
Flip-flops y Metaestabilidad • Especificaciones de la Cyclone (nosotros usamos speed grade -6)
Pautas para el diseño sincrónico • Esquema general
Pautas para el diseño sincrónico • Estructura de la Cyclone (LE)
Pautas para el diseño sincrónico • Ejemplo:
Pautas para el diseño sincrónico • No es buena idea colocar lógica en el camino del clock Ej: gatedclock
Pautas para el diseño sincrónico • Por más que el diseñador se asegure el comportamiento de la señal enable, se genera clockskew tCO – tDELAY < tHmin
Pautas para el diseño sincrónico • Implementación más eficiente del FF con enable
Pautas para el diseño sincrónico • Registered outputs • Se eliminan glitches • Se agrega un clock de latencia adicional
Pautas para el diseño sincrónico • Maquinas de estado
Pautas para el diseño sincrónico • Maquinas de estado: implementación • El “statememory” son FF que almacenan el código del estado actual • La LC calcula las salidas y el próximo estado
Sincronización entre dominios de clock • Cualquier señal que ingrese del mundo exterior es asincrónica respecto al clock de la FPGA
Sincronización entre dominios de clock • Solución: cadena de sincronización
Ejercicios • Implementar usando VHDL: • Contador up/down de N bits con clearasincrónico, load sincrónico programable y clock enable • Maquina de estados para responder a un handshake asincrónico Tip: typestate_typeis (idle, … ); signal state : state_type := idle;