Todos los ejercicios
Difícil
Corrige el error
5 pruebas
Handshake — corrige la carrera metaestable
Un sencillo handshake req/ack falla de forma intermitente. Cuando
el bloque emisor pone req a 1 durante un solo ciclo (un glitch
debido al cruce de dominios de reloj o a un bus ruidoso), ack lo
sigue inmediatamente y el bloque receptor inicia falsamente una
transacción.
Especificación
- Reset síncrono activo-alto.
acksolo puede activarse cuando se ha observadoreqestable
en alto durante al menos un ciclo de reloj completo.- Un glitch de un solo ciclo en
reqnunca debe producir
ack = '1'.
Pista
Dos flip-flops en serie forman un pequeño "filtro de estabilidad":
la salida se pone a 1 solo cuando ambas etapas ya han capturado
un '1'. Es el patrón canónico del sincronizador.
Caso de prueba visible
Pulso corto de req (~10 ns) — ack debe quedar en 0
| Puerto | Tiempo | Valor |
|---|---|---|
reset |
0 ns | 1 |
reset |
25 ns | 0 |
req |
0 ns | 0 |
req |
200 ns | 1 |
req |
210 ns | 0 |
4 casos de prueba ocultos — resuélvelos para revelarlos.