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ónicashttp://en.wikipedia.org/wiki/Asynchronous_circuit
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)
Flip-flops y Metaestabilidad
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
Pautas para el diseño sincrónico
Ej: gated clock
Por más que el diseñador se asegure el comportamiento de la señal enable, se genera clock skew
Pautas para el diseño sincrónico
tCO – tDELAY < tHmin
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 “state memory” son FF que almacenan el
código del estado actual◦ La LC calcula las salidas y el próximo estado
Pautas para el diseño sincrónico
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
Sincronización entre dominios de clock
Implementar usando VHDL:◦ Contador up/down de N bits con clear asincrónico,
load sincrónico programable y clock enable
◦ Maquina de estados para responder a un handshake asincrónico
Ejercicios
Tip:type state_type is (idle, … ); signal state : state_type := idle;