Tengo 31 entradas digitales (cada una es alta o baja) y quiero una salida digital que sea alta solo si al menos 16 entradas son altas. ¿Cómo puedo implementar esta función de "mayoría" (que también es el bit más significativo de la suma) con la menor cantidad de transistores MOS?
Como beneficio adicional, también me gustaría saber cuál es la implementación más rápida en el peor de los casos.
Configure 31 transistores MOS como fuentes de corriente conmutables que alimentan un 32 que está configurado como sumidero de corriente a 15 veces las corrientes de la fuente. Luego observe el voltaje del nodo sumador.
EDITAR - No debería jugar juegos. El título decía "Digital", así que es digital, vamos. Una configuración sería
simular este circuito : esquema creado con CircuitLab
Esto maneja 15 entradas. Duplícalo y agrega un sumador completo de 4 bits y Bob es tu tío. No he mostrado el último sumador, pero deberías poder resolverlo por ti mismo.
Y, por supuesto, si construye esto con BJT, como con la lógica TTL o ECL, no se utilizarán transistores MOS en absoluto.
Conecte las 31 entradas (0-30 en el diagrama a continuación) a cuatro registros de desplazamiento de salida en serie y entrada en paralelo de 8 bits, como el 74HC597, que están conectados en cascada en serie (solo se muestran dos). Registre la salida en serie del último registro en un contador binario como el 74HC4024. Use otro contador 74HC4024 para realizar un seguimiento de cuándo se han producido 32 pulsos de reloj que luego repiten el ciclo.
Por alguna extraña razón, el CD4024 original y el 74HC4024 posterior comenzaron a numerar sus flip-flops con Q1 en lugar de Q0. Muy confuso. Así que estoy mostrando la parte NXP (HEF4024B) que corrigió esta anomalía.
Entonces, cada 32 pulsos de reloj (cuando Q5 del segundo contador sube), si al menos 16 entradas estaban altas (lo que significa que Q4 del primer contador es 1), entonces este estado se bloquea en un flip-flop tipo D (74HC74) y recordado hasta el próximo conjunto de 32 pulsos de reloj completo. Mientras tanto, las entradas se recargan en paralelo a los registros de desplazamiento.
Este es un caso algo especial, ya que el umbral de mayoría es una potencia de dos, por lo que solo se debe consultar un pin (en este caso, Q4, que representa 16-31). Si, en cambio, el umbral fuera 14/27, por ejemplo, sería necesario agregar un decodificador de direcciones para separar los valores 14 y 15 además de 16.
Con un reloj de entrada de 90 MHz, habrá un retraso máximo de 355 ns desde un cambio en la entrada hasta la actualización del estado mayoritario en la salida.
Nota: no se muestra necesariamente toda la "lógica de pegamento", pero esto debería transmitir la idea.
Parece que estás confundiendo algunos conceptos aquí. Estás diciendo que quieres un circuito de votantes mayoritarios. En cuyo caso podría hacer una tabla de verdad muy grande y reducir el circuito utilizando técnicas de reducción. Por ejemplo:
De entrada y salida
000 / 0
001 / 0
010 / 0
011 / 1
100 / 0
101 / 1
... así sucesivamente y así sucesivamente. Luego, cuando tenga las puertas lógicas finales, simplemente desmonte la puerta en su recuento de transistores. No podrá hacer esto con 32 bits a menos que tenga mucho tiempo libre. Suponiendo que te tomó 1 segundo hacer cada combinación, aún te tomará 2^32 segundos, o 136 años. Habiendo vivido tanto tiempo, tendría que hacer algún tipo de reducción de puerta.
Cuando dices "La parte más significativa de la suma", es un poco confuso. Considere que tiene 3 entradas que son altas, el bit más significativo de la suma es 1, al igual que 2. Si su contador mayoritario tuviera solo 3 bits, esta información no le diría nada.
"La implementación más rápida en el peor de los casos" suena como la suma de los retrasos de puerta que ocurrirían en el peor de los casos; la realización más en cascada tendría el mayor retraso.
Sugerencia: los pestillos y los flip flops también están hechos de puertas lógicas, que también están hechas de transistores. Tal vez podría hacer un registro de desplazamiento y un contador, luego usar un poco de lógica combinacional en la salida del contador.
Buena suerte.
Soy principalmente una persona analógica, así que haría esto usando técnicas analógicas.
Sume todas las entradas juntas en un amplificador sumador. Alimente la salida del amplificador a un comparador que se dispare cuando el número deseado de entradas sea HI.
Esto se puede simplificar a un verano resistivo (no se necesita un amplificador operacional) y un comparador.
bimpelrekkie
bobuhito
bimpelrekkie
b degnan