Descargar

Diseño de multiplicador 4 x 8 en VLSI


Partes: 1, 2

    1. Esquema general
    2. Bloques funcionales
    3. Registro
    4. Contador
    5. Comparador
    6. Máquina de estados
    7. Circuito definitivo
    8. Conclusiones
    9. Bibliografía

    INTRODUCCIÓN

    El siguiente trabajo pretende explicar de manera sencilla el procedimiento utilizado en el diseño VLSI de un multiplicador básico de dos números, uno de 4 bits por otro de 8 bits. La realización de este proyecto es de carácter académico e intenta buscar un esquema adecuado en cuanto a medidas de velocidad, tamaño y disipación de potencia se refiere, obviamente utilizando parámetros de optimización que se encuentren dentro de los límites del curso. Se busca aprender a manejar las herramientas básicas para el diseño en layout y simulación (alliance a nivel de layout y pspice para simulaciones) de los circuitos implementados, al igual que utilizar los conocimientos adquiridos durante el curso para obtener resultados acordes con los objetivos preestablecidos para el proyecto.

    ESQUEMA GENERAL

    El multiplicador que se va a diseñar es un dispositivo poco práctico a la hora de hacer una multiplicación pero que, debido a su implementación de carácter rudimentario, requiere del diseño de muchos bloques funcionales, lo que resulta adecuado a la hora de enriquecer conocimientos.

    El circuito funciona a partir de la realización de sumas consecutivas. El número de 8 bits es sumado tantas veces como el número de 4 bits lo indique. Por ejemplo, si se va a multiplicar 0101 (que equivale al número 5 en decimal) por 00011010 (26 en decimal), se realizará la operación: 26+26+26+26+26=130 (se suma 5 veces el número 26) que es lo mismo que multiplicar 26*5.

    Teniendo claro el procedimiento a seguir para realizar la multiplicación, es importante definir los bloques necesarios para la ejecución de la misma. Debido a que la multiplicación se realizará a partir de sumas, la necesidad de un sumador es más que obvia, y será el primer bloque que se diseñará. Ya que necesitamos ir sumando el mismo número una y otra vez resulta práctico el uso de un dispositivo de almacenamiento como un registro, el cual vaya acumulando las sumas consecutivas es decir, que siempre sume el valor de la entrada con el valor previamente almacenado.

    Teniendo ya un dispositivo que acumule es necesario algo que indique cuantas veces acumular las sumas. Para esto resulta útil la implementación de un contador que se incremente hasta llegar al número de veces que se quiere sumar, lo que puede ser detectado mediante el uso de un comparador. Debido a las diferentes tareas que debe realizar el circuito, la utilización de una máquina de estados que indique cuando sumar, cuando mostrar el resultado, cuando resetear para empezar una nueva operación, etcétera, resulta valiosa siempre y cuando no complique mucho el "hardware" del circuito.

    Habiendo establecido los bloques básicos, y teniendo muy claro la existencia de una máquina de estados, es indispensable definir de manera clara el comportamiento del circuito. Se definirán tres estados posibles para la máquina de estados: el primero donde se resetean tanto el registro como el contador, el segundo donde se realizan las sumas consecutivas, y el tercero donde se muestra el resultado. La definición de estos pasos indica de manera clara la necesidad de una señal de "arranque" que se encargue de inicializar el circuito para indicar cuando se realizará una nueva operación. Durante el siguiente trabajo llamaremos a esta señal de entrada "BEGIN" o "clear" indistintamente.

    La siguiente figura muestra un esquema a grandes rasgos de la interconexión de los bloques básicos del circuito, donde A y B son el multiplicando y el multiplicador y S es el resultado.

    A continuación se muestra el código AHDL y AHPL para el sistema digital que queremos implementar a partir de la máquina de estados:

    AHDL

    1. REG.CLR ß BEGIN, COUNT.CLR ß BEGIN

    à [1*BEGIN]+[2*BEGIN!]

    2. REG ß SUM(REG,A), COUNT ß INC(COUNT)

    à [2*XOR(COUNT,B)!]+[3*XOR(COUNT,B)]

    3. OUT=REG

    à [1*BEGIN]+[3*BEGIN!]

    REG es el registro, COUNT es el contador, y OUT es la misma salida S.

    Cualquier operación debe venir presidida por la señal de BEGIN. Siempre y cuando esta señal esté en estado alto la máquina de estados permanecerá en el paso 1 donde se da "clear" al registro y al contador. Una vez la señal de BEGIN pase a estado bajo, la máquina pasará al paso 2 donde se almacenará en el registro el valor que tenía almacenado anteriormente, más el valor de "a". La máquina permanecerá en el paso 2 siempre y cuando el contador (el cual va incrementado cada pulso de reloj) tenga un valor diferente al de "b". Una vez el contador llegue a ser igual a "b" la multiplicación habrá concluido y la máquina pasará al paso 3 donde la salida toma el valor del registro. La máquina permanecerá en este estado hasta que la señal de BEGIN vuelva a un estado alto, lo que indica el inicio de una nueva operación.

    Partes: 1, 2
    Página siguiente