¿Cómo puedo implementar esta función con JK flip-flop + puertas NAND?

Necesito diseñar un contador ascendente/descendente mod-5 con entrada de control x. Cuando x = 0 contará hacia atrás, y cuando x = 1 contará hacia adelante. Solo puedo usar un flip-flop JK y puertas NAND. El complemento de x no está disponible.

Pensé en un número de 3 bits que es ABC. Escribí la tabla y creé un mapa de Karnaugh para A, que es el primer dígito. Estoy atascado allí porque la función que obtuve para A es (A'.B'.C'.x'+BCx) y no pude encontrar ninguna forma de implementar esta función con las puertas dadas.

El paso final debe estar en el flip-flop JK para que se sincronice con el reloj.

He estado pensando durante dos horas sobre esto. ¿Me puede dar una manera de implementar esta función?

Nota: Los complementos de A, B y C están disponibles y los niveles lógicos 1 y 0 están disponibles.

¿ Una puerta NAND?
no, se pueden usar múltiples compuertas nand y flip flops jk.
Bueno, solo con puertas NAND puedes implementar cualquier cosa . Las puertas NAND están funcionalmente completas. ¿Puedes pensar cómo implementas NOT con NAND? Pista: No(A)=NAND(A,A).
Sugerencia: máquina de estado de Moore

Respuestas (1)

Como regla general, lo siguiente es cierto.

1) U' = U NAND U

Esto se puede construir a partir de una puerta NAND.

2) U O V = U' NAND V' = (U NAND U) NAND (V NAND V)

Esto se puede construir a partir de dos puertas NAND de 2 entradas.

3) U Y V = (U NAND V)' = (U NAND V) NAND (U NAND V)

Esto se puede construir a partir de dos compuertas NAND de 2 entradas.



Podemos aplicar las reglas anteriores una y otra vez a la siguiente ecuación.

(A'.B'.C'.x'+BCx)

A' = A NAND A
B' = B NAND B
C' = C NAND C
X' = X NAND X

D = A' NAND B' (señal intermedia)
E = C' NAND X' (señal intermedia)

D' = D NAND D (que es A'.B')
E' = E NAND E (que es C'.x'


F' = F NAND F (que es A'.B'.C'.x')

G = B NAND C (señal intermedia)
G' = G NAND G (que es BC)
H = G' NAND X (señal intermedia )
H' = H NAND H (que es BCx)

I = F NAND H (que es A'.B'.C'.x'+BCx)

Expandiendo todo da...

A'.B'.C' .x'+BCx = F NAND H

A'.B'.C'.x'+BCx = (D' NAND E') NAND (G' NAND X)

A'.B'.C'.x'+BCx = ((D NAND D) NAND (E NAND E)) NAND ((G NAND G) NAND X)

A'.B'.C'.x'+BCx = (((A' NAND B') NAND (A ' NAND B')) NAND ((C' NAND X') NAND (C' NAND X'))) NAND (((B NAND C) NAND (B NAND C)) NAND X)

A'.B'.C'.x'+BCx = ((((A NAND A) NAND (B NAND B)) NAND ((A NAND A) NAND (B NAND B))) NAND (((C NAND C) NAND (X NAND X)) NAND ((C NAND C) NAND (X NAND X)))) NAND (((B NAND C) NAND (B NAND C)) NAND X)

esquemático

simular este circuito : esquema creado con CircuitLab

No tengo ganas de editar tu respuesta jajaja ... pero si solo tienes curiosidad por la próxima vez, intenta utilizar el\cdot para Y y\overline{X} X ¯ para negar algo. No te culparía por agregar todo el Mathjax para esto...