Sintetizando un decodificador BCD para display de 7 segmentos: De tabla de verdad a simulación
Un decodificador BCD convierte una entrada de 4 bits en código binario decimal (0–9) en señales para un display de 7 segmentos. Cada segmento (a–g) está controlado por una función lógica derivada de las entradas x3 (bit más significativo), x2, x1 y x0 (bit menos significativo). Para los dígitos 10–15 (1010–1111), todos los segmentos se apagan.
La tabla de verdad define el estado de cada segmento:
| Dígito | x3 | x2 | x1 | x0 | a | b | c | d | e | f | g |
|--------|----|----|----|----|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 6 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 8 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
Métodos de síntesis de funciones lógicas
Para cada segmento, se sintetiza una función booleana. El método elegido depende de si predominan unos o ceros:
- SOP (Suma de Productos, usando unos): conjunciones de minitérminos con salida 1, unidos por disyunción. Ideal cuando más del 50% de las salidas son 1.
- POS (Producto de Sumas, usando ceros): disyunciones de maxitérminos con salida 0, unidos por conjunción. Mejor cuando más del 50% de las salidas son 0.
Ejemplo para el segmento A (2 ceros: 1, 4) — POS:
- Fila 0001:
(x3 ∨ x2 ∨ x1 ∨ ¬x0) - Fila 0100:
(x3 ∨ ¬x2 ∨ x1 ∨ x0) - A =
(x3 ∨ x2 ∨ x1 ∨ ¬x0) ∧ (x3 ∨ ¬x2 ∨ x1 ∨ x0)
Ejemplo para E (4 unos) — SOP:
- 0000:
¬x3 ∧ ¬x2 ∧ ¬x1 ∧ ¬x0 - 0010:
¬x3 ∧ ¬x2 ∧ x1 ∧ ¬x0 - 0110:
¬x3 ∧ x2 ∧ x1 ∧ ¬x0 - 1000:
x3 ∧ ¬x2 ∧ ¬x1 ∧ ¬x0 - E = unión mediante ∨.
Minimización de expresiones
Simplifique usando mapas de Karnaugh o calculadoras en línea. Expresiones finalmente minimizadas (suma de productos):
- a:
((¬x0 ∧ ¬x2) ∨ x3 ∨ x1 ∨ (x0 ∧ x2)) - b:
((¬x0 ∧ ¬x1) ∨ ¬x2 ∨ x3 ∨ (x0 ∧ x1)) - c:
x3 ∨ x2 ∨ ¬x1 ∨ x0 - d:
((¬x0 ∧ ¬x2) ∨ x3 ∨ (¬x0 ∧ x1) ∨ (x0 ∧ ¬x1 ∧ x2) ∨ (x1 ∧ ¬x2)) - e:
((¬x0 ∧ ¬x1 ∧ ¬x2) ∨ (¬x0 ∧ x1 ∧ ¬x3)) - f:
((¬x0 ∧ ¬x1) ∨ x3 ∨ (¬x0 ∧ x2) ∨ (¬x1 ∧ x2)) - g:
((¬x0 ∧ ¬x1 ∧ ¬x2) ∨ (¬x0 ∧ x1 ∧ ¬x2) ∨ (x0 ∧ x1 ∧ ¬x2) ∨ (x3 ∧ ¬x2 ∧ ¬x1))
Estas expresiones se implementan usando puertas AND, OR y NOT.
Implementación jerárquica en Digital Deeds
Digital Deeds permite bloques jerárquicos (.cbe para bloques, .pbs para esquemas).
Paso 1: Bloque de segmento
- Crear nuevo bloque: 4 entradas (x3–x0), 1 salida.
- Renombrar pines: doble clic.
- Conectar cables (Ctrl+W) según la fórmula, por ejemplo para A.
Paso 2: Circuito principal
- Nuevo circuito.
- Importar componentes personalizados (7 bloques).
- Entradas paralelas x0–x3 a todos los bloques.
- Salidas conectadas al display de 7 segmentos.
Prueba: al recorrer 0000–1001 se muestran los dígitos correctos. El simulador genera diagramas de tiempo para depuración.
Conclusiones clave
- Elija SOP o POS según la densidad de 1s o 0s en la tabla de verdad.
- La minimización reduce el número de componentes: los mapas de Karnaugh son óptimos para 4 variables.
- Los bloques jerárquicos simplifican la escalabilidad en diseños para FPGA/ASIC.
- Los decodificadores BCD son fundamentales para contadores, temporizadores y pantallas digitales.
- La prueba mediante simulación detecta errores antes de la prototipación física.
— Editorial Team
Aún no hay comentarios.