Contador de bits usando puertas lógicas básicas [cerrado]

No puedo descifrar un rompecabezas que consiste en crear un contador de bits de 4 bits usando puertas lógicas básicas (NOT, OR, AND, NOR, NAND, XOR, XNOR, MUX, FULL ADDER). Un contador de bits indica cuántos bits se establecen en un valor. Entonces, por ejemplo, el valor '1011' tendría el resultado '011' porque se establecen tres bits y '011' significa 3 en binario.

Compré un libro llamado "Principios digitales" de Schaum's Outlines y en ninguna parte de este libro se dice cómo hacer un contador de puertas lógicas. También tengo el libro Hill & Horowitz, usado para enseñar lógica digital. En ninguna parte de este libro se explica cómo hacer un contador de bits con puertas lógicas. Encuentro extremadamente frustrante que hacer circuitos lógicos combinatorios básicos sea una especie de vudú negro que no está documentado.

¿Hay algún libro que describa COMPLETAMENTE la construcción de todos los circuitos combinatorios comunes, como contadores de bits, sumadores, etc., utilizando puertas lógicas básicas?

Nota: descubrir cómo hacer esto no es fácil. Esta es una tabla de verdad de 16 filas con 3 columnas de resultados. Si trata de escribir todo eso y simplificarlo, será muy complejo y tendrá muchas oportunidades para cometer errores. La tabla de verdad para un contador de bits de 4 bits se ve así (entradas a la izquierda, salida a la derecha):

ingrese la descripción de la imagen aquí

Traté de resolver esto usando un mapa de Karnaugh, pero todavía resulta en una expresión que es demasiado grande para el área de solución de rompecabezas. Por ejemplo, para la segunda columna de salida, obtuve el siguiente mapa de Karnaugh:

ingrese la descripción de la imagen aquí

que tiene la siguiente expresión:

A'B'CD + A'BD + ABC' + AB'D + BCD' + AB'CD'

Representar esto en el rompecabezas requeriría 6 AND de 4 vías, 1 OR de 4 vías y 3 OR de 2 vías. Todos estos componentes ni siquiera cabrían en el área disponible para la solución del rompecabezas.

¿Qué es el contador de bits? y, por cierto, cualquier lógica puede diseñarse solo a partir de puertas NANDo NORsolo ...
@EugeneSh. Un contador de bits cuenta el número de bits en un valor binario. Entonces, por ejemplo, el valor 1011 tiene 3 bits establecidos. Por lo tanto, si la entrada al contador de bits es 1011, la salida sería 0011, lo que equivale a 3.
En este caso, solo dibuje una tabla de verdad. Tan fácil como esto. Pista: 4 entradas 3 salidas..
Apoyo el comentario de Eugene Sh. Parece que te has perdido el punto sobre la síntesis lógica. Una vez que sabe cómo sintetizar una función simple, las funciones más complejas no son cualitativamente diferentes, por lo que no encontrará "cómo hacer un sumador" (bueno, está bien, mal ejemplo: puede encontrar esas instrucciones). En cambio, siéntese, defina exactamente lo que se supone que debe hacer su función, luego divídala en términos simples y sintetícelos. Por ejemplo, su contador de bits puede verse como un par de sumadores de 1 bit que alimentan un sumador de 2 bits. Tomar desde allí.
Conocer la tabla de verdad no me aclara cómo ensamblar las puertas lógicas que implementan esa tabla de verdad.
@TylerDurden Si no sabe cómo traducir una tabla de verdad en una implementación de puerta, entonces debe dar un paso atrás y aprender cómo hacerlo para funciones más simples.
@EugeneSh. La "tabla de verdad" aquí no tiene una salida binaria simple, tiene una salida de 3 bits, por lo que no se puede resolver simplemente haciendo algo de álgebra booleana.
@TylerDurden Cada salida es una función binaria. Si lo prefiere, puede verlo como 3 tablas de verdad, si no está familiarizado con las tablas de verdad que tienen 3 salidas a la vez... Y sobre su nota: No, no es difícil si lo hace con cuidado.
@TylerDurden Entonces, en lugar de escuchar las sugerencias, estás insultando a las personas que las dan. Muy inteligente. Pero aun así, seré amable y te daré otra pista: hay métodos para simplificar funciones booleanas que no involucran álgebra booleana. ¿Has oído hablar de los mapas K? ¿cuánto tiempo le llevará escribirlo de una tabla de verdad y escribir la expresión resultante a partir de ella?
¿Es algo como esto lo que busca? ti.com/lit/ds/symlink/sn74hc163-q1.pdf que muestra principalmente lo que busca en la página 2, y luego las chanclas están en la página siguiente.
@Tyler Un contador binario y un contador de bits son cosas diferentes.
@transistor He agregado la tabla de verdad que muestra las entradas y salidas esperadas.
@EugeneSh. Lo siento si parezco insolente, agradezco mucho su ayuda. Es solo que este ha sido un problema muy frustrante para mí y ha sido frustrante no poder encontrar un libro que solo enumere los circuitos lógicos combinatorios comunes. Agradezco sus sugerencias.
@TylerDurden Ahora mire de cerca su mesa. La primera salida es trivial, ¿no? Puedes escribir su función de inmediato. Los otros dos se realizan con su método de simplificación preferido. K-map sería el más rápido.
De hecho, como tienes el trivial, una vez que resuelves el siguiente, el final es todo lo que NO está en los otros dos. Otra cosa a tener en cuenta es que un conjunto de los dos más complejos tiene siete condiciones y el otro tiene ocho. Uno puede ser más simple que el otro.
¿De qué "área de rompecabezas" estás hablando? la pregunta era sobre diseño general..

Respuestas (2)

Dadas las entradas A, B, C, D y las salidas X, Y, Z, donde XYZ es un número binario sin signo de 3 bits que representa el número de bits en ABCD que son 1. Sea X el bit más significativo del número binario y sea Z sea el bit menos significativo.

La tabla de verdad para la función se parece a...

ABCD => XYZ
0000 => 000
0001 => 001
0010 => 001
0011 => 010 0100 =>
001
0101
=> 010 0110 => 010
0111 => 011
1000 => 001
1001 => 010
1010 =
> 010 1011 =
> 011 1100 => 010
1101 => 011
1110 => 011
1111 => 100

De la tabla de verdad vemos claramente que la salida X es solo 1 cuando todos los bits en ABCD son 1 .

X = A AND B AND C AND D

Vemos claramente que la salida Z solo es 1 cuando un número impar de bits es 1. Una función de paridad impar se implementa fácilmente usando puertas XOR. Por lo tanto...

Z = A XOR B XOR C XOR D

La función para la salida Y es un poco menos obvia. 1 cuando al menos dos de ABCD están encendidos pero no cuando los cuatro están encendidos. El término Y puede escribirse como todas las combinaciones de dos entradas activadas, excepto cuando las cuatro están activadas.

Y = ((A Y B) O (A Y C) O (A Y D) O (B Y C) O (B Y D) O (C Y D)) Y NO X

Como alternativa a lo descrito anteriormente, esta función también podría construirse conectando en cascada un sumador de dos bits y dos sumadores de tres bits. El primer sumador suma A y B. El segundo sumador suma el resultado del primer sumador a C. Y el tercer sumador suma el resultado del segundo sumador a D, y así sucesivamente para cualquier número de entradas.

¿Cómo averiguaste la expresión para Y?
También supongo que Y se puede acortar aún más usando diagramas de Karnaugh

Descubrí la solución, que es similar a lo que dice el usuario 96037 al final de su respuesta. Debido al espacio limitado disponible en el área de solución, es necesario usar sumadores y parece que se necesitan dos sumadores de la siguiente manera:

ingrese la descripción de la imagen aquí

Entonces, la estrategia básica aquí es que primero genere los recuentos de bits para las entradas 1+2 y 3+4 por separado, lo que se puede hacer con solo 2 puertas cada una (XOR y AND). Ahora, tienes dos valores de 2 bits. Luego puede sumar estos dos valores usando un par de sumadores completos encadenados. El acarreo al primer sumador debe establecerse en 0. Por lo tanto, en total hay 6 componentes más el 0 en.

¿Qué es este juego?
@EugeneSh. Se llama "codificador de circuito". El programa le da un problema (como aquí para crear un contador de bits de 4 bits) y debe ensamblar las puertas lógicas para formar una solución. El programa puede probar su solución para ver si tiene razón y mostrarle los casos en los que se equivocó. Con las teclas de flecha ("1/16" en la parte inferior izquierda) puede recorrer todas las posibilidades de entrada y probarlas manualmente.
Lindo. No hay aplicación para Android, es una pena.
@EugeneSh. Estoy tratando de aprender lógica digital usando este juego y puedo resolver la mayoría de los problemas, pero algunos de ellos (como este) son difíciles para mí.