SOLUCIONES · Examen de Desarrollo · Sistemas Digitales
Desarrollo completo paso a paso, tal y como habría que escribirlo en el examen. Todos los resultados verificados por fuerza bruta con _verif_desarrollo_sistemas.py.
Problema 1 · Alarma (40 p)
a) Tabla de verdad (8 p)
Condición del enunciado: F = A·(P+V+M) + P·V·M. Recorro las 16 combinaciones (A de peso 8, P de 4, V de 2, M de 1):
| m | A | P | V | M | F | razonamiento |
| 0 | 0 | 0 | 0 | 0 | 0 | desarmada, nada activo |
| 1 | 0 | 0 | 0 | 1 | 0 | desarmada, 1 sensor: no basta |
| 2 | 0 | 0 | 1 | 0 | 0 | ídem |
| 3 | 0 | 0 | 1 | 1 | 0 | desarmada, solo 2 sensores |
| 4 | 0 | 1 | 0 | 0 | 0 | |
| 5 | 0 | 1 | 0 | 1 | 0 | |
| 6 | 0 | 1 | 1 | 0 | 0 | |
| 7 | 0 | 1 | 1 | 1 | 1 | antisabotaje: P=V=M=1 |
| 8 | 1 | 0 | 0 | 0 | 0 | armada pero ningún sensor |
| 9 | 1 | 0 | 0 | 1 | 1 | armada + movimiento |
| 10 | 1 | 0 | 1 | 0 | 1 | armada + ventana |
| 11 | 1 | 0 | 1 | 1 | 1 | |
| 12 | 1 | 1 | 0 | 0 | 1 | armada + puerta |
| 13 | 1 | 1 | 0 | 1 | 1 | |
| 14 | 1 | 1 | 1 | 0 | 1 | |
| 15 | 1 | 1 | 1 | 1 | 1 | |
b) Suma de mintérminos (4 p)
F(A,P,V,M) = Σm(7, 9, 10, 11, 12, 13, 14, 15)
c) Karnaugh (10 p)
| VM\AP | 00 | 01 | 11 | 10 |
| 00 | 00 | 04 | 112 | 08 |
| 01 | 01 | 05 | 113 | 19 |
| 11 | 03 | 17 | 115 | 111 |
| 10 | 02 | 06 | 114 | 110 |
|---|
Grupos (se solapan; el color de cada celda indica uno de sus grupos):
A·P = columna AP=11 completa {12,13,15,14} · A·V = {10,11,14,15} · A·M = {9,11,13,15} · P·V·M = {7,15}
Cada grupo de 4 elimina 2 variables; el de 2 elimina 1. Los cuatro grupos son esenciales: m12 solo lo cubre A·P, m10 solo A·V, m9 solo A·M y m7 solo P·V·M — luego no existe cobertura con menos términos y la expresión es mínima.
F = A·P + A·V + A·M + P·V·M (4 términos, 9 literales — mínimo verificado)
d) Circuito con puertas (8 p)
Primera etapa: tres puertas AND de 2 entradas (A·P, A·V, A·M) y una AND de 3 entradas (P·V·M). Segunda etapa: una OR de 4 entradas que reúne las cuatro salidas y produce F. No hacen falta inversores (ningún literal aparece negado). Total: 5 puertas, 2 niveles.
e) Solo NAND (10 p)
F = AP + AV + AM + PVM
= AP + AV + AM + PVM ← doble negación (X = X̿)
= AP · AV · AM · PVM ← De Morgan sobre la negación interior: la OR negada se convierte en AND de negados
Cada barra individual AP, AV, AM, PVM es directamente una NAND, y la barra exterior sobre el producto es otra NAND de 4 entradas. Circuito: NAND(A,P), NAND(A,V), NAND(A,M), NAND(P,V,M) → NAND de 4 entradas → F. 5 puertas NAND, sin inversores. (Regla práctica: en una SOP de 2 niveles basta sustituir todas las AND y la OR final por NAND.) Equivalencia verificada por fuerza bruta en las 16 combinaciones.
Qué valora el corrector: que la tabla salga del enunciado y no al revés (fila 7 y fila 8 son las delicadas: desarmada+3 sensores → 1; armada sin sensores → 0); columnas del mapa en Gray (00,01,11,10); grupos máximos y justificación de esencialidad; y en (e) que la puerta final sea NAND (error típico: dejar la OR).
Problema 2 · Riego automático (40 p)
a) Tabla de verdad (8 p)
Traducción del enunciado: R = S·(M + H·D) — sin agua (S=0) nunca; con agua, riega el modo manual o bien (humedad baja Y de noche).
| m | M | H | D | S | R | razonamiento |
| 0 | 0 | 0 | 0 | 0 | 0 | sin agua |
| 1 | 0 | 0 | 0 | 1 | 0 | agua, pero ni manual ni humedad baja |
| 2 | 0 | 0 | 1 | 0 | 0 | |
| 3 | 0 | 0 | 1 | 1 | 0 | |
| 4 | 0 | 1 | 0 | 0 | 0 | humedad baja y de noche… pero sin agua |
| 5 | 0 | 1 | 0 | 1 | 1 | agua + humedad baja + noche |
| 6 | 0 | 1 | 1 | 0 | 0 | |
| 7 | 0 | 1 | 1 | 1 | 0 | es de día: no se riega |
| 8 | 1 | 0 | 0 | 0 | 0 | manual pero sin agua |
| 9 | 1 | 0 | 0 | 1 | 1 | manual + agua |
| 10 | 1 | 0 | 1 | 0 | 0 | |
| 11 | 1 | 0 | 1 | 1 | 1 | manual + agua (da igual el día) |
| 12 | 1 | 1 | 0 | 0 | 0 | |
| 13 | 1 | 1 | 0 | 1 | 1 | |
| 14 | 1 | 1 | 1 | 0 | 0 | |
| 15 | 1 | 1 | 1 | 1 | 1 | |
b) Suma de mintérminos (4 p)
R(M,H,D,S) = Σm(5, 9, 11, 13, 15)
c) Karnaugh (10 p)
| DS\MH | 00 | 01 | 11 | 10 |
| 00 | 00 | 04 | 012 | 08 |
| 01 | 01 | 15 | 113 | 19 |
| 11 | 03 | 07 | 115 | 111 |
| 10 | 02 | 06 | 014 | 010 |
|---|
M·S = {9,11,13,15} (cuadrado columnas MH=11,10 × filas DS=01,11; la celda 13 es compartida) · H·D·S = {5,13} (fila DS=01, columnas MH=01 y 11)
En el grupo azul las constantes son M=1 y S=1 (H y D cambian) → término M·S. En el rojo: H=1, D=0, S=1 (solo M cambia) → H·D·S. m5 solo lo cubre el rojo y m9 solo el azul → ambos esenciales, cobertura mínima.
R = M·S + H·D·S (2 términos, 5 literales — mínimo verificado). Equivale a S·(M + H·D), la lectura directa del enunciado.
d) Circuito con puertas (8 p)
Un inversor para D; una AND de 2 (M·S); una AND de 3 (H·D·S); una OR de 2 final. Total 4 puertas, 3 niveles contando el inversor.
e) Solo NAND (10 p)
R = MS + HDS = MS + HDS ← doble negación
= MS · HDS ← De Morgan
Circuito: NAND(D,D) = D (el inversor como NAND de entradas unidas); NAND(M,S); NAND(H,D,S); y la NAND de 2 entradas final que combina ambas. Total 4 puertas NAND. Verificado por fuerza bruta.
Qué valora el corrector: la traducción "es de noche" = D (fila 7 vale 0 por ser de día: es la trampa del enunciado); que S multiplique a todo (filas 4 y 8 valen 0); y en (e) acordarse de que el inversor también tiene que ser NAND.
Problema 3 · SOP, POS y equivalencia (30 p)
a) SOP mínima (10 p)
De la tabla: F = Σm(1, 3, 5, 6, 7). Mapa (columnas AB en Gray, fila C):
| C\AB | 00 | 01 | 11 | 10 |
| 0 | 00 | 02 | 16 | 04 |
| 1 | 11 | 13 | 17 | 15 |
|---|
fila C=1 completa {1,3,5,7} → C (grupo de 4: elimina A y B) · {6,7} columna AB=11 → A·B (la celda 7 se comparte)
FSOP = C + A·B
b) POS mínima (10 p)
Ceros: F = ΠM(0, 2, 4). Agrupo los ceros en el mismo mapa:
| C\AB | 00 | 01 | 11 | 10 |
| 0 | 00 | 02 | 16 | 04 |
| 1 | 11 | 13 | 17 | 15 |
|---|
{0,2}: constantes A=0, C=0 → suma (A + C) · {0,4}: constantes B=0, C=0 → suma (B + C) (la celda 0 se comparte; las columnas 00 y 10 son adyacentes por el borde)
Regla POS: en cada grupo de ceros, la variable constante a 0 entra sin negar en la suma y la constante a 1 entra negada.
FPOS = (A + C)·(B + C)
c) Demostración algebraica (10 p)
(A + C)·(B + C) = A·B + A·C + C·B + C·C ← propiedad distributiva (desarrollo del producto)
= A·B + A·C + B·C + C ← idempotencia: C·C = C
= A·B + C·(A + B + 1) ← distributiva (sacar factor común C)
= A·B + C·1 ← elemento dominante: A + B + 1 = 1
= A·B + C ← elemento neutro: C·1 = C
Coincide con la SOP del apartado (a) ✔ (verificado además por tabla de verdad completa).
Qué valora el corrector: la regla invertida del POS (0 → variable sin negar) que todo el mundo confunde; ver el grupo {0,4} que cruza el borde; y en (c) nombrar los teoremas — el atajo directo (A+C)(B+C) = AB + C es justamente la segunda distributiva (X+Y)(X+Z) = X+YZ con X=C, otra justificación válida en un solo paso.
Problema 4 · Don't cares: BCD ≥ 6 (30 p)
a) Tabla de verdad con X (8 p)
| m | A | B | C | D | dígito | F |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 0 |
| 2 | 0 | 0 | 1 | 0 | 2 | 0 |
| 3 | 0 | 0 | 1 | 1 | 3 | 0 |
| 4 | 0 | 1 | 0 | 0 | 4 | 0 |
| 5 | 0 | 1 | 0 | 1 | 5 | 0 |
| 6 | 0 | 1 | 1 | 0 | 6 | 1 |
| 7 | 0 | 1 | 1 | 1 | 7 | 1 |
| 8 | 1 | 0 | 0 | 0 | 8 | 1 |
| 9 | 1 | 0 | 0 | 1 | 9 | 1 |
| 10–15 | 1010 … 1111 | — | X |
F = Σm(6, 7, 8, 9) + d(10, 11, 12, 13, 14, 15)
b) SOP mínima con X (10 p)
| CD\AB | 00 | 01 | 11 | 10 |
| 00 | 00 | 04 | X12 | 18 |
| 01 | 01 | 05 | X13 | 19 |
| 11 | 03 | 17 | X15 | X11 |
| 10 | 02 | 16 | X14 | X10 |
|---|
A = las dos columnas AB=11,10 completas {8,9,12,13,15,11,14,10}: grupo de 8 usando las X 10–15 como 1 · B·C = {6,7,15,14} usando 14 y 15 como 1 (celdas compartidas con el azul)
Sin las X, el mejor grupo para 8 y 9 sería A·B·C (3 literales); usando las seis X como 1, la mitad derecha entera es un grupo de 8 → un solo literal A. Igual con B·C: pasa de grupo de 2 a grupo de 4.
FSOP = A + B·C (mínimo verificado)
c) POS mínima (8 p)
Agrupo los ceros {0,1,2,3,4,5}; aquí no conviene usar ninguna X como 0 (los ceros ya forman dos grupos de 4):
| CD\AB | 00 | 01 | 11 | 10 |
| 00 | 00 | 04 | X12 | 18 |
| 01 | 01 | 05 | X13 | 19 |
| 11 | 03 | 17 | X15 | X11 |
| 10 | 02 | 16 | X14 | X10 |
|---|
columna AB=00 {0,1,3,2}: A=0, B=0 → (A + B) · {0,1,4,5} (celdas 0 y 1 compartidas): A=0, C=0 → (A + C)
FPOS = (A + B)·(A + C)
d) Comprobación algebraica (4 p)
(A + B)·(A + C) = A·A + A·C + A·B + B·C ← distributiva
= A + A·C + A·B + B·C ← idempotencia: A·A = A
= A·(1 + C + B) + B·C = A + B·C ← factor común + elemento dominante (o directamente absorción: A + A·X = A)
Coinciden ✔. (También sale en un paso con la segunda distributiva: (A+B)(A+C) = A + B·C.)
Qué valora el corrector: justificar QUÉ X se usan y para qué (en SOP las seis como 1; en POS ninguna como 0) — decir "las X valen lo que me convenga en cada mapa por separado" es exactamente la idea. Las dos expresiones solo tienen obligación de coincidir en las entradas válidas 0–9; aquí además coinciden en todo el mapa.
Problema 5 · Álgebra de Boole y De Morgan (30 p)
a) F₁ = A·B + A·B̄·C + Ā·C (10 p)
F₁ = A·(B + B·C) + A·C ← distributiva (factor común A)
= A·(B + C) + A·C ← teorema de reducción/absorción generalizada: X + X̄·Y = X + Y
= A·B + A·C + A·C ← distributiva
= A·B + C·(A + A) ← distributiva (factor común C)
= A·B + C·1 ← complemento: A + Ā = 1
F₁ = A·B + C ✔ (verificado con las 8 combinaciones)
b) F₂ = [(Ā + B) · (C·D̄)̄ ]̄ (10 p)
F₂ = (A + B) + (C·D) ← De Morgan: el producto negado es suma de negados
= A·B + C·D ← De Morgan en el primer sumando + doble negación en el segundo
F₂ = A·B + C·D ✔ (verificado con las 16 combinaciones)
c) F₃ = A·B + Ā·C + B·C (10 p)
Teorema del consenso: X·Y + X̄·Z + Y·Z = X·Y + X̄·Z. Con X=A, Y=B, Z=C, el término B·C es el consenso de los otros dos y es redundante:
F₃ = A·B + A·C
Demostración por tabla (solo hace falta mirar dónde B·C = 1, filas B=C=1):
| A | B | C | A·B | Ā·C | B·C | F₃ completa | sin B·C |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
Cuando B·C=1 (filas 011 y 111), siempre hay otro término que ya vale 1 (marcado en azul): si A=1 lo cubre A·B y si A=0 lo cubre Ā·C. Por eso quitarlo no cambia la función. Ambas columnas finales son idénticas ✔.
Qué valora el corrector: el nombre exacto de cada teorema (aquí caen los puntos); en (b), aplicar De Morgan de fuera hacia dentro y no perder la doble negación; en (c), citar "consenso" y que la tabla muestre columna a columna la igualdad.
Problema 6 · Sumador completo y ripple de 4 bits (30 p)
a) Tabla de verdad (8 p)
S es el bit de suma y Cout el de acarreo: juntos codifican en binario cuántos unos entran (A + B + Cin = 2·Cout + S).
| m | A | B | Cin | A+B+Cin | Cout | S |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 |
| 2 | 0 | 1 | 0 | 1 | 0 | 1 |
| 3 | 0 | 1 | 1 | 2 | 1 | 0 |
| 4 | 1 | 0 | 0 | 1 | 0 | 1 |
| 5 | 1 | 0 | 1 | 2 | 1 | 0 |
| 6 | 1 | 1 | 0 | 2 | 1 | 0 |
| 7 | 1 | 1 | 1 | 3 | 1 | 1 |
S = Σm(1,2,4,7) · Cout = Σm(3,5,6,7)
b) Expresiones mínimas (10 p)
Cout:
| Cin\AB | 00 | 01 | 11 | 10 |
| 0 | 00 | 02 | 16 | 04 |
| 1 | 01 | 13 | 17 | 15 |
|---|
{6,7} → A·B · {5,7} → A·Cin · {3,7} → B·Cin (la celda 7 está en los tres)
S:
| Cin\AB | 00 | 01 | 11 | 10 |
| 0 | 00 | 12 | 06 | 14 |
| 1 | 11 | 03 | 17 | 05 |
|---|
Patrón de tablero de ajedrez: ningún 1 tiene un 1 adyacente → no hay grupos posibles y la SOP no simplifica (4 mintérminos de 3 literales). Es la firma de la función paridad.
Cout = A·B + A·Cin + B·Cin (mínimo verificado) · S = A ⊕ B ⊕ Cin (paridad impar de las tres entradas)
c) Circuito (6 p)
Forma estándar con dos semisumadores: S = XOR(XOR(A,B), Cin) — dos puertas XOR en cascada. Cout = tres AND de 2 entradas (A·B, A·Cin, B·Cin) hacia una OR de 3 (equivalente: A·B + Cin·(A⊕B), que reutiliza la primera XOR).
d) Encadenado de 4 bits y ejemplo (6 p)
Se colocan 4 sumadores completos FA₀…FA₃, uno por bit. El Cout de cada etapa se conecta al Cin de la siguiente (por eso "acarreo propagado", ripple-carry) y Cin,0 = 0. Ejemplo 0101 + 0110 (5 + 6):
| etapa | aᵢ | bᵢ | cᵢ (entra) | sᵢ | cᵢ₊₁ (sale) |
| FA₀ | 1 | 0 | 0 | 1 | 0 |
| FA₁ | 0 | 1 | 0 | 1 | 0 |
| FA₂ | 1 | 1 | 0 | 0 | 1 |
| FA₃ | 0 | 0 | 1 | 1 | 0 |
Resultado s₃s₂s₁s₀ = 1011 = 11₁₀ = 5 + 6 ✔, acarreo final 0. (Verificado bit a bit por el script.)
Qué valora el corrector: la lectura "CoutS es el número de unos en binario"; explicar por qué S no agrupa (tablero de ajedrez → XOR); y en el ejemplo, escribir el acarreo que ENTRA y el que SALE de cada etapa, no solo el resultado.
Problema 7 · Decodificador y multiplexores (30 p)
F(A,B,C) = Σm(1, 2, 4, 7). (Observación útil: son las combinaciones con un número impar de unos → F = A⊕B⊕C, verificado.)
a) Decodificador 3:8 + una puerta (10 p)
Conecto A, B, C a las entradas de selección (A en la de mayor peso). Un decodificador con salidas activas a nivel alto pone a 1 exactamente la salida Oi cuyo índice i es la entrada en binario: es decir, Oi ES el mintérmino mi. Como F es la suma de los mintérminos 1, 2, 4 y 7:
F = O₁ + O₂ + O₄ + O₇ → basta una puerta OR de 4 entradas conectada a esas cuatro salidas.
(Si las salidas fueran activas a nivel bajo, cada Oi sería mi y por De Morgan la puerta sería una NAND de 4 entradas: F = m₁·m₂·m₄·m₇.)
b) MUX 8:1 sin puertas (10 p)
Selección S₂S₁S₀ = A B C. El MUX saca a su salida la entrada Ii con i = valor binario de la selección; por tanto basta cablear en cada Ii el valor que F toma en el mintérmino i:
I₁ = I₂ = I₄ = I₇ = 1 · I₀ = I₃ = I₅ = I₆ = 0 (verificado contra la tabla)
c) MUX 4:1 con C como variable residual (10 p)
Selección S₁S₀ = A B. Emparejo las filas de la tabla que comparten AB y miro cómo depende F de C:
| AB | F(C=0) | F(C=1) | entrada |
| 00 | m0: 0 | m1: 1 | I₀ = C |
| 01 | m2: 1 | m3: 0 | I₁ = C |
| 10 | m4: 1 | m5: 0 | I₂ = C |
| 11 | m6: 0 | m7: 1 | I₃ = C |
I₀ = C, I₁ = C, I₂ = C, I₃ = C (más un inversor para C). Verificado por fuerza bruta.
Qué valora el corrector: la frase clave "cada salida del decodificador es un mintérmino"; en (b) el orden correcto de las I (I₂ es AB C = 010, no la tercera fila que a uno se le ocurra); en (c) el método fila-a-fila con los cuatro casos 0, 1, C, C.
Problema 8 · Sistema de memoria 64 KiB con chips 16K×4 (30 p)
a) Líneas de dirección y de datos (6 p)
Sistema: 64K palabras = 64 · 1024 = 65 536 = 2¹⁶ → 16 líneas de dirección (A₀…A₁₅)
Palabra de 8 bits → 8 líneas de datos (D₀…D₇)
Cada chip: 16K = 16 · 1024 = 16 384 = 2¹⁴ → 14 líneas de dirección por chip (y 4 de datos)
b) Número de chips (6 p)
Por capacidad: total = 64 KiB = 65 536 · 8 = 524 288 bits; chip = 16 384 · 4 = 65 536 bits → 524 288 / 65 536 = 8 chips
Por organización: anchura 8/4 = 2 chips en paralelo; profundidad 64K/16K = 4 filas → 2 · 4 = 8 chips ✔ (las dos cuentas coinciden)
c) Organización y lógica de selección (8 p)
2 chips en paralelo forman cada palabra: uno da los bits D₇–D₄ y el otro D₃–D₀ (comparten dirección y selección). Cada pareja es un banco de 16K×8; hay 4 bancos. Las líneas A₀…A₁₃ van en paralelo a todos los chips (dirección dentro del banco). Las dos líneas altas A₁₅A₁₄ van a un decodificador 2:4 (salidas activas a nivel bajo) cuyas salidas atacan las entradas CS de cada pareja: A₁₅A₁₄ = 00 activa el banco 0, 01 el banco 1, 10 el banco 2 y 11 el banco 3. Así, en todo momento hay exactamente un banco seleccionado.
d) Mapa de direcciones (10 p)
Cada banco ocupa 16K = 4000₁₆ direcciones (16 384 = 0x4000):
| banco | A₁₅A₁₄ | inicial | final |
| 0 | 00 | 0000h | 3FFFh |
| 1 | 01 | 4000h | 7FFFh |
| 2 | 10 | 8000h | BFFFh |
| 3 | 11 | C000h | FFFFh |
Comprobación: la última dirección FFFFh = 65 535 = 2¹⁶ − 1 = total de palabras − 1 ✔ (todas las fronteras verificadas por el script).
Qué valora el corrector: distinguir KiB (bytes) de Kbit al calcular la capacidad del chip (16K×4 = 8 KiB, no 16); la doble cuenta del apartado (b); decir explícitamente qué líneas van al chip y cuáles al decodificador; y el mapa en hex con el final en xFFF (error típico: escribir 4000h como final del banco 0).
Problema 9 · Representación y aritmética Ca2 (30 p)
a) Conversiones (10 p)
237₁₀ → binario (divisiones sucesivas entre 2, el resto se lee de abajo arriba):
237/2 = 118 r 1 · 118/2 = 59 r 0 · 59/2 = 29 r 1 · 29/2 = 14 r 1 · 14/2 = 7 r 0 · 7/2 = 3 r 1 · 3/2 = 1 r 1 · 1/2 = 0 r 1
237₁₀ = 11101101₂. Comprobación: 128+64+32+8+4+1 = 237 ✔
Octal (grupos de 3 desde la derecha): 011 | 101 | 101 → 355₈
Hexadecimal (grupos de 4): 1110 | 1101 → E | D → ED₁₆
B5₁₆: B·16 + 5 = 11·16 + 5 = 181₁₀; B = 1011, 5 = 0101 → 10110101₂.
110101,11₂: 32 + 16 + 0 + 4 + 0 + 1 + 0,5 + 0,25 = 53,75₁₀ (pesos 2⁵…2⁰ y 2⁻¹, 2⁻²).
b) Aritmética en Ca2 con 8 bits (12 p)
92 + 55: 92 = 01011100, 55 = 00110111.
01011100 + 00110111 = 10010011 · acarreo final C = 0
Signos: positivo + positivo con resultado de bit de signo 1 → desbordamiento V = 1. El resultado leído en Ca2 sería −109, pero es inválido: el valor verdadero 147 no cabe en 8 bits (máximo +127).
58 − 91 = 58 + (−91): 91 = 01011011 → invierto 10100100 → sumo 1 → −91 = 10100101.
00111010 + 10100101 = 11011111 · C = 0
Signos distintos → nunca puede haber desbordamiento: V = 0. Resultado válido: 11011111 → invertir+1 → 00100001 = 33 → −33 ✔ (58−91 = −33).
(−87) + (−60): 87 = 01010111 → −87 = 10101001; 60 = 00111100 → −60 = 11000100.
10101001 + 11000100 = 1|01101101 · acarreo final C = 1 (se descarta el noveno bit)
Signos: negativo + negativo con resultado de bit de signo 0 → V = 1. El patrón 01101101 (= +109) es inválido: el valor verdadero −147 está por debajo de −128. Nota clave: aquí C = 1 y aun así hay desbordamiento — el acarreo NO indica el error en Ca2, lo indican los signos.
c) Rangos (8 p)
| sistema (8 bits) | mínimo | máximo | razón |
| sin signo | 0 | 255 | 2⁸ − 1 |
| signo-magnitud | −127 | +127 | ±(2⁷−1), con doble cero |
| Ca2 | −128 | +127 | −2⁷ … 2⁷−1, cero único |
12 bits en Ca2: −2¹¹ … 2¹¹−1 = −2048 … +2047
−200: con 8 bits el mínimo es −128 → no cabe. Con n=9: rango −256…+255 → cabe. Mínimo 9 bits; su representación: 200 = 011001000 → invertir+1 → 100111000 ✔
Qué valora el corrector: el método visible (divisiones y agrupaciones escritas); en Ca2, la comprobación de V por regla de signos y la frase "C y V son cosas distintas" con el tercer caso como ejemplo; los rangos justificados con potencias de 2, no de memoria.
Problema 10 · Biestables y contador módulo 8 (30 p)
a) Tablas características (8 p)
| Biestable JK |
|---|
| J | K | Q⁺ |
| 0 | 0 | Q (mantiene) |
| 0 | 1 | 0 (borra) |
| 1 | 0 | 1 (carga) |
| 1 | 1 | Q (conmuta) |
El JK aporta respecto al SR que la combinación J=K=1 (prohibida como S=R=1 en el SR) está definida y es útil: conmutación (toggle).
b) Diseño del contador (16 p)
Paso 1 — tabla de transiciones y excitaciones. Tabla de excitación del JK: 0→0: J=0,K=X · 0→1: J=1,K=X · 1→0: J=X,K=1 · 1→1: J=X,K=0.
| Q₂Q₁Q₀ | → | Q₂⁺Q₁⁺Q₀⁺ | J₂ | K₂ | J₁ | K₁ | J₀ | K₀ |
| 000 | → | 001 | 0 | X | 0 | X | 1 | X |
| 001 | → | 010 | 0 | X | 1 | X | X | 1 |
| 010 | → | 011 | 0 | X | X | 0 | 1 | X |
| 011 | → | 100 | 1 | X | X | 1 | X | 1 |
| 100 | → | 101 | X | 0 | 0 | X | 1 | X |
| 101 | → | 110 | X | 0 | 1 | X | X | 1 |
| 110 | → | 111 | X | 0 | X | 0 | 1 | X |
| 111 | → | 000 | X | 1 | X | 1 | X | 1 |
Paso 2 — Karnaugh de cada excitación (con tantas X, salen a ojo; se muestran J₁ y J₂ como ejemplo, columnas Q₂Q₁ en Gray, fila Q₀):
| Q₀\Q₂Q₁ | 00 | 01 | 11 | 10 |
| 0 | 0 | X | X | 0 |
| 1 | 1 | X | X | 1 |
|---|
J₁: fila Q₀=1 completa → J₁ = Q₀ (y por simetría K₁ = Q₀)
| Q₀\Q₂Q₁ | 00 | 01 | 11 | 10 |
| 0 | 0 | 0 | X | X |
| 1 | 0 | 1 | X | X |
|---|
J₂: grupo {Q₁=1, Q₀=1} → J₂ = Q₁·Q₀ (y K₂ = Q₁·Q₀)
Expresiones mínimas (verificadas como óptimas por Quine-McCluskey): J₀ = K₀ = 1 · J₁ = K₁ = Q₀ · J₂ = K₂ = Q₁·Q₀. Patrón general del contador binario: cada bit conmuta cuando todos los de menor peso valen 1.
Paso 3 — comprobación (simulada por el script para el ciclo completo 0→1→…→7→0). Ejemplos: desde 011: J₀=K₀=1 → Q₀ conmuta a 0; J₁=K₁=Q₀=1 → Q₁ conmuta a 0; J₂=K₂=Q₁Q₀=1 → Q₂ conmuta a 1 → 100 ✔. Desde 111: los tres conmutan → 000 ✔.
c) Divisor de frecuencia (6 p)
Q₀ conmuta en cada flanco de reloj → su onda completa un ciclo cada 2 pulsos: f(Q₀) = fCLK/2. Q₁ conmuta la mitad de veces (f/4) y Q₂ una de cada ocho: f(Q₂) = fCLK/8. En general, un contador módulo 2ⁿ divide la frecuencia entre 2ⁿ.
Qué valora el corrector: usar la tabla de excitación del JK con sus X (no confundirla con la característica); explotar las X en los mapas para llegar a las expresiones de un literal; y la comprobación explícita de al menos una transición "difícil" (011→100 o 111→000).
Problema 11 · Comparador de 2 bits (30 p)
a) Tabla de verdad (10 p)
| m | A₁ | A₀ | B₁ | B₀ | X | Y | G (X>Y) |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
| 2 | 0 | 0 | 1 | 0 | 0 | 2 | 0 |
| 3 | 0 | 0 | 1 | 1 | 0 | 3 | 0 |
| 4 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 5 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 6 | 0 | 1 | 1 | 0 | 1 | 2 | 0 |
| 7 | 0 | 1 | 1 | 1 | 1 | 3 | 0 |
| 8 | 1 | 0 | 0 | 0 | 2 | 0 | 1 |
| 9 | 1 | 0 | 0 | 1 | 2 | 1 | 1 |
| 10 | 1 | 0 | 1 | 0 | 2 | 2 | 0 |
| 11 | 1 | 0 | 1 | 1 | 2 | 3 | 0 |
| 12 | 1 | 1 | 0 | 0 | 3 | 0 | 1 |
| 13 | 1 | 1 | 0 | 1 | 3 | 1 | 1 |
| 14 | 1 | 1 | 1 | 0 | 3 | 2 | 1 |
| 15 | 1 | 1 | 1 | 1 | 3 | 3 | 0 |
G = Σm(4, 8, 9, 12, 13, 14)
b) Karnaugh (12 p)
| B₁B₀\A₁A₀ | 00 | 01 | 11 | 10 |
| 00 | 00 | 14 | 112 | 18 |
| 01 | 01 | 05 | 113 | 19 |
| 11 | 03 | 07 | 015 | 011 |
| 10 | 02 | 06 | 114 | 010 |
|---|
A₁·B₁ = {8,9,12,13} (cuadrado columnas A₁A₀=11,10 × filas B₁B₀=00,01; la 12 se comparte) · A₀·B₁·B₀ = {4,12} (fila 00) · A₁·A₀·B₀ = {12,14} (columna 11, filas 00 y 10 adyacentes por el borde)
G = A₁·B₁ + A₀·B₁·B₀ + A₁·A₀·B₀ (3 términos, 8 literales — mínimo verificado por Quine-McCluskey)
c) Circuito e interpretación (8 p)
Dos inversores (B₁, B₀), una AND de 2 y dos AND de 3, y una OR de 3. Interpretación de cada término:
- A₁·B₁: X ≥ 2 e Y ≤ 1 → el bit alto ya decide la comparación.
- A₀·B₁·B₀: Y = 0 y X es impar (1 o 3) → X > 0.
- A₁·A₀·B₀: X = 3 e Y par (0 o 2) → 3 gana a ambos.
Comprobaciones: X=2 (10), Y=1 (01): A₁=1, B₁=0 → primer término = 1 → G=1 ✔ (2>1). X=1 (01), Y=3 (11): A₁=0 anula el 1º y el 3º; B₁=1 anula el 2º → G=0 ✔ (1<3).
Qué valora el corrector: ordenar bien las variables al numerar mintérminos (A₁A₀B₁B₀, no alternadas); el grupo {12,14} que cruza el borde superior-inferior; y la interpretación semántica de los términos, que demuestra que entiendes el circuito y no solo el método.
Verificación: todos los mintérminos, mapas, expresiones mínimas (incluida su minimalidad por Quine-McCluskey exhaustivo), equivalencias NAND/POS, conversiones, operaciones en Ca2, cuentas de memoria y la secuencia del contador han sido comprobados por fuerza bruta con _verif_desarrollo_sistemas.py (resultado: TODO OK).