You are on page 1of 6

LABORATORIO DE ESTRUCTURA DE COMPUTADORES Y FUNDAMENTOS DE ARQUITECTURA Curso 2005/2006

UNIDAD ARITMTICO-LGICA Introduccin


Se han encontrado dos modelos diferentes provechosos en la descripcin y el diseo de los sistemas digitales: el modelo de sistema y el modelo algortmico. El modelo de sistema es adecuado para introducir los conceptos bsicos y para analizar y disear sistemas simples, que se usan como componentes de sistemas ms complejos. El modelo algortmico es atractivo para describir estos sistemas ms complejos. Un sistema digital combinacional est definido por un alfabeto de entrada I, un alfabeto de salida O y una funcin F de I en O. El valor de la salida en cualquier instante depende slo del valor de la entrada en el mismo instante. Esto es, z t = F x t donde x(t ) pertenece al conjunto de entrada I (alfabeto de entrada) y z (t ) al conjunto de salida O (alfabeto de salida), siendo finitos ambos conjuntos. En consecuencia, un sistema combinacional se especifica por la terna (I, O, F), con F: I O. Puesto que la funcin F no depende del tiempo podemos eliminar la t y escribir z= F x Por ejemplo, un sistema combinacional tiene como entrada un dgito decimal y como salida el resto cuando la entrada se divide por 3. Los conjuntos de entrada y salida son I = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, O = {0, 1, 2} Y la funcin F es x 0 1 2 3 4 5 6 7 8 9 z = F(x) 0 1 2 0 1 2 0 1 2 0 Que tambin puede describirse usando la expresin aritmtica z= x mod 3, 0x9 Un sistema digital secuencial est definido por un alfabeto de entrada I, un alfabeto de salida O, un conjunto de estados internos Q, una funcin G de IQ en Q y una funcin H de IQ en O. Por ejemplo, un sistema secuencial con entrada x y salida z tiene como conjuntos de entrada y salida a I ={a , b} y O ={ p , q } , respectivamente. El sistema produce una salida en el instante t de valor q siempre que los ltimos tres valores de entrada sean una a seguida de dos b's consecutivas. Esto es q si x t 2= a y x t 1= b y x t = b z t = p en otrocaso Para obtener la descripcin de estado hemos de determinar primero al conjunto de estados. Para ello hemos de identificar a las clases de secuencias de entrada equivalentes con respecto a las salidas presentes y futuras. En este caso existen tres clases de secuencias, definidas por 1. Aquellas que terminan en ab 2. Las que terminan en a 3. Ninguna de las anteriores De acuerdo con esto definiremos tres estados, S1, S2 y S3, para representar a estas tres clases de secuencias de entrada. La funcin de transicin se obtiene considerando las transiciones desde una clase a otra para una entrada dada. Por ejemplo, si el sistema est en el estado S3

LEYFA - Curso 2005/2006

Prctica: ALU

pgina 1 de 6

(correspondiente a la clase (3)) y la entrada es a la nueva clase ser S2, puesto que ahora la secuencia termina con una a. Las funciones de transicin de estado (G) y de salida (H) se especifican en la tabla siguiente. Entrada x(t) Estado Presente a b S1 S2, p S3, q S2 S2, p S1, p S3 S2, p S3, p Estado Siguiente, Salida En principio, cualquier sistema digital podra ser modelado en forma de sistema secuencial: el conjunto Q representa todos los estados fsicos en los cuales puede encontrarse el sistema, la funcin G describe los cambios de estado en funcin del estado actual y de las entradas, y la funcin H define el valor de las salidas tambin en funcin del estado actual y de las entradas. Sin embargo no deja de ser una definicin terica. En un circuito como una ALU con dos registros de 16 bits, Q es el conjunto de todos los posibles contenidos, lo cual asciende a 65536 (ms de cuatro mil millones); la funcin G debera definir para cada uno de esos estados y su combinacin con el conjunto de entradas cul sera el nuevo estado interno; sencillamente ello es imposible. Sin embargo, en muchos casos las funciones H y G se definen de forma implcita, es decir, mediante un algoritmo, o lo que es lo mismo, especificando una secuencia de clculos o transformaciones ms simples. Desglosando suficientemente el algoritmo se puede llegar a pasos implementables mediante mdulos combinacionales o secuenciales existentes. El mtodo habitual para disear estos sistemas se apoya en las dos siguientes caractersticas: a) El estado se descompone en dos partes, la componente de datos y la componente de control. b) Si la transformacin de los datos es demasiado compleja para hacerla en un solo paso, se descompone en una secuencia de transformaciones ms simples. Esta secuencia es controlada por la componente de control. Se llaman Mquinas Algortmicas a aquellos sistemas digitales que realizan un algoritmo.

La Unidad Aritmtico-Lgica
La Unidad Aritmtico-Lgica es la parte del sistema computador donde se efectan las operaciones aritmticas y lgicas sobre los datos. Las ALUs de cualquiera de los procesadores actuales son capaces de realizar una amplia variedad de operaciones entre las que, con toda seguridad, se encuentran las cuatro operaciones aritmticas elementales (suma, resta, multiplicacin y divisin). En tanto que la suma y la resta son fcilmente implementables mediante circuitos combinacionales, y de hecho existen circuitos integrados que realizan estas operaciones, la multiplicacin y la divisin resultan excesivamente complejas para la implementacin combinacional. En cambio estas operaciones permiten ser implementadas mediante Mquinas Algortmicas. Sea la multiplicacin de nmeros enteros positivos. Los nmeros los representaremos mediante vectores de n bits, x= X n1 , X n 2 , , X 1, X 0 , en la representacin binaria habitual en la que el valor del nmero es
x= X i2i , lo que permite representar nmeros en el rango 02n1.
i =0 n1

El producto de dos nmeros de n bits ocupa 2n bits. Veamos un posible algoritmo para calcular p=xy. Ponemos
LEYFA - Curso 2005/2006

p= x y=x Y i 2 = x 2 Y i
i i i =0 i =0

n1

n1

Prctica: ALU

pgina 2 de 6

Es decir que hay que realizar la operacin

p i= x 2 Y i n veces para i = 0, 1, , n1, y luego sumar. Tambin podemos ir sumando conforme se calculan los productos parciales de la siguiente forma: s 0 =0 ;

s i1 =s i pi , para i = 0, 1, , n1. Obteniendo p=s(n). Como p tiene 2n bits las operaciones hay que hacerlas con ese ancho de palabra, es decir que los productos parciales pi y los acumulados parciales s(i) deben de ser de 2n bits. Ahora bien, el trmino xYi tiene n bits, y el factor 2i slo indica que hay que desplazar al producto xYi en i bits a la izquierda.

Una forma ms eficiente es hacer que el desplazamiento lo haga el acumulado parcial, se dejan fijos los productos parciales y se desplazan a la derecha los acumulados parciales: p (0) = 0 1 p ( j+1) = ( p ( j) + 2n x Y j ) para j = 0, 1, , n1 2 (n) que cumple p = x y . El producto se obtiene en n pasos. Cada paso consiste en la multiplicacin de x por un dgito binario (0 1) para formar x Y j , seguida por una suma de dos operandos: los n bits de ms a la izquierda de p ( j ) con los n bits del producto parcial x Y j (lo cual puede producir un acarreo y hay que prever un bit adicional a la izquierda de p ( j ) ); y por ltimo se hace un desplazamiento aritmtico a la derecha de un bit (el factor ). El factor 2n que multiplica a x slo indica que el nmero ha de estar alineado n bits a la izquierda, o sea con la mitad izquierda del producto parcial. Para realizar este algoritmo es necesario: un registro de desplazamiento a la derecha A de (2n+1) bits donde guardar los acumulados parciales p ( j ) , un registro M de n bits donde guardar el multiplicando x, un registro Q de n bits donde guardar el multiplicador y, y tambin un sumador de n bits con acarreo. En cada iteracin del algoritmo se realiza la operacin A[2n:n] := A[2n1:n] + M (i) o bien A[2n:n] := A[2n1:n] + 0 (ii), segn que el bit Q[j] ( Y j ) sea 1 (i) o cero (ii). El registro A se pone a cero inicialmente y luego se va llenando, de izquierda a derecha, los n bits de la izquierda en el primer paso, los n+1 bits en el segundo paso, y sucesivamente un bit ms de la mitad derecha a cada paso. A su vez, del registro Q se debe extraer en cada iteracin un bit empezando por el de ms a la derecha, luego el siguiente, y as sucesivamente. Para facilitar la comprobacin es conveniente hacer que Q sea un registro de desplazamiento hacia la derecha y en cada etapa se desplaza un bit; de esa forma por el bit Q[0] van apareciendo sucesivamente Y0, Y1, , Yn-1. Como la mitad derecha de A, los bits A[n1:0], se va llenando desde la izquierda un bit en cada etapa y el registro Q se va vaciando al mismo ritmo se pueden solapar ambos registros, haciendo que A[n1:0] haga las veces de Q. Se propone, pues, la siguiente Unidad de Datos de nuestro multiplicador:

LEYFA - Curso 2005/2006

Prctica: ALU

pgina 3 de 6

A[2n1:n]
x

A[n1:0]Q

M[n1:0]

A[0]

Cout

SUM

El algoritmo a realizar se puede formalizar de la siguiente forma: MULTIPLICADOR {Input x, y vector_de_bits[n], start boolean; Output p vector_de_bits[2n], done boolean; Local A registro[2n+1], M registro[n], SC contador[k] } BEGIN 1: if NOT(start) goto 1 done 1; 2: M[n1:0]x A[n1:0]y A[2n:n]0 done0 SCn1; 3: SCDEC(SC) if A[0]=0 goto 5; 4: A[2n:n]ADC(A[2n1:n], M[n1:0], 0); 5: A[2n1:0] A[2n:1] if (SC <> 0) goto 3 if (SC = 0) goto 1 ; END. Se han introducido algunos elementos nuevos en el algoritmo que se discuten a continuacin.
LEYFA - Curso 2005/2006 Prctica: ALU pgina 4 de 6

Dado que los n pasos por los que debe pasar el algoritmo son repetitivos conviene tener un elemento contador (SC) que los cuente. Debe tener un tamao (n de bits) k suficiente para contar n, es decir, 2k 1 < n 2k . Este elemento contador se inicia en el paso 2 al valor (n1) y luego se decrementa en el paso 3, comprobndose si ha llegado a cero en el paso 5. Tambin hay dos seales nuevas, start y done, una para arrancar el clculo y la otra para sealar su conclusin. Las operaciones que hay que realizar sobre los registros son: carga en paralelo de los factores x e y en los registros M[n1:0] y A[n1:0] respectivamente; puesta a cero del registro A[2n:n]; carga en paralelo de este mismo registro A[2n:n] con el resultado de la suma con acarreo; desplazamiento a la derecha de todo el registro A. Estas operaciones se realizan mediante seales de control activadas en los momentos adecuados. Igualmente sobre el contador las operaciones de carga en paralelo y descontar. Queda por disear la Unidad de Control que secuencie al algoritmo y genere las seales de control. Directamente del listado anterior ponemos el diagrama de estados, que depende de tres seales de condicin, una externa (start) y dos que provienen de la Unidad de Datos. El diseo de una mquina de estados que responda al diagrama anterior se puede hacer de muchas
notstart A[0]=1 start

S4
A[0]=0

S1

S2

S3
SC!=0 SC=0

S5

formas. Por ejemplo, el mtodo tradicional requiere de tres biestables, escribindose la tabla de prximo estado as: EP S1 S2 S3 S4 S5 000 S1 S3 S5 S5 S3 001 S1 S3 S5 S5 S1 010 S1 S3 S4 S5 S3 Entradas: start A[0] SC=0 011 100 101 S1 S2 S2 S3 S3 S3 S4 S5 S5 S5 S5 S5 S1 S3 S1 ES (estado siguiente) 110 S2 S3 S4 S5 S3 111 S2 S3 S4 S5 S1

La tabla de salida (mquina de Moore) con las seales de control que corresponden a cada estado: Estado LoadM ClearA LoadA ShiftA DecSC Done S1 0 0 0 0 0 1 S2 1 1 0 0 0 0 S3 0 0 0 0 1 0 S4 0 0 1 0 0 0 S5 0 0 0 1 0 0 A partir de aqu hay que asignar un cdigo a cada estado, elegir el tipo de biestable y hallar las ecuaciones de excitacin de los mismos.
LEYFA - Curso 2005/2006 Prctica: ALU pgina 5 de 6

Una tcnica ms inmediata de diseo de la unidad de control es la conocida por one-hot, o lo que es lo mismo un biestable activo por estado, como muestra el esquema siguiente.

Enunciado
Se realizar el diseo y montaje de una unidad multiplicadora de nmeros binarios sin signo de 8 bits, como parte de una ALU. La seccin de datos se realizar segn el diagrama de bloques explicado anteriormente, implementndose el registro A con 4 circuitos 74LS294 y un biestable 74LS74 (17 bits), el registro M con un circuito 74LS373 ( 74LS574), el sumador con dos circuitos 74LS382, y el contador con un circuito 74LS161 ( 74LS163). La seccin de control se realizar segn el mtodo que se prefiera, o bien como mquina de estados diseada expresamente, minimizando los biestables y optimizando la circuitera combinacional, o bien segn el esquema de un biestable activo propuesto antes. Los datos se introducen a mano mediante interruptores y se visualizarn, junto con el resultado, mediante mdulos TIL311 directamente en hexadecimal (un total de 6 mdulos visualizadores). Un pulsador dar la seal start y la seal done se mostrar mediante un LED. La valoracin de la prctica se basar en los siguientes puntos: funcionamiento, el circuito montado debe funcionar correctamente, responder a los pulsadores y realizar las operaciones requeridas sin excepciones; recursos, uso de registros y visualizadores montados en puntos crticos para ayudar a la depuracin del circuito; ampliaciones, multiplicacin de nmeros con signo, ampliacin del ancho de palabra (a 12 16 bits), algoritmo de la divisin, construir el reloj, antirrebote de los pulsadores, memoria para preprogramar los datos de entrada y salida, etc.

Material:
2 protoboards Fuente de alimentacin Componentes necesarios: 2 ALUs 74LS382, 4 registros de desplazamiento de 4 bits 74LS194, 1 registro 74LS373, 1 contador 74LS161, mdulos visualizadores TIL311, biestables 74LS74, puertas, pulsadores, etc.

Informacin necesaria
Hojas de datos de todos los componentes (libro de la familia TTL). La teora se puede encontrar en varios libros, por ejemplo, Milo D. Ercegovac / Toms Lang, DIGITAL SYSTEMS AND HARDWARE/FIRMWARE ALGORITHMS, John Wiley & Sons, 1985, y tambin, Daniel D. Gajski,
PRINCIPIOS DE DISEO DIGITAL, Prentice-Hall Iberia, 1997. LEYFA - Curso 2005/2006 Prctica: ALU

pgina 6 de 6

You might also like