UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA c.E', T . LICENCIATURA EM INGENIERIA ELECTRONICA .-_ Reporte d e Proyecta1 Terminal I y 1 1 . . 146531 Nombre d e l P r o y e c t o : (Diseño e I m p l a n t a c i & d e una A r q u i t e c t u r a b a s a d a en el Mi cr opr ocesador d e 1 a f ami 1 i a Motor o1 a MC68000. // Asesor d e l Proyecto: Eduardo Rodr guez F1 or es . Al umnos : 7 M i sael 1 k I ndi ce. , 1. . . Introduction General. kh 2. . -Desarrollo: 2.1. - , 2.1.1. 2.1.2. 2.2. - - Descripci4n del Hardware. Descripcion del Software. Implantación del sistema con memoria RAM. 2.2.1. 2.2.2. 2.3.- , Implantacion del sistema Minirno. - , Descripciqn del Hardware. Descripcion del Software. Irnplantacion del sistema con teclado base de teclas del t i p o Push-Button di spl ays hexadeci mal es. 2.3.1. 2.3.2. - a y 0 Descripcion del Hardware. Descripcion d e l Software. 0 2.4. - Irnplantacion del c i r c u i t o decodificador de interrupciones y detector de errores e n el bus Ccircui t o "watchdog"3 - - 2.4.1. DescripciGn del Hardware. 2.4.2. - Descripcion del Software. 2.5. - Diseño del Programa Monitor del sistema. 2.5.1 2.5.2. 3. Estrategia d e diseño. Estructura del programa Monitor - - . Resultados. 3.1. 4. - - i Problemas enfrentados en l a irnplantacion, limitaciones y deficiencias. . . Conclusiones. 5 . . -Bibliografía. INTRODUCCION QENERAL E l MC68000, es un microprocesador de 16 b i t s , siendo el diseño del mismo, l a base del d e s a r r o l l o de una s e r i e de dispositivos p e r i f e r i c o s a p a r t i r de 1979, y e3. d e s a r r o l l o de nuevas versiones como el , B8008, el 68010 y el 68020. Esta fabricado bajo l a tecnologia HMOS Chigh-density N-channel MOS, y l a circuiteria interna consta de aproximadamente 68000 transistores. Este mi~roprocesador emplea una arquitectura interna de 32 b i t s de proposito general; t i e n e 1 6 r e g i s t r o s internos d e 32 b i t s de longitud. Ocho de esos r e g i s t r o s son de datos y los otros ocho son de direcciones. E l MC68000 estuvo planeado para permitir que l a s operaciones de direcciones y datos s e ejecuten desde los r e g i s t r o s de direcciones y datos respectivamente. Ninguno de los r e g i s t r o s de datos t i e n e n funciones dedicadas, como serian para uso como acumulador o como entrada/salida. Debido a esto, l a s instrucciones pueden ser e s c r i t a s t a l que sus operandos residen en cualquiera de los registaros de datos o localidades en l a memoria. Entonces, los datos procesados pueden ser escritos en 5 diferentes tipos que son: bit, 13CDC4 b i t s > , byte, word y Long word C32 bi ts3. / Los r e g i s t r o s de direcciones estan diseñados también para uso general y no t i e n e n funciones dedicadas. La arquitectura del MC68000 incluye un poderoso numero de funciones de hardware y software: desde el punto de v i s t a del hardware, el MC68000 t i e n e un l a r g o bus de direccione? externas; e s t e proporciona yn espacio muy grande de direc+ones logicas de 1f3 Mbytes. Una funcion de software que s e ha incluido en l a arquitectura, es l a habil4dad de crear un medio ambiente usuario/supervisor. Esta caracteristica ayuda al programador a proteger el software del sistema operativo y provee soporte para aplicaciones de multiproceso y multitareas. El MC68000 puede funcionaren 7 modos de interfase: address/data bus, asynchronous bus control, processor status lines, system control bus, interrupt control bust bus arbttration control bus y asynchronous control bus. Esas l i n e a s de bus pu,eden ser conectadas a c i r c u i t o s externos t a l e s como memoria y p e r i f e r i c o s d e entrada/sal i d a . - B U S DE DATOS Y DIRBCCIONES - E l MC68000 t i e n e buses de direcciones y datos independientes. Esto s i m p l i f i c a el diseño de l a s interfases de memoria y de entrada/salida, debido a que l a s señales de ,direcciones y da$.os no necesitan ser demultiplexadas con c i r c u i t e r i a externa. Ademas, el bus de direcciones, d e datos y el espacio de direcciones de memoria, son usados para la interfase de dispositivos de entrada/salida, conjuntamente con decir , todos 1os dispositivos de memoria en el sistema MC68000. - B U S ASINCRONO DE CONTROL l a memoria del subsistema. E s entradaHsa1i da son mapeados en - E l control del bus del MC68000 es asíncrono. Esto s i g n i f i c a que una vez que un c i c l o de,bus se i n i c i a , no s e completa hasta que una señal de l a c i r c u i t e r i a externa es regresada a l 08000. Las señales que ofrecen el control de transferencia de datos y direcciones son: CAS3 address strobe, CR/YD r e a o w r i t e , C ü D S 3 upper data strobe, CLDS3 tower data strobe, y CDTACK2 data transfer acknowt e d e . - E S T A T U S DEL B U S DEL PROCESADOR Y CODIOOS DE F U N C I O N - Durante cada c i c l o del bus ejecutado por el 68000, e s t e saca 3 b i t s de codigo que indican el estatus del proce,sador. Esos codigos de estatus son conocidos como codigos d e funcio? y son s a l i d a s en l o s pines FCO-FC2. Ello? indican a l a c i r c u i t e r i a externa el t i p o de c i c l o de bus que esta presente e n el sistema, es d e c i r , el dato o el programa que estan siendo accesados y si el microprocesador esta en modo usuario o modo supervisor. - B U S DE CONTROL DEL SSSTEYA - , E l grupo de señales de control que estan etiquetadas coy0 bus de control del sistema, son usadas para controlar l a funcion del MC68000, o para indicar s u esbado de operacion. Son t r e s l a s señales de control del sistema: bus errorCBERR3, ha¿tCHALT3, y reset CRESET3. - B U S DE CONTROL DE INTERRUPCIONES - E? un sistema con, 08000, los dispositivos externos hacen l a peticion de ir+errupciop por medio de 3 b i t s que generan el codigo de interrupcion a traves de los pines de entrada IPLO-IPL2. Erte codigo se a p l i c a a l ,MC68000 desde el d i s p o s i t i v , ~ de interrupcion, el cual indica tambien el nivel de l a interrupcion e n proceso. - B U S DE CONTROL DEL B U S ARBITRARIO - Esta señal de control proporciona un mecanismo de handshake por medio del cual, el control del sistema del bus puede ser transferido entre dispositivos. El dispositivo que t i e n e control del sistema, se conoce como bus master. E s t e controla e l sistema de direcciones, datos y buses de control. -- 4 -- - BUS DE CONTROL SINCRONO 146531 - E l MC€38000 t i e n e también señales de control que pueden hacer transferencia de datos sobre e l bus del sistema ,de un modo sincrono. Hay t r e s señales de control para este proposito, e l l a s son enable CE3, valid peripheral address CWA3 y valid memory address C V M A 3 . 2. -Desarrollo. E l implementar un sistema como el que Fstamos presentando, s e hizo en varias etapas o fases de cqnstruccion, por lo cual vamos a describir brevemente cada una de esas, fases y, ayudados por los di agr amas cor r espondi entes, se i 1u s t r ar a mejor el di seso de nuestro sistema. 2 . 1 . - Implantación del sistema Animo. / 2 . 1 . 1 . - Descripcion del Hardware. E l c i r c u i t o se muestra en el diagrama #B8000-1, el cual nos muestra el sistema con el c i r c u i t o r e l o j del sistema, de reset y h a l t , de memoria ROM y para producir l a s señales de DTACK, que son generadas a partir de logica con compuertas TTL para sincronizar tanto l a s ?señales de C S Cchip select3, que en nuestro microprocesador no esta presente, por l o que hay que generarla no solamente para un dispositivo, sino para todos los que se vayan adicionando a l sistema. Esto se l o g r a a traves de un c i r c u i t o decodificador de 4 a 16, mediante €11 cual podemos seleccionar desde el bu? de direcciones CAl7-A203, y controlar los c i c l o s mediante una l o g i c a que u t i l i z a l a señal de AS Caddress strobe>, que a su vez genera l a señal MAP. Esta señal es tomada de un decodific9dor de 3 a 8; conectadas a VCC l a s entradas de seleccion, excluimos solamente a r e c i b i r l a s señales de h a l t , reset y clock; esta ultima es tomada del €38000, d e l a señal de AS, ya que el microproces?dor efectua 4 c i c l o s de AS Ccomo rutina intern? de inicializacion3, antes d e hacer un s a l t o a l a pr,imera dirycciqn de memoria donde s e encontrara l a primera instruccion que sera l e i d a . Por eso es que $ a señal de MAP esta unida a l pi,n QD del decodificador , ya que despues de cuatro c i c l o s , se activa esa s a l i d a y se sincroniza con AS para generar l a s señales ,de CS para l a s partes a l t a y baja de l a memoria ROM del sistema. A s i mismo, es generada l a señal de DTACK, que l e indic? a l CPY el estado d e l bus en el presente c i c l o , s i los datos son validos o no en el bus; en respuesta, el microprocesador lee el b i t de DTACK y hace un "latch"Cretiene3 del dato internamente y termina el c i c l o de bus. , Adicionalmente, se implanto el c i r c u i t o de refresco de memoria para conseguir que en el controlador de memoria RAM CTlG45003, haya un c i c l o de r e f r e s c o cada vez que se genere un C S d e ROM; esto asegura UT refresco de memoria cada vez que se accese a una i n m t r u c c i o n y evitar q u e haya error en l a escitura y/u en l a lectura de l o s datos. E l sistema cuenta con dos memorias d e solo lectura del t i p o Eprom 2732A, con una capacidad de :32k C 4 k x 83, teniendo un bus de datos de 16 b i t s CROM a l t o y bajo>, haciendo un total d e 64 Kbytes e n ROM. 2.1.2. - Descripción del software. Para comprobar que el c i r c u i t o funciona como s e esperaba e n el diseño, f u e necesario cargar programas de,prueba cada vez que uQa fase del sistema se terminaba; seran descritas las ma? significativas, ya que y1 software del programa monitor, ?era descrito por separado y mas completamente en otro apartado de este reporte. 2.2. - 2.2.1. Implantación del sistema con memoria RAM. - Descripción del hardware. E l c i r c u i t o se muestra en el diagraina 68000-2. E l sistema consiste de 16 chips de memoria, dispuestos en una matriz que permite l a capacidad de a l o j a r 64 KWords, siendo esta l a capacidad total de l a memoria RAM en ,nuestro sistema. E l sistema u t i l i z a un controlador de memoria dinamica d e l a f a m i l i a Texas Instruments C TMs45003 , el cual proporci ona f unci opes de acceso ef i ci e n t e , multiplexaje de direcciones, ternporizacion de los c i c l q s y refresco para todas l a s di r ecci ones de 1as memor i as di nami cas. Este controlador opera directamente desde el r e l o j del, sistema y no necesita de c r i s t a l e s o de c i r c u i t o s de ternporizacion RC, o l i n e a s de retardo. E l c i c l o de acceso-refresco esta manejado sincronamente con el r e l o j del sistema para eliminar retardos d e ,arbit,raje y pr ob1 emas de metaestabi 1i dad asoci ados con 1a oper aci on asi ncr ona de c i r c u i t o s . Un c i r c u i t o que divide l a frecuencia del r e l o j del sistema, es usado para h a b i l i t a r l a e9trada ACR y retener l a s direcciones de l a s 16 entradas que habran de direccionar tanto a l a s columnas como a l o s renglones e n l a matriz de l a memoria CCS y REN13. Si C S es seleccionado, un c i c l o de acceso a , memoria s e i n i c i a ; l a s s a l i d a s de l a s direcciones a memoria estaran presentes en los renglones de direcciones que fueron retenidos y l a señal RAS sera habilitada CRASO o RAS1 ,dependiendo del estado de RENl ; e n nuestro, caso esta señal esta en activo bajo para limitar la condicion del c i c l o de acceso3. , Una l o g i c a de t r e s compuert.as no? genera, en base a l a s señales de p,LDS y CAS, l a seleccion de l a s columnas en l a memoria y a s i e l e g i r el byte bajo o a l t o , dependiendo del formato usado a l codificar l a s instrucciones, a l a vez de generar l a señal DTACK de 1a RAM para el microprocesador , y , a par ti r del MC68000, la señal de AS, generamos ALGCaddress latch enable>, para sincronizar los c i c l o s de lectura y escritura jun$o con ACR, dado por el divisor de frecuencia del reloj. Ademas, sumamos una compuerta COR>, mas a l sistema para e l e g i r WE a p a r t i r de R/W y RASO. , 2.2.2. -Description d e l s o f t w a r e . Para l a prueba d e e s t a f a s e , se e s c r i b i e r o n dos r u t i n a s que e s c r i b e n una palabra e n .una l o c a l i d a d d e memoria, para poder comprobar l a e s c r i t u r a por m5dio d e l o s c i l o s c o p i o . Una d e l a s r u t i n a s se muestra a continuacion. ORU P R U i DIR deooo DIR FISICA O0 O2 oí O0 O0 O4 O2 O0 íñ 06 os O0 oe oe O4 20 7c OA O5 O0 O0 oc 06 OA AA 07 :, 20 O0 í2 30 3c í4 OA A5 AS 16 OB 30 80 íe oc 60 FC Stack s u p e r v i s o r . ; Direccion de inicio ;; de programa. #oAAA,AO ; LocaLidad de MOVEA. L ; RAM a e s c r i b i r . ANDi o2 7c oe o9 10 ; Diroccion d e i n i c i o de o2 O 0 O0 OE MNEMONICOS CODIUO ; Limpia status. #2OOO,SR S i g u e : MOVE. W ; PaLabra a ; escribir ; Escribe. #oASAS,DO MOVE. W DO,<AO> Sigue BRA Esta r u t i n a d e prueba e s c r i b e el d a t o ASASh e n l a l o c a l i d a d de memoria RAM OAAAh y se mantiene e s c r i b i e n d o e n l a misma. ORa PRU2 DIR deooo DIR FISICA CODIaO o2 O0 O0 o2 oí O0 O0 O4 O2 O0 16: Ob 09 00 oe oe O4 20 7c O0 OA OS O0 oc 06 06 FE MNEUONICOS ; Direccion de i n i c i o d e ; tack s u p e r v i s o r . ;: nireccion de inicio de ; programa. MOVBA. L #fOAAAAH.AO O0 OE 07 o2 7c 10 oe 20 O0 íz O9 30 3c í4 OA AS ANDX #$2000H, MOVE. W SR ; Limpia status. #$ASASH,DO AS í6 OB so eo íe oc 32 10 íA OD bo FC MOVE. W DO, (AO) Sigue: MOVE. w <AO>,D i BRA S i g u e Esta r u t i n a d e prueba e s c r i b e el d a t o A5A5H e n l a l o c a l i d a d d e memoria OAAAAH, y se mantiene l e y e n d o s u contenido. La i n s t r u c c i o n ANDI, l i m p i a el registro d e e s t a t u s d e l procesador y mantiene a l CPU e n el modo s u p e r v i s o r . I 2.3.Implantacion hexadeci mal es. del sistema con teclado y displays 2 . 3 . 1 . - Descripci An del hardware. / E l sistema cuenta con 18 displays hexadecimales con l o g i c a y 30 t e c l a s de t i p o push-button, conectados a un controlador de teclado/display C8279 de I n t e l programable3 como se muestra en el diagrama 68900-3; el controlador r e c i b e , d e l a matriz de teclas un b i t , a traves de los pines RLO-7, despues de que l a s señales de scan CSLO-23, han decodificado a l '74138 para hacer un "barrido" e n l a s t e c l a s , y de esa manera, el controlador genera l a señal d e I R Q que es p r i o r i t i z a d a en un c i r c u i t o decodificador de interrupciones. E l controlador asocia a cada t e c l a que se seleccione, un codigo deteTminado por software y entonces se efectua o t r o "barrido" a traves de l a s s a l i d a s OAO-4 y OBO-4 para el banco a l t o y bajo d e los displays respec,tivamente, decodificando el dato a e s c r i b i r a los displays a traves de un 74138 controlado por una señal de scan a los pines de bl?nking de los, displays. La señal de C S generada por el c i r c u i t o mínimo a traves del 74154, es manejada por una l o g i c a d e compuerta. para generar l a señal DTACK del controlador, i nter vi n i endo tambi en As. Para generar, l a escritura y lectura a l o s displays y del teclado, una logica desde R/W y AS del microprocesador, seleccionan la lectura y escritura sincronizando con un f l i p - f l o p y mediante l a señal de r e l o j del sistema para generar l a s señales de RD y WR que el controlador necesita para l e e r del teclado o e s c r i b i r a los displays. 2 . 3 . 2 . -Descripción del Software. Para probar esta etapa de nuestro sistema, se escribieron diversas rutinas de prueba para programar tanto el controlador dyl teclado/display, como para manipular el vector de interrupcion asociado a l a s llamadas por t e c l a del controladrr , el cual tiene que detectar cuando s/ ha hecho una interrupcion a l dispositivo desde, el teclado y asi atender esLa llamada y correr u?a subrutina especifica; el software e s c r i t o se d e t a l l a a continuacion. E l programa consta de t r e s partes: a>I n i c i a l i zaci ón b3 Pr ogr ama pr i nci pal c3Atencion de interrupción En l a parte a3, se limpia el status y s,e habilitan l a s interrupciones; se carga el vector de interrupcion, se despliega mensaje i n i c i a l y se programa el controlador 8279. La parte b3, mantiene 91 llamado continuo de subrutinas que esperan la interrupcion y despliega el dato de entrada. La rutina de obtencion $e dato, v e r i f i c a u?a bandera y espera a qu? ocurra l a interrupcio?, l a cual activara, el vector que ejecutara l a rutina que atendera a dicha interrupcion Cparte c3. 8 , E l codigo c o r r e s p q n d i e n t e muestra a c o n t i n u a c i o n : CPU 000000 "68000. TBL arriba descrito se In "MOT1 0" HOF 000000 programa al S OOlEOOOO = D I RROM: EQU OOlEOOOOH ; D i r e c c i o n d e ROM 00000600 = DIRSUP: EQU 00000600H ; D i r e c del S t a c k S u p e r v i s o r 001E0008 = INICIAL: EQU 001E0008H ; I n i c i o d e l programa 001c0002 = DRTCDSC: EQü 001C0002H ; D i r e c de comandos d e Tec/Dis oo1coooo = DATECDI: EQü OOlCOOOOH ; OOlEOlQO = CODTEC: E W OOlEOlQOH ; Tabla de codigo de teclas 1EOOOO ' ' datos de T e c / D i s p l a y ORG DIRROM ; V e c t o r de RESET DFL DIRSUP ; C a r g a d i r e c d e SSP DFL INICIAL ; D i r e c c i o n i n i c i a l de PC 000064 ORG O04H 000064 O01 EOOEC DFL INT-TEC 1EOOOO 00000000 D I RROM: 1E0004 O01 E0008 S ; A u t o v e c t o r de i n t e r r u p c i o n ; de teclado. 1E01 QA ORG 1EOlQAH l E O l 9 A CO DFB OCOH 1E019B DO DFB ODOH 1E019C EO DFB OEOH l E O l 9 D FO DFB OFOH 1E01 A2 ORG 1E01 A2H 1 E 0 1 A 2 80 DFB 80H 1E01A3 90 DFB QOH 1E01A4 A 0 DFB OAOH 1E01A5 BO DFB OBOH 1E01 AA ORG 1E01 AAH 1E01AA 40 DFB 4OH 1E01AB 50 DFB 50H 1E01AC 60 DFB QOH 1E01AD 70 DFB 70H 1E01 B2 ORG 1E01 B2H 1E01B2 O0 DFB O0 1E01B3 10 DFB 1OH 1E01B4 20 DFB 20H 1E01B5 30 DFB 30H 9 ; Tabla de codigo d e t e c l a s 146531 0004Do 0004DO BUFFER: ORG OQDOH DFS 2 * ; L o c a l i d a d para datos 1 ; de 0004EO ORG 04EOH 0004EO FLAG: DFS 2 0004E4 CONT: DFS 2 * * entrada 2 2 ’ 1E0008 INICIAL ORG ; R u t i n a de i n i c i a l i z a c i o n AND1 #2000H, SR ; Limpia S t a t u s 1EOOOC 227COOOOOOf34 MOVEA. L RrOdQH ,A l ; Carga autovector 1EOOl 2 22BC001 EOOEC MOVE. L # NT-TEC, i C Al 3 ; d e interrupcion 1EOOl 8 207C00000000 MOVEA. L #OO. A0 1EOOl E 227C00000000 MOVEA. L #OO,Al 1E0024 4EBQ001 EOOAO JSR INICIATEC. L 1E008A 4E71 NO€’ 1E002C 207C001COO02 MOVEA. L #DRTCDSC,A0 1E0032 227C001COO00 MOVEA. L dDATECD1. Al 1E0038 3OBCOOQO MOVE. 1E003C 4E71 NO€‘ 1E003E 30BCOOAA MOVE. W 1EOO42 4E71 NO€’ 1E0044 12BCOOOB MOVE. B 1 E 0 0 4 8 4E71 NO€‘ 1E004A 12BCOOOE MOW. 1E004E 4E71 NO€’ 1E0050 12BCOOOC MOVE. B 1EOO54 4E71 NO€’ 1E0056 12BCOOOA MOVE. B 1E005A 4E71 NO€’ 1E005C 30BCOOA5 MOVE. W #OASH, C A03 ; Inhibe puerto 1E0060 30BC0098 Mow.w #OQBH, C A03 ; E s c r i t u r a en RAM/Dis 1E0064 &E71 NOF‘ 1E0066 12BC0000 MOIrE.. B 1E00BA 4E71 NOF’ 1E0008 027C2000 I N I C I AL: 10 w RrOQOH ,C A03 ; Escritura en l a dir ; de R A W D i s p l a y #OAAH ,C A03 ; Inhibe puerto A #OBH,CAl3, ; Mensaje i n i c i a l ’ B RrOEH, C A l 3 ’B E C A’ ; e n display’s d e l ; puerto B #OCH,CAl3 #OAH,CAl3, ; en d i r 08 #OOH, C A l 3 B 1E006C 32BCOOFO MOW. W 1 E 0 0 7 0 4E71 NO€' 1E0072 32BCOOAO MOVE. W 1 E 0 0 7 6 4E71 NOP 1E0078 32BCOOCO MOVE. W 1E007C 4E71 NO€' 1E007E 32BCOOEO MOVE. w 1 E 0 0 8 2 4E71 NO€' 1E0084 12BC001 O MOVE. B 1 E 0 0 8 8 4E71 NOP 1E008A 12BC0020 MOVE. B 1E008E 4E71 NOP 1E0090 12BC0050 MOVE. B 1E0094 4E71 NOP 1E0090 30BC00Q8 MOVE. 1E009A 4EF9001 EOOCO JW MONI TOR. L 1EOOAO ORG I N I C I ATEC MOVEA. L #DRTCDSC ,A0 1EOOA6 1OBC0034 MOVE. B #34H, C A03 1EOOAA 4E71 NOP 1EOOAC 1OBC0008 MOVE. B 1EOOBO 4E71 NOP 1EOOB2 30BCOOD7 MOVE. W lEOOB6 4E71 NOP 1EOOB8 207C00000000 MOVEA. L 1EOOBE 4E75 R E 1EOOCO ORG 1EOOAO 207C001 COO02 J 4 1EOOCO 4E71 I N I C I ATEC: MONITOR: #OFOH ? C A l 3 ' #OAOH,CAl> ' F A C E l 2 5 ' ; en d i s p l a y ' s d e l ; puerto A w AvOCOH. C Al 3 #OEOH C Al 3 #lOH,CAl3 #20H, C A l 3 BOH'CAl3 #OQ8H, C A03 #08HpC A03 ; 10 d i s p l a y s / e n t #OD7H, C A03 ; L i m p i a Di s p l a y ' s izq ; y el S t a t u s #OO. A0 MONITOR ; Rutina p r i n c i p a l NOP JSIZ 1EOOC8 4E71 NOP 1EOOCA 4EB9001 E01 2B Jslz DESENTR. L 1EOODO 6000FFEE BRA MONI TOR 1EOOD4 ORG OBTENDATO OBTENDATO: CLR. W ; Prog. r e l o j i n t e r n o ; a 100 KHz. 1EOOCB 4EBQ001 EOOD4 1EOOD4 4240 ; Mensaje i n i c i a l OBTENDATO. L ; Llama a r u t i n a q u e ; o b t i e n e dato de t e c l a Do ; Despliega d a t o ; Rutina que se encarga 11 - . . , A . 1EOOD6 33COOOOOO4EO MOVE. W DO,FLAG. L ; de esperar una i n t e r r 1EOOMC: 46FC2000 MO’a. W #2000H, SR ; c i o n del teclado Tsr. w FLAG. L 1EOOE6 6700FFF8 BEQ ESPERA 1EOOEA 4E75 RTS 1EOOEC ORG I NT-TEC MOVEA. L #DRTCDSC,AO ; R u t i n a de 1EOOF2 227C001 COOOO MOVEA. L #DATECDI ,Al ; de i n t e r r u p c i o n 1EOOF8 30BC0040 MOVE. W #40H, C A03 ; L e c t u r a de R W F I F O 1EOOFC 1410 MOVE. B CAO3 ,D2 ; Lee el STATUS 1EOOFE 02020007 ANDI. B m7,D2 1E0102 13C2000004E4 MOVE. B D2,CONT. L 1E0108 B43C0000 CMP. B #OO.= ; Si e s t a v a d o s a l e 1E01 OC €36000008 BNE SIGUE 1E01 1O 4EFQ001E01 24 JW . SALIDA. L 1E01 16 33FCO001000004EO SIGUE: MOVE. W # FLAG. l. L 1EO1 1E 13Dl000004DO MOVE. B C A l 3 ,BUFFER. L 1EOOEO 4A79000004EO 1EOOEC 207C001 COO02 1 E 0 1 2 4 4E73 ESPERA: I NTLTEC: SAL1 DA: atencion ; R e g r e s a de i n t e r r u p - R E ; cion ORG DESENTR CLR. W Dl ; R u t i n a encargada de 1E01 28 227C001COOOO MOVEA. L #DATECDI ,Al ; desplegar el d a t o 1E01 2E 247C001 E0190 MOVEA. L #CODTEC,A2 ; de e n t r a d a , 1E01 34 1639000004E4 MOVE. B CONT. L , D3 ; decodi f i caci on del MOVE. B BUFFER. L,Dl ; codigo c o r r e s p o n d i e n t 1 E 0 1 4 0 D5C1 ADDA. L m.A2 ; a la 1EOl42 l 2 Q 2 MOW. B C A 2 3 ,CAl3 1 E 0 1 4 4 4241 CLR. 1E01 26 1 E 0 1 2 6 4241 1E01 3 A 1238000004DO DESENTR: Si GDES: 1EO146 4243 w CLR. w 1 E 0 1 4 8 4E75 RES 12 Dl D3 tecla. por la I 2 . 4 . - Implantacion del c i r c u i t o decodificador de interrupciones y detector de errores en el bus Cwatchdog3. , Este circuit,o nos proporciona l a opcion de asignar niveles de prioridad a traves de un c i r c u i t o que nos decodifi,ca hasta s i e t e diferentes señales provenientes de diversos p e r i f e r i c o s como se desee. 2.4.1. - Descripción del Hardware. E l c i r c u i t o respectivo s e encuentra e n el diagrama 88000-4,,el cual nos muestra l a s entradas de los niveles de interrupcion, conectadas a los pines 1-7D dq un 74273 Ccircuito octal de f l i p - f l o p s t i p o D3. Este c i r c u i t o se sincroniza, Junto con el 74175 a l a frecuencia del sistema C4 MHz3; despues se conectan l a s salidas Q a las entradas del circuito 74348, , que es un codificador de 8 a 3, el cual a l a s a l i d a envía 3 l i n e a s qu. son recibidas por el 74175 Cf l i p - f l o p c,uadruple> , y mediante l a l o g i c a interna y l a señal de sincronizacion del sistema, el c i r c u i t o nos proporciona las señales de, IPLO-2 que son conectadas al microprocesador , obteniendo ?si el código del nivel de prioridad de l a s interrupciones; este codigo es comparado con el valor d e l enmascaramiento de interrupciones y con el r e g i s t r o de status. E l nivel de, interrupción quq s e conectó a l c i r c u i t o , es señal de peticion de interrupcion del c i r c u i t o controlador tecl ado/di spl ay C 82793. la del Adicionalmente, se conecta ofro c i r c u i t o que, v e r i f i c a si un c i c l o de bus en proceso F e h'a completado con e x i t o o no. E l circuito, que se implanto con un 74175, se sincroniza con AS Caddress strobe3 y E Cenable3, para producir l a señal de BERR Cbus error3; esta señal, nos indica que se ha detectado una condicion d e error en el bys. Cuando se i n i c i a un c i c l o de bus, l a s a l i d a AS es mantenida a logi,ca 9 a l o l a r g o de todo el ciclo; AS s e i n v i e r t e por el 7404 y envia l o g i c a 1 a l a s entradas D y CLR; el contador es liberado y comienza l a cuenta a traves de una secuencia binaria dada por y1 pulso de r e l o j a l a s a l i d a de l a señal de enable. Si l a duracion de DTACK activa dura hasta antes d e 10002, no ocurre un error de bus; s i n embargo, si DTACK no se r e c i b e , l a entrada BERR es switcheada a O y una excepcion de error d e bus ocurre. Por l o tanto, vemos que el c i r c u i t o watchdog observa todas l a s actividades y asegura que todos los c i c l o s de bus que s e i n i c i a n se terminen. , , Las señales de FCO-2, pasa a traves de una l o g i c a de compuertas AND y NAND, que junto con AS y Al-A3 a l a entrada de un 74138, nos entrega l a señal de W,ACvalid peripheral ?ddress> l a cual reconoce que el sistema esta trabajando en algun modo de operacion dado por FCO72. A s u vez, a l a s a l i d a de l a compuerta NAND, se toma tambien la señal para el C S con modo de inteTrupcion que es incluida a l a entrada del , c i r c u i t o 74154 a traves de una compuerta OR y junto con MAP a traves d e 2 inversores a l a entrada de G1 y G2 sincronizando con AS Cdiagrama 68000-1>. 2 . 4 . 2 . - Descripción del software. Las rutinas de, prueba ,para l a parte de l a decodificación d? interrupciones, esta incluida en el apartado 2 . 3 . 2 , ya que f u e necesario sumar est. software para lograr que el teclado t r a b a j e en modo por interrupcion. 2.5. - Diseño del programa monitor. Este ,programa fué diseñado inicialmente tqmando en consideracion direcciones v i r t u a l e s para un sistema minimo; las modificaciones pertinentes fueron hechas conforme l a acquitectura desarrollada se implantaba. El resultado no fue probado completamente por l a escasa cantidad de recursos con los que contamos para l a prueba del hardware y software, entre l o s que podemos c i tar ensambl ador es y emu1 ador es. 2 . 5 . 1 . - Estrategia de diseño. Este programa es basicamente un programa de depuración, con caracterist i c a s propias del sistema hardware del microkit basado e n f a m i l i a MC68000 de motorola. E s r e f e r i d o como un programa monitor y provee t r e s capacidades fundamentales: a> Cargar un programa en memoria RAM. b3 Ejecutar un programa. c3 A u x i l i o en l a depuración. En esta primera f a s e se ha diseñado en programa fuente, tomando e n consideración como hemos mncionado l a s c a r a c t e r i s t i c a s propias d e l sistema en donde sera implantado finalmente en memoria ROM, en codigo objeto de lenguaje ensamblador MC68000. La dirección de i n i c i o del monitor es $7C0008 E l sistema monitor estará operando en modo supervisor. Los programas de usuario serán cargados en codigo objeto desde el teclado del sistema, y estos pueden ser ejecutados por t r e s modos de ejecución: en corrida l i b r e , por puntos de ruptura y en paso a paso, logrando con esto una e f i c a z ayuda e n l a depuración de los programas. En general, el monitor permi t.e i n i c i a l i z a r localidades de memoria y r e g i s t r o s del procesador, incluyendo el r e g i s t r o contador de programa, asi como tambien permite desplegar el contenido de localidades d e memoria y r e g i s t r o s p o r el usuario. En corrida por puntos de ruptura y en paso a paso s e activan rutinas que despliegan el contenido actual de los r e g i s t r o s del procesador , lo que crea un a u x i l i o primario en l a depuración y prueba de programas d e usuar i o. Los comandos del Monitor son dados por t e c l a s asignadas para r e a l i z a r funciones especi f i cas. Todas 1as di.recci ónes y conteni dos estan dadas en hexadecimal a menos que se indique otra cosa. Los r e g i s t r o s del procesador son designados por s u s nombres simbol i c o s ostandar : Do, Di, . . ,D;, para l o s registros d e datos, A o , ~ ,. .. ,A;. para l o s reyistrcs d e direccidnes, SR para . 14 _--"I u - - w - ~ - P el registro d e estados y PC para el contador d e programa. Tabla d e teclas y su función: Tecla Codigo Función '0': '1': '2' : OAh OBh ' A ' : 'B' : 'F' : 'Sig' : ' RegDat ' : 'RegDir ': ' RegCCR' : ' RegPC ' : ' DirMem' : 'Mod': ' Li mp' : ' Pasopaso' 'CorLib' : ' Enter ' : : OFh 1Oh 11h 12h 13h 14h 1s h 1o h 17h 18h 1Qh 20h Siguiente registro Datos Direcciónes '9 9' CCR 9' Pc Memor i a Modificación inicializa contenido Corrida paso a paso Corrida Libre En t er * Programa fuente del sistema nmnitor MONMAC del microkit MK-68-00. DirRom: Iniciak EQU EQU Stksup: StkUser: EQU EQU KbDiCom: EQU EQU EW KbDiDatos: RegMdSup: BRKPNT: PasoBK: * Direccion de memoria ROM Dirección inicial del sistema monitor. Dirección de stack supervisor. Dirección de stack usuario. Direccion Teclado/DispLay comando. Direccion TecLcrdo/DispLay datos. Rutina de regreso a modo supervisor. Rutina de atención a BKPT. Rutina de paso a paso. EQU EQU Define vectores de trampa. $014H ORG Dc. L IntDivZ ORG $0241-1 Dc. L ORG Dc.L ORG Dc. L ORG Dc. L PQIOBK SO64n Inter- tec ' Vector de división por cero. Vector interrupción de Paso-Paso Valor de interrupcihn del tecl- $080~ BRKPNT Vector O de trampu en Breakpoint $OBCn RegNdsup Vector de trampa a modo Supervisor. * Asignación de c o d i g o ORG TabTec: L)c=.B Q $0450~ $00 E . B $08 $11 ORG $458 Dc. B $08 E . B E. B $01 E . B $12 ORG $460 $02 m.B DC.B DC.B ORG X . B $OA $13 $488 $03 D ~ . B $OB E . B $14 =.E $18 ORG DC.e $470 $04 E. B $OC K . B x . B ORG $480 $06 E . B $OE E . B $17 ORG $488 $07 E . B Dc.B Dc.B ORG * $15 $19 X . B 146531 teclas. $OF $20 Codigo t e c l a : ' O ' tecla: '8' tecla: RegDat ' tecla: tecla: tecla: 'f' tecla: tecla: tecla: '2' tecla: tecla: tecla: tec l a : '3' tecla: tecla: tec l a : tecla: '4' 'C' ' DirMem' 'Coriib' tecla: tecla: tecla: tecla: '5' tecla: tecla: tecla: '6' 'E' '9' 'RegDir' 'A' ' RegCCR' 'B' 'RegPC' ' Paso-Puso' 'D' 'Mod' 'Siga 'Limp' tecla: ' 7 ' 'F' tecla: tecla: 'Enter' f7C0000 Rutina de i n i c i a l i z a c i ó n de pa.rametros del sistema. Dc.L E. L ORG StkSup XniciaL IniciaL i n i c i a l i z a d i r e c c i ó n de SSP D i r e c c i ó n i n i c i a l d e l PC JSR JSR IniRegUa Monitor JMP END ORG * * Inicializa tec lado/display IniTec/Dis Fin de Inicial inineguo Inicializa contenido de l o c a l i u d e s asignadas a los regis ros de datos, direcciónes, CCR y PC para el usuario. IniRegUa: RopitíP. MOVEM. L A o , -C S s p 3 MOVEA. L #0400x, Ao Preserva contenido de registros. Carga dirección de registros. CLR. L MOVE. L CMP. w %LE Palabra inicial a registros. Escribe I& incrementa a l sig. Continua inicializando hasta terminar. Reestablece ambiente. Do Do ,C A03 + #0444n, A0 Repitie MOVEM. L CSSP>+,Ao RTS END ORG * * * RESET JSR DocMenln JSR ObtenDato TocLa,ih MOW. B MOW. B JSR * Monitor R u t i n a principal que se encarga de recibir y asignar el comrrndo seleccionado por el usuario. A l terminar La opción deseada el programa regresa a esta parte del monitor. Monitor: * Finaliza IniRegUs Inicializa perifericos. li&m a rutina de Mensaje inicial. D0.k AfaigCorn Monitor BRA END Comando- Princ ORG AoigCorn R u t i n a que atiende L a petición de comollsdo asignando l a correspondiente por llamada. $11X,Dí Si tecla = 'RegDat' SaLta atención comando Si tecla = 'RegDir' Salta atencibn comrrndo Si tecla = 'RegCCR' Rutcorn- í $12x.Dr Rutcorn- 2 $13w,Dí Rutcorn- 3 $14x,Dí Si tecla = 'RegPC' Rutcorn- 4 Si tecla = 'DirMem' $15X,DL Rutcorn- O $16X'Dí Si tecla = 'Mod' Rutcorn- 6 Si tecla = 'Limp' $17n,DL Rutcorn- 7 1'7 I I i 1 CMP. B $18w,Di BEQ Rutcorn- 8 C W .B $1QH,h BEQ Rutcorn- P JSR TerAoig RegPatom Tor Aoig RogDiroc Ter Aoig JSR Rutcorn- 2: JMP JSR JMP JSR Rutcorn- 3: Rutcorn- 4: RegCCR TorAsig Reg- PC TorArig JMP JSR Rutcorn- 5: DirocYern Tor Aoig iwodifica TorAoig JMP JSR Rutcorn- 6: JMP JSR Rutcom- 7: Rutcorn-8: Rutcorn- p: T e r Asig: . Limpia JMP JSR JMP JSR RTS END TerAsig PcuOPamO TerAmig CorLibro FinaLiza A s i g n a comrrndo. DoeYonIn ORG * Si tecla = ’CorLib’ Error JMP JSR JMP Rutcorn- 1I Si tecla = ‘ P a s o P a s o ’ Despliega mensaje inicial. DeoMonIn MOVEA. L Meno-Ini.-C A73 @OH, -C A73 MOW. B MOW. #MAH, -C A73 Mensajes JSR #8, A7 SUB. L Dirección de mensa3‘e Q ser Escritura en la dir O0 de R A M d i s p inhibe puerto A desplegado inicialmente. V a c i a el SSP RTC ORG *t * Rutinu que espera de entrada. ObtonDato: QbtenDato CLR. w MOVE. w MOVE. w EoporQ: TST.W BEQ JSR interrupcion del teclado para obtener un &to UM Do Do’FLcrg #2000x* SR FLag Espera TabTocLae RTS END ORG Finaliza ObtenDato Intor- Tec * Rutina que atiende interrupcion de teclado, y obtiene un d a t o del m i s m o ComocnaO de lectura de R A M FiFO Lee el S t a t u s del 8279 Verifica que hay datos a Leer Si FIFO vacio no lee Leer: Regresa de atencion de interrupcion. Final i z a Inter-Tec ORG * TabTecLaa Rutina que obtiene el codigo asignado a cada tecla pulsada. TabTedas: mVEA. L MOVE. LEA Carsa direccion de tabla de teclas Obtiene direccion de tecla OCAi,Do. ~3 ,A4 Obtiene codigo correspondiente. TabLaTgbcLCr0,h B TecLa,h RTS ORG * RegDatoo Rutina que atiende operación sobre registro de datos de usuario. RegDatoo: MOWM.L MOVE. MOVE. JSI? B MOVEM RTS END ORG * Preserva contenido actual de reg. D i , A i Di &DAW, -C A73 Carga mensaje a desplegar. #1 ,BanDatDi Pone bandera de registro de d a t o s . Oper- Regiotroo Llama rutina que opera en registro. C A73 + ,&/Ai Restablece contenido de reg. Di, A i Di/Ai,-CA73 CLR. v Final i z a Regktos. Reg- Direc Rutina que atiende operaciónes sobre registros de direccidnes de usuclrio. RogDirec: MOVEM CLR. w MOVE. B MOVE. B JSR MOWM RTS END ORG D í / A í , -C A73 Preserva contenido actual. Di &e, -C A7> #í? ,BanDatDi Oper- Regiotri>a C A73 + ,Di/Ai Carga mensaje a desplegar. Pone bandera de reg. de direcciónes Llama rutina que opera en registro. Reestablece contenido. Final i z a RegDirec Reg- CCR 19 * R u t i n a de operaci6n sobre registro CCR de usuario. Do-Dz/Ao-Az/CCR, -C A73 P r e s e r v a contenido de registros. KbDioCom.AO KbDioDatoo,Aí r;toD7w,C Ao3 #OAAH,<Ad &OH, C A03 #OCCH, o< Aí3 . #OA~H,(:AO~ #OQIAi, C A03 # 4 4 0 ~ Az , <A23,Dí Limpia el statzls/RAM display Inhibe puerto A Escritura en direc O0 de R A M Inhibe puerto B Escritura en dir OD de R A M dis D i r memoria CCR Obtiene contenido actual de CCR y Lo despliega. Byte atto Corre 4 b i t s a La izquierda Byte b a j o Obtiene comando de teclado &,CAL) #4,Dí h,CAí3 ObionDaio Toda,& ah, C A03 #16H.h Si es z = i entonces modifica contenido ac tuaL Otro si es igua~ Limpia contenido YodRgCCR 11$17,m #ctwrL. otro, termina operación. LimpCCR Term- CCR a BandErr &DH, C A03 Obtiene nuevo dato d.e tecLado ObienDaio TecLa,b #20H,Do Si es 'Enter' termina Term- CCR VeDa: H e x #1 ,BandErr Otro verifica que sea dato hexdec si IZO termina operacidn Term- CCR D0,h Dí,CAí> #4,h D0,h Dí,CA2:, Repiií7 #O, CCR DespLiega dato nuevo de entrada Corre a ¿a izq. en cuatro bits. Inserta nuevo dato en medios byte Con t i nua Leyendo . Limpia registro con O 0 #o,cAz3 C A73 + ,D~-&/AO-AZ/CCR Res tab Lece Finaliza Reg C€R * * Rutina para modificar el contenido d e una direccion de memoria Compl: Comp2: EQU EQU ORG SOOFFFFFFH ~OOOOFFFFH DtreoMem regis t ros. DirecYem: Ropitii MOVEM. L MOVEA. L MOVEA. L CLR.L CLR. L B ME.B MOVE. w MOVE. B LSR. w MOVE. B MOVE. B RopitiO JSR mVE. B DO-D5/Ao-A2,-C A73 Preserva registros en stack KbDinCom,AO KbDinDatoo,Ai Dz Band- Err #OD7x, C A03 # O m C A03 #OEODx, Do DO'CAi3 @,DO DO'CAi3 &Ox, C A02 ObtenDato Limpia status/RAM display Inhibe puerto A Despliega 'DE' Despl i ega by te bajo Corre 8 bits a La derecha Despliega byte alto Escritura en dir 00 de R A M dispLay Lee dato de entrada TocLa,ib #1SX,Do Si tecla = 'DirMem' entonces saLta con dirección inicial Otro verifica que sea ?xexa.decimaZ Si hay error regresa a leer Dir- I n i VoDaiWox #I 'BandErr Repitií DO'Di Di'CAi3 Despliega entrada Corre a la izquierda cuatro bits corre a la izquierda un byte Carga nuevo byte Obtiene solo medio byte Actualiza nuevo contenido regresa a seguir leyendo Carga dirección iniciaL #4'Di Di'Dz #4,Dz #cornp2,Dz RopitiO -.A2 Dz,Ds @8n, C A03 #OASIS, C A03 CAZ2,ck #4' D5 ck'CAi3 Escritura en dir 08 RAM display ínhibe puerto B Despliega contenido actual DespL iega Corre 4 bits a la derecha #4,& # 'Ds l #oo,Ds Continua& Carea contenido de memoria CAZ3 'Dz Repiti2 Band- Err ObtonDaio Lee nuevo dato Tecla,% DO'Di # 2 0 W ' Di Si tecla = 'Enter' entonces termina de modificar Otro si tecla = 'DirMem' entonces obtiene siguiente direc Otro si tecla = 'Limp' entonces 1 impia contenido Otro verifica que sea hexadecimal 5i b y error de entrada reSresa a Leer TorDirlle #lSH*Di SigLocYo #17x,Di LimpDir VoDatHex #1 BandErr RopitlZ & 8 ~C A03 21 MOVE. B La.B LSL. L DA,CAd #4,h #8,h MOVE. B h,D2 #4,Di? LSF?.L AND. L SigLocMo: Continue: BRA MOVE. w MOVE. L #1 ,Ik BNE BRA Continua MOVE. L MOVE. B MOVE. B * MOVEM. L RTS END Desp l ie g a m,m Repitis #OO,CA23 rrcOA51-1,< A03 #OiSi"i, C A03 C A73 + ,Do-Ds/Ao-A2 Limpia contenido de memoria Inhibe puerto B Limpia puerto A, status/RAM dispLa Rest abLece registros. FinaL iza modifica memoria Rutina de atención a ej'ecución de programa de usuario en corrida Libre. ORG CorLibro: MOVE. w JSR MOVE. w CorLibro SR, - C s P 3 SaLtciPc CSP3+,SR RTS END * * Inhibe puerto A #4,b SUB. B c m .B TerDirMo: D2,<A23+ h,Ds &OH, < A d B MOVE. B &AA€€, < A03 MOVE. B #4, Ik Ds,<Al3 MOVE. B LSR. L LimpDir #~ornp~,L);L Repiti2 otro despLiega entrada Corre a La izq. cuutro bits. Corre a La izq. un byte Inserta nuevo byte y corre cuatro bits a La derecha actuaLiza nuevo contenido Regresa a seguir Leyendo G u a r d a nuevo contenido y obtiene Preserva contenido actuaL del status Llama a conceder La dirección de2 PC ReestabLece registro de status. Finaliza CorLibre Rutina que concede La dirección de inicio de programa usuario aL registro PC para su ejecuci6n. S aLt crpc: MOVE. L MOVE. L JMP TRAP RTS END d< pc3 ,-< -3 &O,SI? C DirMomPC> #1 b Preserva PC en s t a c k supervisor. Concede 01 estado usuario <bit S=O> Salta a programa usuario. Regreso a estado supervisor. Finaliza saLto a usuario. , I i I1 I * * Rutina de atención a comLTnd0 de ejecución de Paso-Paso, vector' de interrupción por Trazo. ORG PaaoPaoo: MOVE. w JSR MOVE. w MOVE. w JW TRAP RTS Concede ejeczrc i6n RoootubLoce e t a t w Csp>+,SR Finaliza Paso a Paso EjecPaeo ¿C PC> -c usP3 #8000, SR C DirMemPC3 # 5I END * * Preserva dlreccidn de retorno Bit de status T = 1 , S = O A programa de usuario Trampa de regreso o supervisor Finaliza ejecucidn de paso Rutina que opera en cualquiera de los registros de uso general <Registro de datos o direcciones) ORG Oper- Rogintro: MOVE. L Oper- Rogiotroo C A73 +, Di KbDioDatoo,b Obtiene mensaje a desplegur Dirección de tec Lado/display. BandErr h'CAí3 Despl iega mensaj'e Lee numero de registro. Llama a verifica entrada Verifica si hay error de entrada. si error regresa a leer ObtenDato Vernato BandErr Repiti Tecta, ih D0.h Preserva registro de entrada Despliega nwnero de registro. Di* c A í 3 ObtenDato - 2 0 , D0 Si tecla = 'Enter' continua otro lee nuevo registro Despliega registro seleccionado Lee comLLnd0 de operacidn. Sf 'Enter' termina operación. Repit4 R e p i t í :i Repit6 I Preserva status en stack supervisor Ejecpaao ORG MOVE. L I t I SR. - C s P > Rutina que concede le ej'ecucibn de Paso a Paso EjecPumo: i PcLo0Pcro0 RTS END * que utiliza el DeoConRg ObtenDato #CR'DO Term- Opera #$16*Do YodConRg #$17*h L i m p i a - Cont #$lO,r)Q Satis #1 *Di #@,Di 23 Si tecla = 'Mod' entonces salta a modificar otro si tecla = 'Limp' entonces salta a limpiar registro otro si no t e c l a = 'Sig' entonces salta a regreso otro obtiene siguiente reg. I 1 4 I 1 cw. B BNE MOVE. B -at&* Scrtt3 Term- Opera -* BRA &'Di l r p L C 0 . 1. BRA RTS END Repit3 Finaliza operacibn en registros. MOVE. B Teda, m.B JSR TerVer TerVer Error Otro error Dz BEQ . . '7'. Carga dato de entrada en 02. Corre medio byte a la derecha. Compara c o n cero 02 Si igual, dato es de * O ' . . . '7' & #3,Dz LSR. B RTS Rutina q u e verifica que el dato de entrada sea un digito hexadecimul. VeDcrtHsx ma.B BEQ TerVoDh Error JSR TerVoDh Carga dato de entrcrda en D2 Corre medio byte a La derecha. Compara c o n cero O2 Si igual, dato es hexadecimal Otro error Do*#4,Dz Dz L s .B TST.B * saM4 Rutina que verif ica que el dato de entrada este entre ' O ' . VerDato * 146531 # 8 ,Di RTS Rutina que envia mensaje de error Error Carga direccibn del mensaje de error Carga comando de limpiado n de inhibir puerto A L l a m a a desplegar 'EFF' = ERROR P o n e bandera de error. 9, * Rut ina que despl iega mensajes. Yeniajos ORG Wonrajor L-Dz/Ao-A2, --C A73 MOVEM. L MOVEA. L A7,Ao MUVEA. L #1 Axc sp> +, A2 MOVE. B Csp3+,Dí @VE. B MOVEA. L MOVEA. L MOVEA. L MOVE. B MOVE. B MOVEQ. B MoWQ. Sig- Des C m .B BEQ MOW. Csp3+,Dz Ao ,As, KbDinCom,Ao KbDisDator,h Envia primer cOmQnd0 Envia segundo comando Carga codigo de f i n de mensuje. &,A0 Dz,Ao e o n , Dz #o,& Si TLO es f i n de mensaje continua otro CQSO termina Despliega por byte CA23 ,Dz Term- Mons B Salva registros en stack superv. Salva direccion actual de SSP Carga direccibn de mensa3.e Obtiene comando de escritura Obtiene comando de inhibicion Regresa direccion & SSP CA23+,Di 24 Term- Meno * * MOVE. B BRA MOVEM. L RTS END Sig- D e s CA73+,Dí-B/Ao-h Envia mensa3'e Continua desplegando Restablece registros. Fi na li z a mensaj'es Rutina que despliega el contenido de un registro general de uso en modo usuario. ORG DeoConRg: DeoConRg MOVEA. L MOVEA. L MOVEA. L ma.B MOVE. B ASL. B cw. B Dir- Adr BNE MOVEA. L JMP MOVEA. L MOVEA. L MOVE. B ma.B Sigue Ai, -C A73 KbDioCom,AO T a b T e d , A2 Carga dirección de registros Despliega en l a dir 08 de R A M disp ínhibe puerto B Mu1tiplica operando por cuatro. Verifica si es a reg. de &tos. C A03 #ASH * C A03 -8, #2* Dí #i ,BandDtDr Dir- Adr OCh,Dí.B>,& Si cierto obtiene direc. reg. sigue 2 0 C h . h . B3 A?, KbDiaCom,AO #98~ C A03 , #ASH, C A03 CAS3+,Dí Dí,CAí3 MOVE. w CAS3+,Dí MOVE. w Dí,CAd MOVEA. L C A73 +, Ai RTS END MOVE. w mwp. w ORG * Di,CAi3 Otro obtiene registro de direc. Despliega dir 8 R A M display ínhibe puerto B Carga contenido de registro. Finaliza despliega registro ModconRog Modificación al contenido actual de un registro de &tos ModConReg Repitis MOVE. L -CA23 ,Ds MOVE. L CLR. B h,Db JSR cm. B BEC! JSR cm. B BNE JSR saltal. TerModRo USUCIX~Q o direcciónes. Qbtiene contenido actual de registro BandErr ObtenDato Lee nuevo &to Si 'Enter' termina modificación #SOH, Do TerModRe VeDatHex # ,BandErr l SaLtaí DoepConReg RepitíS Verifica nuevo &to hexadecimal. Si es correcto s a l t a otro sigue desplegando el mismo y regresa. BRA MOVE. B Do,CAI3 LSL. L #4,b ADD. L D0.h BRA Repiti5 MOVE. L b, MOVE. L DS,CA23 Corre contenido actual para nuevo dato, por medios byte. regresa o leer siguiente &to. Actualiza nuevo contenido. 25 RTS END * * Termina modifica contenido registro Rutina que Limpia el contenido de un registro de datos o direccio es especificado, desde l a r u t i m que 10 esta solicitando. ORG Limpia MOVEA. L ASL. E cm. B BNE MOVEA. L LimRegA TermLimp JMP MOVEA. L MOVE.L M0vE.L MOVE. w Limpia C a r g a dirección de registros vsvario #Q~QOH, A*. e* Di Multiplica operando por cuatro. # ,BcrnDcrtDi I Verifica si es referencia a registro de datos si cierto obtiene registro LimRogA OCAi,Di. n3 ,Az TermLimp 20CAí,Di. s3 ,Az #OO,CAz3 otro es referencia a reg. direc. L i m p i a contenido del registro. cA23,Ds C h 3 ,CAo3 RTS * END ORG * * Finaliza rutina de limpia. Reg- PC direccio'n inicial del progruma de usuario. L a modificacio'n sera cargada en l a localidad de memoria O4OOh asi#mxda al registro PC. Reg- PC MOVEM. L MOVEA. L CLR. L MOVE.L Repitie JSR MOW. B -cw. B Term- PC Do -Dz/Aí, -C A73 #O444H, Ai Dz CAí3,Dz TecLa,ih #2Q, DO BEQ Term- PC JSR VeDaiHex TST.e BNE Ban¿Err Repiti0 M0VE.B Do,& LS1. L OR. e BRA MOW.L * QbtenDcrto Repitie Carga localidad del registro PC Obtiene contenido actual del registro PC usuario. Obtiene nuevo dato. * Si 'Enter' entonces finaliza * modificacio'n del PC. * Verifica que el dato de entrada * sea correcto. #4,Dz Di,& * * * * Dz,CAí3 * MOVEM. L C A73 +, Do-Dz/Ai RTS END * * Corre a La izquierda contenido actual para introducir el nuevo dato Guarda nuevo contenido del PC * Finaliza Registro PC * * Rutina de atención a comando de corrido por bloque, generada por U M instracción de BKPT CBreakpoint>, y atendida por vector de interrupción No.0 ORG MOVE. B MOVE. B MOVE. B Monoajoo ObionDaio Toda, MOVEA. L MoVEA. L MOEA. L JSR JSR EopCom: cm. B BEQ MOVEQ MOVE. B M0VE.e contenido de registros usuario Si tecla = 'TecDat* despliega solo registros de datos. #11H,Do DerDaiBK #6,h otro despliega registros dirección #QOx,CAo3 #OAAx,CAo3 MOw.B #Oh,c&> M0VE.e CAí3 #OFFw,Da NOP DBRA DBRA LoopReií: cw. B BEQ CW. B DooDaCBK: dsspl iega 'AD' despliega numero de registro. contenido de registro Espera a despLegar siguiente regis tro 11 Da,Loopneií , I)r LoopDir Obtiene siguiente registro. Si tecla = 'Tecüir' solo despliega registros de direcciónes Otro despliega registros de direcciónes y datos. #12H,Do TermBK #llX,Do BNE ObiDai ADD1 #lC,CAz> MOVEQ #7.& MOVE. B #QOx,CAo3 MOVE. B #OAAW,CAo> MOVE. a #ODAn,CAí3 MOVE.B W,CAí> MOVE. B &8w, C A03 MOVE. B #OA5x,CAo3 ObtDai: LoopDai: LOOpRet2: TormBK: * * en display Espera comando para desplegar MOVE.B &,CAí> M0VE.t CAZ>+, LoopDir: MOVE. L MOVE.B NOP CAz>+,CAí> #OFFx,Da DBRA DBRA MOVEM. L RTE END DS,LoopRoiZ Despliega ' D A ' *s numero de registro despliega contenido de registro , I)r LoopDai C A?> + ,Do-ih/Ao -A6 Obtiene siguiente registro rees tab l ece regis t ros Finaliza BUPT Rutina de servicio de interrupcibn por trampa para el regreso a modo supervisor y guarda registros de w u a r i o en memoria. ORG InTrmpíS => MOVE. L A6, -c Preserva información de usuario. MOVEA. L #RogUo,A6 Direccidn de registros de usuario MOVEM. L D ~ - D ~ / A o - A ~ , C A ~ > + G u a r d a registros de WU-¿O InTrmpi5: - 27 - I BRKPNT Do-D;I/Ao-Ao, --CA73 Salva registros en stack supervisor A7,Az A 2 c o w apuntador de stack local KbDisCom.AO Mensaje a desplegar de BKPT MonBKPT,-c A72 Limpia display #OD7x,CAo3 Inhibe p e r t o A #OAAW,CAo3 MOVEM. L BRKPNT: ' _L I I MOVE. L ADDA.w MOVE. w AND1 M0vE.w cP>+,cA6>+ #04,A6 CSP3+,CA6>+ #S7FFF,SR SR,-csP> RTE END * &tina InTDivl;: ORG MOWZ. L INLDiv5 SFFFF ,Do Di Bid: MOVE. L TerDiv5 #7FFFx, Do RTE Tablas d& mensajes de despliegue ORG Wens- Ini: E.B Yen.- E.B E. B Dc. B Dc.B END ORG Mono- Err: ini #OFn Dc. B E. B Dc. B Dc. B Dc. B ORG * * * * * Pone Do en Negativo Si Di < O entonces Termina Otro pone Do como positivo Finaliza vector division por cero. END * Inserta modo supervisor Reestablece el sistema en modo supervisor' y carga en PC dirección de regreso. Finaliza servicio de interrupción. vector de interrupción de división por cero. TST.L TorDiv5: Guarda registro CCR usuario #oh nOCn #~EH #O1w #20W Mensaje inicial al encendido y en regreso a Monitor: F A C E 1 ' Codigo de fin de mensaje Finaliza t a b l a de mensaje inicial nene- Lrr #OEH #OFw Mensaj'e de error ' E F F ' #OFw #SOH IniToc/Dio Rutina que inicializa el controlador de Teclado/Display para operar en los siguientes modos en forma normal: - Frecuencia interna de tiempo de "scan" de teclado: í O O W z . - í 6 display's de caracteres a 8 bits. entrada pur l a izquierda. - Codigo de blanqueo en "todus ceros", limpia R A M display, FIFO s t a t u s . IniToclDie: MoVEA. L MOVE. B MOVE. e - MOVE. e MOVEA.L END #XbDicom,Ao #34n,C Ao3 #08n, C Ao3 #OD7n,íA d #OO,Ao Programa reloj* interno a 100 KHz. 16 d i s p l a y s , entrada izquierda Limpia display/Statzts/ Fin de IniTecjDis 146531 3. . . Resultados. E l d e s a r r o l l o ,de un ,sistema como el que hemos presentado, implica l a depuracion continua del software e s c r i t o , y hacer prueba y error de cada una de l a s partes para asegurarse que el softwaTe escrito haga funcionar el diseño del hardware; esto seria inmediato contando con l a s herramientas adecuadas para t a l f i n , lo que no sucede e l es$e caso. E s necesario contar con buenos ensambladores y mas aun, de un emulador para probar el software directamente sobre el hardware y n o hacer de un t r a b a j o interesante uno totalmente tedioso. 3.1. - Problemas enfrentados def i c i enci as. en la , implantacion, limitaciones y Como c a r a c t e r í s t i c a corn&, hubo que ajustar l a s señales d e acceso y sincronizacion de casi todos los c i r c u i t o s , ya que el diseño presentaba el iTplementar dichos ajustes cada vez que alguna rutina no funcionaba o alguna señal c o , ) CS o AS o IACK no se presentaba, debido a los tiempos c r i t i c o s de acceso de los dispositivos. La f a l t a de herramienta, l l e v ó a hacer m;ltiples pruebas del software y por tanto a d i f i c u l t a r mas el d e s a r r o l l o del sistema. Cabe señalar la importancia inclusive de un buen presupuesto para cualquier desarrollo, ya qye en algunos casos s e usaron partes ya Ysadas, lo que proyoco problemas de f a l s o s contactos, y el encontrarlos d i f i c : u l t o mas el trabajo. 4. . . Concl u s i ones. Como f i n a nuestra exposicion del t r a b a j o efectuado, podemos decir que l a vision de un sistema basad? en dispositivos i ntegr ados , el desar r o1 1o y 1a combi nací on de di fer entes dispositivos para 1,ograr un buen dis/eño, se obtienen con una perfecta documentacion y familiariazacion con cada uno de ellos; el aplicar ips conceptos de cursos anteriores sumados a una buena comprension del sistema y herramientas adecuadas, hacen del diseño del hardware y software de sistemas un buen objetivo a seguir. 5...Bibliografía. MC68000, Advance I n f or mati on The TTL Databook for desi g n Engi n e e r s Second E d i t i o n . C r o s s 16 U s e r s Manual P . O . B o x 384, B e d f o r d Nova Scottia Canada. The Motorola MC88000, Microprocessor Family, Assembly Language, I n t e r f a c e Design and System D e s i g n . School of S c i e n c e s and T e c h n o l o g i e s U n i v e r s i t y of Houston, C h a r l a k e P r e n t i c e - H a l l I n c . , New J e r s e y . TMS4500A Dynamic RAM c o n t r o l l e r User ’ s Manual , Memor y S u p p o r t , Component Data Cata1 og, 30