Implementando una palanca de cambios con solo multiplexores

-2

Esta es mi pregunta para la tarea, agradecería cualquier consejo que me ayude a comenzar.

  

Se utiliza un desplazador para desplazar una cadena de 0 y 1 a la izquierda o   derecho por un número fijo de posiciones. Las posiciones vacantes son   lleno por 0. Por ejemplo, si 0011 se desplaza hacia la izquierda una posición, el   el resultado es 0110; si 0011 se desplaza hacia la derecha una posición, el resultado es   0001.

     

Se utilizan dos señales de control, S1 y S0, para especificar las diversas   acciones, como se indica a continuación.

     

S1 = 0 y S0 = 0: Sin cambios, es decir, pasar la cadena de entrada a la salida

     

S1 = 0 y S0 = 0: cambia la posición de un bit a la derecha

     

S1 = 1 y S0 = 0: desplazar dos posiciones de bit a la derecha

     

S1 = 1 y S0 = 1: mover la posición de un bit a la izquierda

     

Usando una cantidad de multiplexores apropiados sin ningún adicional   puerta lógica, implemente una palanca de cambios que acepte una cadena ABCD de 4 bits, y   genera la cadena de 4 bits requerida WXYZ dependiendo del control   Señales S1 y S0. Los literales complementados no están disponibles. Debes   etiqueta tus multiplexores, entradas y salidas claramente.

Investigué en línea acerca de la operación de cambio y descubrí que en realidad coincide con las operaciones aritméticas, es decir, que "cambiar la posición de un bit a la derecha" es en realidad una división por 2, y "cambiar la posición de un bit a la izquierda" es una multiplicación por 2. Sin embargo, no tengo idea de lo que significa "cambiar a la derecha dos bits", ¿es división por 5? Probé con el código binario 1111 (15) y el resultado es 0011 (3).

Básicamente, dado que las operaciones de cambio son solo operaciones aritméticas, ¿debo usar los multiplexores para implementar el último? Sin embargo, no sé cómo hacerlo con solo dos señales de control S1 y S0. ¿Necesito 4 multiplexores ya que la salida es de 4 bits?

    
pregunta uohzxela

1 respuesta

1

Esta no es una respuesta directa a tu tarea, sino una respuesta a tu análisis de lo que significa el cambio numérico.

Sí, desplazar un número binario a la izquierda es una multiplicación por 2. En general, desplazar un número a la izquierda por un dígito lo multiplica por la base numérica. Esto se debe a que cada dígito a la izquierda tiene un peso de la base numérica veces mayor. En decimal, desplazar un dígito a la izquierda multiplica el número por diez, en binario por dos.

No, desplazar a la derecha por dos no se divide por 5. Con la misma lógica anterior, desplazar un dígito a la derecha divide el número por la base numérica. En binario, esto significa que se divide por 2. Desplazar dos bits a la derecha por 4. El motivo por el que no ve esto en su ejemplo es porque perdió algunos de los dígitos.

Comenzaste con el binario 1111 y lo modificaste dos bits. Esto produce 11.11 binario. Agregue los pesos de cada uno de los dígitos y obtendrá

  2**1 + 2**0 + 2**-1 + 2**-2
=    2 +    1 +    .5 +   .25
= 3.75

Que es exactamente 15/4 como se esperaba. El problema es que ignoraste los dígitos de la fracción y, por lo tanto, solo te quedaste con 3. En este caso, parece que el turno se divide entre 5.

Si realiza un cambio de entero , el desplazamiento en un bit a la derecha realmente lo hace

trunc (N / 2)

donde N es el número original y TRUNC simplemente establece todos los bits de fracción en 0 (los trunca). Tenga en cuenta que trunc (15/2) es igual a 3.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas