Todos los ejercicios
Difícil
Completa el hueco
5 pruebas
Puntero de lectura de la FIFO — completa el hueco
El esqueleto de una FIFO ya tiene cableados el puntero de
escritura, el flag empty y el reset. La señal vacía se
calcula como is_empty <= '1' when wr_ptr = rd_ptr else '0';.
Tu tarea es avanzar correctamente el puntero de lectura:
sólo debe incrementarse cuando el host emite pop = '1' y
la FIFO no está vacía (para nunca leer en cola vacía).
Especificación
- Dentro de la rama
rising_edge(clk)existente, escribe la
guarda:if pop = '1' and is_empty = '0' then rd_ptr <= rd_ptr + 1; end if; - No toques
wr_ptrniis_empty. - Los pops que lleguen estando vacía deben ignorarse en
silencio.
Dónde escribir
Sólo las líneas entre -- BEGIN_EDIT y -- END_EDIT se
evalúan. Las declaraciones de los punteros, la fórmula del
flag vacío y la lógica de escritura están bloqueadas.
Caso de prueba visible
Reset, cuatro push, cuatro pop — empty conmuta
| Puerto | Tiempo | Valor |
|---|---|---|
reset |
0 ns | 1 |
reset |
25 ns | 0 |
push |
0 ns | 0 |
push |
100 ns | 1 |
push |
200 ns | 0 |
pop |
0 ns | 0 |
pop |
1000 ns | 1 |
pop |
1100 ns | 0 |
4 casos de prueba ocultos — resuélvelos para revelarlos.