miércoles, 19 de noviembre de 2014

DISEÑO DE LÓGICA DE CONTROL.

Control de alambrado




CONTROL MICROPROGRAMADO.

Memoria de control.

La función de la unidad de control en una computadora digital es iniciar secuencias de microoperaciones. Cuando la circuitería genera señales de control por medio de técnicas de diseño lógico convencional, se dice que la unidad de control es por circuitería. La microprogramación es la segunda alternativa para diseñar la unidad de control de una computadora digital.
La función de control que especifica una microoperación es una variable binaria. Cuando se halla en un estado binario se ejecuta la microoperación correspondiente. El estado activo de una variable de control puede ser el estado 1 o 0, según la aplicación.

La unidad de control inicia una serie de pasos secuenciales de microoperaciones. Durante cualquier momento, se van a iniciar ciertas microoperaciones, mientras otras quedan inactivas. Las variables de control pueden activarse en cualquier momento mediante una cadena de dígitos 1 y 0, que se denomina palabra de control.

Las palabras de control puede programarse para realizar diferentes operaciones sobre los componentes del sistema.

Una unidad de control cuyas variables se almacenan en la memoria se llaman unidad de control microprogramada. Cada palabra en la memoria de control contiene una microinstrucción.
La microinstrucción especifica una o mas microoperaciones para el sistema.
Una secuencia de microinstrucciones constituye un microprograma.

La memoria de control puede ser una memoria de sólo lectura (ROM). El contenido de las palabras en la ROM es fijo y no puede alterarse mediante la programación simple por que no es posible escribir en la ROM. Las palabras de la ROM se vuelven permanentes durante la producción de la unidad.

Una memoria que es parte de una unidad de control se denomina memoria de control. Esta unidad tendrá dos memorias separadas: una memoria principal y una memoria de control.
La memoria de control contiene un microprograma fijo que el usuario ocasional no puede alterar. Esta memoria es considerada como una ROM , dentro de la cual se almacena toda la información en forma permanente. El registro de direccionamiento de la memoria de control especifica la dirección de la microinstrucción y el registro de datos de control contiene la microinstrucción que se lee de la memoria. No hay que olvidar que una ROM opera como un circuito combinatorio, con el valor de la dirección como entrada y la palabra correspondiente como salida.



Control de la Unidad Procesadora

Se debe hacer provisión para incluir todas las variables  de control posibles en el sistema y no solamente para controlar un ALU. El multiplexor y los bits seleccionados deben incluir  todos los demás bits de condición posibles que se quieran comprobar en el sistema. Se debe tener una provisión para  aceptar una dirección externa para iniciar muchas operaciones en vez de dos operaciones solamente tales como suma y sustracción.


Para construir microprogramas correctos es necesario  especificar exactamente como el bit de condición es afectado por  cada microoperación en el procesador. Los bits S (signo) y Z- (cero)  están afectados por todas las operaciones. Los bits C (arrastre) y V (sobrecapacidad) no cambian después de las siguientes  operaciones del ALU:
1. Las cuatro operaciones OR, AND, OR-exclusiva y complemento.
2. Las operaciones de incremento y decremento.
Para las demás operaciones, el bit de arrastre del ALU va al 
bit C del registro de condición. El bit C se afecta también después 
de un desplazamiento circular con operación de arrastre.

ALMACENAMIENTO DE DATOS Y DISPOSITIVOS.

Dispositivos de Almacenamiento


Disco duro : El almacenamiento en disco duro permite un acceso más rápido que en una unidad 

de disquete o en una de Zip, y es el medio preferido en la mayor parte de los sistemas de 

computación.. También se denomina Hard Disk o Disco Duro.

Disco flexible : El disco flexible, comúnmente conocido como diskette, es una unidad que mide

3,5 pulgadas en el que se puede almacenar 1,44 MB de información, esto lo hace el medio de 

almacenamiento mas pequeño y debido a  esto, ya está en desuso actualmente, incluso los 

nuevos computadores no traen el lector de disco flexible (Floppy).



La unidad de discos magneto-óptica al trabajar con una tecnología híbrida que fusiona 

características de los diskettes y los discos ópticos, los discos insertados en ella, son expuestos 

de un lado por un magneto y del otro lado por un haz de luz láser.


La unidad de copia de seguridad en cinta es aquella que permite hacer un backup de toda la 

información que se tiene en un computador o aquella que se considere importante, esto con el 

fin de mantenerla en un sitio seguro y fuera del ordenador.




Dispositivos de Entrada y Salida


ARQUITECTURAS AVANZADAS Y COMERCIALES










MICROCHIPS

¿Cómo funciona un transistor?

Un transistor es un dispositivo que tiene 3 conexiones. La corriente pasa a través de dos ellas siempre y cuando la tercera tenga un voltaje aplicado.
En definitiva, un transistor no es más que un interruptor. Esta sencilla funcionalidad le permite ser capaz de llevar a cabo cualquier tipo de operación lógica o matemática.

Al ser capaz de controlar una corriente usando un voltaje el transistor es capaz de jugar con estas dos
magnitudes. De aquí surge su nombre, ya que transistor viene de juntar las palabras transfer resistor es decir es capaz de transferir una determinada resistencia. Puede en un momento bloquear una corriente, funcionando entonces como una resistencia muy grande, o dejarla correr pasando a tener una pequeña resistencia.

MEMORIAS

Almacenan la información del sistema. Son de dos tipos :

- RAM para almacenar datos variables, también pueden almacenar programas, aunque éstos se perderían al dejar de alimentar al sistema. Su capacidad es variable y depende de la capacidad de direccionamiento del microprocesador. Generalmente es modular, componiéndose de uno o varios circuitos integrados. La longitud de la palabra de memoria viene impuesta por la CPU; para microprocesadores de 8 bits se necesitarán memorias cuyas palabras tengan 8 bits (1 byte).

Para 8088-8086 que son de 16 bits, memoria bloque par e impar de 8 bits cada uno.

A0=0 bloque par (banco bajo); A0=1 bloque impar (banco alto).

EL MICROPROCESADOR

Vamos a intentar acotar los límites actuales de lo que los fabricantes y usuarios llaman microprocesador. A lo largo de los cursos de electrónica se desarrollan unos subsistemas digitales cada vez más complejos (puertas, circuitos combinacionales, circuitos secuenciales) que se integran en pastillas y que interconectados pueden realizar operaciones de procesos de datos.

Un microprocesador sería un conjunto de tales circuitos, integrados e interconectados todos sobre un único substrato semiconductor, de forma que puede realizar una secuencia de operaciones aritméticas y lógicas controladas.



Arquitectura RISC y Arquitectura CISC





Características de los circuitos integrados Digitales

RTL son las iniciales de las palabras inglesas Resistor, Transistor, Logic.
 Es decir es una familia cuyas puertas se construyen con resistencias y transistores (bipolares).

 El esquema básico de una puerta NOR es el siguiente:






Circuitos Integrados DTL

 Las siglas DTL vienen de las iniciales de las palabras inglesas Diode Transistor  Logic. Es decir estamos tratando con una familia compuesta básicamente por diodos y transistores (sin  olvidar a las resistencias). Los diodos se encargan de realizar  la parte lógica y el transistor actúa como amplificador inversor.

 El esquema básico de una puerta AND con diodos:







Familia TTL (Transistor Transistor Logic)


El inversor TTL básico se muestra en la Fig. 5.6. En él se incluyen dos transistores Q1 y
Q3. La entrada al circuito es el emisor de Q1 y la salida por el colector de Q3.
Para demostrar que este circuito funciona como un inversor suponemos las dos estados de
entrada:




a) Si vI = 1 (es decir, vI=5V). La unión BE de Q1 está en polarización inversa y la BC en
polarización directa, lo cual nos indica que este transistor está en activa inversa (ZAI). Las
intensidad de colector de Q1 es negativa e igual a la de base de Q3, haciendo que Q3 este en zona
de condución, en concreto saturación, si la intensidad de base de Q1 tiene el valor
suficientemente alto como para llevar a Q3 a saturación. Por tanto la salida es VCE = 0.2V que
es un valor bajo salida. o cero lógico



 Familia ECL (Emiter Couple Logic)
La familia ECL (Emitter Coupled Logic) es considerada como la más rápida actualmente,
con tiempos de propagación menores de 1 ns. Se trata de circuitos en los que se evita la
saturación de los transistores bipolares con lo que disminuye el tiempo de conmutación.

El inversor ECL básico







En la Fig. 5.11 se muestra el inversor básico. Consta de un circuito de entrada constituido
por un amplificador diferencial y una etapa de salida basada en un circuito seguidor de emisor
que actúa como separador y restaurador de nivel.


Circuitos CMOS

Se van a considerar a continuación la realización de circuitos lógicos combinacionales
basados en el comportamiento del inversor CMOS estudiado en el tema 4. En estos circuitos, la
salida depende en cada momento de las entradas actuales, careciendo de memoria o
realimentación alguna.




La estructura básica de estos circuitos se ilustra en la Fig. 5.14. Al igual que en el inversor
CMOS, se dispone un red de polarización del nivel bajo (pull-down) formada por transistores
NMOS, y una equivalente para el nivel alto (pull-up) constituida por transistores PMOS. Las
dos redes se activan por variables de entrada, de forma que trabajen de forma complementaria,
impidiendo que ambos caminos (al nivel alto y bajo) esten activados simultáneamente.


domingo, 16 de noviembre de 2014

Diseño del sistema del microprocesador

Organización del microprocesador 

A continuación veremos la organización del microprocesador .
MAR: Este es el registro de direcciones de memoria (memory adress register). Debido a que la memoria ram requiere cierto tiempo para encontrar y posicionarse en una dirección, dicha dirección debe estar siempre en las entradas. Este registro funciona como buffer del PC.
PC: Este es un contador (program counter) que sirve para tener la dirección de memoria de la siguiente instrucción o dato que se debe de leer. Esto es, si en la memoria comenzamos con la localidad 0000, el contador, después de apuntar hacia esa dirección y después de haber tomado el dato contenido en la memoria, debe ser incrementado en uno para que contenga un 0001, o sea, apunte a la siguiente dirección de la memoria. En nuestro caso, este contador debe ser capaz de cargar datos en paralelo para poder realizar instrucciones de salto. Por ejemplo, el contador puede tener el numero 0100, y en esa dirección, la memoria contiene una instrucción de salto a la dirección 1000. El PC debe ser capaz de cargar este nuevo número y seguir su cuenta a partir de él.
MBR: Este registro es el buffer de datos de la memoria (memory buffer register). Cuando la memoria se posiciona en una dirección, muestra el contenido en su bus de datos, pero estos datos o contenido cambiaran si se cambia la dirección que se pone en las entradas del bus de direcciones de la memoria. Es por esto que es necesario un buffer de salida en la memoria. También nos servirá como buffer para instrcciones de escritura a la memoria.
IR: Este registro el es registro de instrucciones (instruction register). Cuando el dato contenido en una dirección de memoria es una instrucción (suma, resta, salto, etc.) se manda a este registro para decodificarlo y mandar las señales correctas para realizar dicha instrucción.
ALU: La unidad aritmético lógica es un integrado que puede realizar operaciones aritméticas y operaciones lógicas ya sea con un solo operando o hasta con dos operandos.
Acc: Este es el registro acumulador y es de propósito general. En nuestro caso será utilizado para guardar uno de los operandos del la ALU para llevar a cabo operaciones con dos operandos. El segundo se proporcionará directamente a la ALU desde el MBR.
ROP: Este registro contiene el código de operación de la ALU. Esto es, se requiere de un código binario en las entradas de la ALU para seleccionar qué tipo de operación se quiere llevar a cabo (suma, resta, complemento,etc.).
R: Este registro sirve únicamente para observar el resultado de las operaciones realizadas en la ALU pues está conectado directamente a las salidas.
Generador de tiempos: Es la parte de nuestro microprocesador que se encarga de generar señales de tiempos de acuerdo a la frecuencia de reloj que estemos manejando.
Unidad de control: Es la encargada de generar las señales correctas para realizar las operaciones deseadas por el usuario. Como una analogía tenemos al director de una orquesta.
La idea de esta organización es poder implementar cuatro operaciones básicas que nos servirán para echar a andar al microprocesador. Cuando veamos las instrucciones se comprenderá completamente el por qué de esta organización.

Modos de direccionamiento
Direccionamiento directo 
El operando se especifica en la instrucción mediante un campo de dirección de 8 bits. Sólo la RAM interna de datos (primeros 128 bytes) y la zona de SFR se pueden direccionar de esta forma. 
Este modo de direccionamiento permite el acceso de fácil y rápido a las zonas de las memoria anteriormente indicadas.
Ejemplo: 
ADD A,3BH ; 
esta instrucción suma (ADD) al contenido del acumulador el contenido de la posición de memoria 3BH: A <--- (A) + ([3B]). 

Direccionamiento indirecto

En este modo de direccionamiento, 
Para el direccionamiento de áreas de memoria (tanto internas como externas) de tamaño no superior a 256 bytes, se puede hacer uso de los registros R0 y R1 del banco de registros seleccionado. Si el área de memoria posee un tamaño superior, sólo puede utilizarse el registro DPTR.

Este modo de direccionamiento es especialmente útil para acceder a los 128 bytes altos de la memoria de datos interna (8052) y a la memoria de datos externa. Ejemplos: 

ADD A,@R0 ; Si (R0) = 3BH, la operación realizada por esta instrucción será la misma del ejemplo anterior: A <--- (A) + ([3B]). 

MOVX @DPTR,A ; Si (DPTR) = 4C2BH, esta instrucción carga el contenido del acumulador en la posición 4C2BH de la memoria de datos externa: [4C2B] <--- (A).



Direccionamiento por registro

Cuando se usa direccionamiento por registro, en el propio código de operación de la instrucción se especifica el registro del banco activo con que se opera mediante un campo de tres bits.
Ejemplo:
MOV Rn,A ; Carga en el registro Rn el contenido del acumulador: Rn <--- (A). 
Este direccionamiento ocupa muy poca memoria de programa y permite acceder de manera rápida a los datos más frecuentemente utilizados.


Organizacion de las memorias

Subrutinas e interrupcion

Las subrutinas facilitan la estructuración del programa. Cuando el programa principal llama a una subrutina para que ésta se ejecute, la subrutina procesa su programa hasta el final. El sistema retorna luego el control al segmento del programa principal desde donde se llamó a la subrutina.

Las subrutinas sirven para estructurar o dividir el programa en bloques más pequeños y, por tanto, más fáciles de gestionar. Los bloques más pequeños facilitan la comprobación y la eliminación de errores tanto en las subrutinas como en el programa entero.

Con las subrutinas también la CPU se puede utilizar más eficientemente, llamando al bloque sólo cuando se necesite, y no ejecutar todos los bloques en todos los ciclos.

La operación Llamar subrutina transfiere el control a la subrutina, se puede utilizar con o sin parámetros.



En cada llamada a subrutina se pueden utilizar 16 parámetros de entrada/salida como máximo.
Los valores de los parámetros se asignan de la siguiente forma a la memoria local en la subrutina:
  1. Los valores se asignan a la memoria local en el orden indicado por la operación Llamar subrutina, comenzando dichos parámetros en L0.
  2. De uno a ocho valores binarios consecutivos se asignan a un sólo byte comenzando en Lx.0 hasta Lx.7.
  3. Los valores de byte, palabra y doble palabra se asignan a la memoria local en bytes (LBx, LWx, LDx).
En la operación "Llamar subrutina" con parámetros, éstos deben concordar exactamente con las variables definidas en la tabla de variables locales de la subrutina. Los parámetros se deben organizar de la siguiente forma:

  • Los parámetros de entrada.
  • Los parámetros de entrada/salida.
  • Los parámetros de salida.

Interrupciones

Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecución como si nada hubiera pasado.

Interrupciones internas de hardware

Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.

Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.


Interrupciones de software

Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT.

El uso de las interrupciones nos ayuda en la creación de programas, utilizandolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño.

Este tipo de interrupciones podemos separarlas en dos categorias: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.

Diseño de computadores

Instrucciones del computador
Las instrucciones son grupos de bits que instruyen el computador.
Los pasos a seguir para el procesamiento de las instrucciones son los siguientes:
  1. La búsqueda de instrucciones viene dada por la lectura de las mismas, sólo una vez, desde la memoria, por el procesador
  2. Y las instrucción es ejecutada por el procesador. 
  3. La repetición de la lectura y ejecución ( pasos 1 y 2 respectivamente), conforman la “ejecución de un programa”. Dicha ejecución puede detenerse si: la máquina se apaga, ocurre un error que no puede ser recuperado, o si, se encuentra una instrucción en el programa que detenga la computadora.



Ciclo de instrucción: es el procesamiento requerido para la instrucción. En este Ciclo, se encuentran los dos pasos citados anteriormente, denominados Ciclo de lectura (feth) y Ciclo de ejecución.
Lectura y ejecución de instrucciones: El procesador lee una instrucción de la memoria, al comienzo de cada Ciclo de instrucción. Se cuenta con un contador de programas ( PC program counter ), que lleva la cuenta de cual es la próxima instrucción a leer. Luego de leer cada instrucción el procesador incrementara el PC, de manera tal que la siguiente instrucción a leer será; la que se encuentra en la dirección inmediatamente superior de la memoria. La instrucción leída es cargada en el registro de instrucción ( IR instuction register ), que es un registro del procesador. El procesador interpreta la instrucción, la cual está en forma de código binario, que especifica la acción que el procesador llevará a cabo, y realizará la acción requerida.
Las acciones que se realizan para la lectura y ejecución de instrucciones se pueden clasificar en las siguientes categorías:
  1. Procesador-memoria: los datos se transfieren del procesador a la memoria o viceversa.
  2. Procesador E/S: los datos se transfieren desde o hacia un dispositivo periférico. Se realiza la transferencia entre el procesador y un módulo de entrada-salida.
  3. Tratamiento de datos: el procesador puede realizar alguna operación aritmética o lógica sobre los datos.
  4. Control: la secuencia de ejecución puede ser alterada si la instrucción lo especifica..