Todos los ejercicios
Medio
Corrige el error
5 pruebas
Sumador con anchos mixtos — bug de extensión de signo
a es un número en complemento a dos de 4 bits (rango −8…+7) y b es de 8 bits, también en complemento a dos. La salida sum = a + b es de 8 bits.
Especificación
- Extiende
ade 4 a 8 bits con extensión de signo, y luego suma ab. - Replica el bit de signo
a(3)en los cuatro bits altos del valor extendido.
Qué falla
El autor extendió a añadiendo "0000", lo que es extensión con ceros. Funciona por casualidad cuando a es positivo, pero con a negativo (p.ej. 1111 = −1) genera el valor positivo 15 y la suma queda mal.
Pista
numeric_std ofrece resize(valor_signed, nuevo_ancho), que realiza la extensión de signo automáticamente cuando la fuente es signed.
Caso de prueba visible
a=1111 (-1), b=00000010 (+2) → se espera 00000001
| Puerto | Tiempo | Valor |
|---|---|---|
a |
0 ns | 1111 |
b |
0 ns | 00000010 |
4 casos de prueba ocultos — resuélvelos para revelarlos.