viernes, 13 de marzo de 2015

firmas



APUNTADOR

OBJETIVO
Se hizo un programa en el cual se puede observar el funcionamiento de un apuntador, el cual nos permite entender cómo opera en un programa.
INTRODUCCIÓN
Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la dirección de memoria desde donde comienzan los datos de esa variable.

Un apuntador es una variable cuyo valor es la dirección de memoria de otra variable. Se dice que un apuntador “apunta” a la variable cuyo valor se almacena a partir de la dirección de memoria que contiene el apuntador.

DESARROLLO

Para declarar el apuntador se especificó el tipo de dato al que apunta, el operador ‘*’, y el nombre del apuntador. La sintaxis es la siguiente:

*
Se asignaron al apuntador direcciones de variables a través del operador de referenciación (‘&’) o direcciones almacenadas en otros apuntadores.

La desreferenciación se almaceno en el espacio de memoria donde apunta un apuntador. Esto se hace a través del operador ‘*’, aplicado al apuntador que contiene la dirección del valor.

PROGRAMA

#include
#include


int main(int argc, char *argv[]) {   
int y;
y=10;
int *py; //es un apuntador a un entero
py = &y; //toma la direccion de la variable y

printf("Direccion %p, Valor: %d\n",py, *py);
++*py;
printf("Direccion %p, Valor modificado: %d\n",py, *py);
system("pause");
            return 0;
           
}

CONCLUSIONES

Al igual que el resto de las variables, los apuntadores se enlazan a tipos de datos específicos (apuntadores a variables de cierto tipo), de manera que a un apuntador solo se le pueden asignar direcciones de variables del tipo especificado en la declaración del apuntador.

Un apuntador puede contener una dirección inválida debido a que este se declara al igual que cualquier otra variable, el mismo posee un valor cualquiera que no se puede conocer con antelación, hasta que se inicialice con algún valor (dirección).

Después de que un apuntador ha sido inicializado, la dirección que posee puede dejar de ser válida si se libera la memoria reservada en esa dirección, ya sea porque la variable asociada termina su ámbito o porque ese espacio de memoria fue reservado dinámicamente y luego se liberó.




SUMADOR



Sumador Completo.
Aunque un medio sumador es suficiente para sumar los bits de orden bajo de dos palabras de entrada de varios bits, no sirve para una posición de bit interior de la palabra por que no maneja el acarreo que llega de la posición que está a su derecha. Se necesita el sumador completo. Si examinamos el circuito se construye con dos medios sumadores.  La línea de salida suma es 1 si el número de unos en A, B y el Acarreo de entrada es impar. Acarreo de salida es 1 si A Y B son ambos 1 o uno y solo uno de ellos 1 y el bit de acarreo de entrada es también 1.
A, B, Acarreo Entrada son las entradas del sumador y corresponden a los dos dígitos a sumar y el posible acarreo de entrada respectivamente.
Las señales marcadas con Suma y Acarreo de salida son las salidas del sumador y forman el resultado de la suma y el acarreo de salida si es que lo hay respectivamente.

A
B
Acarreo Entrada
Suma
Acarreo de Salidas
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1










Tabla de verdad  del Sumador Completo

Circuito de Sumador completo elaborado en el simulador Proteus.






Cto. Sumador Completo

Conclusiones.
Un sumador completo como el que se muestra en la figura es un circuito digital capaz de realizar la suma aritmética de dos dígitos binarios además de un posible acarreo de entrada, este último es particularmente útil cuando se diseña en forma modular un sumador de dos números de ´n´ bits.



Bibliografía.
Andrew S. Tanenbaum - Organizaciones de Computadoras Un enfoque estructurado 4ta SCAN 2000.


ALU


RESUMEN
Se simulo el funcionamiento de una unidad lógico-matemática (ALU) de un procesador, a partir de la implementación de un circuito Multiplexor y compuertas lógicas.
INTRODUCCIÓN
La unidad aritmético lógica es un circuito digital que calcula operaciones aritméticas (suma, resta, multiplicación, etc.) y operaciones lógicas.
Las ALUs existen en todo circuito electrónico moderno, desde realizar incrementos de 1 al tiempo actual, en contadores de circuitos sencillos y en calculadoras básicas, hasta en los procesadores sofisticados.
Von Neumann explicó que una ALU es un requisito fundamental para una computadora, porque  tendrá que efectuar operaciones matemáticas básicas.
DESARROLLO
El multiplexor utilizado es un 4051, el cual contiene 8 canales de entrada (x0-x7) y 3 de control (A, B, C).  Se utilizaran 4 entradas en el multiplexor,  se consideran las variables de control a y b que permitirán controlar los canales de entrada y así obtener una salida en x. Las compuertas lógicas utilizadas son AND, OR, XOR, y NOT. Las primeras 3 tienen dos variables como datos de entrada, A y B, mientras que la cuarta solo será A. Se muestra el diagrama lógico de la conexión de elementos del circuito digital.
Cada operación están dadas por dos Push Bottons, que fungen como entradas digitales de datos , los cuales entran a las compuertas lógicas. Cada compuerta realiza su operación y da una salida respectivamente, las cuales son recibidas en las entradas x0-x3 del multiplexor, que funge como receptor de datos.
La Tabla muestra el comportamiento del circuito lógico. Las variables de control (a y b ) determinaran que operación es la que debe mostrar x el cual esta conectado a un led para ver su funcionamiento.
VARIABLES DE CONTROL
CANAL DE ENTRADA
OPERACIÓN
VARIABLES DE DATOS
SALIDA
a
b
A
B
X
0
0
X0
AND
0
0
0
0
1
0
1
0
0
1
1
1
0
1
X1
OR
0
0
0
0
1
1
1
0
1
1
1
1
1
0
X2
XOR
0
0
0
0
1
1
1
0
1
1
1
0
1
1
X3
NOT
0
0
1
0
1
1
1
0
0
1
1
0

A pesar de recibir los cuatro datos de cada operación, el multiplexor solo permite que una entrada sea la que salga como resultado en X, esto dependiendo lo que las variables de control estén indicando.





CONCLUSIONES
La unidad aritmética lógica es una función multi-operación digital de lógica combinacional, esta puede realizar un conjunto de operaciones aritméticas básicas y un conjunto de operaciones lógicas. El ALU tiene un número de líneas de selección para determinar una operación en particular.
Las compuertas AND, OR y  XOR tienen dos variables de entrada (datos) mientras que la compuerta NOT solo tiene una variable de dato, cada una de las compuertas lógicas realizara la operación respectiva mandando la salida al multiplexor.
El multiplexor es un seleccionador de canales que tiene n entradas y solo una salida, el 4051 recibe las respuestas de cada una de las compuertas lógicas en la cual solo seleccionara una entrada de acuerdo a las variables de control que se estén indicando.