Todos los ejercicios
Difícil
Desde cero
5 pruebas
Árbitro round-robin (4)
Implementa un árbitro round-robin de 4 canales. Cada reloj, concede exactamente una petición — grant es one-hot (o todo cero si no hay peticiones).
Especificación
- Guarda
last, índice de 2 bits con la última concesión (0 tras reset). - En cada flanco, recorre
reqempezando enlast + 1(con wrap-around de 2 bits). - El primer bit a
'1'gana: actívalo engranty actualizalast. - Si
reqes todo cero,grantes0000ylastqueda igual.
Pista
Usa for i in 0 to 3 loop con una variable de guardia para detenerte al primer match. to_integer(idx) indexa el vector.
Caso de prueba visible
Sólo solicitante req=0001
| Puerto | Tiempo | Valor |
|---|---|---|
reset |
0 ns | 1 |
reset |
25 ns | 0 |
req |
0 ns | 0001 |
4 casos de prueba ocultos — resuélvelos para revelarlos.