Automatizacion de Maquinas Termicas

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 27

“Año del buen servicio ciudadano”

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL

[Fecha]

PROFESOR:
ING. Gonzales Cisneros Ivan

CURSO:
Laboratorio de Circuitos Electrónicos II

TEMA:
Circuitos Integrados

ALUMNO:

 Morales Valles Jhon Alex

2017
HISTORIA
El circuito Integrado (IC), es una pastilla o chip muy delgado en el que se encuentran una cantidad
enorme de dispositivos microelectrónicas interactuados, principalmente diodos y transistores,
además de componentes pasivos como resistencias o condensadores. El primer Circuito Integrado
fue desarrollado en 1958 por el Ingeniero Jack St. Clair Kilby, justo meses después de haber sido
contratado por la firma Texas Instruments. Los elementos más comunes de los equipos
electrónicos de la época eran los llamados “tubos de vacío”, las lámparas usadas en radio y
televisión y el transistor de germanio (Ge). En el verano de 1958 Jack Kilby se propuso cambiar
las cosas. Entonces concibió el primer circuito electrónico cuyos componentes, tanto los activos
como los pasivos, estuviesen dispuestos en un solo pedazo de material, semiconductor, que
ocupaba la mitad de espacio de un clip para sujetar papeles.
El 12 de septiembre de 1958, el
invento de Jack Kilby se probó con
éxito. El circuito estaba fabricado
sobre una pastilla cuadrada de
germanio (Ge), un elemento químico
metálico y cristalino, que medía seis
milímetros por lado y contenía
apenas un transistor, tres resistencias
y un condensador. El éxito de Kilby
supuso la entrada del mundo en la
microelectrónica. El aspecto del
circuito integrado era tan nimio, que
se ganó el apodo inglés que se le da a
las astillas, las briznas, los pedacitos de algo: chip.
En el año 2000 Jack Kilby fue galardonado con el Premio Nobel de Física por la contribución de
su invento al desarrollo de la tecnología de la información. Los circuitos integrados fueron
posibles gracias a descubrimientos experimentales que demostraron que los semiconductores
pueden realizar las funciones de los tubos de vacío o circuitos de varios transistores. La
integración de grandes cantidades de diminutos transistores en pequeños chips fue un enorme
avance sobre el ensamblaje manual de los tubos de vacío (válvulas) y circuitos utilizando
componentes discretos. La capacidad de producción masiva de circuitos integrados, con fiabilidad
y facilidad de agregarles complejidad, impuso la estandarización de los circuitos integrados en
lugar de diseños utilizando transistores que pronto dejaron obsoletas a las válvulas o tubos de
vacío.
 Existen dos ventajas principales de los circuitos integrados sobre los circuitos
convencionales: coste y rendimiento. El bajo coste es debido a que los chips, con todos
sus componentes, son impresos como una sola pieza por fotolitografía y no construidos
por transistores de a uno por vez.

DENSIDAD
Durante el proceso de fabricación de los circuitos integrados se van acumulando los defectos,
de modo que cierto número de componentes del circuito final no funcionan correctamente.
Cuando el chip integra un número mayor de componentes, estos componentes defectuosos
disminuyen la proporción de chips funcionales. Es por ello que, en circuitos de memorias, por
ejemplo, donde existen millones de transistores, se fabrican más de los necesarios, de manera
que se puede variar la interconexión final para obtener la organización especificada.
FABRICACION
La fabricación de integrados a gran escala sigue, en la actualidad un procedimiento VLSI (Very
Large Scale Integration, Integración en escala muy grande, por sus siglas en inglés) partiendo
del Silicio como materia prima. Desarrollos recientes en tecnologías de aleación de Silicio-
Germanio (SiGe) y silicio, sometido a esfuerzo, refuerzan aún más la posición de los procesos de
fabricación que se basan en este elemento en la industria microelectrónica en los años
venideros.
El silicio puede ser refinado por
medio de técnicas bien establecidas
de purificación y crecimiento de
cristales. Este elemento químico
también exhibe propiedades físicas
apropiadas para la fabricación
de dispositivos activos con buenas
características eléctricas, además es
fácil de oxidar para formar un
excelente aislante como el dióxido
de silicio (SiO2). Este óxido es útil
para construir condensadores y
dispositivos MOSFET. También sirve
como barrera de protección contra
la difusión de impurezas
indeseables hacia el mineral adyacente de silicio de alta pureza. Esta propiedad de protección
del óxido de silicio permite que sus propiedades eléctricas sean fáciles de modificar en áreas
predefinidas. Por consiguiente, se pueden construir elementos activos y pasivos en la misma
pieza material (o sustrato). Entonces los componentes pueden interconectarse con capas de
metal (similares a las que se utilizan en las tarjetas de circuito impreso) para formar el llamado
circuito integrado monolítico, que es en esencia una pieza única de metal.

Pasos de fabricación:

Preparación de la oblea
El material inicial para los circuitos integrados modernos es el silicio de muy alta pureza, donde
adquiere la forma de un cilindro sólido de color gris acero de 10 a 30 cm de diámetro y puede
ser de 1 m a 2 m de longitud. Este cristal se rebana para producir obleas circulares de 400 μm a
600 μm de espesor, (1 μm es igual a 1×10-6 metros). Después, se alisa la pieza hasta obtener un
acabado de espejo, a partir de técnicas de pulimento químicas y mecánicas. Las propiedades
eléctricas y mecánicas de la oblea dependen de la orientación de los planos cristalinos,
concentración e impurezas existentes. Para aumentar la resistividad eléctrica del
semiconductor, se necesita alterar las propiedades eléctricas del silicio a partir de un proceso
conocido como dopaje. Una oblea de silicio tipo n excesivamente impurificado (baja resistividad)
sería designada como material n+, mientras que una región levemente impurificada se
designaría n-. aunque podría ser n+
Oxidación
Se refiere al proceso químico de reacción del silicio con el oxígeno para formar Dióxido de Silicio
(SiO2). Para acelerar dicha reacción se necesitan de hornos ultra limpios especiales de alta
temperatura. El Oxígeno que se utiliza en la reacción se introduce como un gas de alta pureza
(proceso de “oxidación seca”) o como vapor (“oxidación húmeda”). La Oxidación húmeda tiene
una mayor tasa de crecimiento, aunque la oxidación seca produce mejores características
eléctricas. Su constante dieléctrica es 3.9 y se le puede utilizar para fabricar excelentes
condensadores. El Dióxido de Silicio es una película delgada, transparente y su superficie es
altamente reflejante. Si se ilumina con luz blanca una oblea oxidada la interferencia constructiva
y destructiva hará que ciertos colores se reflejen y con base en el color de la superficie de la
oblea se puede deducir el espesor de la capa de Óxido.
Difusión
Es el proceso mediante el cual los átomos se mueven de una región de alta concentración a una
de baja a través del cristal semiconductor. En el proceso de manufactura la difusión es un
método mediante el cual se introducen átomos de impurezas en el Silicio para cambiar su
resistividad; por lo tanto, para acelerar el proceso de difusión de impurezas se realiza a altas
temperaturas (1000 a 1200 °C), esto para obtener el perfil de dopaje deseado. Las impurezas
más comunes utilizadas como contaminantes son el Boro (tipo p), el Fósforo (tipo n) y el Arsénico
(tipo n). Si la concentración de la impureza es excesivamente fuerte, la capa difundida también
puede utilizarse como conductor.
Implantación de iones
Es otro método que se utiliza para introducir átomos de impurezas en el cristal semiconductor.
Un implantador de iones produce iones del contaminante deseado, los acelera mediante un
campo eléctrico y les permite chocar contra la superficie del semiconductor. La cantidad de
iones que se implantan puede controlarse al variar la corriente del haz (flujo de iones). Este
proceso se utiliza normalmente cuando el control preciso del perfil del dopaje es esencial para
la operación del dispositivo.
Deposición por medio de vapor químico
Es un proceso mediante el cual gases o vapores se hacen reaccionar químicamente, lo cual
conduce a la formación de sólidos en un sustrato. Las propiedades de la capa de óxido que se
deposita por medio de vapor químico no son tan buenas como las de un óxido térmicamente
formado, pero es suficiente para que actúe como aislante térmico. La ventaja de una capa
depositada por vapor químico es que el óxido se deposita con rapidez y a una baja temperatura
(menos de 500°C).
Metalización
Su propósito es interconectar los diversos componentes (transistores, condensadores, etc.) para
formar el circuito integrado que se desea, implica la deposición inicial de un metal sobre la
superficie del Silicio. El espesor de la película del metal puede ser controlado por la duración de
la deposición electrónica, que normalmente es de 1 a 2 minutos.
Fotolitografía
Esta técnica es utilizada para definir la geometría de la superficie de los diversos componentes
de un circuito integrado. Para lograr la fotolitografía, primeramente, se debe recubrir la oblea
con una capa fotosensible llamada sustancia fotoendurecible que utiliza una técnica llamada “de
giro”; después de esto se utilizará una placa fotográfica con patrones dibujados para exponer de
forma selectiva la capa fotosensible a la iluminación ultravioleta. Las áreas opuestas se
ablandarán y podrán ser removidas con un químico, y de esta manera, producir con precisión
geometrías de superficies muy finas. La capa fotosensible puede utilizarse para proteger por
debajo los materiales contra el ataque químico en húmedo o contra el ataque químico de iones
reactivos. Este requerimiento impone restricciones mecánicas y ópticas muy críticas en el
equipo de fotolitografía.
Empacado
Una oblea de Silicio puede contener varios cientos de circuitos o chips terminados, cada chip
puede contener de 10 o más transistores en un área rectangular, típicamente entre 1 mm y 10
mm por lado. Después de haber probado los circuitos eléctricamente se separan unos de otros
(rebanándolos) y los buenos (“pastillas”) se montan en cápsulas (“soportes”). Normalmente se
utilizan alambres de oro para conectar las terminales del paquete al patrón de metalización en
la pastilla; por último, se sella el paquete con plástico o resina epódica al vacío o en una
atmósfera inerte.

TIPOS DE CIRCUITOS INTEGRADOS


Circuito monolítico: La palabra monolítico viene del griego y
significa “una piedra”. La palabra es apropiada porque los
componentes son parte de un chip. El Circuito monolítico es el
tipo más común de circuito integrado, ya que desde su
intervención los fabricantes han estado produciendo los
circuitos integrados monolíticos para llevar a cabo todo tipo de
funciones. Los tipos comercialmente disponibles se pueden
utilizar como amplificadores, reguladores de voltaje,
conmutadores, receptores de AM, circuito de televisión y
circuitos de ordenadores. Pero tienen limitadores de potencia. Ya que la mayoría de ellos son
del tamaño de un transistor discreto de señal pequeña, generalmente tiene un índice de máxima
potencia menor que 1W. Están fabricados en un solo mono cristal, habitualmente de silicio, pero
también existen en germanio, arseniuro de galio, silicio-germanio, etc.

Circuito híbrido de capa fina: Son muy similares a los circuitos


monolíticos, pero, además, contienen componentes difíciles de
fabricar con tecnología monolítica. Muchos conversores A/D – D/A
se fabricaron en tecnología híbrida hasta que progresos en la
tecnología permitieron fabricar resistencias precisas.

Circuito híbrido de capa gruesa: Se apartan bastante de los circuitos monolíticos. De hecho,
suelen contener circuitos monolíticos sin cápsula
(dices), transistores, diodos, etc., sobre un sustrato
dieléctrico, interconectados con pistas conductoras.
Las resistencias se depositan por serigrafía y se ajustan
haciéndoles cortes con láser. Todo ello se encapsula,
tanto en cápsulas plásticas como metálicas,
dependiendo de la disipación de potencia que
necesiten. En muchos casos, la cápsula no está
“moldeada”, sino que simplemente consiste en una resina epoxi que protege el circuito. En el
mercado se encuentran circuitos híbridos para módulos de RF, fuentes de alimentación, circuitos
de encendido para automóvil, etc.
 Los circuitos integrados, a menudo llamado semiconductores, chips
de circuitos integrados o simplemente IC (por sus siglas en inglés), se dividen en
numerosas categorías o tipos. Las principales organizaciones de comercio de
semiconductores y empresas de investigación de mercados usan estas clasificaciones
para informar sobre la salud de los distintos segmentos del mercado de chips. Aunque
existen muchas clasificaciones, las tres clasificaciones principales son circuitos
integrados analógicos, digitales y de señal mixta.

Circuitos integrados digitales


Los circuitos integrados digitales se utilizan principalmente para construir sistemas informáticos,
también se producen en los teléfonos celulares, equipos de música y televisores. Los circuitos
integrados digitales incluyen microprocesadores, microcontroladores y circuitos lógicos.
Realizan cálculos matemáticos, dirigen el flujo de datos y toman decisiones basadas en principios
lógicos booleanos.

El sistema booleano utilizado se centra en dos números: 0 y 1. Por otro lado, el sistema de base
10, el sistema de numeración que aprendes en la escuela primaria, se basa en 10 números: 0, 1,
3, 4, 5, 6, 7, 8 y 9.

Circuitos integrados análogos


Los circuitos integrados analógicos comúnmente constituyen una parte de las fuentes de
alimentación, los instrumentos y las comunicaciones. En estas aplicaciones, los circuitos
integrados analógicos amplifican, filtran y modifican señales eléctricas. En los teléfonos
celulares, amplifican y filtran la señal de entrada de la antena del teléfono. El sonido codificado
en la señal tiene un nivel de baja amplitud, después de que el circuito filtra la señal sonora de la
señal de entrada, el circuito amplifica la señal de sonido y lo envía al altavoz de tu teléfono
celular, lo que le permite escuchar la voz en el otro extremo.

Limitaciones de los circuitos integrados

Existen ciertos límites físicos y económicos al desarrollo de los circuitos integrados. Son barreras
que se van alejando al mejorar la tecnología, pero no desaparecen. Las principales son:
 Disipación de potencia-Evacuación del calor: Los circuitos electrónicos disipan
potencia. Cuando el número de componentes integrados en un volumen dado crece, las
exigencias en cuanto a disipación de esta potencia, también crecen, calentando el
sustrato y degradando el comportamiento del dispositivo. Además, en muchos casos es
un comportamiento regenerativo, de modo que cuanto mayor sea la temperatura, más
calor producen, fenómeno que se suele llamar “embalamiento térmico” y como
consecuencia, el llamado “efecto avalancha”, y que, si no se evita, llega a destruir el
dispositivo. Los amplificadores de audio y los reguladores de tensión son proclives a este
fenómeno, por lo que suelen incorporar “protecciones térmicas”.
Los circuitos de potencia, evidentemente, son los que más energía deben disipar. Para ello su
cápsula contiene partes metálicas, en contacto con la parte inferior del chip, que sirven de
conducto térmico para transferir el calor del chip al disipador o al ambiente. La reducción de
resistividad térmica de este conducto, así como de las nuevas cápsulas de compuestos de
silicona, permiten mayores disipaciones con cápsulas más pequeñas. Los circuitos digitales
resuelven el problema reduciendo la tensión de alimentación y utilizando tecnologías de bajo
consumo, como TTL o CMOS. Aun así, en los circuitos con más densidad de integración y
elevadas velocidades, la disipación es uno de los mayores problemas, llegándose a utilizar
experimentalmente ciertos tipos de criostatos. Precisamente la alta resistividad térmica del
arseniuro de galio es su talón de Aquiles para realizar circuitos digitales con él.

 Capacidades y autoinducciones parásitas: Este efecto se refiere principalmente a las


conexiones eléctricas entre el chip, la cápsula y el circuito donde va montada, limitando
su frecuencia de funcionamiento. Con pastillas más pequeñas se reduce la capacidad y
la autoinducción de ellas. En los circuitos digitales excitadores de buses, generadores de
reloj, etc., es importante mantener la impedancia de las líneas y, todavía más, en los
circuitos de radio y de microondas.

 Límites en los componentes: Los componentes disponibles para integrar tienen ciertas
limitaciones, que difieren de las de sus contrapartidas discretas:
-Resistencias. Son indeseables por necesitar una gran cantidad de superficie. Por ello sólo se
usan valores reducidos y, en tecnologías digitales, se eliminan casi totalmente.
-Condensadores. Sólo son posibles valores muy reducidos y a costa de mucha superficie. Como
ejemplo, en el amplificador operacional uA741, el condensador de estabilización viene a ocupar
un cuarto del chip.
-Bobinas. Sólo se usan en circuitos de radiofrecuencia, siendo híbridos muchas veces. En general
no se integran. Los circuitos más usados son los resonantes (bobina-condensador; bien en serie
o en paralelo), que actualmente son sustituidos por cristales de cuarzo

FAMILIAS

TTL (Lógica transistor a transistor)


Características

 Su tensión de alimentación característica se halla comprendida entre los 4,75V y los


5,25V (como se ve, un rango muy estrecho). Normalmente TTL trabaja con 5V.
 Los niveles lógicos vienen definidos por el rango de tensión comprendida entre 0,0V y
0,8V para el estado L (bajo) y los 2,2V y Vcc para el estado H (alto).
 La velocidad de transmisión entre los estados lógicos es su mejor base, si bien esta
característica le hace aumentar su consumo siendo su mayor enemigo. Motivo por el
cual han aparecido diferentes versiones de TTL como FAST, LS, S, etc. y últimamente los
CMOS: HC, HCT y HCTLS. En algunos casos puede alcanzar poco más de los 400 MHz.
 Las señales de salida TTL se degradan rápidamente si no se transmiten a través de
circuitos adicionales de transmisión (no pueden viajar más de 2 m por cable sin graves
pérdidas).
 Los circuitos de tecnología TTL se prefijan normalmente con el número 74.
Series TTL:
TTL estándar
El circuito funciona con una alimentación única de + 5V, ± 5 % y es compatible con todos los
circuitos de otras subfamilias TTL, así como también con la familia lógica DTL. Tiene un retraso
típico de 10 ns, temperatura de trabajo de 0ºC a 70ºC, fan-out de 10, margen de ruido en
estado 0 y en 1 de 400 mV, una potencia de disipación de 10 mW or puerta y una frecuencia
máxima para los flip-flop de 35 MHz. Corresponde a la serie SN 54174 de Texas, conocida y
utilizada mundialmente.

TTL de baja potencia (Serie 54174 L)

Tiene un retraso de propagación típico de 33 ns, una potencia de consumo por puerta de 1
mW y una frecuencia máxima de 3 MHz de funcionamiento para los flip-flop. Su empleo se
especializa en aplicaciones de bajo consumo y mínima disipación.

TTL de alta velocidad (Serie SN 54 H174 H)

Los parámetros típicos de esta subfamilia son: retraso en la propagación por puerta de 6 ns,
consumo de 22 mW por puerta y frecuencia operativa máxima de flip-flop de 50 MHz.

TTL Schottky" (Serie SN 54 S/74/S)

El circuito TTI, Schottky ha sido uno de los más recientes desarrollos y constituye el más rápido
de las subfamilias TTL, aproximándose su velocidad a la familia lógica ECL. Se caracterizan por
su rapidez, ya que no almacenan cargas y porque son muy sencillos de fabricar.

El circuito es similar al TTL de alta velocidad, pero la base de cada transistor está conectada al
colector a través de un diodo de Schottky. El diodo actúa como desviador de] exceso de
corriente de base cuando el transistor se activa, y guarda una carga almacenada, evitando la
saturación de los transistores. La ausencia de-una carga almacenada reduce el tiempo del
cambio del transistor y aumenta la velocidad del circuito. La subfamilia Schottky tiene una
propagación típica de 3 ns, un consumo de 19 mW y una frecuencia máxima de flip-flop de 125
MHz.

TTL Schottky de baja potencia- (Serie 54 LS174 LS)

El circuito TTL Schottky de baja potencia es el Uiás reciente de la familia TTL y con él se ha
intentado llegar a un compromiso entre la velocidad y la potencia consumida.
Tiene una propagación típica de 10 ns (igual que la TTL estándar) y un consumo por puerta de
sólo 2 mW, con una frecuencia máxima de flip-flop de 35 MHz
Tipos de salida
Three State Logic:

Permite un puerto de salida para asumir una alta impedancia de estado además de los niveles
lógicos 0 y 1, eliminando de forma eficaz la salida del circuito.

Las salidas de tres estados son implementadas en muchos registros, bus drivers, y flip-flops en
las series 7400 y 4000 tan bien como en otros tipos, pero internamente también en diversos
circuitos integrados. Otros típicos usos son buses externos e internos en microprocesadores,
memorias de computadora y periféricos.

Open Colector:

Un colector abierto es un tipo común de salida


se encuentra en muchos circuitos integrados.

En lugar de enviar una señal de un voltaje o


corriente específica, la señal de salida se aplica
a la base de un interno transistor cuyo colector
está externalizado (abierto) en un perno de la
IC. El emisor del transistor está conectado
internamente al terminal de tierra. Si el
dispositivo de salida es un MOSFET la salida se
llama drenaje abierto y funciona de una
manera similar.

Tótem Pole:

La salida Tótem pole (transistores apilados) es una salida típica de la familia TTL y que tiene como
característica la baja disipación que generan.

El funcionamiento se basa en que para generar un nivel bajo conduce el transistor inferior T2 de
la figura y en el caso de un nivel alto, conduce el transistor superior T1.

Aquí podemos observar los tres valores posibles de una salida Tótem Pole:

 Nivel bajo “0”: Cuando activamos la base del transistor T2 con un “1” lógico y no
polarizar la de T1.
 Nivel bajo “1”: Cuando activamos la base del transistor T1 con un “1” lógico y no
polarizar la de T2.
 Nivel de Alta impedancia, flotante o inactivo: En este estado no hay información lógica
en la salida. Los transistores T1 y T2 no se polarizan, y esto provoca que en las uniones
emisor y colector de los dos transistores no circule corriente. La salida queda flotante y
conectada a otros circuitos queda como si no estuviera.
CMOS

El semiconductor complementario de óxido metálico o complementary metal-oxide-


semiconductor (CMOS) es una de las familias lógicas empleadas en la
fabricación de circuitos integrados. Su principal característica consiste
en la utilización conjunta de transistores de tipo qLOS y tipo nMOS
configurados de forma tal que, en estado de reposo, el consumo de
energía es únicamente el debido a las corrientes parásitas, colocado en
la placa base.

Historia
La tecnología CMOS fue desarrollada por Wanlass y Sah, de Fairchild Semiconductor, a
principios de los años 1960. Sin embargo, su introducción comercial se debe a RCA, con su
famosa familia lógica CD4000.
Posteriormente, la introducción de un búfer y mejoras en el proceso de oxidación
local condujeron a la introducción de la serie 4000B, de gran éxito debido a su bajo consumo
(prácticamente cero, en condiciones estáticas) y gran margen de alimentación (de 3 a 18 V).
RCA también fabricó LSI en esta tecnología, como su familia COSMAC de amplia aceptación en
determinados sectores, a pesar de ser un producto caro, debido a la mayor dificultad de
fabricación frente a dispositivos NMOS.
Características:

 Generan un menos consumó de potencia


 Tienen más inmunidad al sonido (ruido de radio de frecuencia)
 Tienen mayor rango de suministro de energía, permitiendo entradas de voltajes de
hasta 35v.
 Otra de las características importantes de los circuitos CMOS es que son
regenerativos, una señal degradada que acometa una puerta lógica CMOS será
restaurada a su valor lógico inicial 0 o1 siempre y cuando este dentro de los
márgenes de ruido que el circuito pueda tolerar.

Series CMOS:
Existen varias series en la familia CMOS de circuitos integrados digitales, estudiaremos las
principales características de cada una.

Series 4000/14000

Las primeras series CMOS fueron la serie 4000, que fue introducida por RCA y la serie14000 por
Motorola. La serie original es la 4000A; la 4000B representa mejora con respecto a la primera y
tiene mayor capacidad de corriente en sus salidas. A pesar de la aparición de la nueva serie
CMOS, las series 4000 siguen teniendo uso muy difundido. La serie 4000A es la línea más usada
de Circuitos Integrados digitales CMOS, contiene algunas funciones disponibles en la serie TTL
7400 y está en expansión constante. Algunas características más importantes de
esta familia lógica son:

a) La disipación de potencia de estado estático de los circuitos lógicos CMOS es muy baja.

b) Los niveles lógicos de voltaje CMOS son 0 V para 0 lógico y VDD para 1 lógico. El suministro
VDD puede estar en el rango 3 V a 15 V para la serie 4000. La velocidad de conmutación de la
familia CMOS 4000A varía con el voltaje de la fuente. (Consultar el apartado de los niveles de
voltaje).c) Todas las entradas CMOS deben estar conectadas a algún nivel de voltaje.

Serie 74C

Esta serie CMOS su característica principal es que es compatible terminal por terminal
y función por función, con los dispositivos TTL que tienen el mismo número (muchas de las
funciones TTL, aunque no todas, también se encuentran en esta serie CMOS). Esto hace posible
remplazar algunos circuitos TTL por un diseño equivalente CMOS. Por ejemplo, 74C74 contiene
dos flip-flops tipo D disparados por flanco y tiene la misma configuración de terminales que el
CI TTL 7474, que también ofrece dos flip-flops tipo D disparados por flanco. El resto de las
características son iguales a la serie 74C.

Las series HC/ HCT tienen como característica principal su alta velocidad.

Serie 74HC (CMOS de alta velocidad)

Esta es una versión mejor de la serie 74C. La principal mejora radica en un aumento de diez
veces en la velocidad de conmutación (comparable con la de los dispositivos de la serie 74LS de
TIL). Otra mejora es una mayor capacidad de corriente en las salidas. La serie 74HC son los CMOS
de alta velocidad, tienen un aumento de 10 veces la velocidad de conmutación. La serie 74HCT
es también de alta velocidad, y también es compatible en lo que respecta a los voltajes con los
dispositivos TTL.

Serie 74HCT

Esta serie también es una serie CMOS de alta velocidad, y está diseñada para ser compatible en
lo que respecta a los voltajes con los dispositivos TTL, es decir, las entradas pueden provenir de
salidas TTL (esto no es cierto para las demás series CMOS.)

Ventajas:
La familia lógica tiene una serie de ventajas que la hacen superior a otras en la fabricación de
circuitos integrados digitales:

 El bajo consumo de potencia estática, gracias a la alta impedancia de entrada de los


transistores de tipo MOSFET y a que, en estado de reposo, un circuito CMOS sólo
experimentará corrientes parásitas.
 Gracias a su carácter regenerativo, los circuitos CMOS son robustos frente a ruido o
degradación de señal debido a la impedancia del metal de interconexión.
 Los circuitos CMOS son sencillos de diseñar.
 La tecnología de fabricación está muy desarrollada, y es posible conseguir densidades de
integración muy altas a un precio mucho menor que otras tecnologías.

Desventajas:
Algunos de los inconvenientes son los siguientes:

 Debido al carácter capacitivo de los transistores MOSFET, y al hecho de que estos son
empleados por duplicado en parejas nMOS-pMOS, la velocidad de los circuitos CMOS es
comparativamente menor que la de otras familias lógicas.
 Son vulnerables a latch-up.
 Según se va reduciendo el tamaño de los transistores, las corrientes parásitas empiezan a
ser comparables a las corrientes dinámicas (debidas a la conmutación de los dispositivos).

CMOS comparado con TTL:


• Los componentes CMOS son usualmente más caros que los equivalentes en TTL. Sin embargo,
la tecnología CMOS es más barata a nivel de sistema, esto debido a los chips que poseen un
menor tamaño además que requieren menos regulación.

• Los circuitos CMOS no drenan tanta potencia como los TTL en los períodos de inactividad. Sin
embargo, el consumo de potencia de los CMOS se incrementa más rápidamente que los TTL al
aumentar la velocidad del reloj. Un menor consumo de corriente requiere menor distribución
de la fuente de alimentación, teniendo como producto un diseño más sencillo y barato.

• Debido a que los tiempos de subida y bajada son mayores, la transmisión de las señales
digitales resulta más sencilla y barata con los chips CMOS.

• Los componentes CMOS son más susceptibles a daños por descargas electrostáticas con
respecto a los componentes TTL.
EL MICROPROCESADOR Z-80
Qué es un microprocesador

Un ordenador es una máquina fundamentalmente secuencial. Esto quiere decir que realiza sus tareas
una detrás de otra, siguiendo el orden en el que están las instrucciones para realizarlas.

Sus componentes básicos serán, por tanto, un lugar donde almacenar las instrucciones y
datos (Memoria) y un elemento encargado de ejecutar los procesos indicados por esas
instrucciones (Unidad Central de Proceso o CPU).

La CPU debe incluir todos los componentes necesarios para leer la memoria, decodificar las
instrucciones y ejecutar cálculos aritméticos y lógicos. En los ordenadores de pequeño tamaño (minis
y micros), la CPU está integrada dentro de un solo chip de silicio, a este chip se le conoce por el
nombre de microprocesador.

Un microprocesador consta, normalmente, de una serie de registros,


una Unidad Aritmética-Lógica (ALU) y los circuitos de control para la
comunicación interna y externa. En la FIGURA 1 se puede ver el
diagrama de bloques del microprocesador Z-80. CARACTERÍSTICAS: ¨
El set de instrucciones contiene 158 instrucciones. Están incluidas las
78 instrucciones del 8080 y se mantiene la compatibilidad de
software con el 8080. ¨ Reloj de 8, 6, 4 y 2.5 MHz. Para el Z80H,
Z80B, Z80A y Z80 CPU, resultando una rápida ejecución de
instrucciones con la consecuente transferencia elevada de datos. ¨ El
extenso set de instrucciones incluye operaciones con palabras, bit,
byte y cadena de caracteres. Búsqueda y transferencias de bloques a la vez mediante indexado y
direccionamiento relativo, resultando el más competente y poderoso procesador de datos en la
industria de los microcomputadores. ¨ El microprocesador Z80 y la familia asociada de periféricos
controladores pueden ser enlazados por un sistema vectorizado de interrupciones. Este sistema
podría ser Daisy Chained que permita la implementación de un esquema de interrupciones
prioritario, se requiere poca lógica adicional para el acoplamiento. ¨ Set duplicado de registros de
banderas y de propósito general. ¨ Dos registros índices de 16 bits. ¨ Contador de refresco de
memoria dinámica.

Registros

Los registros constituyen una especie de pequeña memoria interna al microprocesador. El Z-80 tiene
registros de 8 y 16 bits, si bien los de 8 bits se pueden agrupar de 2 en 2 para formar uno de 16 bits.
Todas las operaciones que realiza el Z-80 se hacen entre números contenidos en los registros, o bien,
entre un registro y una posición de memoria; por eso se dice que el Z-80 es un microprocesador
orientado hacia los registros. La posibilidad de agrupar dos registros de 8 bits para formar uno de 16,
permite al Z-80 realizar operaciones de 16 bits a pesar de ser un microprocesador de 8 bits.

El Z-80 tiene, en total, 18 registros de 8 bits y 4 registros de 16 bits. Algunos son de uso general y
otros tienen asignadas funciones específicas.
Como se ve, los registros cumplen en Código Máquina una función similar a la de las variables en
Basic. La configuración de registros del Z-80.

Registros especiales de 16 bits

Los cuatro registros especiales de 16 bits son: el Contador de programa (PC), el Puntero de pila (SP), el
registro índice "X" (IX) y el registro índice "Y" (IY). A continuación, vamos a verlos de uno en uno.

CONTADOR DE PROGRAMA

Es el registro que contiene la dirección de memoria desde donde hay que leer la instrucción en curso,
tras la ejecución el registro se incrementa para continuar con la siguiente, o se sustituye su valor por
otro si se ha de ejecutar un salto o una llamada a subrutina. En el momento de conectar el ordenador,
la señal de RESET pone este registro a "cero", por lo que la ejecución comienza desde la primera
dirección de memoria.

PUNTERO DE PILA

Una pila es una zona reservada de memoria cuyos datos están organizados como "último en entrar,
primero en salir" (LIFO: Last In First Out), y sirve para almacenar determinados datos, como, por
ejemplo, la dirección de retorno tras una llamada a subrutina. De una pila sólo se puede recuperar
cada vez el último dato que se ha introducido. El registro SP es el puntero de la Pila de
Máquina. Apunta siempre al último dato introducido, los datos que se introducen en la pila de
máquina tienen siempre dos bytes de longitud. Durante la rutina de inicialización, se carga este
registro con un valor (inmediatamente debajo de RAMTOP) y cada vez que se mete un dato en la pila,
el puntero (SP) se decremento dos veces (la pila se expande hacia abajo).

La existencia de una pila permite la ejecución de llamadas a subrutinas, cada vez que se llama a una
subrutina, se introduce en la pila el contenido actual del PC, se decremento dos veces el SP y se carga
el PC con la nueva dirección de la subrutina. Para retornar, se carga el PC con el contenido superior de
la pila y se incrementa dos veces el SP. Este sistema permite la anidación de subrutinas hasta el límite
de la memoria disponible para la pila.

Cuando se escribe un programa, hay que tener sumo cuidado para que la pila no crezca
indefinidamente, ya que destrozaría todos los datos almacenados en memoria, incluido el propio
programa. Por otro lado, hay que tener cuidado para recuperar de la pila todos los datos
almacenados durante una subrutina antes de intentar retornar, ya que de lo contrario habríamos
"corrompido" la pila y el retorno no sería posible.

Nuestros programas en C/M se llaman desde Basic como una subrutina (con la función USR) de forma
que para retornar a Basic mediante una instrucción RET, deberemos tener la pila en perfectas
condiciones. No obstante, el Sistema Operativo del Spectrum permite un retorno a Basic, incluso con
la pila "corrompida", mediante el uso de la instrucción RST 8 que se explicará más adelante.

REGISTROS INDICE (Index X e Index Y "IX" e "IY"):


Estos registros sirven para manipular tablas, contienen las direcciones de base a las que se sumará un
entero en complemento a dos cuando se utilice direccionamiento indexado (esta forma de
direccionamiento se verá más adelante).

El Sistema Operativo del Spectrum utiliza el registro IY como dirección de base para acceder a las
variables del sistema, por lo que deberemos tener sumo cuidado si utilizamos este registro en
nuestros programas.

Registros especiales de 8 bits

VECTOR DE INTERRUPCION (Interrupt "I"):

El Z-80 utiliza el dato contenido en este registro como octeto de orden alto de la dirección a la que
deberá saltar cuando reciba una petición de interrupción enmascarable en "modo 2" (las
interrupciones del Z-80 se estudiarán más adelante en este mismo capítulo).

REGISTRO DE REGENERACION (Refresh "R"):

Como casi todos los lectores sabrán, el Spectrum utiliza memoria RAM dinámica, este tipo de
memoria tiene que ser leída y vuelta a escribir continuamente. El Z-80 utiliza este registro de 7 bits
como dirección para regenerar la memoria durante el tiempo de decodificación de cada instrucción.

Registros alternativos

El Z-80 tiene dos grupos de 8 registros de 8 bits cada uno, que pueden ser usados de forma
alternativa mediante una instrucción de intercambio de contenidos. Cada uno de estos grupos lleva
un acumulador, un indicador de estado y 6 registros de uso general.

ACUMULADOR "A"

El Acumulador recibe los resultados de todas las operaciones aritméticas y lógicas que realiza en
microprocesador que es, de hecho, el registro más usado del Z-80. Existen dos acumuladores, uno en
cada grupo de registros alternativos (ver FIGURA 2) que se denominan respectivamente A y A'.

REGISTRO DE ESTADO "F"


El registro de estado indica la ocurrencia de determinadas condiciones, tales como:
paridad, cero, signo, acarreo, desbordamiento, que se producen tras una operación
aritmética o lógica y que serán de gran utilidad en los saltos condicionales.

Existen dos registros de estado, uno en cada grupo de registros alternativos, se denominan
respectivamente F y F'.

REGISTROS DE USO GENERAL ("B", "C", "D", "E", "H", "L"):

Cada grupo de registros alternativos tiene 6 registros de uso general que se denominan
respectivamente B, C, D, E, H, L y B', C', D', E', H', y L'. Pueden agruparse de dos en dos para formar los
registros BC, DE, HL y BC', DE' y HL'. Una instrucción de intercambio de contenidos, permite
seleccionar entre parejas de registros de uno u otro grupo.

Su aplicación es de uso general, si bien, algunos tienen funciones específicas asignadas en


determinadas instrucciones, por ejemplo "HL" actúa como acumulador en las operaciones aritméticas
de 16 bits, "B" actúa como contador en los bucles de iteración (instrucción DJNZ) y finalmente, en las
transferencias de bloques, "HL" indica el origen, "DE" el destino y "BC" el número de bytes a
transferir.

En el Sistema Operativo del Spectrum, el registro "BC" actúa como un puente de comunicación con el
Basic, ya que cada vez que ejecutamos la función USR, lo que obtenemos como resultado es,
precisamente, el contenido del registro "BC" en el momento de retornar, lo que nos permitirá pasar
datos con facilidad desde Código Máquina a Basic.

Unidad Aritmética-Lógica

Otro componente fundamental del microprocesador es la ALU o Unidad Aritmética-Lógica que es la


encargada de realizar todas las operaciones en el interior del microprocesador. Las operaciones que
puede realizar son:

Desplazamiento
Comparación
Puesta a uno de bit
Puesta a cero de bit
Prueba de bit
AND
OR
OR exclusivo (EXOR)
Incremento
Decremento
Suma
Resta
Ajuste decimal

El desplazamiento consiste en una rotación, bit a bit, de un registro o una posición de memoria,
puede incluir el indicador de acarreo del registro F. El efecto de rotar a la izquierda es el de multiplicar
el número por 2, y el de rotarlo a la derecha es el de dividirlo por 2.

La comparación consiste en cotejar el acumulador con otro número y alterar los indicadores del
registro F de acuerdo con el resultado de la comparación, permaneciendo inalterado el contenido del
acumulador.

Probar un bit consiste en ver si es "uno" o "cero" y anotar el resultado en el indicador de cero del
registro F.

Incrementar es sumar "1", decremento es restar "1".

La suma y la resta pueden ser con o sin acarreo.


El ajuste decimal consiste en transformar el número Hexa contenido en el acumulador y comprendido
entre "00" y "FF", en un número decimal codificado en binario (BCD) comprendido entre "00" y "99".

Registro de instrucciones
Buses

Para comunicarse con la memoria y los periféricos, el Z-80 utiliza una serie de líneas eléctricas
denominadas BUSES. Cada una de estas líneas se corresponde con una patilla del chip Z-80. Existen
tres buses:

Bus de direcciones de 16 bits formado por 16 líneas eléctricas denominadas A0-A15.

Bus de datos de 8 bits, formado por 8 líneas eléctricas denominadas D0-D7.

Bus de control de 13 bits formado por 13 líneas eléctricas


denominadas: M1,MREQ,IORQ,RD,WR,RFSH,HALT,WAIT,INT,NMI,RESET,BUSRQ y BUSAK.

Las tres patillas restantes hasta las 40 del chip son: la entrada de la señal de "reloj" (3,500,000
impulsos por segundo), la entrada de alimentación eléctrica (+5 voltios) y la conexión común a MASA.

Se dice que una entrada o salida está a nivel alto ("1") cuando su tensión con respecto a MASA es de
+5V. Y se dice que está a nivel bajo ("0") cuando su tensión con respecto a MASA es de 0V.

Cuando el nombre de una línea tiene una raya encima, indica que es activa a nivel bajo, si no, se
considera activa a nivel alto. Todas las salidas del Z-80 son Triestado, esto quiere decir que cuando no
se están utilizando permanecen en un estado de alta impedancia que tiene el mismo efecto que si
estuvieran desconectadas del circuito. A continuación, veremos una a una todas las señales eléctricas
del Z-80.

A0-A15

Constituyen un bus de direcciones que permite acceder a 65536 posiciones de memorias, o a 256
ports de entrada/salida. En las operaciones de entrada/salida, los port se direccionan con los ocho
bits inferiores del bus. Durante el tiempo de regeneración de memoria, los siete bits inferiores
contienen una dirección de regeneración.

D0-D7

Constituyen un bus de datos bidireccional que permite al microprocesador tanto enviar datos como
recibirlos. Se utiliza para el intercambio de datos con la memoria o con dispositivos de entrada/salida
(ports).

Salida M1 (Machine 1)
Se utiliza para indicar que el ciclo de máquina en curso es el de búsqueda de instrucción. También se
activa junto con IORQ para indicar un acuse de recibo a una petición de interrupción.

Salida MREQ (Memory Request)

Se utiliza para indicar que el microprocesador desea acceder a la memoria.

Salida IORQ (Input/Output Request)

Se utiliza para indicar que el microprocesador desea acceder a un port de entrada/salida. También se
utiliza junto con M1 para indicar un acuse de recibo a una petición de interrupción.

Salida RD (Read)

Se utiliza para indicar que se desea leer una posición de memoria o un port de entrada/salida.

Salida WR (Write)

Se utiliza para indicar que se desea escribir en una posición de memoria o en un port de
entrada/salida.

Salida RFSH (Refresh)

Se utiliza para indicar que se está en un ciclo de regeneración de memoria, y la dirección presente en
los siete bits inferiores del bus de direcciones junto con la señal MREQ se deben usar para una lectura
de refresco de memoria.

Salida HALT

Se utiliza para indicar que el microprocesador ha ejecutado una instrucción "HALT" y está esperando
una petición de interrupción para atenderla. Durante este tiempo, se ejecuta continuamente la
instrucción NOP con el fin de mantener la lógica de regeneración de memoria.

Entrada WAIT

Le indica al microprocesador que tiene que esperar, ya que la memoria o el dispositivo de


entrada/salida direccionado, no está listo para recibir la transferencia de datos solicitada.

Esta señal y la anterior, tienen la finalidad de sincronizar el funcionamiento del microprocesador con
el de otros dispositivos.

Entrada INT (Interrupt)

Petición de interrupción enmascarable, la interrupción sólo es atendida si se encuentra activado el


flip/flop de aceptación de interrupción. Si la interrupción es aceptada, se envía el acuse de recibo a
través de IORQ y M1 y se salta a la rutina de servicio correspondiente al modo de interrupción
seleccionado.

En el Spectrum, la ULA se encarga de efectuar una petición de interrupción enmascarable cada 20


milisegundos, justo antes de empezar a barrer la pantalla del televisor. Esta interrupción se utiliza
normalmente para leer el teclado, pero es posible utilizarla en nuestras propias rutinas para
sincronizar el funcionamiento de nuestros programas con el barrido de la pantalla, lo que puede ser
útil en caso de animación de figuras.

Entrada NMI (Non Maskable Interrupt)

Petición de interrupción no enmascarable, esta interrupción se acepta siempre (salvo que haya
presente una señal en BUSRQ y obliga al microprocesador a saltar a la dirección 0066h
independientemente del flip/flop de aceptación y del modo de interrupción seleccionado.

Entrada RESET

Esta entrada obliga al microprocesador a inicializarse, cargando todos los registros con "cero",
incluido el "PC", por lo que la ejecución comienza desde la posición de memoria "0000".

En el Spectrum, esta señal se produce cada vez que se conecta el ordenador, o cada vez que se pulsa
el botón de RESET en el Plus.

Entrada BUSRQ (Bus Request)

Constituye una señal de petición de bus, al recibirla, el microprocesador responde activando la


línea BUSAK y desconectándose de los buses de direcciones y datos para permitir el acceso directo a
memoria de un dispositivo más rápido que él. Durante este tiempo, el microprocesador no regenera
la memoria, por lo que el dispositivo que ha hecho la petición debe encargarse de esta tarea.

Salida BUSAK (Bus Aknoledge)

La utiliza el microprocesador para indicar el acuse de recibo a una petición de bus. Cuando se genera
esta señal, el microprocesador se haya totalmente desconectado de los buses de direcciones y datos,
con lo que no interfiere el acceso a memoria del dispositivo que ha pedido el bus.

Las interrupciones en el Z-80

El Z-80 como buen microprocesador que es, tiene varias posibilidades de interrupción que permiten
el acceso con distinta prioridad.

INTERRUPCION NO ENMASCARABLE (NMI)

Es la petición de interrupción de más alta prioridad, se acepta siempre, y se responde siempre de la


misma forma: saltando a la posición de memoria 0066h.

En el Spectrum esta forma de interrupción no se utiliza, es más, se encuentra ingeniosamente


anulada para facilitar la protección del software comercial; si activáramos a través del slot posterior,
la línea NMI, nos encontraríamos con la desagradable sorpresa de que el ordenador ejecuta un salto a
la posición de memoria "cero", reinicializándose y borrando toda la memoria. Esto se debe a que la
rutina de servicio a la interrupción que se encuentra a partir de 0066h salta a cero si el contenido de
las posiciones de memoria 5CB0h y 5CB1h es "cero"; podemos evitar el salto a cero, almacenando un
número distinto de cero en estas posiciones, pero en este caso, se produciría un simple retorno y la
interrupción sería ignorada.

INTERRUPCION ENMASCARABLE (INT)

Se trata de la interrupción más usada en el Z-80 ya que permite definir el vector de interrupción, y lo
que es más importante, decidir por software si se atiende o no la petición.

Se denomina vector de interrupción a la dirección de memoria a que se salta para ejecutar la rutina de
servicio a la interrupción.

En el Z-80 existe un "mini registro" de un solo bit que se denomina flip/flop de aceptación de
interrupción. Si este registro está a "1", la petición de interrupción es aceptada, y si está a "0" es
ignorada. Cuando el flip/flop de aceptación está a "0", se dice que la interrupción está enmascarada.

Existen dos instrucciones en el Z-80 que nos permiten enmascarar o habilitar la interrupción, estas
interrupciones son: "DI" (Disable Interrupt) y "EI" (Enable Interrupt), se verán detalladamente cuando
se estudien las instrucciones de control de la CPU.

Si la interrupción está habilitada, y el microprocesador decide aceptarla, podrá responder de tres


modos distintos. Estos tres modos de interrupción, también se seleccionan por software, mediante
las instrucciones: "IM0", "IM1" e "IM2" (Interrupt Mode 0, 1 y 2). Estos modos de respuesta se
denominan respectivamente: MODO 0, MODO 1 y MODO 2.

MODO 0

En este modo de interrupción, el microprocesador deja libre el bus de datos para permitir que el
dispositivo que ha silicitado la interrupción, inserte el código de operación correspondiente a una
instrucción que será ejecutada seguidamente por el microprocesador.

En el Spectrum, este modo de interrupción es redundante, ya que, si lo seleccionamos, cuando se


vaya a ejecutar, no habrá ningún dispositivo que inserte ningún código de operación, por lo que el bus
de datos contendrá "FF", que es precisamente el código de operación de "RST 38", instrucción que
obliga al microprocesador a saltar a la posición de memoria 0038h, que es, como veremos ahora, lo
que hace en el MODO 1.

MODO 1

En este modo de interrupción, el microprocesador responde a la interrupción, simplemente, saltando


a la posición de memoria 0038h. En este caso se dice que el vector de interrupción es fijo.

En el Spectrum, se trabaja normalmente en MODO 1, ya que a partir de la posición de memoria


0038h se encuentra la rutina que lee el teclado.

MODO 2

Es el modo de interrupción más complejo del Z-80, y el que deberemos utilizar para nuestros fines. En
este caso, el microprocesador responde de una forma bastante compleja que conviene analizar
detenidamente: primero coge el contenido del registro "I", lo considera como un octeto superior de
una dirección, el octeto inferior deberá suministrarlo el dispositivo que ha solicitado la interrupción
(si no lo suministra, se entiende que es FFh). Acto seguido, lee el número almacenado en esa
dirección y la siguiente, lo carga en el "PC", y continúa la ejecución desde ese punto.

Este modo de interrupción permite un salto indirecto a cualquier posición de memoria, hay que tener
en cuenta que en el Spectrum el octeto de orden bajo de la dirección será siempre FFh y, por tanto, la
lectura de la dirección a la que hay que saltar se producirá desde una posición de memoria cuya
dirección sea xxFFh, siendo xx el contenido del registro "I", que, por motivos evidentes, se
denomina Vector de página de interrupción.

Teniendo en cuenta que en el Spectrum se produce una petición de interrupción enmascarable cada
20 milisegundos, podemos desactivar la interrupción (con "DI") para que nuestros programas corran
más deprisa, o bien, utilizar la instrucción HALT para sincronizarnos con el barrido de la pantalla. Otra
posibilidad es cambiar a MODO 2 y utilizar un vector de interrupción que salte a una rutina nuestra,
con lo que ésta se ejecutará 50 veces por segundo.

Ciclos o tiempos

Para realizar las operaciones secuencialmente, el Z-80 necesita sincronizar todas sus señales internas
y externas y disponer, por tanto, de un patrón de tiempo. Es lo que se denomina: Reloj del
microprocesador.

El reloj del microprocesador está constituido por un oscilador electrónico controlado por un cristal de
cuarzo, que entrega tres millones y medio de impulsos por segundo (3.5 MHz). Estos impulsos se
introducen en el Z-80 a través de la patilla 6 denominada "RELOJ", y el microprocesador utiliza un
número determinado de estos impulsos para cada operación.

La primera versión del Z-80 no aceptaba señales de reloj superiores a 2.5 MHz.

En el Spectrum se ha utilizado una versión más moderna denominada Z-80A, que admite señales de
reloj de hasta 4 MHz, con lo que se consigue una mayor velocidad de ejecución.

En el Spectrum se ha utilizado una señal de reloj de 3.5 MHz en vez de los 4 tolerados, para evitar
llevar al microprocesador al límite de su frecuencia de trabajo, lo que podría dar lugar a errores.

CICLOS DE MAQUINA Y CICLOS DE INSTRUCCION

Se denomina Ciclo de instrucción al tiempo durante el cual el microprocesador ejecuta una instrucción
completa.

El ciclo de instrucción se subdivide a su vez, en ciclos de máquina. Un ciclo de máquina es el tiempo


durante el cual el microprocesador realiza una operación elemental. Cada ciclo de máquina emplea
varios ciclos (impulsos) de reloj.

Se denomina "M1" al ciclo de máquina correspondiente a la búsqueda del código de operación,


durante el cual, la pata M1 del microprocesador se coloca a nivel bajo. El ciclo de máquina M1 ocupa
4 ciclos de reloj; un ciclo de reloj dura aproximadamente 0.29 microsegundos (millonésimas de
segundo), por lo que el ciclo M1 dura 1.14 microsegundos.
Un ciclo de memoria es una operación de lectura o escritura en memoria, emplea 3 ciclos de reloj, y
dura 0.86 microsegundos.

TIEMPOS DE EJECUCION

Como el lector habrá deducido ya, es posible calcular el tiempo de ejecución de una determinada
rutina en C/M, a condición de conocer el número de ciclos de reloj que emplea cada una de sus
instrucciones.

En lo sucesivo, cada vez que veamos una determinada instrucción, indicaremos el número de ciclos
de reloj que emplea el microprocesador para ejecutarla, así como el número de veces que accede a
memoria (ciclos de memoria).

Como ejemplo, veamos lo que se tarda en cargar el registro "A" con un número. Podemos utilizar la
instrucción: LD A, #FF que carga el número 255 (FFh) en el acumulador, esta instrucción accede 2
veces a memoria (2 ciclos de memoria), una para buscar el código de operación (4 ciclos de reloj) y
otra para buscar el número que ha de cargar en "A" (3 ciclos de reloj); lo que hace un total de 7 ciclos
de reloj, es decir, unos 7 x 0.29 = 2 microsegundos. Este ejemplo ilustra la enorme velocidad del
código máquina, el microprocesador es capaz de cargar el acumulador medio millón de veces en un
segundo.

Supongamos que queremos sumar en el acumulado una lista de números, y usaremos el registro HL
para movernos a lo largo de esa lista, el bucle podría ser:

BUCLE ADC A, (HL)


INC HL
JR BUCLE

El tiempo de ejecución por cada pasada, sería de 25 ciclos de reló, es decir 7.14 microsegundos. Con
este bucle, nuestro ordenador podría sumar 140000 números por segundo. Por supuesto, este
pequeño bucle no es operativo, no existe condición de salida del bucle, por lo que el ordenador se
quedaría eternamente atrapado dentro de él, y, por otro lado, se produciría un rebosamiento en el
acumulador, ya que el resultado de las sumas excedería su capacidad, a menos que la mayor parte de
los números fueran ceros. La única finalidad de este ejemplo es mostrar la enorme velocidad de
ejecución del código máquina.

Para calcular el tiempo de ejecución de sus rutinas, sume los números de ciclos de reloj de cada
instrucción y multiplique por 0.29 para obtener el resultado aproximado en microsegundos.

Modos de direccionamiento

En la mayor parte de las operaciones, el Z-80 utiliza datos almacenados en sus registros o en
posiciones de memoria. Las formas posibles de indicarle la situación de estos datos, constituyen los
diversos modos de direccionamiento.

DIRECCIONAMIENTO INMEDIATO

En este modo de direccionamiento, el byte que sigue al código de operación en memoria, contiene el
operando.
CODIGO DE OPERACION

uno o dos bytes

OPERANDO

un byte

Un ejemplo podría ser cargar el acumulador con una constante, donde la constante es el byte que
sigue al código de operación.

DIRECCIONAMIENTO INMEDIATO EXTENDIDO

Es igual que el anterior, salvo que el operando ocupa dos bytes, el primer byte es el octeto de orden
bajo, y el segundo, el de orden alto.

CODIGO DE OPERACION

uno o dos bytes

OPERANDO (LSB)

octeto de menos peso

OPERANDO (MSB)

octeto de más peso

Un ejemplo podría ser la carga de un registro doble con una constante que, lógicamente ocuparía dos
bytes de memoria.

DIRECCIONAMIENTO RAPIDO DE PAGINA CERO

El Z-80 tiene unas instrucciones de salto rápido a una dirección de página cero. Hay ocho direcciones
posibles donde se colocan las rutinas de uso más frecuente, de esta forma se puede llamar a estas
rutinas empleando un solo byte.

En el Spectrum, estas direcciones se encuentran utilizadas por la ROM para las rutinas de más uso, y
son las siguientes:

RST 00h : Inicialización


RST 08h : Salida de error
RST 10h : Imprimir un carácter
RST 18h : Leer un carácter
RST 20h : Leer el siguiente carácter
RST 28h : Entrada al calculador
RST 30h : Hacer espacio en memoria
RST 38h : Leer el teclado
DIRECCIONAMIENTO RELATIVO

En este caso, el byte que sigue al código de operación se emplea como un entero en complemento a
dos, que se suma a la dirección actual almacenada en el «PC».

CODIGO DE OPERACION

un byte (salto relativo)

OPERANDO

entero en complemento a 2

Este modo de direccionamiento permite efectuar saltos relativos, con lo que las rutinas pueden
ser reubicables, es decir, correr de igual forma en cualquier dirección de memoria.

DIRECCIONAMIENTO INDEXADO

En esta forma de direccionamiento, el byte de datos sigue al código de operación contiene un entero
de desplazamiento en complemento a dos, que se suma al contenido actual del registro índice
correspondiente, para apuntar a una dirección de memoria. El código de operación tiene siempre dos
bytes, el primer byte es «DDh» siempre que se utilice el registro «IX» y «FDh» siempre que se utilice
el «IY».

DD o FD

índice usado

CODIGO DE OPERACION

un byte

DESPLAZAMIENTO

entero en compl. a dos

DIRECCIONAMIENTO DE REGISTROS

En muchos de los códigos de operación, hay ciertos bits que especifican a qué registro se refiere la
instrucción, permaneciendo inalterados el resto de bits. Un ejemplo podría ser la instrucción:

LD C,B

Que significa: «cargar en el registro "C" el contenido del registro "B"».

DIRECCIONAMIENTO IMPLICITO
En este caso, la situación de los datos está implícita en el código de operación. Por ejemplo, en las
operaciones aritméticas de 8 bits, el registro «A&rqauo; (acumulador) es siempre el que recibe los
resultados.

DIRECCIONAMIENTO INDIRECTO

En esta forma de direccionamiento, el contenido de un registro doble se utiliza como dirección a


partir de la cual hay que cargar el dato. Un ejemplo podría ser:

LD A, (HL)

Que significa: «carga el registro A con el contenido de la dirección de memoria apuntada por el
registro HL». Es este caso el registro HL se utiliza como puntero para «apuntar» a una dirección de
memoria, siempre que un registro se utilice como puntero, su nombre aparecerá, el en código
simbólico, encerrado entre paréntesis, significando: «donde apunta el contenido de».

También se puede utilizar como puntero, una constante de dos bytes, ensamblada a continuación del
código objeto, por ejemplo:

LD A, (5C37)

Que significa: «carga el registro A con el contenido de la dirección de memoria 5C37h». Cuando
hagamos esto en Assembler, normalmente utilizaremos una «etiqueta» de la siguiente forma:

LD A, (ETIQUE)
ETIQUE EQU #5C37

De esta forma, solo tendremos que definir la etiqueta una vez, pero podremos usarla todas las veces
que queramos sin tener que recordar de memoria los números. Los nombres de variables del Sistema
en el Spectrum son, precisamente, etiquetas del código fuente del Sistema Operativo. El uso de las
etiquetas se verá en profundidad cuando estudiemos el manejo de ensambladores.

En algunos casos, el direccionamiento indirecto se utiliza para especificar operando de 16 bits (dos
bytes), en este caso, el puntero apunta al byte de menos peso, siendo el de más peso el siguiente. Por
ejemplo:

LD HL, (5C37)

Que significa: «carga el registro L con el contenido de la posición de memoria 5C37h, y el registro H
con el contenido de la posición de memoria siguiente (5C38h)».

DIRECCIONAMIENTO DE BITS

Un gran número de instrucciones del Z-80 trabajan directamente sobre bits individuales de registros o
posiciones de memoria. En este caso, se utiliza uno de los métodos de direccionamiento anteriores
para indicar el registro o posición de memoria en concreto, y tres bits del código de operación para
indicar a qué bit de ese registro o posición de memoria nos referimos.
MODOS DE DIRECCIONAMIENTO COMBINADOS

Muchas instrucciones incluyen más de un operando, en estos casos, se pueden combinar más de un
modo de direccionamiento dentro de una misma instrucción, por ejemplo:

LD (IX+7), A

Que utiliza direccionamiento indexado para el destino y direccionamiento inmediato para la fuente.
Significa: «carga en la posición de memoria apuntada por el contenido del registro IX más 7, el
contenido del registro A (acumulador)».

Instrucciones del Z-80

El Z-80 puede ejecutar un gran número de instrucciones, podemos ordenarlas en los siguientes
grupos:

CARGA E INTERCAMBIO

Permiten desplazar datos entre registros, o entre estos y posiciones de memoria. También se puede
intercambiar el contenido de dos registros, o el de dos grupos alternativos.

ARITMETICAS Y LOGICAS

Permiten realizar operaciones aritméticas o lógicas entre el acumulador y un registro o posición de


memoria. Los resultados se almacenan en el acumulador, y los indicadores del registro «F» se ponen
a «1» o a «0» en función del resultado de la operación.

BUSQUEDA Y TRANSFERENCIA DE BLOQUES

Se trata de las más poderosas instrucciones del Z-80, es posible transferir todo un bloque de memoria
con una sola instrucción; también es posible examinar todo un bloque de memoria para buscar un
determinado dato de un byte.

ROTACION Y DESPLAZAMIENTO

Permiten la rotación bit a bit del dato almacenado en un registro o una posición de memoria, las
rotaciones pueden incluir el indicador de acarreo del registro «F».

MANIPULACION DE BITS

Permiten tratar de forma independiente cada bit de un registro o una posición de memoria, es
posible poner un bit a «1», ponerlo a «0» o examinar si es «1» o «0».

SALTO LLAMADA Y RETORNO

Permite alterar la secuencia normar del programa para saltar a otro lugar de la memoria o ejecutar
una subrutina. También es posible retornar desde una subrutina al punto donde se la llamó.
ENTRADA Y SALIDA

Permiten leer y escribir datos en los ports de entrada/salida, con lo cual se comunica el ordenador
con el mundo exterior.

CONTROL CPU

Se utilizan para controlar el propio funcionamiento del microprocesador, inhibir o habilitar


interrupciones, cambiar el modo de interrupción, detener el funcionamiento del microprocesador,
etc.

En los capítulos posteriores de este curso, se irán viendo detenidamente, una a una, todas las
instrucciones de cada uno de estos grupos y la forma de utilizarlas en nuestros programas

Antes, en el capítulo siguiente, se verán los conceptos básicos de la programación en Assembler, y las
formas de almacenar y ejecutar nuestros programas en Código Máquina.

También podría gustarte