01 · Especificación
0–3 más 0–3 igual dígito
Dos DIP de 2 bits (A1A0, B1B0), suma de 0 a 6 directo al display vía 7448. Truco elegante: el máximo es 6, así el BCD siempre es válido (blanking jamás se activa). Tres HC + 7448 + display.
- ¿Cómo se encadenan los sumadores?
- ¿Cómo entra la suma al 7448?
- ¿Por qué nunca hay blanking?
- ¿Qué BOM lleva?
02 · Diseño
Cadena y adaptación
FA0 medio (S0 = A0⊕B0, C1 = A0·B0); FA1 completo (S1 = A1⊕B1⊕C1, Cout = mayoría). Al 7448: D = 0, C = Cout, B = S1, A = S0 (el valor como BCD de 4 bits: 5 = 0101).
03 · BOM
Lista de compras
| Ítem | Detalle |
|---|---|
| DIP ×2 + R 10k ×4 | A1A0 y B1B0 con pull-down |
| 74HC86 | 3 XOR (S0, S1 en 2 pasos) |
| 74HC08 | 3 AND (C1 + carry ×2) |
| 74HC32 | 2 OR (carry + S1) |
| 7448 + display CC + R 270 ×7 | Dígito 0–6 directo |
Puertas: FA0 (XOR+AND), FA1 (2 XOR + 2 AND + 1 OR carry + …): carry = A1·B1 + C1·(A1+B1): 2 AND + 2 OR. Total 3 XOR + 3 AND + 2 OR: un chip de cada uno con resto.
04 · Tabla de la máquina
16 casos, 0 sorpresas
| A | B | Suma | DCBA | Display |
|---|---|---|---|---|
| 00 | 00 | 000 | 0000 | 0 |
| 11 | 10 | 101 | 0101 | 5 |
| 11 | 11 | 110 | 0110 | 6 |
| 10 | 01 | 011 | 0011 | 3 |
3+2 = 5: Cout=1, S1=0, S0=1 → DCBA 0101 ✓. Nunca A–F: el diseño lo garantiza por rango.
05 · Calculadora en código
Gemelo de 16 casos
Cadena FA0–FA1 + adaptación BCD más barrido total.
Python en tu navegador. Recorré las 16 y buscá un blanking (no hay).
def calc(a, b):
s0 = a & 1 ^ b & 1
c1 = (a & 1) and (b & 1)
a1, b1 = (a >> 1) & 1, (b >> 1) & 1
s1 = a1 ^ b1 ^ c1
cout = (a1 and b1) or (a1 and c1) or (b1 and c1)
valor = (cout << 2) | (s1 << 1) | s0
bcd = (0, cout, s1, s0)
print(f"{a}+{b} = {valor} DCBA={bcd} display={valor}")
return valor
calc(3, 2)
calc(3, 3)
calc(0, 0)
3+2 = 5 (0101). 3+3 = 6 (0110). ¿Algún resultado con D=1? (Imposible: máx 6.)
Barrido total
vals = [calc(a, b) for a in range(4) for b in range(4)]
print(f"min={min(vals)} max={max(vals)} blanking={'NUNCA' if max(vals) <= 9 else 'PELIGRO'}")
06 · Analogía programador
Pipeline con test matrix
- 1Cadena = pipeline.
Etapas FA0→FA1→display: cada una transforma y pasa. Como middleware en serie.
- 216 casos = test matrix.
4×4 exhaustivo: coverage total en 5 minutos de mesa.
- 3Rango = contrato.
Máx 6 garantiza BCD válido: diseñar el rango es diseñar la ausencia de bugs.
07 · Taller
Laboratorio: sumar con dedos
A y B de 0 a 3: el laboratorio suma, adapta a BCD y muestra el dígito.
Calculadora 2+2
3+2 = 5
3+2: 101 = display 5.
Preguntas para explorar
- Probá 3+3. ¿Binario? ¿DCBA? ¿Display? ¿Cout?
- Probá 0+0. ¿Display? ¿Blanking alguna vez?
- ¿Qué cambiaría para sumar 0–7 (3 bits)? ¿Display alcanzaría?
Ver respuestas sugeridas
- 110, DCBA 0110, display 6, Cout=1. El máximo del diseño.
- 0, display 0: nunca blanking (0–6 siempre BCD). Garantía por rango.
- Máx 14: dos displays + conversión binario→BCD (doble-dabble o ROM). Proyecto 2.0.
08 · Comprensión
Confusiones frecuentes
«Binario directo al 7448»
El 7448 lee BCD: 101 debe entrar como 0101 (D=0,C=Cout,B=S1,A=S0), no como “101”. Mapear, no enchufar.
«Cout se ignora»
Es el bit 2 (el 4): sin él, 3+3 daría 2. Cout es dígito, no descarte.
«AND-3 no existe»
Existe (HC11): el carry lo usa. Revisar catálogo antes de armar con 2 AND-2.
«Display sin R»
Siete veces no: 270 Ω por segmento (Tema 21). El 7448 no limita corriente.
09 · Práctica guiada
Ejercicios de cálculo
Ejercicio 1: 2+1 a mano
Bits, carries, S, DCBA y display. Verificá con calc().
Ver solución razonada
b0: 0+1 = 1 c0; b1: 1+0+0 = 1 c0. S = 011 = 3, DCBA 0011, display 3 ✓.
Ejercicio 2: resta 3−1
Agregá M (XOR en B + Cin): 11−01. ¿S? ¿Display? ¿Cout?
Ver solución
10 = 2, display 2, Cout=1 (alcanzó). DCBA 0010 ✓. Calculadora ± con un XOR más.
Ejercicio 3: montar y recorrer
16 combinaciones anotadas A+B → display. ¿Alguna falla? ¿Cuál sería la sospechosa?
Ver solución
16/16 ✓. Sospechosa: 3+3 (única con Cout=1): si da 2, el bit C del 7448 está suelto.
10 · Síntesis
Ideas para recordar
- FA0 (Cin=0) → FA1 → 7448 con D=0,C=Cout,B=S1,A=S0.
- Rango 0–6: BCD válido siempre, blanking nunca.
- Cout es el bit 2: nunca se ignora.
- 3 HC + 7448 + display + R×7.
- 16/16 verificado; 3+3 es el caso borde.
Segunda máquina andando. Solo falta el balance: en el último tema, cierre y puente al curso 6.