¿Hay alguna diferencia entre usar un decodificador para el código de operación de alu vs usar un multiplexor?

1

Soy un estudiante de programación que estudia los fundamentos de ingeniería eléctrica en el lateral. Me he encontrado con dos métodos diferentes para obtener el resultado de una operación en el autobús.

  1. Un decodificador acepta el código de operación. Cada operación tiene un habilitador adjunto a la salida. Todas las operaciones se realizan y los resultados se almacenan en los habilitadores. El habilitador que se selecciona da el resultado de la operación.
  2. La salida de cada operación proporciona la entrada para un multiplexor. El código de operación es la entrada de selección para el multiplexor. La salida del multiplexor se coloca en el bus.

¿Hay algo funcionalmente diferente entre estas dos variantes? ¿Cuáles son las ventajas y desventajas?

    
pregunta CanadaIT

3 respuestas

1

A lo que se refiere como "habilitadores" se les llama "controladores de bus" y se usan para bloquear selectivamente un valor particular en un bus. También se les conoce como conductores "tri-estatales", ya que tienen tres estados de salida diferentes: conducción baja, conducción alta y no conducción en absoluto. A veces, estos vienen con flip-flops integrados que actúan como memoria formando un "registro".

Sí, la lógica general es la misma en ambos sentidos, y un grupo de controladores de tres estados en un bus es esencialmente un multiplexor. La única diferencia es si la multiplexación se realiza dentro de un IC o si lo está haciendo afuera en el nivel macro con chips separados. Hacerlo dentro de un solo IC permite que las operaciones sean más rápidas y, por supuesto, ocupa menos espacio.

Como un punto separado, las ALU no necesariamente funcionan de la manera que usted describe. Algunas funciones se realizan en paralelo, luego el resultado del seleccionado correcto. Sin embargo, algunas funciones similares solo pueden diferir en pequeñas formas, y el código de operación podría usarse para seleccionar diferentes rutas de entrada de datos en el camino. Hay varias formas de crear una ALU y varias formas de optimizar una, ya que existen varios criterios para lo que es óptimo.

    
respondido por el Olin Lathrop
1

Históricamente, solía ser común tener chips con buses que podían manejarse desde múltiples fuentes. En algunos casos, tales diseños todavía pueden funcionar bien. Sin embargo, una dificultad con este enfoque es que a menudo es necesario tener un tiempo muerto entre la desconexión de una salida y la activación de otra, o bien limitar la cantidad de corriente que puede fluir si múltiples salidas que están conectadas simultáneamente intentan generar valores diferentes. Si la velocidad no es un requisito, agregar tiempo muerto puede ser un enfoque viable, pero en muchos casos es mejor usar un enfoque lógico diferente.

En casi todos los FPGA, y en muchos otros tipos de diseño lógico sintetizado, cada entrada lógica a cada componente interno debe conectarse exactamente a una salida (aunque cada salida puede alimentar varias entradas, y se asume que el chip tiene una parte que siempre "sale" alto y uno que siempre sale bajo). Si hay 256 subsistemas que podrían ubicarse lógicamente en un bus, entonces el dispositivo utilizará un multiplexor de 256 entradas (que puede construirse a partir de diecisiete multiplexores de 16 entradas, cada uno de los cuales puede construirse a partir de cinco multiplexores de 4 entradas). Aunque esto requiere más circuitos que los 256 controladores de tres estados que se encuentran en un bus, puede ser más rápido y más eficiente en el uso de la energía, ya que cada salida solo tiene que controlar una entrada, en lugar de tener que manejar una entrada y 255 salidas.

    
respondido por el supercat
0

A lo que se refiere como "habilitadores" se les llama "registros" y se utilizan para almacenar datos y realizar operaciones simples como desplazar y rotar esos datos, y para enviar esos datos a una E / S.

un multiplexor, por otro lado, es un dispositivo usado para alternar entre al menos dos fuentes de datos, secuencialmente, a una E / S común, y se puede hacer conectando las salidas del registro en paralelo y luego cambiando entre los registros para dar salida a los datos almacenados en cada uno. Se entiende que las salidas de los registros deben ser mutuamente excluyentes, con todas sus salidas establecidas en 3, excepto en el registro seleccionado.

    
respondido por el EM Fields

Lea otras preguntas en las etiquetas