Nivel: Medio — Construye un contador decimal que avanza de 0 a 9 y se reinicia automáticamente usando una puerta AND compatible TTL.
Objetivo y caso de uso
Construirás un contador decimal basado en un contador ripple 74LS93 y una puerta AND 74HCT08. El circuito cuenta de 0000 a 1001 y se reinicia automáticamente cuando aparece 1010.
Esto es útil para:
– Contadores simples de eventos con una interfaz de visualización decimal
– Etapas divisoras de reloj para experimentos de temporización
– Aprender cómo funciona el reset asíncrono en contadores ripple
– Probar la compatibilidad lógica TTL a CMOS/HCT en diseños lógicos mixtos
Resultado esperado:
– QA, QB, QC y QD muestran una secuencia de conteo binario de 0 a 9
– RESET_NODE pasa a HIGH solo cuando QB = 1 y QD = 1
– El contador se borra inmediatamente cuando se alcanza el estado 1010
– Los LED en las cuatro salidas repiten visiblemente el ciclo decimal
– La alimentación lógica se mantiene en +5 V, con niveles compatibles TTL entre el 74LS93 y el 74HCT08
Público objetivo y nivel: Estudiantes y técnicos con experiencia básica en electrónica digital.
Materiales
U1: contador ripple de 4 bits 74LS93, función: generación de conteo binarioU2: puerta AND cuádruple de 2 entradas 74HCT08, función: detección de reset compatible TTLV1: fuente DC de 5 V, función: alimentación del circuito lógicoX1: fuente de reloj de onda cuadrada 0-5 V, función: señal CLK_IND1: LED rojo, función: indicador de QAD2: LED rojo, función: indicador de QBD3: LED rojo, función: indicador de QCD4: LED rojo, función: indicador de QDR1: resistencia de 330 Ω, función: limitación de corriente para D1R2: resistencia de 330 Ω, función: limitación de corriente para D2R3: resistencia de 330 Ω, función: limitación de corriente para D3R4: resistencia de 330 Ω, función: limitación de corriente para D4C1: condensador de 100 nF, función: desacoplo local para U1C2: condensador de 100 nF, función: desacoplo local para U2
Pin-out del CI utilizado
74LS93
| Pin | Nombre | Función lógica | Conexión en este caso |
|---|---|---|---|
| 5 | VCC | Alimentación de +5 V | VCC |
| 10 | GND | Tierra | 0 |
| 14 | CP0 | Entrada de reloj A | CLK_IN |
| 1 | CP1 | Entrada de reloj B | Conectada a QA para cascada |
| 2 | R0(1) | Entrada de reset asíncrono | RESET_NODE |
| 3 | R0(2) | Entrada de reset asíncrono | RESET_NODE |
| 12 | QA | Salida LSB | QA, LED D1 y realimentación a CP1 |
| 9 | QB | Salida del contador | QB, LED D2 y entrada de detección de reset |
| 8 | QC | Salida del contador | QC, LED D3 |
| 11 | QD | Salida MSB | QD, LED D4 y entrada de detección de reset |
74HCT08
| Pin | Nombre | Función lógica | Conexión en este caso |
|---|---|---|---|
| 14 | VCC | Alimentación de +5 V | VCC |
| 7 | GND | Tierra | 0 |
| 1 | 1 A | Entrada A de AND | QB |
| 2 | 1B | Entrada B de AND | QD |
| 3 | 1Y | Salida de AND | RESET_NODE |
Guía de conexionado
V1se conecta entreVCCy0.C1se conecta entreVCCy0, colocado cerca deU1.C2se conecta entreVCCy0, colocado cerca deU2.U1pin 5 se conecta aVCC.U1pin 10 se conecta a0.U1pin 14 se conecta aCLK_IN.U1pin 1 se conecta al nodoQA.U1pin 2 se conecta aRESET_NODE.U1pin 3 se conecta aRESET_NODE.U1pin 12 se conecta al nodoQA.U1pin 9 se conecta al nodoQB.U1pin 8 se conecta al nodoQC.U1pin 11 se conecta al nodoQD.U2pin 14 se conecta aVCC.U2pin 7 se conecta a0.U2pin 1 se conecta al nodoQB.U2pin 2 se conecta al nodoQD.U2pin 3 se conecta al nodoRESET_NODE.R1se conecta entreQAy el nodoLED1_A.D1se conecta entreLED1_Ay0.R2se conecta entreQBy el nodoLED2_A.D2se conecta entreLED2_Ay0.R3se conecta entreQCy el nodoLED3_A.D3se conecta entreLED3_Ay0.R4se conecta entreQDy el nodoLED4_A.D4se conecta entreLED4_Ay0.
Usa el 74HCT08, no el 74HC08, porque la puerta de reset está accionada por salidas TTL del 74LS93 y debe aceptar de forma fiable niveles HIGH compatibles TTL.
Diagrama de bloques conceptual

Esquemático
Practical case: 0-9 counter with TTL-compatible reset (74LS93 + 74HCT08) [ X1: CLK_IN 0-5 V square ] --> [ U1: 74LS93 4-bit Ripple Counter (CP0 pin14) ] (Internal to U1: QA (pin12) --> CP1 (pin1) for divide-by-10 configuration) U1 Q outputs to indicators (loads on the right): [ U1: QA (pin12) ] --> [ R1: 330 Ω ] --> [ D1: Red LED ] --> GND [ U1: QB (pin9) ] --> [ R2: 330 Ω ] --> [ D2: Red LED ] --> GND [ U1: QC (pin8) ] --> [ R3: 330 Ω ] --> [ D3: Red LED ] --> GND [ U1: QD (pin11) ] --> [ R4: 330 Ω ] --> [ D4: Red LED ] --> GND Reset detection (separate branches; TTL-compatible gate): [ Tap: U1.QB (pin9) ] --> [ Tap: U1.QD (pin11) ] --> [ U2: 74HCT08 AND (pins 1,2→3) ] --(RESET_NODE)--> (to U1 Async Reset R0(1),R0(2) pins 2 & 3) Power and decoupling (for completeness): [ V1: +5 V ] --> [ U1: VCC pin5 ] ; return GND --> (U1 GND pin10) [ V1: +5 V ] --> [ U2: VCC pin14 ] ; return GND --> (U2 GND pin7) [ C1: 100 nF ] between U1 VCC and GND (place close to U1) [ C2: 100 nF ] between U2 VCC and GND (place close to U2)
Diagrama eléctrico

Tabla de verdad
Esta tabla corresponde a la puerta AND usada para la detección de reset.
| QB | QD | RESET_NODE |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Mediciones y pruebas
- Comprobación de continuidad con la alimentación apagada
- Verifica que
VCCno esté en cortocircuito con0. - Confirma que los pines de reset 2 y 3 de
U1estén unidos enRESET_NODE. Confirma que el pin 1 de
U1esté conectado aQA.Comprobación estática con la alimentación encendida
- Aplica +5 V.
- Comprueba que tanto
U1comoU2reciben la tensión de alimentación correcta. Sin reloj aplicado, las salidas pueden arrancar en un estado desconocido; un breve reset manual a
RESET_NODE = HIGHdebería forzarQA QB QC QD = 0000.Verificación del reloj
- Mide
CLK_INcon un osciloscopio. - Usa una frecuencia lenta como 1 Hz a 10 Hz para la observación visual de los LED.
Confirma que el reloj oscila aproximadamente de 0 V a 5 V.
Comprobación de la secuencia del contador
- Mide
QA,QB,QCyQD. - Verifica la secuencia:
0000000100100011010001010110011110001001
El siguiente estado intentado es
1010, pero debe reiniciarse inmediatamente a0000.Validación del nodo de reset
- Mide
RESET_NODE. - Debe permanecer en LOW para las cuentas
0000hasta1001. Debe generar un pulso HIGH cuando
QB = 1yQD = 1, lo que corresponde a la detección de1010.Observación de los LED
D1debe conmutar a la mayor velocidad visible.D2conmuta a la mitad de la velocidad deQA.D3yD4conmutan progresivamente más lento.- El patrón visible debe repetirse cada 10 pulsos de reloj.
Netlist SPICE y simulación
Netlist SPICE de referencia (ngspice) — extractoNetlist SPICE completo (ngspice)
* Practical case: Decade counter 0-9 with reset (Corrected)
.width out=256
* Fixed Impedance and Timing issues for 74LS93 ripple counter
* Ngspice compliant netlist
* --- COMPONENT MODELS ---
* Generic Red LED Model
.model DLED D(IS=1e-14 N=1.7 RS=10 BV=5 IBV=10u CJO=10p)
* --- LOGIC GATE SUBCIRCUITS (Behavioral with Low Impedance Output) ---
* IMPORTANT: Output Impedance reduced to 50 ohms to drive LEDs and avoid loading effects.
* Delays (C1=10p) maintained for convergence and latch feedback.
* Inverter (Standard Delay ~500ps)
.subckt INV A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 10p
.ends
* ... (truncated in public view) ...Copia este contenido en un archivo .cir y ejecútalo con ngspice.
* Practical case: Decade counter 0-9 with reset (Corrected)
.width out=256
* Fixed Impedance and Timing issues for 74LS93 ripple counter
* Ngspice compliant netlist
* --- COMPONENT MODELS ---
* Generic Red LED Model
.model DLED D(IS=1e-14 N=1.7 RS=10 BV=5 IBV=10u CJO=10p)
* --- LOGIC GATE SUBCIRCUITS (Behavioral with Low Impedance Output) ---
* IMPORTANT: Output Impedance reduced to 50 ohms to drive LEDs and avoid loading effects.
* Delays (C1=10p) maintained for convergence and latch feedback.
* Inverter (Standard Delay ~500ps)
.subckt INV A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 10p
.ends
* Fast Inverter (Minimal Delay ~5ps) - Used for Clock Edge logic to prevent races
.subckt INV_FAST A Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 / (1 + exp(20 * (V(A) - 2.5))))
R1 Y_int Y 50
C1 Y 0 0.1p
.ends
* 2-Input NAND
.subckt NAND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends
* 3-Input NAND
.subckt NAND3 A B C Y VCC GND
B1 Y_int 0 V = V(VCC) * (1 - ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) * (1/(1+exp(-20*(V(C)-2.5)))) ))
R1 Y_int Y 50
C1 Y 0 10p
.ends
* 2-Input AND
.subckt AND2 A B Y VCC GND
B1 Y_int 0 V = V(VCC) * ( (1/(1+exp(-20*(V(A)-2.5)))) * (1/(1+exp(-20*(V(B)-2.5)))) )
R1 Y_int Y 50
C1 Y 0 10p
.ends
* --- FLIP-FLOP SUBCIRCUIT ---
* T-FlipFlop: Negative Edge Triggered with Active High Clear
* Uses INV_FAST for clock inversion to ensure Master-Slave non-overlap (Race Fix).
.subckt TFF_NEG_CLR CLK CLR Q QBAR VCC GND
* Invert Clear
XINV_CLR CLR CLR_BAR VCC GND INV
* Invert Clock FAST (Avoids race where both Master and Slave are transparent)
XINV_CLK CLK CLK_BAR VCC GND INV_FAST
* -- Master Latch (Tracks D=QBAR when CLK=1) --
XG1 QBAR CLK M_SET_BAR VCC GND NAND2
XG2 Q CLK CLR_BAR M_RST_BAR VCC GND NAND3
XL1 M_SET_BAR M_QBAR M_Q VCC GND NAND2
XL2 M_RST_BAR M_Q CLR_BAR M_QBAR VCC GND NAND3
* -- Slave Latch (Tracks Master when CLK=0 -> CLK_BAR=1) --
* Uses CLK_BAR which is delayed only slightly less than gates, ensuring clean handover.
XG3 M_Q CLK_BAR S_SET_BAR VCC GND NAND2
XG4 M_QBAR CLK_BAR S_RST_BAR VCC GND NAND2
XL3 S_SET_BAR QBAR Q VCC GND NAND2
XL4 S_RST_BAR Q CLR_BAR QBAR VCC GND NAND3
.ends
* --- IC SUBCIRCUITS ---
* U1: 74LS93 4-Bit Binary Counter
* Pinout mapping adjusted to match standard 14-pin DIP in netlist order:
* 1=IN_B, 2=R0(1), 3=R0(2), 5=VCC, 8=QC, 9=QB, 10=GND, 11=QD, 12=QA, 14=IN_A
.subckt 74LS93 IN_B R0_1 R0_2 VCC QC QB GND QD QA IN_A
* Internal Reset Logic: Reset if R0_1 AND R0_2 are High
XAND_RST R0_1 R0_2 RESET VCC GND AND2
* Section 1: 1-bit counter (Input A -> QA)
XFFA IN_A RESET QA QA_BAR VCC GND TFF_NEG_CLR
* Section 2: 3-bit ripple counter (Input B -> QB -> QC -> QD)
XFFB IN_B RESET QB QB_BAR VCC GND TFF_NEG_CLR
XFFC QB RESET QC QC_BAR VCC GND TFF_NEG_CLR
XFFD QC RESET QD QD_BAR VCC GND TFF_NEG_CLR
.ends
* U2: 74HCT08 Quad 2-Input AND Gate
* HCT input thresholds are TTL-compatible, so 74LS93 HIGH outputs
* reliably drive the reset-detect gate in a real classroom build.
* Pins: 1=1A, 2=1B, 3=1Y, 7=GND, 14=VCC
.subckt 74HCT08 1A 1B 1Y GND VCC
XG1 1A 1B 1Y VCC GND AND2
.ends
* --- MAIN CIRCUIT ---
* 1. Power Supply
V1 VCC 0 DC 5
* 2. Clock Signal (50kHz)
V2 CLK_IN 0 PULSE(0 5 1u 100n 100n 10u 20u)
* 3. U1: 74LS93 Counter
* Wiring Guide connections:
* Pin 1 (CKB) connects to QA_NODE (Cascade)
* Pin 12 (QA) connects to QA_NODE
* Pin 14 (CKA) connects to CLK_IN
* Pin 2, 3 connect to RESET_NODE
* Outputs to LEDs
XU1 QA_NODE RESET_NODE RESET_NODE VCC QC_NODE QB_NODE 0 QD_NODE QA_NODE CLK_IN 74LS93
* 4. U2: 74HCT08 Reset Logic
* Reset when Count=10 (Binary 1010 -> QD=1, QB=1)
* Inputs: QB_NODE, QD_NODE -> Output: RESET_NODE
XU2 QB_NODE QD_NODE RESET_NODE 0 VCC 74HCT08
* 5. LED Indicators (with Current Limiting Resistors)
* Bit 0 (QA)
R1 QA_NODE N_D1 330
D1 N_D1 0 DLED
* Bit 1 (QB)
R2 QB_NODE N_D2 330
D2 N_D2 0 DLED
* Bit 2 (QC)
R3 QC_NODE N_D3 330
D3 N_D3 0 DLED
* Bit 3 (QD)
R4 QD_NODE N_D4 330
D4 N_D4 0 DLED
* --- SIMULATION COMMANDS ---
.op
* Transient analysis: 500us to see counts 0-9 and reset
.tran 100n 500u
* Print essential nodes. CLK_IN first.
.print tran V(CLK_IN) V(QA_NODE) V(QB_NODE) V(QC_NODE) V(QD_NODE) V(RESET_NODE)
.end
* --- GPT review (BOM/Wiring/SPICE) ---
* circuit_ok=true
* simulation_summary: The simulation successfully demonstrates a 4-bit counting sequence. The counter increments on the falling edge of the clock. The reset logic triggers correctly when the count reaches 10 (Binary 1010: QD=High, QB=High), forcing the outputs back to 0 immediately, effectively creating a 0-9 decade counter.
* bom_vs_spice equivalences ignored:
* - Clock source V2 modeled as a PULSE voltage source.
* - LEDs (D1-D4) modeled as generic diodes with specific parameters (DLED).
* - U1 (74LS93) modeled as a behavioral subcircuit using flip-flops and logic gates.
* - U2 (74HCT08) modeled as a behavioral subcircuit using AND gates.
* overall_comment: The circuit is well-designed and the SPICE netlist accurately reflects the intended decade counter logic. The behavioral models for the 74LS93 and 74HCT08 are robust, including necessary delays to prevent race conditions. The simulation logs confirm the modulo-10 reset operation works as expected. This is a solid didactic example.
* --------------------------------------Resultados de Simulación (Transitorio)
Show raw data table (6785 rows)
Index time v(clk_in) v(qa_node) v(qb_node) v(qc_node) v(qd_node) v(reset_node) 0 0.000000e+00 0.000000e+00 -7.27413e-30 4.514570e+00 -7.27413e-30 -7.27411e-30 9.643749e-22 1 1.000000e-09 0.000000e+00 -6.24961e-30 4.514570e+00 -6.24960e-30 -6.24960e-30 9.643749e-22 2 2.000000e-09 0.000000e+00 -4.31599e-30 4.514570e+00 -4.31599e-30 -4.31599e-30 9.643749e-22 3 4.000000e-09 0.000000e+00 -8.63940e-32 4.514570e+00 -8.63867e-32 -8.63940e-32 9.643749e-22 4 8.000000e-09 0.000000e+00 6.051302e-30 4.514570e+00 6.051309e-30 6.051302e-30 9.643749e-22 5 1.600000e-08 0.000000e+00 8.619372e-30 4.514570e+00 8.619381e-30 8.619372e-30 9.643749e-22 6 3.200000e-08 0.000000e+00 4.420001e-30 4.514570e+00 4.420001e-30 4.419984e-30 9.643749e-22 7 6.400000e-08 0.000000e+00 -8.88725e-31 4.514570e+00 -8.88725e-31 -8.88708e-31 9.643749e-22 8 1.280000e-07 0.000000e+00 -1.16882e-30 4.514570e+00 -1.16881e-30 -1.16884e-30 9.643749e-22 9 2.280000e-07 0.000000e+00 -1.70113e-31 4.514570e+00 -1.70131e-31 -1.70113e-31 9.643749e-22 10 3.280000e-07 0.000000e+00 1.102262e-31 4.514570e+00 1.101893e-31 1.102078e-31 9.643749e-22 11 4.280000e-07 0.000000e+00 -2.09740e-32 4.514570e+00 -2.09440e-32 -2.09556e-32 9.643749e-22 12 5.280000e-07 0.000000e+00 3.730926e-32 4.514570e+00 3.729081e-32 3.729081e-32 9.643749e-22 13 6.280000e-07 0.000000e+00 -4.04764e-32 4.514570e+00 -4.04464e-32 -4.04395e-32 9.643749e-22 14 7.280000e-07 0.000000e+00 3.793658e-32 4.514570e+00 3.789968e-32 3.791813e-32 9.643749e-22 15 8.280000e-07 0.000000e+00 -3.71737e-32 4.514570e+00 -3.71437e-32 -3.71552e-32 9.643749e-22 16 9.280000e-07 0.000000e+00 3.658968e-32 4.514570e+00 3.657123e-32 3.658968e-32 9.643749e-22 17 1.000000e-06 0.000000e+00 -3.53679e-32 4.514570e+00 -3.53610e-32 -3.53496e-32 9.643749e-22 18 1.010000e-06 5.000000e-01 -2.79091e-33 4.514570e+00 -2.80820e-33 -2.79091e-33 9.643749e-22 19 1.030000e-06 1.500000e+00 1.602683e-33 4.514570e+00 1.585385e-33 1.602683e-33 9.643749e-22 20 1.048757e-06 2.437856e+00 4.312441e+00 4.514570e+00 -1.25584e-33 -1.27306e-33 9.643749e-22 21 1.062135e-06 3.106726e+00 4.691659e+00 4.514570e+00 1.096887e-33 1.103161e-33 9.643749e-22 22 1.071814e-06 3.590675e+00 4.366639e+00 4.514570e+00 -8.23695e-34 -8.33794e-34 9.643749e-22 23 1.080871e-06 4.043525e+00 4.636207e+00 4.514570e+00 6.872047e-34 7.032322e-34 9.643749e-22 ... (6761 more rows) ...
Errores comunes y cómo evitarlos
- Usar 74HC08 en lugar de 74HCT08
- Problema: el nivel HIGH del 74LS93 puede no cumplir de forma fiable los umbrales de entrada estándar de HC.
Solución: usa 74HCT08 para niveles de entrada compatibles TTL.
Olvidar la conexión de
QAaCP1- Problema: el 74LS93 no contará correctamente a través de la secuencia prevista de 4 bits.
Solución: conecta directamente el pin 12 (
QA) deU1al pin 1 (CP1) deU1.Entradas de reset no unidas entre sí
- Problema: el contador puede no borrarse cuando ocurra
1010. - Solución: conecta tanto
R0(1)comoR0(2)al mismoRESET_NODE.
Solución de problemas
- Síntoma: La cuenta supera 9.
- Causa:
QBoQDno está correctamente conectado a la puerta AND. Solución: verifica
U2pin 1 =QB,U2pin 2 =QDyU2pin 3 =RESET_NODE.Síntoma: El circuito nunca cuenta.
- Causa:
RESET_NODEestá atascado en HIGH. Solución: revisa si hay cableado incorrecto, cortocircuitos o pines intercambiados en la puerta AND.
Síntoma: Los LED se comportan aleatoriamente al encender.
- Causa: los contadores ripple pueden arrancar en un estado indefinido.
Solución: aplica un pulso corto de reset al inicio.
Síntoma: El reset no es fiable.
- Causa: se usó una familia lógica incorrecta para la puerta de reset.
Solución: reemplaza cualquier 74HC08 por 74HCT08.
Síntoma: Solo conmuta la primera etapa.
- Causa: falta la conexión en cascada de
QAaCP1. - Solución: vuelve a conectar el pin 12 de
U1al pin 1 deU1.
Posibles mejoras y extensiones
- Añade un decodificador BCD a 7 segmentos y una pantalla para que la cuenta se muestre directamente como dígitos de 0 a 9.
- Sustituye la fuente de reloj por un pulsador con anti-rebote para avance manual y observación de cada estado.
Más Casos Prácticos en Prometeo.blog
Encuentra este producto y/o libros sobre este tema en Amazon
Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.




