SALIDA. 1.- Se decide realizar la entrada de datos mediante muestreo (polling), para lo cual se ejecuta el siguiente programa:

ENTRADA/SALIDA EJERCICIO 1 Deseamos conectar a un procesador 68000 un periférico de entrada que transfiere 10.000 palabras/segundo. Suponemos que el p

1 downloads 118 Views 27KB Size

Recommend Stories


Se ha omitido el verbo era en la segunda oración, lo cual se indica mediante una coma
Signos de puntuacion A) LA COMA La coma (,) señala en la lectura la pausa corta y se emplea para separar: • El vocativo(invocación, llamar o nombrar a

Se ejecuta el diagrama de procesos por primera vez
Se ejecuta el diagrama de procesos por primera vez En el video Automatización Parte 1, vimos cómo asociar un objeto transacción a la tarea de registro

Técnicas de Entrada-Salida
Sistemas Electrónicos Digitales Universidad de Zaragoza Tema: 08 Técnicas de entrada/salida Teoría Dpto. de Ingeniería Electrónica y Comunicaciones

En el siguiente documento se explica el procedimiento para realizar las diferentes acciones que posibilita la herramienta Socrata
En el siguiente documento se explica el procedimiento para realizar las diferentes acciones que posibilita la herramienta Socrata ..................

Story Transcript

ENTRADA/SALIDA EJERCICIO 1 Deseamos conectar a un procesador 68000 un periférico de entrada que transfiere 10.000 palabras/segundo. Suponemos que el procesador es capaz de ejecutar 106 instrucciones/segundo. Para la conexión se toman las siguientes alternativas: 1.- Se decide realizar la entrada de datos mediante muestreo (polling), para lo cual se ejecuta el siguiente programa: LeeBloque Polling

move.w lea cmp.b bne move.w dbf

#499,D0 Dir_Memoria,A0 #Preparado,Dir_Registro_Estado_Dispositivo Polling Dir_Registro_Buffer_Dispositivo,(A0)+ D0,Polling

2.- Se realiza la entrada de datos mediante interrupciones. El periférico envía una interrupción cada vez que tiene un dato disponible. La rutina de tratamiento es la siguiente: Rutina_Tratamiento

move.l movea.l move.w sub.w move.l move.l rte

A0,-(sp) Puntero, A0 Dir_Registro_Buffer_Dispositivo,(A0)+ #1,Contador A0,Puntero (sp)+,A0

donde Puntero es una variable que apunta a la dirección de memoria donde se almacenan los datos y Contador es otra variable que contabiliza el número de datos leídos. 3.- Por último, se incorpora un dispositivo de DMA. Por cada robo de ciclo que realiza ocupa los buses durante 500 nS. El dispositivo de DMA no tiene ningún buffer, es decir, pide robo de ciclo por cada dato que envía el dispositivo. Las instrucciones para programar el DMA son: Rutina_DMA

move.w lea move.l bset

#500,Reg_Contador_DMA Dir_Memoria,A2 A2,Reg_Direccion_Inicio_DMA #4,Reg_Control_DMA

En un momento dado se va a realizar la transferencia de 500 palabras. Se pide, para cada uno de los 3 casos: a) Número medio de instrucciones, por palabra transferida, ejecutadas por la CPU durante toda la transferencia de las 500 palabras.

1

b) Número máximo de instrucciones, pertenecientes a otros procesos diferentes del que realiza la operación de transferencia, que puede ejecutar la CPU durante toda la duración de la transferencia de las 500 palabras. NOTA: Suponer que todas las instrucciones tienen el mismo tiempo de ejecución.

EJERCICIO 2 Se desea construir un ordenador con procesador MC68000, 64 Kbytes de memoria ROM, 1 Mbyte de memoria RAM y una pantalla cuyo controlador funciona mediante DMA. El controlador de DMA se encargará de transferir bloques de información (pantallas) desde la memoria del ordenador a la pantalla, por cada byte que transfiere requiere un robo de ciclo. Cuando finaliza la transferencia del bloque de datos, el DMA avisa a la CPU enviando una interrupción. Los componentes de que se dispone son: un procesador MC68000, memorias EPROM de 32 Kbytes, memorias RAM de 512 Kbytes, un controlador de DMA asociado a la pantalla y un número ilimitado de puertas lógicas con cualquier número de entradas. Los esquemas de las memorias y del controlador son los que aparecen a continuación:

EPROM 32Kx8

RAM 512Kx8

DMA

Interface con la pantalla

R0-2 D0-7

D0-7 A0-22 BGACK* OE*

OE*

A0-14

BG*

A0-18

D0-7 WE*

BR* INTACK*

R/W* CS*

CS*

INTR* CS*

La memoria ROM se quiere situar en las direcciones bajas, seguida de la memoria RAM y el controlador en las direcciones pares comprendidas entre el rango $FFFFF0 y $FFFFFE. La siguiente figura muestra este mapa de memoria.

000000 010000

15

8 7

0

ROM 64 Kbytes RAM 1024 Kbytes

VACIO FFFFF0

Controlador DMA

FFFFFE

2

Se va a realizar la conexión del controlador de DMA y las memorias al procesador, no se van a realizar las conexiones entre el DMA y las memorias. Para conectar el controlador de DMA al procesador, se debe tener en cuenta que este controlador autovectoriza y que el nivel de prioridad con la que se desea que interrumpa es 5, siendo esta la única interrupcción en el sistema. En la figura que muestra el esquema del DMA, las líneas R0 a R2 sirven para direccionar los registros del DMA. SE PIDE: 1. Realizar la función de decodificación que genera las entradas CS* (selección de pastilla) de las memorias y del controlador de DMA. Emplear decodificación TOTAL y utilizar EXCLUSIVAMENTE puertas lógicas. 2. Realizar la conexión entre el resto de los pines del controlador y la CPU: D0-7 (bus de datos), R0-2 (dirección de registro), INTR* (petición de interrupción), INTACK* (aceptación de interrupción), BR* (petición de bus), BG* (cesión de bus) y BGACK* (aceptación de bus). 3. Diseñar una función que detecte accesos desafortunados (cuando el procesador intenta acceder a una dirección no implementada). Esta función se llevará a la entrada BERR* del procesador. EJERCICIO 3 Como parte de un proyecto es necesario realizar un subsistema dotado de memoria RAM y de cuatro líneas de comunicaciones: LínA, LínB, LínC y LínD. El cometido del subsistema es almacenar en RAM los primeros 256 bytes recibidos por LínA, los primeros 256 recibidos por LínB, los primeros 256 recibidos por LínC y los primeros 256 recibidos por LínD. Las cuatro líneas operan a velocidades distintas. Dentro de la memoria RAM disponible, los bytes procedentes de LínA deberán escribirse en las primeras 256 direcciones, los procedentes de LínB deberán escribirse en las segundas 256 direcciones, los procedentes de LínC en las 256 terceras direcciones y los procedentes de LínD en las siguientes 256 direcciones. Se pide: Construir el subsistema anteriormente especificado, a partir tan solo de un microprocesador MC68000 y de los componentes hardware que se describen a continuación (mas las puertas lógicas, codificadores y decodificadores que se consideren necesarios): • • •

dos pastillas, EPROM1 y EPROM2, de 1Kx8 (con patas CS*, A9-A0, D7-D0 y OE*), dos pastillas, RAM1 y RAM2, de 32Kx8 (con patas CS*, A14-A0, D7-D0, OE* y WE*), y cuatro Pastillas Receptoras, PRA, PRB, PRC y PRD, de recepción a través de las respectivas líneas de comunicación, LínA, LínB, LínC y LínD, cuyo funcionamiento se describe a continuación.

3

LínA

PRA

LínB

PRB

LínC

PRC

LínD

PRD

D7-D0

DATOA

D7-D0

DATOB

D7-D0

DATOC

D7-D0

DATOD

REG

ESTADO

IACKC*

NVIC

IACKD*

NVID

INTC*

CS*

INTD*

CS*

CS*

INTB* CS*

En PRA hay dos registros de 8 bits, DATOA y ESTADO, que pueden leerse activando la pata CS* y REG (poniendo un 0 en REG se lee de DATOA, poniendo con un 1 en REG se lee de ESTADO). Inicialmente el registro ESTADO tiene el valor $FF. A medida que se recibe un byte por la línea de comunicación LínA, éste se va almacenando en el registro DATOA. Cuando termina de recibirse el byte, el registro ESTADO toma el valor $00. La lectura del registro DATOA provoca automáticamente que ESTADO vuelva a tomar el valor $FF. En PRB cuando termina de recibirse por la línea LínB un byte, éste se almacena en DATOB, activándose inmediatamente la pata INTB*. El contenido de DATOB puede leerse sin más que activar la pata CS*, provocando dicha lectura la desactivación de la pata INTB*. PRC y PRD funcionan ambas igual, por lo que sólo describiremos PRC. Cuando termina de recibirse por LínC un byte, éste se almacena en DATOC, activándose inmediatamente la pata INTC*. El contenido de DATOC puede leerse posteriormente activando la pata CS*. La activación de la pata IACKC* provoca que la pastilla vuelque el contenido del registro NVIC (Número del Vector de Interrupción utilizado por PRC) al bus de datos, desactivándose en ese instante la pata INTC*. Las pastillas receptoras PRA, PRB, PRC y PRD ya vienen configuradas de fábrica por lo que no es necesario configurarlas por programa. El contenido de los registros NVIC y NVID es 64 y 70 (en decimal) respectivamente, habiéndose grabado esos valores durante el proceso de fabricación. Para la resolución del ejercicio deberán seguirse los siguientes pasos haciendo uso de las HOJAS DE RESPUESTA que se proporcionan: 1) Diseñar un mapa de memoria apropiado para ubicar en el espacio de direccionamiento del MC68000 las pastillas de EPROM y RAM, y las pastillas receptoras PRA, PRB, PRC y PRD. 2) Conectar al 68000 las pastillas de EPROM y RAM, y las pastillas receptoras PRA, PRB, PRC y PRD (a excepción de sus patas INTB*, INTC*, INTD*, IACKC* e IACKD*), utilizando decodificación parcial. 3) Realizar la conexión al 68000 de las pastillas receptoras PRB, PRC y PRD en lo relativo a las patas INTB*, INTC*, INTD*, IACKC* e IACKD*, de forma que PRB pueda interrumpir autovectorizando con nivel de prioridad 1 (vector de interrupción número 25 en decimal), que PRC pueda interrumpir vectorizando con nivel de prioridad 2 y que PRD pueda interrumpir vectorizando con nivel de prioridad 4. 4

4) Escribir la parte del programa principal correspondiente al polling que es necesario realizar sobre PRA, así como las tres rutinas de tratamiento de las interrupciones procedentes de PRB, PRC y PRD. 5) Dar una relación de los datos que es necesario grabar en la EPROM (vector de reset y vectores de interrupción utilizados), indicando su valor y las direcciones de memoria que deben ocupar. EJERCICIO 4 Deseamos controlar automáticamente la temperatura de una sala que debe permanecer siempre entre los márgenes de 50 y 60 grados. Para realizar dicho control se dispone de los siguientes dispositivos: un termómetro, un termostato y una luz de alarma. Cada uno de estos dispositivos tiene conectado un chip controlador que se describe a continuación: Controlador-termómetro. ALARMA* SAL*

REG_TEMP

N7-0

Sirve para indicar en todo momento la temperatura que hay en la sala. Tiene las siguientes patas: SAL=Permiso de salida. Cuando se active esta señal, el chip saca por las líneas N7-N0 la temperatura (en grados) que marca el registro REG_TEMP. ALARMA=Señal de alarma. Si el controlador detecta una temperatura 60 activa esta señal de salida. Esta señal permanecerá activa hasta que se lea REG_TEMP. Controlador-termostato. REG_CONTROL SEL* REG_ESTADO LEC/ESC*

DAT7-0

AVERIA*

AVERIA-RECONOCIDA*

Sirve para regular la temperatura de la sala, para lo cual tiene dos registros internos: REG_CONTROL=Registro de control (tamaño de 8 bits). Este registro es sólo de escritura, donde los bits 7 y 6 sirven para aumentar o disminuir la temperatura de la siguiente forma: b7 b6 Acción 0 0 Enfriar 0 1 Calentar 1 x Parado

5

Si se escribe la combinación “00” o “01” en estos dos bits, el controlador enfría o calienta la sala hasta que se vuelva a escribir la combinación “1x”. REG_ESTADO=Registro de estado (tamaño de 8 bits). Es sólo de lectura. El bit 7 indica si se ha producido una avería, tomando el valor uno en este caso. Su lectura hace que se ponga a cero. Estos dos registros pueden ocupar la misma posición dentro del mapa de memoria y dependiendo de la señal Lec/Esc se selecciona uno u otro. Cuando se produzca una avería, además de poner el bit 7 del REG_ESTADO a 1, el controlador activa la señal AVERÍA. Mantendrá esta pata activa hasta que reciba la señal AVERÍA_RECONOCIDA, momento en el que además pondrá a cero el bit 7 del REG_ESTADO. Controlador-luz-alarma. SEL*

Mantiene la luz de alarma encendida mientras esté activada la señal de selección SEL. Además disponemos de dos pastillas de memoria ROM de 8Kx8 y un procesador 68000. El comportamiento del sistema que se desea realizar se puede describir con el pseudocódigo siguiente: REPEAT IF (temperatura 60) THEN Regular temperatura a 55 IF Hay avería THEN REPEAT Encender luz de alarma FOREVER FOREVER Es decir, la temperatura de la sala puede bajar o subir dependiendo de factores externos. El sistema deberá estar chequeando la temperatura y si detecta que baja de 50 grados o sube de 60 grados deberá activar el termostato, calentando o enfriando la sala hasta situarla en 55 grados. A continuación se parará el termostato hasta que detecte otra vez que la temperatura ha alcanzado un valor extremo (50 o 60). Si en un momento dado el sistema detecta una avería en el termostato, deberá activar la luz de alarma hasta el nuevo reseteo del sistema. APARTADO A A1) Utilizando decodificación parcial, hacer las conexiones hardware necesarias para realizar todo el control del sistema mediante muestreo (polling). Escribir además los programas que deberán estar en la memoria ROM para realizar dicho control. A2) Supongamos que el encendido de la luz de alarma se realiza de la siguiente forma: IF hay avería THEN Encender luz de alarma y parar el procesador (STOP) ¿Qué tipo de dispositivo adicional habría que añadir al sistema para que la luz de alarma se encendiese correctamente? ¿Cómo conectarías este dispositivo al sistema?

6

APARTADO B B1) A continuación se desea realizar el mismo control de temperatura, con los mismos componentes, pero mediante interrupciones. Añadir las conexiones necesarias al sistema para que las señales de ALARMA y AVERÍA se controlen como interrupciones autovectorizadas de niveles 1 y 2 respectivamente. B2) Indicar a partir de qué dirección de la memoria deberán estar las rutinas de tratamiento de interrupción y cual deberá ser su contenido. Sabemos que la tabla de vectores de interrupción está a partir de la dirección de memoria $0000 y a las interrupciones autovectorizadas les corresponden los vectores 25, 26, ..., 31. EJERCICIO 5 Se desea realizar una instalación de riego por aspersión en un campo dividido en tres parcelas en las que se sembrará maíz, girasol y alfalfa. La forma en que se distribuyen los cultivos en las parcelas y las necesidades de humedad de los mismos vienen dadas en la siguiente tabla: PARCELA CULTIVO A Maíz B Girasol C Alfalfa

FRECUENCIA RIEGO 1 vez al día 1 vez cada 2 días 1 vez cada 2 días

DURACION 45 minutos 30 minutos 45 minutos

Para la construcción de este sistema se dispone de un procesador MC68000, dos pastillas de memoria EPROM, dos pastillas de memoria RAM, un timer TH y tres dispositivos RIG. La siguiente figura muestra un esquema de las pastillas:

EPROM 1Kx8

RAM 8Kx8

CONT. RIG RS

D0-7

D0-7 OE*

A0-9

TIMER TH

OE* A0-12

IntR* CS*

r0 r1

IntACK*

WE* CS*

R/W* D0-7

D0-7 RS

r2 IntR* CS*

El timer TH se programará para avisar que se debe iniciar el riego, es común a las tres parcelas y su funcionamiento es como sigue: cada vez que pasan 24 horas genera una interrupción activando la línea IntR*. Esta línea permanecerá activada mientras no se active la línea IntACK* que indica reconocimiento de interrupción, momento en el que el dispositivo pone en las líneas d0-d7 el valor $FF. Cada parcela cuenta con un dispositivo RIG que permite que se programe la duración del riego. Este dispositivo cuenta con un registro de control (registro r0), un contador (registro 7

r1) que son registros en los que únicamente se puede escribir, y un registro de estado (registro r2) del que sólo se puede leer. Con RS a cero se direccionan los registros de control y estado, mientras que con RS a uno se direcciona el registro contador. Para activar el riego se debe de poner a 0 el bit 7 del registro de control. Cuando el riego está activado, el contador se decrementa en uno por cada minuto que pasa. Cuando el contador llega a 0 se pone a 0 el bit 7 del registro de estado y se activa la línea IntR* de petición de interrupción, que permanecerá activada hasta que se escriba un 1 en el bit 7 del registro de control, en este momento el dispositivo pondrá a 1 el bit 7 del registro de estado. También se dispone de decodificadores DEC y un número ilimitado de inversores y puertas lógicas de dos y tres entradas. Los decodificadores DEC operan según la siguiente tabla: CS* 1 0 0 0 0

e1 x 0 0 1 1

e0 x 0 1 0 1

s3 1 1 1 1 0

s2 1 1 1 0 1

s1 1 1 0 1 1

s0 1 0 1 1 1

SE PIDE: Apartado a: Decodificación y conexión de los buses de datos y direcciones de las pastillas de memoria y entrada/salida con el procesador. a1: Realizar la conexión de las señales de selección de todos los componentes necesarios para implementar el sistema que se ha descrito. Emplear decodificación parcial utilizando el mínimo de componentes hardware. Indicar para cada pastilla de memoria o dispositivo de entrada/salida el rango de direcciones en que se ha situado. a2: Realizar la conexión del bus de datos, bus de direcciones, señales de lectura, escritura y asentimiento de dato de todos los componentes que forman el sistema. a3: Realizar la conexión para que el timer TH interrumpa con nivel de prioridad 1 y vector 255, y para que los tres dispositivos RIG interrumpan con nivel de prioridad 2 autovectorizando. Utilizar únicamente los componentes de que se dispone. Apartado b: Programación de las rutinas de tratamiento de interrupción. A continuación se da la estructura del código del programa que controla el sistema. Este programa y la arquitectura que se ha construido son el único hardware y software que incluirá el sistema de riego.

8

CODIGO

Bucle

EQU ........ ORG CODIGO .......... .......... BRA Bucle

Rut_TH

.......... .......... RTE

Rut_RIG

.......... .......... RTE

b1: Escribir en lenguaje del MC68000 el código de la rutina de tratamiento de interrupción Rut_TH asociada al dispositivo TH. La función de esta rutina es activar el sistema de riego en la parcela que corresponda regar. b2: Codificar en ensamblador la rutina de tratamiento de interrupción Rut_RIG para desactivar el riego en la parcela que se haya regado el tiempo programado. b3: Escribir en el cuerpo del programa las instrucciones necesarias para inicializar los registros de CPU o direcciones de memoria RAM que se precisen para que el sistema funcione correctamente. b4: Justificar si es preciso grabar alguna dirección de memoria EPROM además de las direcciones que ocupe el código y si es así indica cuales y con qué valores.

9

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.