You are on page 1of 8

PRCTICA N 3

APLICACIN UNIDAD LOGICO ARITMETICA DE 8 BITS (CALCULADORA)


Cristian Ochoa Edwin Gonzlez Medina 49-064524

(Universidad Pedaggica y Tecnolgica de Colombia, Cl l 5 sur #13-82 , matador99999@hotmail.com,sogamoso)

Abstract: en la prctica desarrollada, se utilizaron 2 unidades lgico aritmticas de cuatro bits para desarrollar una calculadora bsica de 8 bits con 9 operaciones seleccionadas en la gua, los datos ingresados, y resultados obtenidos con esta unidad, se manejaron mediante puerto paralelo con el lenguaje de programacin MATLAB. En este programa fue necesario desarrollar algunas funciones para el manejo de datos negativos. Keywords: ALU, registro. INTRODUCCIN La unidad lgico aritmtica es la base fundamental para realizar clculos en un computador, o procesar datos adquiridos provenientes de la naturaleza, previamente acondicionados. Existen unidades de 4 y 8 bits, las cuales permiten dar una menor o mayor resolucin, y un rango ms grande para operar datos.

conectado, en los pines que van desde 2-9 del puerto paralelo. Los valores lgicos Co, C1,C2,C3son los que vienen del puerto y denominados bus de control, se debe tener en cuenta que todos estn negados excepto el C2, por esta razn se debe tener cuidado, al enviar datos al circuito. El circuito est conformado por: Latch de datos Latch de control ALU 0 ALU 1 B B Mux

Descripcin del hardware. Para el hardware, se implement el diagrama de bloques que se observ en la figura N2. En la parte final se puede observar el anexo 1, en el cual se encuentra el plano implementado, el cual se explicara a continuacin. Los valores lgicos que estn definidos desde D0-D7, es el bus de datos, este va

Latch de datos: en este latch se cargan los datos, de las variables A y B

Latch de control: en este latch se cargan los operandos que se necesitan realizar en la alu para realizar las operaciones exigidas. ALU0: esta alu maneja el nibble bajo de los datos de 8 bits. ALU1: esta alu maneja el nibble alto de los datos de ocho bits. B: este es un registro en el cual se carga la operacin realizada por la alu. B: este registro, carga el resultado de la operacin realizada por la alu, pero indirectamente, ya que lo carga desde B Mux: este mux, permite adquirir datos procesados en la alu, primero un nibble, y luego el otro, dependiendo de los pulsos que se le enven desde el computador. Diagrama de bloques
Para desarrollar la unidad procesadora, se escogi un sistema de acumulador, que se puede implementar de la siguiente forma.

1. 2. 3. 4. 5. 6. 7. 8.

Enviar el dato B al registro A. Cargar el registro A Mandar la operacin transferencia, al registro de control. Cargar el registro control. Cargar registro B. Mandar la operacin a realizar con A y B, al registro de control. Cargar registro control. Cargar el registro B.

Cada registro es un 74LS373, y este registro implementado en B, genera problemas, debido a que carga mientras el pulso permanezca en alto, de esta forma, cuando se manda la macro operacin 8enunciada anteriormente, se est reseteando el valor de B con el cual se est operando, y el ciclo no se termina, arrojando valores al azar. Para solucionar este problema se plantearon dos soluciones a y b: a). cambiar este registro B por un 74LS 374, el cual carga datos durante un flanco de subida, esto permite que, el dato obtenido de la operacin entre A y B, solo se cargue una vez, con el flanco de subida, el alu va a operar con el nuevo dato que hay en B, pero como en el registro B ya no hay flanco de subida, este dato no se carga, por tanto all termina el ciclo. b). cambiar el registro B, por dos 74LS373 en serie como se muestra en la figura 2.

Figura N1: diagrama de bloques del sistema. En la figura anterior se observa el registro A, B, Control, ALU. El proceso a realizar con este modelo es el siguiente: Figura N2: diagrama implementado. de bloques sistema

La solucin radica en subdividir las macro operaciones cargar registro B en otras 2 como son primero cargar B, y segundo cargar B, esto permite, que el dato B que se est operando, permanezca constante en la entrada de la alu, y la respuesta se pueda cargar en B

Software e instrucciones
El software que se va a trabajar es el MATLAB, mediante este software se va a manejar el puerto paralelo del computador, para enviar los datos, los operandos, las seales de control para los registros, y recepcin de datos procesados. Para el desarrollo de la gua se propuso la realizacin de 5 operaciones aritmticas, 3 operaciones lgicas, y una operacin libre que la escoge cada grupo descritas a continuacin. 1. R=A+B 2. R=A-B 3. R=A*B (A por B) 4. R=A-2B 5. R= A+2B 6. R=A 7. R=A* or B* (A*=A complemento) 8. R= A* and B* 9. R=A xor B.

La anterior instruccin tiene como argumentos, variable en la cual se cre el objeto, las lneas que se van a usar, el numero de subpuerto paralelo, y si se desea configurar como entrada o como salida respectivamente ( in out ), como se desea usar 8 lneas de datos, se definen como se ve en la descripcin de la instruccin. control=digitalio('parallel',1) addline(control,0:3,2,'out') entrada=digitalio('parallel',1) las anteriores instrucciones se usan igual que las dos ya explicadas. addline([entrada],[0 1 2 3],1,'in') la variable con nombre entrada, anteriormente definida, debe ser un vector, para recibir los datos en base binaria que se deben obtener del circuito, esta es la razn por la cual se debe colocar entre parntesis cuadrados. Se van a usar las 4 primeras lneas de estado, que se escriben como aparece en la descripcin de la instruccin, el subpuerto de estado es el 1, y el sentido de los datos es entrada. NOTA: si se desea usar los 3 subpuertos, se debe escribir cada una de las 6 instrucciones, o las dos que se necesitan para cada subpuerto que se necesite trabajar. putvalue(variable, numero en decimal) Esta instruccin cambia el numero decimal a base binaria, y lo enva por el subpuerto que esta definido por la variable ej: datos , control. Los datos aparecen de la siguiente forma en matlab Do D1 D2 D3 D4 D5 D6 D7

Instrucciones utilizadas, y su descripcin: datos=digitalio(parallel,1) Esta instruccin, define el puerto paralelo del computador como un objeto, y lo asigna en una variabledatos, el nmero 1 es el numero del puerto asignado al paralelo. La anterior instruccin subdivide el puerto en 3 secciones, en matlab aparece esa definicin as: Port Parameters: Port 0 is port configurable for reading and writing. Port 1 is port configurable for reading. Port 2 is port configurable for reading and writing. Port 0 bus de datos Port 1 bus de estado Port 2 bus de control Addline(datos,0:7,0,out)

getvalue(variable) esta instruccin adquiere los datos que se encuentran en el subpuerto que est definido por la variable entre los parntesis, debe ser de entrada. el bit menos significativo es el que est ubicado a la izquierda del vector que se ingresa X(1)siendo X el vector de entrada.

Pause(time)

Esta instruccin realiza una pausa en el programa, de valor time que debe ir en segundos. binvec2dec(arg) el argumento es un vector de nmeros binarios, que es transformado en decimal mediante esta funcin. dec2binvec(arg1,arg2) el argumento 1 debe ser un numero entero en base decimal, y el argumento 2 debe ser el formato en el que se desea expresar el numero 4,8,16 bits. El programa matlab no puede usar la instruccin anterior, para nmeros negativos, por tanto se debe realizar una subrutina, para expresar un numero negativo en complemento a 2 en un vector. Subrutinas programadas. complementoa2(arg) Esta funcin recibe como argumento un numero negativo en base decimal, y lo entrega complementado a 2 como un vector en formato de 8 bits. descomplementoa2(arg) Esta funcin recibe como argumento un vector en complemento a 2, y entrega el numero negativo que representa. Concatenar(Arg1,Arg2) Esta funcin recibe en Arg1, un vector de 4 posiciones, y en Arg2 otro vector de 4 posiciones,, siendo el dato de salida, un vector de 8 posiciones organizado asi Arg1 X(0)-X(3),Arg2 X(4)-X(7).

sumalu128(arg1,arg2) arg 1: sumando a arg 2: sumando b a y b pueden ser nmeros enteros comprendidos entre -128, y 127, si la operacin excede el valor mximo o minimo, apararecer un aviso de sobrecapacidad. A continuacin se muestran los pasos empleados para desarrollar esta funcin. Preguntar si la suma entre a y b, esta dentro del rango, Sisi Definir bus de datos, control y estado del puerto paralelo. Establecer datos del bus de control a cero para cada registro. Poner en el bus de datos el nmero que representa la operacin transferencia. Mandar en el bus de control, el numero con el cual se carga el registro que maneja las operaciones que va a realizar la ALU. Establecer datos del bus de control a cero para cada registro. Preguntar si b es mayor o igual que cero Sisi Poner b en el bus de datos Sino Complementar a 2 el dato b y ponerlo en el bus de datos del puerto. Cargar el registro a y b por medio del bus de control Poner bus de control a cero Cargar registro B por medio del bus de control Poner bus de control a cero Preguntar si a es mayor o igual a cero Sisi Poner a en el bus de datos
1.

Descripcin del pseudocdigo. Para todas las operaciones realizadas, se diseo una funcin en matlab con determinado nombre, y determinados argumentos. La explicacin de cada funcin diseada, se mostrara posterior al pseudocdigo. Operacin A+B

Sino Complementar a 2 el dato a y enviarlo por el bus de datos. Cargar registro a y b por medio del bus de control. Poner bus de control en cero. Mandar operando suma por el bus de datos Cargar registro de control. Poner bus de control a cero. Cargar registro B por medio del bus de control Poner bus de control a cero. Cargar registro A y B por medio del bus de control Poner bus de control a cero. Poner entrada de seleccin en cero por medio del bus de control Adquirir nibble bajo de la respuesta y asignarlo en un vector. Poner entrada de seleccin en uno por medio del bus de control Adquirir nibble alto de la respuesta y asignarlo a un vector. Usar la funcin concatenar para organizar el resultado. Mostrar resultado. Sino Muestra aviso de sobrecapacidad.

uno, en la cual se pregunta si a-b, est dentro del rango. Operacin A+2B Sumalu2(arg1,arg2) arg 1: sumando a arg 2: sumando b a y b pueden ser nmeros enteros comprendidos entre -128, y 127, si la operacin excede el valor mximo o mnimo, aparecer un aviso de sobrecapacidad. A continuacin se muestran los pasos empleados para desarrollar esta funcin.
1.

Operacin A-B Restalu(arg1,arg2) arg 1: sumando a arg 2: sumando b a y b pueden ser nmeros enteros comprendidos entre -128, y 127, si la operacin excede el valor mximo o mnimo, aparecer un aviso de sobrecapacidad. El proceso realizado es el mismo, solo se cambian dos instrucciones la que est en negrilla de la etapa anterior, mandando el operando resta, y la que tiene el nmero

Preguntar si a+2b, esta dentro del rango, Sisi Definir bus de datos, control y estado del puerto paralelo. Establecer datos del bus de control a cero para cada registro. Poner en el bus de datos el nmero que representa la operacin transferencia. Mandar en el bus de control, el numero con el cual se carga el registro que maneja las operaciones que va a realizar la ALU. Establecer datos del bus de control a cero para cada registro. Preguntar si b es mayor o igual que cero Sisi Poner b en el bus de datos Sino Complementar a 2 el dato b y ponerlo en el bus de datos del puerto. Cargar el registro a y b por medio del bus de control Poner bus de control a cero Cargar registro B por medio del bus de control Poner bus de control a cero.

Mandar operando suma por el bus de datos - Cargar registro de control. - Poner bus de control a cero. - Cargar registro B por medio del bus de control - Poner bus de control a cero. - Preguntar si a es mayor o igual a cero Sisi Poner a en el bus de datos Sino Complementar a 2 el dato a y enviarlo por el bus de datos. - Cargar registro a y b por medio del bus de control. - Poner bus de control en cero. - Mandar operando resta por el bus de datos - Cargar registro de control. - Poner bus de control a cero. - Cargar registro B por medio del bus de control - Poner bus de control a cero. - Cargar registro A y B por medio del bus de control - Poner bus de control a cero. - Poner entrada de seleccin en cero por medio del bus de control - Adquirir nibble bajo de la respuesta y asignarlo en un vector. - Poner entrada de seleccin en uno por medio del bus de control - Adquirir nibble alto de la respuesta y asignarlo a un vector. - Usar la funcin concatenar para organizar el resultado. - Mostrar resultado. Sino Muestra aviso de sobrecapacidad. Operacin A-2B Restalu2(arg1,arg2) arg 1: sumando a arg 2: sumando b a y b pueden ser nmeros enteros comprendidos entre -128, y 127, si la

operacin excede el valor mximo o mnimo, aparecer un aviso de sobrecapacidad. El proceso realizado es el mismo, solo se cambian dos instrucciones la que est en negrilla de la etapa anterior, mandando el operando resta, y la que tiene el nmero uno, en la cual se pregunta si a-2b, est dentro del rango. Operacin A*B multi(arg1,arg2) arg 1: factor a arg 2: factor b a y b pueden ser nmeros enteros comprendidos entre -128, y 127, si la operacin excede el valor mximo o mnimo, aparecer un aviso de sobrecapacidad. A continuacin se muestran los pasos empleados para desarrollar esta funcin.

x a*b A abs(b)
controltransferencia BALU ,Aa Controlsuma For a-1 BALU BB End estadoB las dems operaciones son lgicas, y estas varia con respecto a la de la suma en los siguientes puntos: se pregunta si los nmeros a y b estn entre 0 y 255. Se enva el operando determinado para cada operacin.

Como no hay nmeros negativos no se usa la funcin complemento ni descomplemento a 2.

REFERENCIAS Tocci, Ronald J. Sistemas digitales principios y aplicaciones Floyd, Thomas. Fundamentos de sistemas digitales.

CONCLUSIONES

Si se necesita realizar un sistema procesador con acumulador, se debe implementar, doble registro, para que la nueva operacin a realizar, no afecte el valor anterior del registro. Siempre que sea cargado un dato en un registro, el bit con el cual se carg se debe volver a colocar en cero. Si se desea que el alu trabaje con nmeros negativos, hay que enviarlos en formato de complemento a 2.
PREGUNTAS

I.

Controlando las entradas S0, S1, S3, y Cin, Cuntas y cuales operaciones es posible realizar con el integrado 74LS381?.

8 operaciones II. Qu funcin cumple el registro de banderas del alu en un procesador?

Este registro sirve para identificar si las operaciones que hizo estn dentro del rango en el cual estan definidos los numero que se pueden operar. III. Qu funcin cumple el registro de desplazamiento del alu en un procesador?

Realizar divisiones y multiplicaciones por 2.


RECONOCIMIENTOS Sanabria Totaitive Camilo; Ing. Electronico UPTC. Barrera Lombana Nelson ; Ing. Electronico UPTC.

You might also like