miércoles, 8 de septiembre de 2010

Implementar un sumador, decodificador y multiplexor.

Lo primero que tenemos que entender es la forma binaria de hacer las sumatorias, para ello se muestra el siguiente diagrama:

Se muestran tres diferentes variables X, Y y Z, las compuertas OR servirán para hacer las sumas, mientras que en la AND se llevará el carry, el diagrama es una sumatoria completa.
El sumador consiste en ir sumando bit por bit (el menos significativo con el menos significativo) e ir guardando el carry que pueda producir para sumarlo al resultado de la suma de los bits siguientes. El resultado se va guardando en variables de salida diferentes, mientras que el carry se va arrastrando en una variable temporal hasta que se asigna a un carry de salida final al termino de la suma. Como se muestra el la siguiente figura:

En el lenguaje VHDL para poder programar en la tarjeta Spartan3 necesitaremos asignar las diferentes entradas, proponemos (A, B, C, D, W, X, Y, ), y salidadas (S1,S2,S3,S4). Posteriormente comenzaremos la sumatoria de los bits, primeramente (D xor Z) y se realizará después de 10ns, si existiese un carry agregaremos una variable adicional que irá acumulando los distintos carry´s. para sumar S2 se agrega (C xor Y xor variable del primer carry) después de 10ns, para el segundo carry se agregará la variable igualada a ((C and Y) or (C and variable 1er. carry) or (Y and varible 1er. carry)) después de 10 segundos. Y con esta metodología se relizarán las siguientes sumatorias (B xor X) y (A xor W). De esta manera se podrán obtener los resultados a la suma, recomendamos que se muestren en los led´s de la tarjeta y que la entrada de datos sea por medio de los switches.

Un decodificador es un circuito lógico que acepta un conjunto de entradas que representan números binarios y que activan solamente la salida que corresponde a dicho dato de entrada. En otras palabras, un decodificador mira a sus entradas, determina qué número binario está presente y activa la salida correspondiente a dicho número. Todas las otras salidas permanecerán inactivas. Un decodificador modelo tiene N entradas y M salidas. Debido a que cada una de las N entradas puede ser 0 o 1, hay 2N posibles combinaciones o códigos de entrada. Para cada una de estas combinaciones de entrada sólo una de las M salidas estará activa, y todas las otras estarán inactivas.

En este caso aplicaremos uno de 3x8 declarando tres entradas y 8 salidas, se realizará un "process" en el código y dentro de este un "case". Con un "when" pondremos la entrada y con signos de igualación, menor y mayor que mostraremos el número binario que saldrá del decodificador. Como se muestra en el siguiente ejemplo:

case entrada is

when "000" => salida <= "10000000";

(siguen los diferentes casos)...

end case;

end process;

Finalmente los datos de entrada se entregarán por medio de los switches y las salidas se observaran en los leds de la tarjeta Spartan 3.

Un multiplexor tiene de 4 a 1 tiene cuatro entradas y dos entradas de selección que son las que eligen cual de los cuatros bits de entrada salen en la única salida. Utiliza una estructura muy similar en código a la del decodificador, a base de "case". El valor de la variable tomaba un caso específico y la salida el valor de bit de entrada en esa posición, por ejemplo:

case selec is

when "00" => salida <= a;

(se sigue en los diferentes casos)....

Los datos se entregarán por medio de los switches y la salida por led.

No hay comentarios:

Publicar un comentario