104
UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA CIENCIAS BASICAS E INGENIERIA INGENIERIA ELECTRONICA AREA: COMPUTACION P R O Y E C T O D E I N G E N I E R I A ELECTRONICA I1 KIT BASADO EN EL MICROPROCESADOR 2-80) ASESOR: ING. FAUSTO CASCO SANCHEZ ALUMNOS : JORGE ALBERTO&LMEDO AGUIRRE LUIS SOCORRO GARCIA DE SANTIAGO

ALUMNOS JORGE ALBERTO&LMEDO AGUIRRE …148.206.53.84/tesiuami/UAM6393.pdf · El sistema consta de 64 KB de memoria RAM dindmica, 4 KB de memoria EPROM, un dispositivo de entrada (teclado

  • Upload
    ngongoc

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

  • U N I V E R S I D A D A U T O N O M A M E T R O P O L I T A N A

    U N I D A D I Z T A P A L A P A

    C I E N C I A S B A S I C A S E I N G E N I E R I A

    I N G E N I E R I A E L E C T R O N I C A

    A R E A : C O M P U T A C I O N

    P R O Y E C T O D E I N G E N I E R I A E L E C T R O N I C A I1

    KIT BASADO EN EL MICROPROCESADOR 2-80)

    ASESOR: ING. FAUSTO CASCO SANCHEZ

    ALUMNOS : JORGE ALBERTO&LMEDO AGUIRRE LUIS SOCORRO GARCIA DE SANTIAGO

  • .

    .. *. Diseo y realizaci6n un basado en 2-80.

    I. Introducci6n.

    1.a Caracteristicas del sistema.

    1 . b Desarrollo del sistema.

    1.c Implantacidn del sistema.

    I. c. 1 Equipo utilizado.

    I.c.2 Material utilizado.

    I. c. 3 Historia del desarrollo.

    11. Microprocesadotr 2-80.

    1I.a Arquitectura del procesador.

    1I.b Registros.

    11.c Sincronizaci6n.

    1

  • .

    111. Memoria.

    1II.a Caracteristicas de la memoria.

    III.a.1 Sincronia y operacibn.

    III.a.2 RAM dinbmica.

    1II.b Memoria DRAM y lbgica de control.

    1II.c Memoria EPROM y lbgica de control.

    1II.d Mapa de memoria.

    IV. -Controlador de video.

    1V.a Principios de operacibn de un CRT.

    1V.b Arquitectura del CRTC 6845.

    1V.c Programacilbn del 6845.

    V. Dispositivos perifCricos.

    V.b PIO.

    V. c CTC y manejo de interrupciones.

    VI. Programa monitor.

    V1.a Realizacibn de un boot de hardware.

    V1.b Configuracibn de perifCricos.

    VI.b.1 Programacibn del PIO.

    VI.b.2 Programacitm del CRTC-6845.

    V1.c Sintbxis de comandos.

    ' VI. c. 1 Interpretacibn.

    VI.c.2 Analizador lexicogrbfico.

    2

  • .

    I. Introduccibn.

    1.a Caracteristicas del sistema.

    Una de las principales motivaciones que se tuvo para la realizacibn del kit, fu& el de conocer mds a fondo a uno de los microprocesadores mds poderosos de su epoca: el 2-80.

    Este procesador ofrece las siguientes ventajas: tiene un poderoso conjunto de instrucciones, seales de control para manejo de dispositivos de entrada/salida, y la ventaja del sistema operativo CPM (en microcomputador APPLE) que permite la realizacibn de llfirmwareoo (programa grabado en un circuito integrado: EPROM), lo que es importante desde el punto de vista de desarrollo de tlhardwarell.

    Un kit es un sistema digital basado en microprocesador. En realidad puede afirmarse que cualquier sistema basado en microprocesador es una microcomputadora. La palabra microcomputadora significa una computadora muy pequea. Las computadoras en que la unidad de procesamiento central es fabricado como un circuito integrado son llamados microcomputadoras. Las primeras microcomputadoras fueron pequeas fisicamente, con poca capacidad de procesamiento, cantidades limitadas de memoria y con pocas interfases a dispositivos externos. Ademds su objetivo de aplicacibn era limitado.

    Sin embargo en unos cuantos aos la tecnologia ha cambiado drdsticamente esta perspectiva: el poder de procesamiento se ha incrementado, la cantidad de memoria conectable al sistema y l o s dispositivos externos que se le pueden asociar.

    El principal objetivo de 'un 'kit' es dedicarlo a un hico propbsito o a un grupo de funciones relacionadas. La principal aplicacibn de este sistema de desarrollo, estaria principalmente enfocado al control.

    L

    El sistema consta de 64 KB de memoria RAM dindmica, 4 KB de memoria EPROM, un dispositivo de entrada (teclado QWERTY) y un dispositivo de salida (seales de video).

    El diagrama general del sistema es el siguiente: (como puede notarse es la arquitectura tipica para una microcomputadora)

    3

  • 1 'I ." . '.. __"

  • 1.b Desarrollo del sistema.

    Respecto al desarrollo del sistema se tuvo un esquema tradicional ya que en este -t.iempo no se cont6 con un sistema de alto nivel que permitiera integrar el tlhardwarelt y el glsoftwaregl desde el inicio. En general se sigui6 el siguiente esquema.

    DISENO I DE I I HARDWARE I I

    I

    .

    ZONSTRUCCIOS DEL

    PROTOTIPO -I

    L

    DISENO

    SOFTWARE

    SOFTWARE

    5

  • .

    Este trabajo esta dividido en forma tal que el lector pueda adentrarse ya sea a nivel esquemdtico o a nivel especializado en el sistema.

    En el capitulo I se describen brevemente los objetivos y caracteristicas que tiene el kit. En el capitulo 11, se introduce el procesador 2-80, su arquitectura y la forma en que sincroniza sus seales. El capitulo I11 trata la memoria en forma general y la lbgica que se empleb para su acceso en el kit. En el capitulo IV se trata un procesador de video especializado: el 6845, y la forma de programarlo. El capitulo V hace referencia a la interaccibn del procesador con dispositivos perifbricos. Los comandos del monitor son tratados en el capitulo VI, donde se define el programa controlador del sistema.

    Para finalizar se incluyen dos apCndices, en el primero se muestran los diagramas definitivos que forman el sistema, un mapa de la posicibn de los circuitos, el diagrama de conexibn de las seales entre las tarjetas. El otro apCndice incluye un listado del programa monitor desarrollado en lenguaje ensamblador.

    Por altimo, agradecemos a nuestro maestro y guia, el Ing. Fausto Casco Sanchez, por el invaluable apoyo que nos brindb para la realizacibn de este proyec.to. Ademds como a las siguientes personas, sin cuya colaboracibn hubiera sido imposible su conclusibn: Dr. Adriano de Luclca, Ing. Ramses Amozoc Nuez San Miguel.

    Para la dltima parte (el interprete de comandos) se contb con un simulador-ensamblador desarrollado para IBM en la UAM unidad Azcapotzalco.

    6

  • 1.c Implantacibn del sistema.

    1.c.l Equipo utilizado.

    - Analizador de estados ldgicos HP. - Osciloscopio de 30 MHz de ancho de banda. - Microcomputador Apple 11-E.

    - Unidad de disco flexible. - Programador de EPROlM. - Sistema operativo ClPM.

    - Microcomputador IBM o colmpatible. - Fuente de alimentacidn H:P. - Multimetro. - Monitor monocromiltico. - Borrador de EPROM.

    I.c.2 Material utilizado.

    - CPU ZILOG 2-80 4 MHz. - CRTC 6845.

    - 8 MEMORIAS DRAM 4164.

    - OCILADOR CRISTALINO DE 4 MHz. - OCILADOR CRISTALINO DE 12.5 MHz. - EPROM:

    - 2716 - 2732

    - MEMORIA $RAM 6116. - PI0 ZILOG.

    7

  • - Circuiteria MSI: 74LS32 ( 5 ) . 74LS14 ( 1 ) . 74LS04 ( 4 ) . 74LS08 ( 2 ) . 74LS123 ( 2 ) . 74LS02 ( 1 ) . 74LSOO ( 4 ) . 74LS20 ( 1 ) . 74LS157 ( 5 ) . 74LS367 ( 2 ) . 74LS365 ( 1 ) .

    74LS245 ( 6 ) . 74LS163 ( 1 ) . 74LS166 ( 1 ) . 74LS85 ( 1 ) . 74LS273 ( 3 ) . 74LS86 ( 1 ) . 74LS154 ( 1 ) . 7 4 L S l l ( 2 ) .

    74LS74 ( 3 ) .

    - Teclado tipo QWERTY. - Tarjetas para 'wire-wrapp'. - Bases para 'wire-wrapp'. - Equipo para enrollamiento ('wire-wrapp').

    8

  • .

    I.c.3 Historia del desarrollo.

    Como es de esperarse un proyecto tan grande no es posible describirlo en forma tradicional. En general, el procedimiento de trabajo consistib de los siguientes pasos iterativos:

    - Elaboracibn del diagrama lbgico y revisibn. - Elaboracibn de los diagramas de conexibn. - Montage en 'wire-wrapp' del diseo elaborado. - Pruebas por medio de mu.estreos de l o s diversos buses del sistema. Analizador de estados lbgicos:

    - Verificacibn de seales de control. Bus basic0 para verificacibn de la lbgica implantada en papel. Comparacibn con 1a.s seales esperadas, obtenidas al analizar cada una d.e las instrucciones de programa.

    Para la fase de progra.macibn se contaba con un paso adicional:

    - Elaboracibn del seudo-cbdigo para la programacibn y su revisibn lbgica.

    - Traduccibn a lenguaje ensamblador. - Prueba de los programas en lenguaje ensamblador. - Ensamblaje de los progra.mas, con computador Apple (sistema CPM) . - Depuracibn de los programas. - Grabacibn en EPROM de 1.01s programas. Como se comentb en la introduccibn, en el tiempo del

    desarrollo del kit, no se disponia de un simulador (solo con ensamblador de CPM), para la fase de programacibn del kit. Hasta ya muy avanzado el proyecto, se contb con un simulador de 2-80, que redujo considerablemente el tiempo de diseo y realizacibn del interprete de comandos, logrdndose un ahorro en los altimos pasos bosque j ad&..

    9

  • Debido a que s610 se contaba con la circuiteria, fue necesaria la elaboracibn de pequ9os programas (elaborados en lenguaje ensamblador como se mencion6 lineas arriba) para la prueba de cada una de las partes que se fueron integrando.

    La fase de implantacibn de:L sistema fue la siguiente:

    - Elaboracibn de la circuiteria de reloj y 'reset' para el sistema.

    - Elaboracibn de la interfase EPROM - CPU. - Elaboracibn de la interfisse DRAM - CPU. - Programa de prueba de memoria DRAM. - Elaboracibn de la parte de decodificacibn de dispositivos. - Interfase para manejo de puerto paralelo para teclado.

    - Programacibn del PIO. - Conexibn de teclado.

    - Programa para ingreso peribdico de informaci6n enviada por el teclado.

    Para poder lograr el objetivo de realizar control con el kit, fue necesario modificar posteriormente esta parte del programa, para incluir manejo de interrupciones en modo 2 del Z- 80.

    - Elaboracibn de la interfase de video. - Formacibn del mapa de memoria.

    - Codificacibn y grabacibn en EPROM de memoria de caracteres.

    - Elaboracibn del circuito de sincronizacibn para VDU - Interfase tarjeta de video - monitor. - ProgramaciAn del CRTC 6845.

    - Elaboracibn de programa para responder a interrupciones para el manejo del teclado.

    3L o

  • - Elaboracidn del interprete de comandos. Cada uno de los diagranras correspondientes se dan como

    apbndice I. La realizacidn logica, se encuentra presente a lo largo del texto. Tambibn se i.ncluyen las notas tbcnicas de los principales componentes del sistema.

    Una de las principales ideas que se trataron de expresar en cada una de las fases del desarrollo, ya sea en 'hardware' o en 'software', fue la de tener la. mayor modularidad posible, entre cada una de sus partes.

    S610 con pequeas alteraciones, el sistema puede ser expandido para trabajar con protocolos, o incluir mds puertos paralelos, para los prop6sitos de control deseados.

    Tambibn en la parte de 'sclftware' se bus& esta modularidad, teniendo el usuario la capacid.ad de alterar a su conveniencia el programa monitor desarrollado por el equipo original. Como se menciond en el principio, se maneja el concepto de 'boot' de 'hardware'. Lo que permite a.1 usuario la capacidad de poder alterar sin dificultad cualquier parte del programa monitor.

    Por ejemplo, el analizador lexicogrdfico del intbrprete de comandos puede ser alterado para incluir otros comandos que sean proporcionados Lor el usuario. A pesar de que el nivel de programacibn del kit, es el mds bajo en la escala de los lenguajes, la interpretacidn de comandos se logra por medio de una sintdxis definida para cada comando.

    Siguiendo tal filosofia, se asegura, que se puede incluso definir algh pequeo lenguaje de alto nivel, para su mejor aprovechamiento.

    11

  • 11. Microprocesador 2-80.

    1I.a Arquitectura del procesador.

    El 2-80 represent6 un gran avance respecto a los procesadores que dominaban el .mercado de su &poca. Su respuesta era de dos a cinco veces mas rdpida que el de sus predecesores, necesitando solo un cuarto de memoria de programa.

    Este posee 158 instrucciones, .tambiCn tiene instrucciones dedicadas para el manejo de operaciones de entrada/salida y de interrupciones.

    Debido a su gran conjunto de instrucciones los programas para el 2-80 son mas cortos, requiriendo menos tiempo de preparacibn asi como menos memoria.

    El chip es una familia integrada de CPU y controladores perifkricos con una alimentaci6n de 5 volts y un reloj de una sola fase. Su tecnologia es :MOS construida con compuertas de silicio con canal-n, con alrededor de 8500 transistores en un Area de 179mm por 192mm, para una densidad de alrededor de 133 compuertas por milimetro. El CPU es empaquetado en un paquete de 40-pin. Estos pins, aparte de la fuente de poder y el reloj, estdn organizados en tres buses.

    - Bus de direcciones, proporcionando las direcciones para memoria de 16 bits (64 kB).

    - Bus de datos bidireccional para intercambio de datos con memoria y dispositivos perifkricos.

    - Bus de control subdividildo en control del sistema, control del CPU y elementos de con.trol del bus.

    12

  • 11. b Registros.

    El corazbn del CPU es c m conjunto de registros que est construida en una RAM estt:ica de 208-bit conteniendo 13 palabras, que son cada una de 16 bits de ancho. El chip tambi.Cn contiene tambien los otros bloques necesarios para su operacibn: ALU, registro de instruccibn y lbgica para diversas funciones de sincronizacibn y control.

    Existen dos acumuladores independientes de 8-bit (A y A') con registros de estado de 8-bi.t (F y FI). El acumulador mantiene los resultados de las operaciones lbgicas y aritmbticas, mientras el registro de estado indicai las condiciones especificas del resultado de operaciones.

    Tambibn existen seis registros de propbsito general de 8- bits (B, C, D, E, H, L y B', C ' , DI, E', HI, LI). Tambi6n estos registros pueden agruparse para trabajar como registros de 16- bits.

    Cada uno de los registros indice IX e IY contiene una direccibn base de 16-bits para. apuntar a un regibn de RAM desde la cual los datos son almacenad.os o recuperados. Cada instruccibn indice especifica un desplazamiento de 8-bits en complemento a 2 que es sumado a la base para calcular la direccibn efectiva.

    El apuntador de pila es un. registro de 16-bits que contiene la direccibn del tope de la pila almacenada en RAM. La pila Permite la implantacibn de maltiples niveles de interrupcibn.

    Existen dos registros de. propbsito especial, I y R que sirven para operaciones de interrupcibn y de refrescamiento a memoria.

    El registro I es usado en uno de los tres modos de respuesta a interrupci6n programables. Mantiene los 8-bits superiores de la direccibn de un apuntador a memoria, mientras el controlador perifCrico de interrupcibn proporciona los 8-bits inferiores de la direcci6n donde apuntan las rutinas de servicio de interrupcibn, bajo un ciclo de reconocimiento de interrupcibn. El CPU entonces llama a la direccibn de memoria apuntada por la direccibn de 16-bits. Con esto el dispositivo interruptor causa que el CPU inserte en la pila el contador de programa y se dirige entonces a la rutina de servicio de interrupcibn, que puede radicar en cualquier parte en memoria.

    13

    http://tambi.Cn

  • El registro R contiene la direcci6n actual de memoria de refresco. Su contenido es enviado al bus de direcciones durante la segunda mitad de cada ciclo de 'fetch' (ciclo Ml), junto con la seal de control de refresco, de memoria RFSH'. El contenido es incrementado automticamente en cada ciclo M1, para apuntar a una nueva porci6n de memoria.

    Finalmente existe un contador de programa de 16-bits que mantiene la direcci6n de la siguiente direcci6n de memoria a entrar en el ciclo de 'fetch'.

    14

  • .

    * ~ O N T R O L DEL BUS DE DATOSI

    DO - D7

    I N T '

    W R I -

    CONTROL RD I t-"

    DE I O R Q I t

    B U S MREQ '+ D E L M 1 ' 4

    CONTROL NMI ' + +-

    -I"-- S I N C R O N I A W A I T I -b

    BUSRQ I"-+

    RESET I"-+

    DE BUSAK I+"

    C I C L O

    MEMORIA RFSH I

    D E HALT I t

    CONTROL

    ' E C O D I F I C A I N S T R U C C I O N

    l O D I F I C A R I N S T R U C C I O I

    E G I S T O DE CONTROI

    I1 -

    E

    L r

    -

    J

    I

    i_ 4-BIT IUS I N E R N 0

    l--"- A F '

    H L :

    D El i

    B C

    A' F'

    H' L'

    D' E '

    B' C'

    IX

    IY

    SP

    I R

    P C

    I I N C R E M E N T A l R E G I S T R O 1 D I R E C C I O N 1

    5

  • .

    1I.c Sincronizacibn.

    El CPU ejecuta instrucciones a traves de un conjunto de ciclos bdsicos de mdquina. Un ciclo de instruccibn es una combinacibn de uno o mds de: los siguientes ciclos bdsicos: bfrsqueda de c6digo de operacibnl; lectura o escritura; lectura o escritura a dispositivos y reconocimiento de interrupcibn.

    realizada por el CPU: En seguida se describird la operaci6n bdsica que es

    1. Un CPU simple busca inskrucciones o busca datos de memoria enviando una direccibn sobre el bus de direcciones y una seal de lectura a memor..a por el bus de control. El dato o instruccibn direcc:ionac'!o es enviado sobre el bus de datos desde memoria al CPU.

    2. El CPU puede escribir datos en memoria RAM enviando una direccibn sobre el bus de direcciones, enviando el dato a ser escrito sobre el bus de datos, y enviando una seal de escritura a memoria sobre el bus de control.

    3 . Para leer datos de un puerto, el CPU envia la direccibn del puerto sobre el bus de direcciones y envia una seal de lectura sobre el bus de control. Los datos llegan desde el puerto al CPU por medio del bus de datos.

    4 . Para escribir datos a un puerto el CPU envia la direccibn del puerto sobre el bus de dlrecciones, envia el dato a ser escrito al puerto por el bus de datos y envia una seal de escritura sobre el bus de control.

    5. Un CPU busca cada instruccibn de programa en secuencia, decodifica la instruccibn y la ejecuta.

    Cada ciclo de memoria estd formado de tres a seis periodos de reloj. Sin embargo un ciclo de memoria puede ser alargado por las dos seales de control: requerimiento de espera (WAIT') y requerimiento de bus (BUSRQ'). WAIT' permite al diseador sincronizar la velocidad de la memoria externa o de los dispositivos perifkricos a la velocidad del CPU introduciendo estados de espera, en un ciclo de mdquina. BUSRQI permite a los dispositivos externos tener acceso a los buses de direccibn, control y de datos. El CPU continua su ciclo corriente de mdquina y entonces pondrd en estado de alta impedancia sus buses por tantos ciclos como sean requeridos por la seal BUSRQ'.

    16

  • Durante el ciclo M1, el c6digo de operaci6n es buscado desde memoria y decodificado durante los ciclos de reloj T3 y T4. A l mismo tiempo, mientras el CPU est ocupado con el c6digo de operacidn, los contenidos del contador de refresco son colocados dentro del bus de direcciones junto con una seal de refresco a memoria ( R F S H ' ) . Por tanto un refrescamiento de memoria totalmente transparente ocurre en esta etapa de alentamiento del procesador.

    Durante el ciclo M2, los datos desde la posici6n de memoria apuntada por el par de registros HL son leidos desde memoria. Esta operaci6n de cuatro ciclos ha sido extendida dos periodos de reloj por un dispositivo que requiere los buses para un ciclo de DMA durante el periodo de reloj T4.

    :L 7

  • "

    DIAGRAMA DE TIEMPOS

    I

  • En el kit se hard uso de varios m6dulos de memoria, ademds se contar con dispositivos de entrada / salida. Por lo que es necesario proporcionar 16gica externa adicional al 2-80 para que pueda realizar esas tareas en forma correcta. Como el programa monitor controlador del siste:ma radica en EPROM, es necesario desactivar este y otorgar el control del programa a la memoria DRAM. Ver capitulo 111.

    Se proporcionardn buffers tri-estados para realizar las conexiones entre el CPU y la dlemds l6gica asociada. Como el bus de datos es bidireccional es nlecesario proporcionar lbgica que realice el control de la direccibn, ademds de su establecimiento en estado de alta impedancia. TambiCn se proporciona la seal de reloj y la seal de RESET' .

    Puesto que las seales del bus'de control pueden dividirse como seales de entrada y de sa.lida al procesador, se asocian con dos buffers distintos.

    Exceptuando la seal MEMIDIS que indica el acceso a la memoria estatica del procesador de video, y que se asocia 16gicamente con la seal MREQI para indicar que se realiza un acceso a tal memoria, todas las demds seales son las conocidas seales del bus de control del 2-80.

    A pesar de que el kit no considera el uso de interrupciones no mascarables, la seal BUSACK' controla el estado de alta impedancia de los buffers de direcciones de las seales de control.

    El alnico bus que es bidireccional es el de datos. Las dos seales a controlar para este son:

    - GI que establece el estado de alta impedancia del buffer. - DIR que establece el sentido de la direcci6n en el bus de datos.

    Puesto que es necesario e:L establecimiento de las seales asociadas con la unidad de memoria, su 16gica asociada se deja para esa parte.

    A cotinuacibn se presenta e1 diagrama del procesador con los buffers y demds circuiteria asociada.

    3.9

  • \

    vcc GND

    - . " ~ . .... ~ , ~ . d..'....... *

    BUS DE D I R E C C I O N E S .

    A06 8 A07 9,

    'VCC GND

    BUS C - vcc GND

    c_I BUS T' VCC GND

    LL;

    YCC GYD

    D3 - D4 - I D6 - 10 D7 - I3

    BUSACK .

    - a" - RLSET Al0 - 40 A l l - I

    m A12 - 2 A l 3 - 3 A14 - 4 A l 5 - 5

    B 1

    VCC GND

    20

  • 111. Memoria.

    1II.a Caractersticas de 1.a unidad de memoria.

    Varios registros de igual longitud pueden incorporarse en un solo circuito integrado y compartir un conjunto de entradas, un conjunto comb de salidas y una linea de reloj. Tal circuito es llamado memoria.

    Los dispositivos de memoria semi-conductor se disean para cumplir con los siguientes requerimientos funcionales:

    1. Un arreglo de cklulas; de memoria cada una de las cuales puede almacenar un bit.

    2.

    3 . de

    4 . de

  • III.a.2 RAM dinarnica.

    Conceptualmente la celda-bit dinarnica consiste de varios switchs y capacitores, en un circuito muestrea-manten (sample- and-hold). Durante una escritura WRITE el dato es colocado en la entrada y S1 es cerrado, cargando/descargando completamente el capacitor (dependiendo del ciato). Durante una operaci6n de lectura READ el switch S2 se cierra y la tensi6n del capacitor es comparada con una tensi6n de referencia produciendo el dato a la salida del comparador. Cuando en modo de almacenamiento todos los switchs estdn abiertos, el capacitor almacena la carga. El capacitor gradualmente se desviar de su tensi6n almacenada debido a que la carga es no ideal. Si el nodo es olvidado por un tiempo la tensi6n en el capac:itor no reflejara el dato que es almacenado. Para prevenir esto, la celula se refresca peri6dicamente cerrando secuenc:ialmente S2 -> S3 -> S1. Por tanto la tensi6n interna del capacitor es leida, amplificada y re- escrita, restableciendo el nivel de tensi6n original en el capacitor (refrescamiento).

    El controlador de memoria dindmica debe asegurar que cada celda-bit sea refrescado con frecuencia para que cada celda-bit mantenga la integridad del dato. El intervalo de refresco es especificado en las notas tecnicas de la memoria.

    Para reducir el lloverheadvv impuesto por el refresco, los componentes de la memorias; dindmicas tienen sus celdas establecidas en arreglos. Por ejemplo si el intervalo de refresco es de 2 ms y se tiene una memorla de 4096 bit constituida como un arreglo de 64 filas y 64 columnas. Todas las columnas en una sola fila son refrescados simultdneamente para que el usuario tenga que proporcionar 64 ciclos de refresco.

    Para proporcionar la clirecci6n fila a refrescar, es necesario un contador, que tiene que incrementarse despues de cada ciclo de refresco. Paral el kit solo se toma la dlrecci6n fila proporcionada por el registro R, en cualquier ciclo de acceso a memoria. Ver capitulo 11.

    2 2

  • 1II.b Memoria DRAM y lbgica de control.

    La memoria que se decidib emplear fue la RAM dindmica de 64K

    La memoria dindmica (4164) puede trabajar en varias formas: i) flEarly write". ii) "Read / write modify1''.

    El modo de acceso que se utilizb fue 'read / write modify! y se describe a continuacibn, en los diversos ciclos de acceso a memoria que el 2-80 puede realizar.

    por un bit.

    RAS significa seal de habilitacion de fila (Row Address

    CAS significa seal de habilitacidn de columna (Column Address

    - Existe un tiempo mnimo que las seales RAS y CAS deben estar establecidas. Para simplicar la lbgica asociada con la seal RAS, basta que siga a la seal MREQI.

    - La seal RAS debe estar presente antes que CAS - La direccibn corriente representa siempre la direccidn RAS. Cuando se habilite la seal CAS, despues de un cierto retraso, el bus de direccibnes representa la direccibn CAS.

    El acceso a la memoria dinarnica es una tecnica de direccionamiento multiplexada en la cual la direccibn se divide en dos partes de ocho bits.

    Strobe).

    Strobe).

    - La forma de elegir la direccibn (fila o columna) en los multiplexores de entrada la memoria es asegurando que se elige la direccidn columna (SEL = O ) , entonces habilitando CAS.

    El diagrama siguiente y su mapa de Karnaugh muestran las diferentes posibilidades de acceso a memoria, tanto a la memoria dindmica (4164) como a la memoria estdtica (6116) .

    23

  • .

    L O G I C A DE A K E S O A MEMORIA M E M O R I A D I N A M I C A D E 6 4 K MEMORIA E S T A . T I C A DE 2K Y DISPOSITIVOS P E R I F E R I C O S

    L A M E M O R I A D I N A M I C A ES L A M E M O R I A P R I N C I P A L DEL P R O C E S A D O R ,

    L A M E M O R I A E S T A T I C A C O R R E S P O N D E A L A M E M O R I A D E U N I D A D D E D E S P L I E G U E V I S U A L ( V D U - V I D E O D I S P L A Y UNIT)

    SE I D E N T I F I C A A L A M E M O R I A P R I N C I P A L D E L P R O C E S A D O R Y L A

    M E M O R I A D E V D U COMO " R A M D E 2-80" Y " R A M D E V D U " R E S P E C T I V A M E N T E

    1 ; 1 EXPLICACION ACCESO A W D x W m N

    I co O

    a3 D I O m

    < W C

    MEMDI:

    - RAS

    R G SEI

    O 0

    1 1

    o x 1 0 O 0

    1 0 o x 1 0

    S E D A R E F R E S H A R A M DE 2 - 8 0

    R E A D , W R I T E O F E T C H A R A M D E 2-80

    L A S SENALEIS MREQ=I Y KH=O NO SE D A N A C C E S O A D I S P U S I T I V O S P E R I F E R I C O S ( R E A D , W R I T E :

    SE D A R E F R E S H A R A M DE 2 - 8 0

    R E A D , W R I T E A R A M D E V D U

    L A S S E N A L E S M R E Q = l Y RFSH=O NU S E D A N

    A C C E S O A D I S P O S I T I V O S P E R I F E R I C O S ( R E A D , W R I T E >

    RFSH 6 C A S 7 DIN.

    9

    M E M D I S 11 10 '

    24

  • Las seales de control consideradas son MREQ', RFSH' y MEMDIS, las dos primeras las proporciona el procesador 2-80 y MEMDIS es una seal proporcionada por la 1bgi.ca de control de la unidad de video.

    Es necesario que el CPU pueda accesar la memoria de video, ya que cuando se teclea un dato, este debe aparecer en pantalla.

    El sistema est dividido fisicamente en dos partes. En la primera se encuentra el procesador, la memoria dindmica y la memoria EPROM, la segunda parte es la de dispositivos de entrada / salida, que incluyen a los manejadores de teclado y de video.

    La primera parte esta separada de la segunda por buffers de tres estados. Estos buffers son empleados para levantar las seales de los buses de direccibn, control y de datos.

    Otra razbn para colocar estos buffers, es con el propbsito de proteger los buses del C P U ; seria catstrbfico que por una sincronizacih incorrecta, de las seales de control entren en colisibn los buses.

    Para mantener la direcci6:n adecuada de las seales del bus de direcciones y del bus de control no se tiene problema, ya que basta con establecer la seal D I R de cada buffer en el nivel lbgico adecuado (en este caso 1). En el caso del bus de direcciones es necesario alternar la direccidn de los buffers con lbgica que controle la direcci6n del buffer, de forma que envie los datos hacia afuera cuando haya necesidad de enviarlos al video o a cualquier dispositivo de salida; y en el caso de que l o s . datos sean de entrada (por ejemplo el teclado) hay que invertir la direccidn de forma que los datos lleguen al procesador.

    El circuito encargado de tal funci6n es el 74LS245 etiquetado con la letra E y la 16gica usada para controlar la direccibn del circuito se muestra a continuaciohn.

    25

  • LOClCA PARA CONTROL DE DIRECCION DEL BUFFER E

    "- - hIEhlDlS hlll WR R D IORO MREQ DIR , EXPLICACION "

    1 0 1 O I O FETCH CON ACCESO DISPLAY I 1 1 ' I O 1 O I O I LECT..DE MEM. DE DJSPLAY I I 1 0 I 1 0 I 1 I ESCRIT. A MEM. DE DISPLAJ' O 0 1 0 1 0 1 I FETCH NORMAL 0 1 I 0 1 0

    ESCRIT. A DISP. D E SALIDA I 0 1 0 1 o 1 LECT. DE DISP. DE ENTRADA O o 1 I 0 0 1 ESCRIT. A DISP. D E SALIDA I . I 1 0 I 0 1 LECT. DE DISP. DE ENTRADA O I I I O 0 1 ESCRIT. A MEMORJA DEL 2-80 I 0 1 0 1 1 0 LECT. A MEMORIA DEL 2 -80 I

    i

    26

    http://LECT..DE

  • .

    ,-. W LL.

    CY W

    CL ++ -r

    ur: a H

    "

    Ln

    27

  • .

    1II.c Memoria EPROM y lc5gica de control.

    Se us6 el EPROM 2716 de 2 KB de memoria. Cuenta con un bus de direcciones de 11 bits ( A0 - AIL0 ) , un bus de datos de 8 bits ( DO - D7 ) y dos seales de control: CE' ("chip enable") y OEI ( ''output enable" ) .

    Las seales de control CE' y OE' determinan la salida de datos de tal forma que solo cuando ambas estdn activas (en estado bajo) se realiza una lectura del byte direccionado.

    Para describir la operaci6n deseada de esta memoria, se definir lo que es un iniclo Icalientel del sistema, y lo gue es un inicio 'frio'. Un inicio 'caliente' es cuando se proporciona energia al CPU, aqui el 2-80 inicia todos sus registros a cero, y establece su sincronizacibn para trabajar desde la direcci6n cero.

    El inicio 'frio' se presenta cuando se envia la seal RESET',) por el bus de control, o cuando por programa se realiza una tarea de iniciacibn de l o s registros y' de las seales de sincronizacibn del sistema.

    En el kit el inicio lfrio' solo se tiene cuando se habilita la seal de RESET en el procesador.

    Para garantizar 'que esta seal realice tal funcibn, debe existir un tiempo minimo en que est6 activa en bajo. El tiempo que dura la seal de RESET' es 15 microsegundos. Esto se logra por medio de un 'switch' de un solo polo y cierta circuiteria asociada.

    De lo anterior se concluye que la entrada CE' debe estar activa cuando se da un RESET' e inhabilitada cuando se genere el primer IORQ' (para poderlo desactivar desde programa).

  • .. .

    Lbgicamente la seal CE' se habilita asi:

    HAB MREQ ' CE ' O a O O 3. 1 1 O 1 1 I. 1

    """""""""""""

    CE' = EWB + MREQ'

    Nota: cuando se da RESET', HAB = 1 y HAB cambia a O cuando llega un IORQ'.

    Ahora la seal OE' puede habilitarse siempre que este activa CE' y se realice una lectura a memoria MREQ' y RD'.

    La seal OE' esta dada por:

    CE ' MREQ ' RD I OE O O O O O O 1 1

    """""""""""""""""

    O O 1 1 1 1

    1 1

    O 1

    1 1

    O O 1 O 1 1 1 O 1 1 1 1

  • I

    1II.d Mapa de memoria.

    Junto con la determinac:i6n de los dispositivos que intergrardn el sistema, es necesario definir el mapa de memoria. Este indica como se segmentarb el rango de direccines de memoria que el sistema puede accesar.

    A partir del tamao de memoria hay que determinar:

    1. Localizacibn del programa controlador (monitor).

    2. Localizacibn del area de! 'stack'.

    3. Localizacich del directorio de direcciones para rutinas de atencih de interrupcidn.

    4 . Localizacibn de la memoria de video.

    5. Localizaci6n dindmica de las diversas tablas que sirven para programar el sistema.

    - Tabla para programacibn de registros del 6845. - Tabla de comandos del monitor. - Tabla de estados para analizador lexicogrbfico. - Direcciones para almacenamiento temporal de variables.

    6 . Localizacibn de &rea de ,acceso de programas de usuario.

    30

  • MAPA DE MEMORIA ' OOOOH

    1 F F F H 2000H

    77FFH 2800H

    UEUORIA DE V I

    2900H 2 m

    A11 = O -> ACCESO Al CRTG664-5. Al 1 = 1 -> ACCESO A LA M O R I A DE V D U . AO .I O M> CAi,L DEL REGIsrrZlD DE DI RECCION DEL CRTC484S 40 = 1 -> LECTURA O ESCRlWIRA DEL REGISTRO DI RECCIONADO

    POR EL REGISTRO DE DIRECCION'DEL cRTc-6845.

    LOGICA DE ACCESO A MEMORIA DEL CRTC-68% 30 - O --> ACCESO A MEMORIA lW DE 2-80. )o = 1 =-> ACC F7'"13 A UEUOR I A IX cRTC-6845 (SENAL VOUSEL - 1 ) .

    - DO I

    I

    I

    31

  • IV. Controlador - de video.

    1V.a Principios de operaci6:n de CRT.

    Un CRT es un tubo de vidrio al vacio, que tiene una capa fluorecente sobre la superficie de su regibn frontal rectangular (pantalla). Un cabn electrbnico, colocado en la parte cilindrica mas estrecha del tubo, emite uin haz de electrones. Este haz de electrones golpea la superficie fluorecente sobre la pantalla para producir un punto de fbsforo iluminado.

    Se puede controlar el punto en el que el haz electr6nico golpea la pantalla, y por tanto 1a.posicibn del punto sobre la pantalla, al deflectar el haz electrbnico. Seales separadas pueden ser aplicadas a la deflexi6n horizontal y vertical del haz electrbnico y moverlo a traves de la pantalla.

    Al moverse el baz por la pantalla, deja un trazo que toma un valor finito de tiempo para disiparse (persistencia). La seal de deflexibn horizontal afecta a solo la posicih horizontal del punto iluminado; asi como la seal de deflexibn vertical afecta solo su posicibn vertical.

    3 2

  • . Rastro de exploraci6n (raster scan). En este tipo de desplilegue las seales de deflexibn

    horizontal y vertical son generados para mover el haz en un rastro que puede ilustrarse como:

    El patr6n de exploracibn mostrado no proporciona un metodo atil de despliegue de informaci61n en la pantalla CRT. El primer paso es eliminar la porci6n de repaso de la traza de exploraci6n. Esto se hace reduciendo la intensidad del haz electr6nico durante la porci6n de retrazo, por med.io de control de intensidad a la entrada del ca6n de CRT. Si la intensidad del haz es reducida suficientemente durante el retrazo, entonces la capa fluorescente en la pantalla no ser& suficientemente excitada para producir una traza iluminada.

  • Las lineas punteadas representan la porci6n de retrazo del patr6n explorador cuando la intensidad del haz se reduce. Las lineas punteadas no sern visibles.

    . Razones de exploracibn vertical y horizontal. En USA la raton de exploraci6n del haz electr6nico es 15.75

    kHz. Si el haz es movido simul.tneamente a una raz6n de 60 Hz, entonces existen 262.5 lineas horizontales de trazo que pueden reproducirse mientras que el haz se mueve desde el tope a la base de la pantalla. Aunque alg&n tiempo es requerido para realizar las operaciones de retrazo horizontal y vertical (algunas de las lineas se pierden efectivamente cuando se realiza el retrazo vertical). Tipicamente se requieren 21 o 22 lneas para realizar el retrazo vertical (quedan entonces 240 lineas exploradoras) .

    El namero de caracteres que se pueden desplegar horizontalmente a lo largo de una de las filas depende de la frecuencia de video (raz6n a la que se modula la intensidad del haz electr6nico).

    Por ejemplo si la frecuencia de exploraci6n horizontal es 15.75 kHz y se quiere desplegar 100 caracteres de 8 puntos de ancho, se necesitar una frecuencia de video de

    15750 X 8 X 100 = 12.6 MHz

    en un sistema real, alrededor del 20%'de esos caracteres serian blancos para mdrgenes laterales y tiempo de retrazo horizontal, entonces se mostraran solo 80 caracteres por linea de despliegue con esta frecuencia de video.

    Frecuencia de refresco.

    Es necesario tener una frec.uencia de refresco de las seales enviadas al CRT, esta es la misma que la frecuencia de la linea de alimentacibn.

    . Interfase controlador CRT - monitor CRT. Un monitor CRT tipico necesita tres conexiones en seal a un

    controlador CRT. Estas seales son:

    - HSYNC. Sincronia horizontal. - VSYNC. Sincronia vertical. - VIDEO. Informacibn a desplegarse en si (seal modulada). El propbsitb de las seales de sincronizacion no es parar o

    iniciar el movimiento explorador, sino acortar o alargar l o s movimientos existentes para sincronizar la resentaci6n de la informacidn por el haz electrbnico. La P ntensidad del haz electr6nico se modula por la entrada de vi.deo al CRT.

    34

  • . Lbgica de generacibn de caracteres. Una serie de puntos (pixels) es pintado en la pantalla sobre

    lineas exploradoras para formar un solo caracter. El punto de informacih se ingresa al monitor CRT serialmente en la entrada de video (seal V I D E O ) , asi qule es necesario proporcionar lbgica para convertir datos que son :manejados en bytes paralelos de 8 bit a un flujo serial de bits :necesarios para desplegar en CRT. Ademds, como cada caracter se :representa por muchos puntos, toma mas de 8 bits representar un caracter. Por altimo se desea escribir ms de un caracter en cada linea, necesitando para esto un buffer.

    _t To

    em a a e . e e m

    ' VIDEO

    am e

    ' a e

    e

    m

    m

    a

    35

  • .

    Cada caracter es creado en. una matriz 5 X 7 (35 puntos por cada caracter). Con tres entradas de selecci6n de fila al ROM se pueden elegir el patrbn de puntos para cada una de las 7 filas del caracter; la salida del R.OM es enviada a un registro de corrimiento y enviado seria1ment.e a la entrada de video del CRT.

    Supongamos un ROM que almacena un conjunto estdndar de 64 caracteres con cada caracter representado por un patr6n de 5 X 7 puntos, entonce se necesitarian: 64 X 7 X 5 = 2240 bits:

    6 entradas

    DIRECCION DE CARACTER -E I" I

    R O M 2240 bit

    DE LINEA

    2- RElGISTRO CORRIMIENTO I 1". VIDEO

    Una representacibn mbs bptima seria: quitar las lineas de direccibn, ya que las lineas de exploracibn se accesan en orden secuencia1 (1 a 7 ) , esto se simplifica usando un contador que incremente la linea de rastrea de direccibn al ROM, cuando la linea de exploraci6n al CRT se complete:

    EL ROM, el contador de direcci6n de la linea de exploraci6n y el registro de corrimiento paralelo a serie forman el generador de caracteres.

    36

  • ,111111 6 entradas

    R O M CONTADOR 2:240 bit

    RELOJ a

    RASTREO L I N E A DE c

    I DE L I N E A EXPLORACION

    1111 REGISTRO

    R E L O J + VIDEO CORRIMIENTO'

    . Memoria de pantalla. Para la representacidn anterior existe un problema, que, los

    datos sobre la pantalla deben ser refrescados a intervalos regulares (50 o 60 Hz). Ademds :La pantalla estar& formada por mbs de una linea de caracteres. Una solucidn es establecer un bloque de almacenamiento de datos. Por ejemplo si se despliegan 24 lineas de informacidn de 80 caracteres se asignaria un bloque de 80 X 24 = 1920 bytes (memoria de pantalla).

    De lo anterior se ve que hay que proporcionar lbgica para direccionar la memoria de panta:Lla para que el dato apropiado sea accesado para la representacidn en el generador de caracteres. El dato en la memoria de pantalla seria accesado como lineas de 80 bytes con cada una de las 2 4 lineas de 80 bytes accesadas 7 veces para producir las 7 lineas de rastreo que forman una fila de caracteres:

  • RELOJ DIRECCIO IJ Linea rastreo

    RELOJ - Puntual

    Tipicamente la memoria de pantalla seria conectada al bus de datos del sistema asi:

    PROCESADO1

    1

    DATOS

  • .

    Ahora el procesador puede cargar la memoria de pantalla con datos que son desplegados sobre el CRT. Despu6s los datos en la memoria de pantalla se aplican al generador de caracteres. Un problema es que los mismos datos deben ser aplicados una y otra vez para crear el haz de puntos para el CRT. Esto implicaria que el bus de datos seria usado continuamente para pasar datos desde la memoria de pantalla al generador. El uso del bus de datos se reduciria incluyendo el buffer tie linea de caracteres:

    DIRECCION

    PROCESADOR US DATOS

    r BIJFFER DE CARACTERES

    RELOJ Puntual

    Una fila completa de caracteres puede ahora ser cargada en este buffer desde la memoria de pantalla por medio del bus de datos del sistema.

    \

    :3 9

  • 1V.b Arquitectura del CRTC 6845.

    A continuaci6n se presenta el diagrama general que debe presentar un procesador controlador de video. Las funciones realizadas por el 6845 se muestran en forma achurada.

    El microprocesador puede transferir informacic!m hacia y desde el 6845 por medio de comandos de lectura y escritura al dispositivo.

    Er"\-r--" "

    Data Out IDO-D7)

    Operaci6n de escritura iniciada por el microprocesador:

    E c

    IDO-D 71 Data In

    /

    En un sistema basado en 6800 E es dirigida por el reloj $2, W e es un reloj continuo usado para disparar todas las transacciones de datos entre el microprocesador y 10s disPositiVoS de soporte. Ya que existe un ciclo de tiempo maxim0 Para la seal de entrada E , es necesario que sea dirigida por un reloj continuo.

    4 o

  • De forma similar a como se implant6 el buffer de alta impedancia a la entrada del bus de datos del CPU, se tiene otro buffer para realizar la comunicacibn de datos con la memoria usada para controlar l o s caracteres que se despliegan en video y para la programacidn del CRTC-6845 .

    Este es el 74LS245 etiquetado con el namero 11. Cuando la seal DIR=l l o s datos pasan del procesador 2-80 a la memoria del procesador 6845 y cuando DIR:=O los datos de la memoria del procesador de video 6845 pasan al Z-80. La ldgica se muestra en la siguiente pagina:

    Figure 4-1. Logic Functions Provided by 6845 CRT Controller

    41

  • CONTROL DE DIRECCION DEL BUFFER 1 1

    La lgica de contro l para habi l i tar l a direccion del buf fer 11 es la s i 'guiente :

    FETCH REFSH READ NADA

    - :DIR= M 1 +RD

    4 2

  • .

    4 -.

    DIMENSION DE LOS CAR iCTERES DESPLEGADO: (EN :P. XELS)

  • RELOJ DEL D I SPLAY

    12.48 MHz.

    > CHARACTER CLOCK (1 .56 MHz . ) - b

    y 1 O 0 i

    I . .. -+ HSYNC (15.6 K H z . ) J I /lo

    I -

    I-> CHARACTER ROW CLOCK (1.56 KHz b )

  • Lbgica de habilitacibn del 6845 (CE' pin 25).

    Existen dos formas de accesar la lbgica asociada con el 6845. Se puede accesar la memoria estdtica para guardar el cbdigo de los caracteres a ser desplegados y tambikn se puede accesar el 6845 con el fin de programarlo o bien actualizar los registros que forman la informacibn de sal.ida del procesador de video.

    La memoria R A M estdtica es de 2K y tiene las siguientes direcciones:

    2800H - Inicio de :La memoria de mapeo. 28FFH - Fin de la inemoria de mapeo. Las direcciones de acceso a:L 6845 son:

    2000H - Direccibn para cargar un dato en registros del 6845.

    2001H - Direccibn para cargar la direccibn del registro que se va a accesar.

    De aqui podemos ver que l o s bits A0 y All son los que controlan el acceso a la memoria del VDU y al 6845. Por lo que:

    Si All = O entonces se accesa el 6845.

    Si este es el caso, entonces tienen el siguiente significado

    Si A0 = O entonces carga del re-j..istro de direccibn.

    Si A0 = 1 entonces se realiza lectura/escritura del registro

    lbgico lo siguiente:

    direccionado.

    Si All = 1 entonces se accesa la memoria del VDU.

    4 !5

  • m x

    o

    O '

    1

    1

    El CRTC-6845 accesa la memorla de VDU

    El 2-80 accesa .al CRTC para programarlo

    , ' El 2-80 accesa In memoria de VDU

    . = 1 => No hay occeso a memorlu

    - MREQ = 1 => No hay o,cccso a memorla

    CE = PIEMDIS MREQ + A l l

    ~rp e pln 6>

  • EXPLICACION DE ALGUNAS SE:ilALES DEL CRTC-6845

    DISPEN: La sefial se pone, en nit.lel bajo durante, el regreso

    (retrace) horizontal y ve;:tical.

    CURSOR: SefIal habilitada para ('rear una cadena de puntos

    constante en el CRT. E' l CRTC cuenta con 19 registros

    internos de los cuales se pueden accesar 18, por medio

    de una secuencia de dos pasos: 1) Cargar la direccih

    del registro a ser accesado; 2) Accesar el registro

    direccionado, ya sea p a r a lectura o escritura ( no

    todos los registros son de lectura y escritura).

    RS : La seflal RS (Register Select) determina si se estA

    accesando el registro de direcci6n o bien el contenido

    de alguno de los 18 registros restantes. En la secuen-

    cia de acceso a los registros internos, tanto el paso 1

    como el paso 2 se efectLm por medio de las lineas de

    datos (DO a D7).

    Los registros RO a.R3 establecen los parametros de

    tiempo y formato horizontal.

    Los registros R4 a R9 determinan las caracteristicas de

    tiempo y formato vertical.

    Los registros R10 a R17 cc:trolan las .caracteristicas

    del cursor, el direccionamiento de la memoria de la

    pantalla y la interfase de una pluma luminosa.

    Normalmente los registros RO a Rl1 son cargados al

    encender el sistema y no se accesan posteriormente.

    Los registros R12 a R17 seran accesados durante la

    operacibn del sistema. , ,Los registros R12 y R13 ,

    4 7

  • establecen la direccid'n de inicio de la memoria de la

    pantalla, consta de 14 b i t s . Los registros R14 y R15

    establecen la direccibn. del cursor, consta. de 14 bits.

    La sefial RS deberia ser conectada al bit de direccibn

    Ao. Cuando Ao esta en n-ivel bajo se carga el registro

    de direccibn con el val.ordel registro a ser accesado.

    Para accesar al registro direccionado es necesario

    hacer que Ao este en nivel alto.

    El registro R9 especifica el nhero de lineas por cada

    /I

    fila de caracteres.

    El registro R8 especifica el modo de rastreo del CRT:

    O0 modo normal (no. entrelazado). -

    10 modo normal (no entrelazado).

    O1 sinc. entrelazado.

    11 sinc. y video entrelazado.

    Registro 8 ==> OOOOOOX(. ticbit 0

    REGISTROS DE TIEMPO !I FORMATO HORIZONTAL

    RO

    R1

    El contenido de este registro determina el tiempo total

    de una linea en te~rminos de ciclos del reloj de

    caracteres. f HORZ = f CLK / (RO + 1) RO = Nlhmero de caracteres por linea - 1

    Especi'fica el nlhmero de caracteres a ser. desplegados en

    cada linea horizontal. Caracteres / Fila.

    R1 = Nhmero de caracteres a ser desplegados por linea - 1

  • 1:: ? Establece el punto en el cual la seAal HSYNC hace la

    transicibn de bajo a .alto y esta dado en terminos de el

    reloj de caracteres. (Character clocks).

    R2 = NAmero de caracteres al los que inicia la seAal de

    sincronia , horizon.ta1 - l.

    J

    R3

    -

    R4

    R5

    R6

    R7

    Los 4 bits menos significativo del registro establecen

    la ' duraci6n de HSY:NC en terminos del reloj

    caracteres. El maximo e s 16.

    R3 = Nbmero de pulsos del reloj de caracteres

    durarA la seAal HSYNC - 1.

    REGISTROS DE TIEMPO Y FORMATO VERTICAL

    Contiene el n&mero total de lineas de caracteres.

    Registro de ajuste de VSYNC, contiene el namero

    lineas (scan lines) adicionales para ajustar VSYNC.

    de

    Nhmero de lhcas a ser desplegadas (de las que contiene

    R4). Determina en que linea la sefial DISPEN debe

    deshabilitarse para efectuar posteriormente el regreso

    vertical del haz de electrones.

    Deterntina en que momento la sefial VSYNC pasa de bajo a

    alto para iniciar el regreso vertical. La duracibn de

    la sefial VSYNC siempre tiene una duracibn de 16 lineas

    (scan lines ) . i I i'

    I 49

  • \

    R8 ' . Registro qut- determina el modo de entrelazado.

    R9 Determina :1 n&mero de lineas (scan lines 1 por cada

    linea de ca acteres (clharacter row).

    a R10 y R11 Determinan cl tipo de cursor -a ser deplegado

    R10 contiene el-.inicio del'cursor y tipo de sefial.

    R11 contiene el fin del cursor.

    R12 y R13 Los registros R12 y :R13 especifican la direccih de

    memoria donde se encuentra el primer caracter a ser

    desplegado (top of page register). -

    R14 y R15 Los. registros R14 y R15 contienen la direccih que

    indica la posicih del cursor. Estos registros deben

    ser constantemente actualizados para saber en donde

    estd el cursor. ,Son los hicos registros de

    Lectura/Escritura del conjunto de registros del CRTC-

    6845.

    R16 y R17 Los registros R16. y R17 son utilizados en caso de'

    contar con una pluma electrbnica.

    50

  • .

    385373

    VALORES CON LOS QUE SE PROGRPlMARON LOS REGISTROS DEL CRTC-6845

    VALOR REGISTRO DESCRIPCION DECIMAL HEX

    100-1= 99 63H RO R1

    R2

    R3

    R4. R5

    R6 R7

    R8

    R9

    R10

    R11 R12 R13 R14 R15

    No. DE CARACTERES POR LINEA - 1 ~~ ~~ N o . DE CARACTERES A DESPLEGAR

    N o . DE CARACTERES AN!t'ES DE QUE POR L I N E A - 1 S E DE HSYNC - 1 N o . DE PULSOS DEL REILOJ DE CARAC- TERES QUE DURARA LA SEAL HSYNC-I No. TOTAL DE L I N E A S DE CARACTERES NO. DE LINEAS (SCAN LINES) DE AJUSTE PARA VSYNC N o . DE LINEAS A SER DESPLEGADAS No. DE LINEAS ANTES DE QUE S E I N I C I E E L REGRESO VERTICAL 00,10=> NORMAL (NO-INTERLACED) O1 => INTERLACED SI!NC. 11 => INTERLACED S'SINC AND VIDEO

    CARACTER - 1 I N I C I O DEL CURSOR Y T I P O DE SERAL DEL CURSOR X1000000

    X - - * * * * * X DON'T CARE -- T I P O DE SEAL O0 =:> NO BLINKING

    NO. DE (SCAN LINES) LINEAS POR

    O 1 =:> NO CURSOR 1 0 =:> BLINK 1/16 11 =:> BLINK 1 / 3 2

    ***** I N I C I O DEL CURSOR FIN DEL CURSOR

    EN CONJUNTO CON R 1 5 FORMAN LA DIRECCION DE I N I C I O DE DESPLIEGUE. EN NUESTRO CASO PARTICULAR VARIARAN LOS VALORES ENTRE O Y 1919 QUE CORRESPONDE A LOS 1 9 2 0 CARACTERES DE LAS 2 4 LINEAS DE 8 0 CARACTERES QUE TENDRA LA MEMORIA DEL DISPLAY.

    80-1 = 79 82-1 = 81

    16-1 = 15

    26 2 / 3

    2 4 2 4

    O 0

    10-1 = 9

    6 4

    4 FH 5 1H

    OFH

    1AH 02H

    18H 18H

    OOH

    09H

    40H

    09H O O H O O H OOH O O H

    51

  • 4

    ; #### i / / ####### i J # # R / + H # # ~ H U # # # ~ : , ~ ~ # H # # # # # # # # # H ~ # # # . # # # # # # # # # # # # u # # # ~ # # # # # # # ~ # # .#

    , UN 1 VER5 I DAD CtUTOFiOMA I.;ETKOPOL I TANA ## C l E M C I \S BASlCAS E INGENIERIA .-. # LICENCIATURA DE INGENIERIA ELECTRONICA (COMPUTACION) # . PROYECTO DE 1NGENlERlA ELECTRONICA 11 #l

    1 PROFR. FAUSTO CASCO SANCHEZ' # ALUMNOS : JORGE ALBERTO OLMEEIO AGUIRRE #

    LUIS S. GARCIA DE SANTIAGO # # i. I ......................................................................... 'I

    CODIGCt? DEL GENERADOR DE CAf4ACTERE:S DEL VDU

    3

    ORG OOOOH DE3 OOH OOH. OOH OOH OOH OOH OOH OOH OOH. OOH OOH OOH OOH OOH OOH OOH : 1 DB OOH OOH 00;; 00H.OOH 00H IjYii OOH 00ti.OOH. OOH. OOH. OOH OOH. 001-1 OOH : 2 DB OOH 00H-00Ii OOH OOH OOH 00H.OOH OOH. 00H.OOH.OOH.OOH.OOH OOH OGH ; 3 DB OOH. OOH. OOH. OOH. O O t i . OOH i '1 OOH OOH. OOH. OOH. OOH. OOH. OOH. OOt1.001i ; 4 DB OOH OOH OOH. OOK OOH OOH L \ i OOH OOH. OOH. OOH. OOH OOH OOti OOH OOH : 5 DE3 00H.OOH.OOH.OOH OOH 0Oii.OC'i.OOH.OOH OOH JJ,I -' 8 . . -

    I - .

    DB OOH. OUR. 00; : CI'OtI OOt1 OOH. ( i . OOH. OOH. OOH. OOH. O O H . OOH. OOH. OOH. OOH : 14

    Dl3 OOH. OOH OOH OOH. OOti OOH WH OOH. 00H.OOH. OOH. 0QH.OOH.OOH. O O H , OOH : 16 DB OOH OOH.COH.OOH.OOH.OOH.Ct!Ii.OOH.OOH.OOH.OOH.OOH.OOH.OOH.OOH.OOH ; 17

    DB OOH 00H.OOH.OOH 00H.OOH.OOH.OOH.OOH.OOH 00H.OOH.OOH.OOH.OOH.OOH : 19 DB OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. OOH. 00H.OOH. OOH : 20 DB O O t i OOH OOH OOH. OOH. OOH OOH. OOH. OOH. 00lH.OOtl . OOH. OOH. 00H.OOH. OOt i : 21 DB OOH. OOH OOH. OOH. OOH OOH. OOH. OOH. OOH. 0014. OOH OOH. OOH. OOH. OOH. OOH : 22 DB OOH OOH. OOH. OOti. OOti OOH. OOH. OOH. OOH. 001-1.001i. 00H.OOH. OOH. OOH. OOH : 23 DB OOH 00H.OOH.OOH OOH OOH 00H.OOH;OOH.OOH.OOH.OOH.OOH OOH OOH.0OH : 24 DB OOH 00H.OOH. OOH OOh' OOH. OOH OOH. 0014 001-1. OOH OOH 00H.OOH 00H.00tl : 25 DB OOH GOH. OOH OOH OOH OOH OOH 0OH.OOH. O O H 001-1. O O l i OOt1 OOH OOH 00tl : 26 DE3 OOH OOH 00H.OOH OOIl 00t-l 00tI.OOH OOH 0011 OOti DOH 00H.OOH 00H.OOH : 27 DB OOH OOH OOH OOH OOti OOH OOH O O t l OOH O O H . O O t 1 OOH 0OH.OOH OOH OOH : 28 DB OOI OOH OOH UOH OOH 001' OOH OOt i OOH. O O t i . OOH OOH 00H.OOH.OO~.OOH : 29 Di3 OOH OOH O O H OOh 0 O i i . U O H . OOH OOH. OOH. OOt i OOt1 OOH 00H.OOH. O O H . OOH : 30 DEI OOH OOH OOH O O t l 0011 OOH OOH OOH. OOH. OOH. OOt i OOH OOH. OOH 0OH.UOH : 3 DB OOH OOH OOH OOH 0011 OOH OOH OOH OOh' O O t i 00H. OOH OOH OOH 00H.OOH : 32

    OB OOH OOH ooI . o w G o t { . ootj. ( ' J OOH OOH.OOH. OOH. OOH. OOH.OOH.OOH.OOH : 15

    DU OOH OOH OOH. OOH OOH. OOH OOH. OOH. OOH. OOH. OOH. OOH. 00H-:OOH. OOH. OOH 18

    52

  • m

    . DB 00H OOH UOW OOH.0Oti.OOH OOH OOH 00t1.00ti.00H.00H.00H.00t!.00H.OOH : SPACE DI! O W 08H.011ti.OUt1 OBH.OOH.OOH.O8H.08t.00H.OOH.OOH.OOH.OOH.OOH.O0H.OOH : ! DB 2 4 t i 24ti 2 4 l i . O O H OOH.00ti 00t.00H.OOH.~DOH.OOH.OOH 00H.OOH.OOH.OOH : " DB 14H 14H 14ti 7FH. 14H.7FH. 14H. 14H. 14H.OOH.OOH.OOH.OOH.OOH.OOH.OOH ; # Da OHH 3FH.4RH.4HH.3EH 09tI 09H 7EH.08H.~DOH.OOH.OOH.OOH.OOH.OOH.OOH ; $ DB 20H.51H.ZZH.04H.OHH. 10H.22H.45H.02H.~DOH.OOH.OOH.OOH.OOH.OOH.OOH : % DH 38H 44H 44H 28H 10H.25H.46H 46H.35H.OOH.OOH.OOH 00H.OOH.OOH.OOH : 8 DE OCH OCH.OI?H.10H.OOH.OOH.OOH.OOH.OOH.~DOH.OOH.OOH.OOH.OOH.OOH.OOH ; DB 04ti 08ti 10H lot1 10H. 10H. 10H.08H 04H.~DOH.OOH.OOH.00H.'OOH.OOH.OOH' : ( DE 1Ot1.08H 04H 04H.04H.04H.04H OOH. 10H.lDOH.OOH 00H.OOH 00H.OOH.OOH : )

    y DE 00H.08H.49H.2AHn1CH 2Ati !,9H.O8H OOH.!DOH.OOH 00H.OOH.OOH.OOH.OOH : * DC.00t-1 08H 08H.08H.7FH Oat1 :i!H.08H.OOH.~DOH 00H.OOH 00H.OOH 0OH.QOH ; t OB OOH 00H.OOH.OOH. 18ti. 18ti OH.20H.OOH.~OOH.OOH.OOH.OOH.OOH.OOH.OOH : , DE OOt OOH OOH. OOH. OOH OOH ;OH 18H 18H 'DOH 00H.OOH OOH. 00H.OOH.OOH ; .

    DB 3EH 41H 43H 45H.49H.51H.61H.41H 3EH.~00M.O0H.00H.00H.00H.OOH OOH : O DR 08H 18H.28H.ORH.08H.08H t,,9H.08H.3EH.lDOH 00H.OOH.OOH.OOH.OOH.OOH ; 1 DB 3EH 41H 01H.02H 1CH.20H 'OH.40H.3FH:DOH.OOH.OOH.OOH.OOH.00H.00t1 : 2 DB 3EH 41H.OlH.OlH.1EH.OlH OlH.41H.3EH.~DOH.OOH.OOH.OOH.OOH.OOH.OOH : 3 i'B 02H 06H OAH.12H.22H 42H.7FH 02H.02H.~DOH.OOH.OOH.OOH.OOH.OOH OOH : 4 LIB 7FH 40H 40H.7CH.OZH.OlH.OlH 42H.3CH.~OOH.OOH.OOH.OOH.OOH.OOH.OOH : 5 UB 7EH 20H 40H.40H.7EH 41H 41H 41H.3EH.DOH.OOH 00H.OOH.OOH.OOH.OOH : 6 OB 7FH.41H 02H.04H 08H.10H.10H.l0H.10H.OOH.OOH.OOH.OOH.OOH.OOH.OOH : 7 LIB 3EH 41H 41H 41H.3EH.41H.41H.41H.3EH.DOH.OOH.OOH.OOH.OOt~.OOH.OOH : 8 DE 3EH 41H.41H 41H.3FH.Olt1 OlH.02H.3CH.DOH.OOH 00H.OOH.OOH.OOH.OOH : 9 DR OOH. OOti OOH 18H. 18H. 001: :OH. 18H. 18H. 00H.OOH. OOH OOH. 00H.OOH. OOH : : DB 18H 18H.OOH.OOti 18H 18H.10t~.20H.OOH.OOH.OOH.OOH.OOH.OOH OOH OOH : : GI3 04H O8H 10H 20H 40H.20H [email protected],OOti : l/4 DS OOH O O t i OOH 3EH OOH. 3Et.1. OOH O O H . OOH. OOti OOH. OOH. QOl i . O O H OOH OOH : = L,B 10H.08H 04W.02H.OlH.02H CiiH.08H.10H.00H.~00H.00ti.OOH,OOH.00H.00t1 : DU lEH.21h 21H 01tl 06H 08H.08H.OOH.08H.OOH GOH OOH 00H.OOH 00H.OOH : '?

    DB DOH 00ti.OOH.OOH 7FH.OOH 'OH OOH.OOH.~00H.OOH.OOH.OOH.OOH.OOH.OOH : -

    DE OOH 01H 02H 04H 08H.10H.i!OH.40H.OOH.OOH.OOH.OOH 00H.OOH.OOH.OOH : /

  • UD lEti.21ti'3Dt1.55tr.55H.5Eti 40H.ilOH. 1Eki.OOtl 00H.0011 0OH.OOH OOH.'OOtJ : Q @ DU,lCti.22}1 41H 4111 '41H 7Ftl 4lti.41ti.41H.OOtC.OOt1 O0H.OOH.OOH.0Ot-1.00H : A DD 7EH.21H 21ti 21tl 3Et1 21H 21H 21t1 7Ekl OOH.00li.00l1.00H.OOti.00H.00t~ ; U DU 1EH 21H.40E.40H 40ti.llOH 4011.2iH 1Et.I 00H.OOH.OOti.OOH.OOH.OOt!.OOH : C DI3 7CH.22ll 21ti 21 t i 21 tl 21 ti.21 ti. 22tl 7Cki OOH OOH. 0Oti.OOH. 00H.OOH. 0014 : G [JE! 7FH.40H.401-I 40t1.7HH.4GH 40H 40H.7FF~.OOH.OOH.OOti O0H.OOH.OOH OOH : E [XI 7FH.40H 40H. 40H 78H 40H. 40H 4Ot1 40H. 00H.OOH. OOH OOt i . O O t i . 00H.OOH ; F DB lEH.21H.40H 40H.40H 4FH 41H 21H 1EH 00H.OOH.OOt.OOH OOH OOH OOH : G DB 4lH 41H.41H.41tI 7FH 41H 41H.41H.41H.OOH.OOH.OOH 00H.OOH.OOH 0O.H : H

    DB 1FH 04H O4H 04H'04H 04H 04H.44H 38H.OOH.OOH!OOH OOH OOH 0OH.OOH : 3 DU 41H 42H.44H 48li 50H.68H 44H 42ti 41H (SOH.OOH.OOH.OOH.OOH.OOH OOH : K

    ' DB 40H 40H 401i 40t1 Loti 40H 4OH 40tl 7FtI:OOti GOH 00H.OOH 0OH.OOH OOH : L DB 4H 63H 55H 49H 49H 41H 4,lH 41H 41H OOH.OOH.OGt1 OOH 00H.OOH.OOH : M UB 41H 67tt 51ti 49ti 45H 43H 41ti 41H 41H OOH..OOH OOH OOH OOH.OOH.OOl1 : N LIB 1CH.22H 41H 4tH 41H.41H 41H.22H.1CH.OOH.OOH.OOH 00H.OOH.OOH.OOH : O Di3 7Eti 41t 41 t! 41H 7Eti 40H 40H 40H.40H 00H.OOH 00H.OOH.OOH. 00H.OOH : f) LIB ICH 22ti 41H 41H 41H 49H 45H 22H.lDH.OOH 00H.OOH.OOH 00H.OOH.OOH : O 5B 7EH.4.ltl 41H 41H 7EH 48H 44H 42H.41H.OOH OOH 00H.OOH.OOH 00H.OOH : k OB 3EH 41H 40H.40H 3EH 01H.OlH.41H.3EH OOH 00H.OOH.OOH.OOH.OOH.OOH : S DB 7FH. 08tt. 08H. 08H 08H. 08H 08H. 08H. 08H. OOH. 0011. OOH. OOH. OOH. 00H.OOH : T DB 41H 41H 41H 41H 41H 41H 41H.41H.3EH.OOH OOH 00H.OOH.OOH.OOH.OOH : U DB 41H 41H 41H 22H.22ti 14H 14H.08H.08H.OOH 0OH.OOtf.OOH 00H.OOH.OOH : V D13 41H 41H 41H 41h' 49H 49H.55H 63H 41H 00H.OOH.OOH.OOH.OOH.OOH.OOti : W DB 41H 41H 22H 14ti.08H 14H 22H 41H 41H 00H.OOH 00H.OOH 00ti.OOH.OOH : X

    . DB 41H 41H 22H 14H 08H.08H.08H.08H 0BH.OOH.OOH.OOH 00H.OOH.OOH.OOH : Y DB 7FH 01H 02ti O4H 08ti 10H 20H 40ti 7FH OOH OOH.0011 OOH OOH 00H.OOH : Z OB 3CH.20H 20H 20H.2GH 20H.20H.20H.3CH.OOH OOH 00H.OOH.OOH.OOH.OOH : 2L OB 0Ott.40H.20t l O t l 08H 04ti.02ti 01H.OOH.OOH.OOH 00tl 00H.OOH.OOH.OOH : ,\

    DB 08H 14H 22H 4 1H OOt1 00H OOH OOH. 00H.OOH.OOH. OOH OOH OOH OOH OOH : DB 001-1 OOH OOH OOH OOH OOH OOH OOH 7FH OOH OOH 00H.OOH.OOH OOH OOH ; UNDERLINE

    DB 3EH 08H.08H.ORH '38H.08H.08H.08H.3EH.O0H.O0H::OOH.OOH.OOH 00H.OOH : I

    DB 3CH 04H.04H 04H 04H.04H.04H 04H.3CH 00H.OOH.OOH OOH 00H.OOH OOH : )

    54

  • . . . . . . 00000000000000000000000000000000 oooooooooooooooooooooOOOOOOoooooooooo I I I x x I z I I x l I I I l I I I l I X ~ x x x x ~ ~ x ~ ~ ~

    i

  • V. Dispositivos perifCricos,

    Existen dos problemas en el diseo de secciones de entrada / salida:

    1. C6mo dar interfases perifbricas a la computadora y transferir datos, 'status' y seales de control?

    2. C6mo direccionar dispositivos de entrada / salida para que el CPU pueda elegir algan dispositivo para una transferencia de datos?

    En teoria la transferencia de datos a o desde un dispositivo de entrada / salida es similar a la transferencia a o desde memoria (la memoria es otro dispositivo), sin embargo es especial :

    1. Opera a la misma velocidad que el procesador.

    2. Usa el mismo tipo de seales que el procesador.

    3 . No requiere formatos especiales o seales de control, tan solo pulsos de lectura / escritura.

    4 . Los datos se envian aut:omticamente a ella.

    5. Su longitud de palabra es la misma que la del procesador.

    A partir de los puntos anteriores se puede clasificar a l o s dispositivos en tres grupos de acuerdo a su velocidad:

    1. Dispositivos lentos que! cambian de estado no ms de una vez por segundo.

    2. Dispositivos de velocid.ad media, transfiriendo datos a

    3. De alta velocidad con razones superiores a los 10000

    ';azones de 1 a 10000 bits por segundo.

    bits por segundo.

    56

  • .

    En el proyecto se trabajb con dos tipos de dispositivos: 1. La interfase de teclado, se maneja como un dispositivo

    de acceso lento.

    2. Para el manejo en pantalla, se utilizb un procesador adicional. Este es solamente visto como un dispositivo de velocidad alta que trabaja concurrentemente con el procesador central. Sin embargo este es visto como un dispositivo ya que es necesario dar una iniciaci6n y pro,Zramacibn para que pueda operar correctamente.

    La asignacibn del direccionamiento es dada por el desarrollador del sistema:

    A5 A4 A3 A 2 Al A0 Direccibn: """"""""""""""-"""""""""""""""" O O O O O O CTC (canal O ) O O O O O 1 (canal 1)

    O O O O 1 1 (canal 3) O O O 1 O O PI01 (A datos) O O O 1 O 1 (B datos) O O O 1 1 O (A control) O O O 1 1 1 (B control) O O 1 O O O PI02 (A datos) o O 1 O O 1 (B datos) O O 1 O 1 O (A control)

    O 1 1 O O SI0 (A datos)

    O O O O 1 O (canal 2)

    O O 1 O 1 1 O O O 1 1 O 1 O O 1 1 1 O O O 1 1 1 1

    (B control)

    (B datos) ( A control) (B control)

    O 1 O O O O Direccih para elegir memoria de VDU (VDUSEL)

    ..............................

    Recordar que el procesador debe poder tener acceso a la memoria de pantalla, para enviar alg&n caracter ingresado por medio del teclado, por eso es necesaria esta seal VDUSEL, indicando que el procesador estd hacier;do uso de esta memoria.

    M1 ' IORQ ' G1' = G2' """""""""""""""- O O interrupcibn O 1 fetch 1 O E/S 1 1 siempre

    G = MlI . IORQ

    57

  • VI. Programa monitor.

    Al mismo tiempo que se desarrollo el hardware, eran necesarios pequeos programas que lo manejaran: control de los dispositivos asociados: verificac:ibn en cierta forma de cada uno de los pasos que fueron tomados en la circuitera; permitir al usuario una forma sencilla de comunicarse con la circuitefia para desarrollo tanto a nivel tfhardwaretl como a nivel "softwaret1.

    V1.a Realizacibn de un 'boot' de 'hardware'.

    Una de las metas en el desarrollo del kit, fue tener cierto grado de independencia del 'soft.ware' escrito por la persona que lo emplease: esta flexibilidad seria proporcionada al realizar un 'boot' de disco, desafortunadamente una unidad de disco no estaba disponible al tiempo del desarrollo del kit, por lo que surgi6 la idea de desarrollar un 'boot' de 'hardware' basado en la facilidad de manejo que proporcionan l o s EPROM.

    Este 'boot' de 'h&rdwareI consiste en tres fases:

    - Copiar los contenidos del EPROM a la DRAM. - Desactivar el EPROM. - Dar el control del sistema a la DRAM. En pseudoc6digo esas fases conjuntadas se verian as:

    copia direccibn-inicio a direcci6n-final a RAM desactiva rom activa ram inicia ejecucion c , I ram

    58

  • 4

    1. Copia direccibn - inicio a direccibn-final a RAM.

    Hay que considerar que la DRAM ya est activa desde la iniciacldn del sistema, por lo que existe una correspondencia uno a uno entre el acceso a la ROM y a la DRAM.

    En lenguaje 2-80 esto se veria:

    ORG INICIO

    ROM: LD HL,ORIGEN i ORIGEN DEL BLOQUE A COPIAR DE ROM LD DE, ORIGEN i DESTINO DEL BLOQUE A COPIAR A RAM LD BC,F'N-ORIGEN ; NUMERO DE BYTES A COPIAR LDIR i EFECTUA LA COPIA

    . . . 2. Desactiva ROM / Activa R A M .

    En hardware se tiene la posibilidad de desactivacibn, si se envia cualquier cosa por alguno de los puertos tal cosa ocurre:

    LD C,OiFH i DESHABILITA ROM OUT (C) ,A i HABILITA RAM

    Recordar que al entrar al sistema o dar un 'reset' se activa (CS') en la memoria EPROM. Esta s'e desactiva generando una seal IORQ', en el bus de control.

    Ver 16gica de control.

    3. Inicia ejecucibn en RAM. Ahora en RAM, ya se tiene la copia del programa principal,

    cargado desde ROM. Se realiza un salto a la etiqueta definida por MVBLK.

    Como se perdieron algunos bytes al realizar la copia: simplemente tenemos que recorrerlos para empezar desde la direccibn absoluta 0000H:

    ORIGEN: RAM:

    JP MVZL'SK i MUEVE BLOQUE DE RAM A OOOOH

    tenemos que descartar precisamente, de mover, el SeTento de cbdigo que realiza el movimiento, por lo que la altlma linea efectiva de programa seria etiquetada por RAMFIN.

    59

  • I Todo esto es el programa

    efectivo

    Ultima linea

    Los bytes perdidos al realizar la transferencia ROM-RAM se recuperan haciendo un movimiento de bloque del programa principal en la propia RAM:

    RAMFIN: MVBLCK: LD HL, RAM+3

    LD DE, INICIO LD BC, RAMFIN-RAM-2 LDIR JP INICIO

    FIN : END.

    Siendo en general INICIO la direccidn de inicio desde donde se iniciara la ejecuci6n en RAM (es deseable que sea 0000~).

    que se carg6 para probar la memoria en el sistema: Esta es una muestra de como se realizd, el primer programa

    ;Direcci6n inicial para ejecxcid: INICIO EQU OOOOH ;Capacidad de la pila: cs EQU OlOh ;Inicia ejecucidn desde ROM:

    ROM : LD HL, ORIGEN ;Origen delbloque a copiar. ORG INICIO

    LD DE, ORIGEN ;Destino del bloque a copiar. LD BC, FIN-0RIGE:N ;Ndmero de Bytes a copiar . LDIR ;Realiza la copia. LD C, OFFH OUT (C) , A ;Deshabilita ROM / Activa RAM.

    ;Inicio de ejecucibn en RAM: ORIGEN : RAM: JP MVELK ;Recupera bytes perdidos.

    LD SP,FIN+CS-RAM: ;Establece SP.

    CALL VERIFICA-RAM-3 ;Escribe y lee de RAM. REPITE: LD B, AAH

    LD B. 55H CALL VRIFICA-RA3 JR REPITE

    ;Rutina de prueba de RAM: ;En realidad se prueba entre las direcciones apuntadas por

    60

  • ;HL y BC. VERIFICA: LD CONTIN: LD

    NOP NOP NOP NOP NOP NOP NOP LD CP JR INC LD CP JR LD CP JR RET

    HL, FIN+CS-RIW+l (HL) I B

    A, (HL) B NZ, ERROR HL

    OFFH NZ I CONTIN

    OFFH NZ , CONTIN

    AI H

    A I L

    ERROR : HALT MVBLCK: LD HL, RAM+3

    LD DE, INICIO LD IZC, ERROR+l-IAM-3 LDIR JP INICIO END

    61

  • V1.b Configuracibn y programacibn de dispositivos.

    Para realizar un programa lo mds comprensible que se pueda en cualquier lenguaje ( y mas en ensamblador), se definen ciertas variables y parametros que se utilizan a lo largo de todo el programa. Estos aparecen defini'dos en el listado d e l programa.

    Hasta el momento se ha analizado, un programa que no atiende la arquitectua definitiva del sistema. Como se mencionb, es necesario realizar varias operaciones para la interpretacibn de comandos. Lo primero a realizar, es la confiquracibn de l o s diversos dispositivos que configuran al slstema. Atender informacibn proporcionada por el usuario, a travCs de un teclado. Presentacibn en pantalla de lo que el usuario tecleb. Y por altimo interpretacibn de la tarea pedida por el usuario.

    En seguida se muestra el esqueleto del programa que realiza dichas funciones:

    ROM :

    ORIGEN:

    CICLO:

    RAMFIN: MVBLCK:

    FIN :

    LD H L , ORIGEN LD DE, ORIGEN LD BF, FIN-ORIGEN LDIR LD C, FFH OUT (C), A

    JP MVBLCK LD SP, FIN+CAPSTK CALL CNFTEC ;CONFIGURA PI0 CALL CNFVDU ; CONFIGUW VDU CALL LVDU ;LIMPIA MEMORIA DE PANTALLA IM 2 ;INTERRUPCIONES EN MODO 2 LD HL, DIRINT ;PAGINA DE INTERRUPCIONES LD A, H ;FARTE ALTA LD I, A ;ESTABLECE ENTONCES REGISTRO I CALL PROMPT ;MUESTRA PROMPT EN LA PANTALLA E1 ;DISPUESTO A ATENDER INTERRUPCIONES JR CICLO ;FOR EL MOMENTO LA UNICA TAREA ES

    ;ATENDER LAS INTERRUPCIONES. Este es el segmento de rutinas asociadas. con el programa.

    LD HL,RAM+3 LD DE, INICIO LD BC,RAMFIN-W-2 LDIR JP INICIO END.

  • n

    VI.b.1 Programacibn del PIC).

    Los pasos para su programaci6n fueron:

    - Configuracibn del PIO. - Ingreso de los datos generados por el teclado. Control por medio de interrupcibn. Ejecuci6n de la rutina de atencibn de teclado.

    - Decodificacibn a cbdigo ASCII, de la tecla enviada.

    VI.b.l.1 Configuracibn del PIO1.

    RUTINA: CNFTEC Establece configuracibn del PIO:

    En este modo los puertos A. y B son establecidos en modo de entrada. Cuando el CPU lee datos desde un puerto, el PI0 establece la seal READY, que es detectada por el dispositivo externo. El dispositivo externo coloca entonces datos sobre las lneas de entrada / salida. Ent.onces se desactiva READY y genera una peticibn de interrupcibn (Interrupt Request). Lo que interpreta el CPU como una interrupcibn. En el presente traba10 las interrupciones se trabajaron en modo 2 (del 2-80).

    Es necesario proporcionar la direccibn que tendra la rutina de interrupcibn para que el 2-80 pceda ejecutar la rutina de servicio. Recordar que esta est. d a m por una direccibn formada al concatenar los contenidos d.el registro I, parte alta de la direccibn (es visto como un ntmero G S pbgina), y esta direcch enviada por el bus de datos, al reconmer el 2-80 la peticibn de interrupcibn (parte baja) .

    LD A, MODO1 ;ESTABLECE T,.3DO DE OPERACION DE OUT (PTOACTL) , A ;LOS PUERTO:: (A y B) DEL PI0 OUT (PTOBCTL) , A LD HL, DIRINT ;ENVIA A PIC LA PARTE BAJA DE LA LD A, L ;DIRECC!ION PARA LA RUTINA DE OUT (PTOACTL) , A ;INTERR:UPCIC.N LD A, HBINTl ;PROPOR.CIONA PALABRA DE CONTROL PARA OUT (PTOACTL) , li. :HABILITACION DE INTERRUPCIONES

    63

  • VI.b.l.2 Ingrt.so de datos enviados desde el teclado.

    RUTINA: ATNTEC

    La forma como debe operar el. teclado, es:

    - El usuario oprime una tecla. - El CPU la ri.zonoce como una interrupcibn mascarable. - Enviar a par,talla el c6digo ASCII enviado. - Verificar si se proporciort6 un comando del monitor.

    DI ;ANULA OTRAS INTERRUPCIONES

    IN A, (PTOAPIO) ; INGRESA EN .PUERTO A LA PARTE ALTA LD (TECLAB) , A ;PROPORCIONADA POR EL PI0 IN A, (PTOBPIO) ;EN PUEFLTO B SE TIENE LA PARTE BAJA LD (TECLAA) , A CALL DECTEC ;ESTABLE:CE CODIGO ASCII DE LA TECLA

    ;EL TECIADO CON QUE SE CONTO TIENE UNA ;CODIFIC!ACION ESPECIAL DE SUS TECLAS

    CALL MONITOR ;VERIFIC!A SI EL USUARIO YA INGRESO ;INFORMACION NECESARIA PARA INTERPRETAR

    E1 ;LISTO PARA RECIBIR LA SIGUIENTE TECLA

    6 4:

  • .

    VI.b.2 Programacibn del CRTC-6845.

    Como se puede observar, existen t3c3s pasos generales para interactuar con cualquier dispositivo:

    - Configuracibn del dispositivo. - Programacibn del dispositivo. Se puede lograr el acceso a:L VDU en dos formas:

    - Acceso a la memoria estatica para guardar cedigo de los caracteres a ser desplegados.

    - Actualizar sus registros, para establecer la posicibn que el cursor tendrd en pantalla.

    Ver lbgica de control para acceso a VDU.

    Recordar que el CPU puede accesar tanto su memoria RAM y la memoria de la tarjeta de video.

    para poder identificar a cual de las dos memorias se hace acceso, se establece:

    -DO = O Para indicar acceso a memoria de 2-80. -DO = 1 Para indicar acceso a memoria de CRTC. Tambien se t.inne un mapeo de la memoria de 2-80 a la memoria

    de video. Las ciirecciones 2800H y 28FFH son las direcciones de icicio y fin de la memoria mapeada a la de video. Puesto que se ve al CRTC como un dispositivo, cuando se habilite la direccih asignada, el b i t A l l del bus de direciones indica cual de las memorias ser accesada por el CPU.

    La forma de indicar que se hard tal acceso, es por medio de una seal de 'hardware': VDUSEL. Esta se establece enviando la seal IORQ' y la direcci6n 010H (ver direccionamiento de l o s dispositivos) y como se mostr6 anteriormente enviando un 1 lbgico por el bus de d a t o s . Esto se logra por medio de las siguientes instrucciones:

    LD A, 01H OUT (VDUSEL) , A Aqui VDUSEL = 10H.

    65

  • .

    Para cargar los registros del VDU, es necesario enviar primero su direccibn, y despuh su contenido. Esto es facilmente realizable en Z-80. La forma que se adopt6 fue la de formar una tabla con los contenidos que se desea tengan los registros del procesador de video. Entonces se envia su direccibn, e inmediatamente su contenido:

    LD IX, FTAB2 ;DIRECCION DE LA TABLA DE CONTENIDOS LD B, 10H ;ES EL NUMERO DE REGISTROS A PROGRAMAR

    DEC4 : LD A, B DEC A

    ;SE CARGA DIRECCION DEL REGISTRO DE VDU

    LD (VDUDIR) , A ;SE ENVIA LD A, (IX) ;AHORA S,E ENVIA EL CONTENIDO LD (VDUDAT) I A DEC IX DJNZ DEC4

    Para finalizar se deshabilita el acceso al controlador de video :

    LD A, OOH OUT (VDUSEL) I A

    66

  • Hasta aqui se detallardn las principales rutinas de la primera parte (configuracibn y programaci6n de dispositivos).

    en el listado del programa. Las principales son: Existen otras rutinas asociadas con estas, que se muestran

    RUTINA: DECTEC - Decodifica tecla presionada. D:> cbdigo ASCII de la tecla presionada:

    RUTINA: LVDU - Limpia VDU. Limpia la memoria de video, llenandola con el caracter 020H. Es necesario proporcionar las direcciones entre las cuales se realiza tal operaci6n: DIRIL y DIRFL.

    Una vez que se ha obtenido el cbdigo ASCII de la tecla, es necesario mostrarla en pantalla. Esto se logra con las siguientes rutinas asociadas:

    RUTINA: DESPTEC - Despliega la tecla en pantalla: RUTINA: CURSOR - Al desplegarse, es necesario avanzar la posicibn del cursor: RUTINA: PROMPT - Ademds es necesario enviar el prompt cuando se haya llegado al final de cada linea:

    RUTINA: MONITOR - Puesto que se tiene una base tradicional para la interpretaclbn de los comandos, cada vez que se teclee un RETURN es necesaria tal acci.6n:

    Debido a su importancia para la interpretacibn de comandos

    Pseudocbdigo:

    - Recupera cbdiqo de tecla enviada. - Si cbdigo enviado CR entonces Almacenalo en un buffer. - Otro caso Interpretalo.

    esta altima se analiza con un poc:o mas de detalle:

    67

  • Para tener un Jlgoritmo lo lhas transparente posible, se forma una linea, que guarda los cbdigos ASCII de cada una de las teclas enviadas desde teclado. Esta linea llamada 'BUFFER', esta definida por una regibn en memoria, con cierta longitud, y a la cual se puede acceder en la siguiente forma:

    "- I I CODTEC: Apuntador al c6digo ASCII recuperado. "- BUF : ..........................

    lDlElslPlLlIlElGlAl lllOl0lOl 121~10101 I ..........................

    o 1 2 3 . LONLIN LONLIN: Longitud de la linea tecleada.

    BUF: Apuntador a la linea tecleada por el usuario (contiene cbdigos ASCII).

    1. Recupera c6digo de tecla enviada.

    MONITOR: LD CP JR LD CP JR CALL JR

    LD LD

    E OMON :

    ElMON:

    A, (CODTEC) ;LEE EL CODIGO DE LA TECLA CR ;SI NO ES CR ENTONCES Z, ElMON I FORMA LA LINEA BUFFER

    LONLIN Z, EOMON BUFFER ;RUTINA QUE FORMA EN SI EL BUFFER E2MON

    A, (AP)

    A, CR ;INCLUSO SI SE LLEGA AL FINAL (CODTEC) , A :DE LA LINEA SE INTERPRETA.

    CALL DECLIN CALL PROMPT

    E2MON :

    ;SE INTERPRETA LA LINEA BUFFER. ;SE MUESTRA PROMPT'EN PANTALLA

    RET

  • V1.c Sintdxis de comandos.

    La forma adecuada para realizar una interpretacibn de comandos es definiendo una sintdxis precisa y un conjunto de acciones que se puedan ejecutar cuando se ha logrado con bxito la interpretacidn del comando.

    El objetivo del andlisis sintctico es decidir si una proposicibn definida es correcta o no, de acuerdo a las reglas proporcionadas. Para realizar un andlisis bptimo se recurre por principio a el andlisis lexicogrdfico de los simbolos terminales que pueden ser aceptados.

    La siguiente fase de tal interpretacidn es dar una serie de acciones a realizar por el programa monitor.

    En seguida, se definir :La sintdxis de los comandos que formardn al interprete:

    ::= 'DESPLIEGA' [ [,]] 'COMPARA' ,-:direccibn>[,] 'EXAMINA' ,-:direccibn>, 'LISTA' , 'EJECUTA' 'LLENA' ,, 'MODIFICA' 'MUEVE' ,,

    ::=

    ::+ ::= I

    ::= [l]

    ::= [l]

    ::= lAIBICID(EIF

    ::= 0111213141516171819

    6 9

  • VI.c.1 La interpretacibn de comandos.

    Se partira de la sintaxis definida para realizar la interpretacibn de comandos. Las anicas acciones posibles estdn definidas, por lo que la forma mds sencilla de lograrlo es decodificar tal comando. De las tkcnicas de andlisis sintdctico tenemos :

    lexico (token) ; Es necesario un andlisis lexicogrdfico. caso token :

    ' COMPARA I : Rea1i:za accibn para comparar. 'DESPLIEGA' desplegar. I EXAMINA examinar. I LISTA listar. ' EJECUTA I I LLENA 'MODIFICA' MUEVE ' otro caso : Error.

    error

    e j ecutar . llenar. modificar. mover.

    La realizacidn en codigo ensamblador se encuentra en la rutina : DECLIN.

    DECLIN :

    CALL

    CP CALL CP CALL CP CALL CP CALL CP CALL CP CALL CP CALL CP JR CP CALL

    LEX ;INVOCA EL ANALIZADOR LEXICOGRAFICO

    COMCLASS ;SE VE SI FUE LA PALABRA 'COMPARA' Z, C0MPARA;SI LO FUE EJECUTA LA ACCION CORRESPONDIENTE EXACLASS ;AHORA VE SI FUE 'EXAMINA' Z, EXACLASS LISCLASS Z , LISTA EJECLASS Z, EJECUTA LLECLASS Z , LLENA MODCLASS Z, MODIFICA MUECLASS Z , MUEVE CLASSCR ;PERO EL USUARIO PUDO HABER TECLEADO Z,DECLl ;SIMPLEMENTE IRETURN' ERRO ;SI NO FUE NINGUMO DE LOS ANTERIORES Z,ERROR ;ENTONCES HAY' UN ERROR

    ;EL OBJETIVO DE ESTE ES BUSCAR TOKENS.

    7 0

  • VI.c.2 El analizador lexicogrdfico.

    Un analizador lexicogrdfico es un reconocedor de expresiones regulares. En realidad un programa que realice tal andlisis lexicogrdfico es uno que represente a un aut6mata de estados finitos que indica si una expresi6n es producible a partir de las reglas del aut6mata o no.

    El siguiente es el autbmata finito que se form6 para poder analizar las expresiones dadas por el usuario:

    71

  • Antes se ver& la estructura de datos que se emple6 para poder realizar el andlisis:

    BUF :

    INITOK FINTOK cc

    CC - Apuntador al buffer, se forma al recorrer el buffer (BUF) por el aut6mata fi:nito, esto es realizado en la rutina: SCAN. El procedimiento que entrega la posici6n del primer caracter distinto de blanco en la linea BUF es: COMBLK.

    INITOK - Apuntador al inicilo del token. FINTOK - Apuntador al fin dlel tol.: ,n. CLASS - Indica la clase del token que fue analizado. ESTADOS: Apuntador a inicio de tc:;la de automata finito.

    ]ALMACENA LA REPRESENTACION DEL iLcJTOMATA FINITO I """"""""""""""""-"""""""""" ...........................

    1""""""""""""- 1p "._-""""""""" I IP - Indice para recorrer en foim bptima los estados del aut6mata finito.

    COMAND: Apuntador a inicio de tabla que guarda comandos. -""""""""""""","""""""""""""

    [BUFFER QUE ALMACENA LAS PA:LABRAS CLAVE I """"-""""""""","""""""""""""

    ~"""""""""""" A:pCOM ---------------."--_ I APCOM - Indice a tabla que guarda las palabras clave. El siguiente es el algoritmo para realizar el analisis

    lexicogrdfico:

    come blancos (buffer) initok

  • LD (CLASS) , A LD (IP) , A LD IX, APCOM CALL SCAN LD A, (CLASS) CP CLASSCR JR Z , ElLEX CALL TOKEN LD A, (CLASS) CP CLASSID CALL Z, KEYWD

    ;LIMPIA EL APUNTADOR A CLASS ;INICIA INDICE A TABLA DE ESTADOS ;APUNTADOR AL BUFFER DE COMANDOS ;RECORRE EL AUTOMATA FINITO ;VERIFICA SI ES 'return'

    ;SI LO 13s SE TIENE UN ESTADO DE EXIT0 ;FORMA 13N SI EL TOKEN ;VERIFICA SI ES IDENTIFICADOR

    ;SI LO 13s VE SI ES PALABRA CLAVE.

    Las rutinas asociadas con esta parte (no se analizan a detalle) son:

    RUTINA: TOKEN - Forma la palabra analizada por el lexicogrdfico. E s t & delimitado por los apuntador-s: INITOK y FINTOK, estos apuntan a BUF.

    RUTINA: BUF - Forma la linea de buffer, cuando el usuario ha enviado algo por el teclado. Lo guarda en direccidn apuntada por BUFFER

    RUTINA: COMBLK - Ignora los blancos.que tecle6 el usuario. Posiciona cc en el primer caracter distinto de blanco en BUF.

    RUTINA: SCAN - Recorre el autdmata finito, analizando caracter por caracter que se ingres6 desde el teclado. Esta rutina tiene asociada una tabla, con apuntador de inicio de tabla dada por direccidn ESTADOS, e intlice para recorrerlo IP.

    RUTINA: FWD - Avanza al siguiente estado del aut6mata finito. RUTINA: KEYWD - Verifica si algan reconocido es una palabra clave. En realidad esta rutina solo mueve 10s apuntadores en la tabla COMAND, dejando la tarea de comparacidn caracter por caracter a la rutina FIND.

    RUTINA: FIND - Realiza comparacion caracter por caracter de un token con los de la palabra entregada por KEYWD.

    RUTINA: LETRA - Verifica si un caracter es letra o no. RUTINA: DIGIT - Verifica si un caracter es digito o no.

  • RUTINA: DIGITH - Verifica si un caracter es digito hexadecimal o no. RUTINA: HEXASCII - Convierte un n~mero hexadecimal a ASCII. RUTINA: ASCIIHEX - convierte un valor ASCII a hexadecimal. RUTINA: DISASC - Despliega en pantalla el ASCII. RUTINA: MENSAJE - Despliega un mensaje en video. RUTINA: AVALIN - Cuando se completa una linea de comando, se deja una lnea en blanco.

    74

  • 7 5

  • BUS C - -

    9 II" 8

    ;? 8 9 ," V C C GND

    I ,

    VCC GND [I9

    BUS T' 18 S

    16 4-

    I A O 8 C 38

    '26 6 AO9L ;;

    AI0 40

    2nuz w"LJ

    VCC GND

    19 r -

    m - " o '

    76

  • L c c GFJIJ

    , I24 112 All - 21' AI0 - 19 MRCQ 20,

    I ? k09- 22 . I t z , ID 403- 23

    EPROM 2732 4KB

    BUS A 16 -

    CE

    A 0 3 - 5 A02- 6 A01 - 7

    - 8 C U ~ C I t tm 19 /i 400

    -+ I I I I I I I I DO Dl 02 .D3 D4 D5 D6 07

    US D

    'L 1 I '12 14 !4 6 I$ Y - G 7 9 WR 15 15

    10

    I 1 13 3 5 2

    7 9

    77

  • , 126 I!l 1 4 CE -

    DO D l D 2

    J D 5 06 D7

    LATCH 74LS273 B LATCH 74LS273 A

    LM555

    TECLADO Q W E R T Y 7 -F GND

    2

    23 -

    35 25

    C' (PIN 18 CHIP DI

    78

  • diagrama 4

    7 !3

  • -

    ed BFB v)

    R I

    v)

    d

    c

    "

  • 7 i

    7

  • """".""I)

    """

    !

    """."",. -

    1

    " ' 9

    "

  • ILISTA DE1 SENALES USADAS EN AMBAS TARJETAS I

    TARJETA

    # PIN 30 31 32 33 34 35 3 6 37 38 39 40

    1 2 3 4 5 9

    10 11 13 1 4 15 1 6 1 7 1 9 20 21 22 2 6 27 18 6 5 8* 8**

    12 * * *

    I -. C I RCU IT0 INTEGRADO 2-80 2-80 Z-80 2-80 Z-80 Z-80 Z-80 Z-80 2-80

    -._I"

    z-ao

    z-ao Z-80

    2-80 Z-80 z-80 z-u0

    EPROM I1

    I1

    II

    II

    II

    I1

    II

    Z-80 II

    II

    I 1

    I1

    1 1

    I I

    11 3.0 1 3 1 8 ,

    l- "

    "

    5-80 NOMBRE D E L A

    A0 A l A 2 A 3 A 4 A 5 A6 A7 A8 A 9

    A10 A l 1 A l 2 A l 3 A 1 4 A l 5

    DO Dl 92 03 D4 D5 D6 D7

    SEAL

    QFQ I ORQ

    RD W R

    RESET M1

    HALT O

    MEMD I S GE

    D I R E

    vcc GND

    -

    -

    -

    G A B C '

    "

    "

    1 2 3 4 5 6 7

    9 1 0 11 12 1 3 1 4 1 5 1 6 17 18 19 20 21 22 Z Y A B C D E F H J K