32
Contenido Editorial Desarrollo de Programas Residentes en base a un TSR genØrico Ing. Eduardo Vega Alvarado Aplicaciones del procesamiento grÆfico y de imÆgenes: La realidad virtual. (Introducción) M. en C. HØctor S. García Salas Temporizador Programable en base a un dispositivo MAPL128 Ing. Aquilino Cervantes Avila AnÆlisis, Diseæo y Construcción de un Control Digi- tal Directo usando la Computadora IPN E-32 M. en C. Romeo Urbieta P., M. en C. Teodoro Alvarez S. Alumnos: Martín S. Dominguez GonzÆlez., Claudia Lara Vivas, Manuel SÆenz SÆnchez y Raymundo TØllez CortØz El impacto de la nueva generación de Microprocesadores en la Ingeniería de Software M. en C. Miguel Angel Partida Tapia 1 3 9 12 28 18

Polibits vol. 13, 1994 - polibits.gelbukh.com · 42 vid_act bd 0 ;bandera de int 10h activa 25 activo db 0 ;tsr en ejecución 26 off_indos dw ? ;segmento y offset de la bandera

  • Upload
    ngohanh

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Contenido

Editorial

Desarrollo de Programas Residentes en basea un TSR genéricoIng. Eduardo Vega Alvarado

Aplicaciones del procesamiento gráfico y deimágenes: La realidad virtual. (Introducción)

M. en C. Héctor S. García Salas

Temporizador Programable en base a un dispositivoMAPL128

Ing. Aquilino Cervantes Avila

Análisis, Diseño y Construcción de un Control Digi-tal Directo usando la Computadora IPN E-32

M. en C. Romeo Urbieta P., M. en C. Teodoro Alvarez S.Alumnos: Martín S. Dominguez González., Claudia Lara Vivas, Manuel

Sáenz Sánchez y Raymundo Téllez Cortéz

El impacto de la nueva generación deMicroprocesadores en la Ingeniería de Software

M. en C. Miguel Angel Partida Tapia

1

3

9

12

28

18

VI 1 13 polibits 1

Editorial

Editorial

Cuando se oye hablar de estadísticas acerca de la investigación que se lleva a caboen cada uno de los países del mundo, haciendo referencia a las disciplinascientíficas y tecnológicas y considerando desde luego el número de investigadores

participantes, se observa que estas cifras son manejadas principalmente con finespolíticos. Esto muchas veces no tiene mayores alcances puesto que la mayoría de laspersonas que las aplican no se encuentran inmersas en los medios científicos, y por lotanto su objetividad es dudosa.

Lo cierto es que si se comparan los niveles de investigación científica y tecnológicade los países con mejores condiciones económicas y sociales, con los de México, seaprecia que existe aún un largo camino por recorrer no sólo para disminuir la dependenciatecnológica, sino también para equipararse con los países del �primer mundo�, por locual hay que tener muy presente que de alguna manera la dependencia tecnológica deun país refleja su falta de investigadores, calidad de la investigación y desde luego la faltade unificación a nivel nacional de criterios acerca de la investigación.

Así pues, hay que hacer frente al hecho de que en la actualidad las fronteras mexicanas,económicamente hablando, se sitúan hasta donde nuestra tecnología es capaz de sosteneral país, es decir, la importación de la tecnología será aún más grande si no se establecendiferentes políticas y métodos para aumentar tanto los Centros de investigación nacional,como la calidad de ésta última. Algunas políticas a instrumentar pueden ser: el contarcon un eficaz sistema nacional de intercambio científico; la disminución de políticasburocráticas en el otorgamiento de becas para la realización de estudios de posgrado,tanto a nivel nacional como internacional y en la asignación de créditos para lainvestigación; el aumento de la calidad de enseñanza a nivel superior, buscar conveniosreales con la industria; así como reforzar el intercambio científico y cultural con otrospaíses como Japón, Francia, Alemania, todo esto con la finalidad de que en un medianoplazo, México pueda dejar de ser un país maquilador y formador de técnicos.

2 polibits 1994

Editorial

Ahora bien, parecería repetitivo el hablar de este tema, pero es conveniente tomarmuy en cuenta lo anterior en la elaboración de los planes de desarrollo económico, socialy educativos principalmente, para el futuro inmediato, que permitan despertar unverdadero interés por la investigación. El Cintec es consciente de esto, y ante todo buscasu superación no sólo desde la calidad de la educación que proporciona, sino tambiénde los niveles correspondientes a su planta docente e infraestructura.

VI 1 13 polibits 3

Desarrollo de Programas Residentes en base a un TSR genérico

Desarrollo de ProgramasResidentes en base a un TSR

genéricoIng. Eduardo Vega AlvaradoJefe del Departamento de Laborato-rios Ligeros del CINTEC-IPN

l presente artículo inicia unaserie de trabajos sobre tópi-cos relacionados con pro-

gramación, incluyendo tanto al de-sarrollo de algoritmos o rutinas es-pecíficas como la interacción deestos programas con el sistemaoperativo.

Introducción

Cuando se desea ejecutar unprograma en el entorno del sistemaoperativo MS-DOS (M icroSoftDisk Operating System), general-mente el cargador de programasdel sistema busca espacio libre en lamemoria para colocar el códigosolicitado, transfiere control al mis-mo y al terminar el procesamientolibera el área de memoria asignadaa dicho código [3]; sin embargo,existe cierta clase de programascuya ejecución no incluye esta últi-ma etapa. En esencia, todo progra-ma que permanece cargado enmemoria después de que terminasu ejecución (incluso aún cuando seinicie la ejecución de otro progra-ma), se denomina TSR (Terminateand Stay Resident, termina y per-manece residente) [4].

TSR Genérico

El principal problema a enfren-

tar cuando se escribe un programaTSR es el proporcionar al usuario laforma de activarlo en el momentoque lo desee; esto es obvio, dadoque aunque al código originalmen-te en memoria se le adicione unasección extra, esta porción no seejecutará si no existe forma deinvocarla. No basta únicamente conasignar un área permanente enmemoria para la colocación delTSR, sino que es necesario ademásasegurar algún medio para transfe-rirle control. En forma genérica [2][4], un TSR consta de tres partesprincipales, a saber:

1. El programa o rutinas que sedesean ejecutar.

2. El conjunto de instrucciones quecoloca al TSR en memoria einstruye al sistema operativopara que lo considere residente(Inicialización).

3. El código que implementa la víade acceso o de ejecución alTSR.

La distribución usual de estaspartes en un programa real se mues-tra en la figura 1.

A continuación se desarrolla unprograma ejemplo, con el cual seexplicará el proceso de generaciónde un TSR, indicando además quésecciones del mismo correspondenal modelo genérico y cuáles sonpropias de este caso específico. Laejecución del programa genera un

reloj, el cual aparece en la partesuperior derecha de la pantalla des-plegándose en forma digital; el lis-tado se muestra en la anexo 1. Esteprograma ejemplo fue probadocompilándolo con Macro Assem-bler R [1], MASM, versión 5.1 deMicrosoft, Inc., aunque puedetambién manejarse sin cambios conTurbo Assembler R, TASM, deBorland International, Inc.

Zona de Datos del Progra-ma

Normalmente, los TSR comien-zan con una instrucción de salto

Figura 1

E

4 polibits 1994

Desarrollo de Programas Residentes en base a un TSR genérico

hacia la zona de inicialización delprograma, reservando en la parteinicial del segmento de código unazona para manejo de las estructu-ras de datos requeridas por el pro-grama. En el programa ejemploesta zona de almacenamiento abar-ca las líneas 11 a 42.

Inicialización del TSR yAcceso al Programa Resi-

dente

La sección correspondiente a lacolocación en memoria del progra-ma y a los cambios necesarios parainstrumentar una vía de acceso almismo se sitúa como la parte finaldel código, dado que su ejecuciónse realiza solo una vez; de estaforma, en el momento en que larutina queda instalada esta área sedescarta. En el listado anexo, lainicialización y colocación ocupalas líneas de código 222 a 275;como puede observarse, primera-mente se interceptan o cambian losvectores de las interrupciones quesirvan como vía de acceso a larutina residente [2], o cuyo funcio-namiento pudiera ser afectado porla misma (servicio 25h, int 21h).También se conservan las direccio-nes originales de las interrupcionesempleadas (servicio 35h, int 21h),con el fin de permitir la invocaciónde los servicios correspondientes aesas rutinas, así como la desactiva-ción del TSR en un momento dado.

Para el caso del ejemplo semanejan como vías de acceso lasinterrupciones 1Ch y 28h [1] [2];ambas rutinas se producen auto-máticamente 18.2 veces por se-gundo, siendo generada la primerapor la máquina y la segunda por elplanificador (scheduler) del siste-ma operativo. Así mismo, se modi-fica el vector de la int 10h (manejode video); esto debido a que laejecución del programa en forma

1 ; TSR que Genera un Reloj en Pantalla2 ; Programó: Ing. Eduardo Vega Alvarado3 ;———————————————————--------------------4 .model small5 .code6 org 100h78 Inicio:9 jmp Instalar1011 ; Area para Datos del TSR12 ;————————————13 ; Vectores de interrupción originales14 i1C label dword ;int 1Ch15 off_i1C dw ?16 seg_i1C dw ?17 i10 label dword ;int 10h18 off_i10 dw ?19 seg_i10 dw ?20 i28 label dword ;int 28h21 off_i28 dw ?22 seg_i28 dw ?2324 vid_act db 0 ;bandera de int 10h activa25 activo db 0 ;tsr en ejecución26 off_indos dw ? ;segmento y offset de la bandera27 seg_indos dw ? ;de dos activo (indos)28 err_act dw ? ;offset de la bandera de error crítico29 cursor1 dw ? ;posición y tamaño30 cursor2 dw ? ;del cursor31 sp_sist dw ? ;sp y ss originales32 ss_sist dw ?33 db 255 dup(?);pila propia34 tsr_pil db ? ;inicio de pila propia35 horas10 db ? ;cadena para desplegar la hora36 horas db ?37 db “:”38 mins10 db ?39 mins db ?40 db “:”41 segs10 db ?42 segs db ?4344 ; Rutina modificada para la int 1Ch45 ;—————————————————46 Sust1C proc near47 mov activo,1848 pushf ;simula llamado a INT49 call i1C ;invoca int 1Ch original50 push di51 push es5253 ; Checa si está activa int 10h, la bandera indos o se54 ; atiende un error crítico. En caso afirmativo finaliza55 ; rutina int 1Ch, en caso contrario ejecuta Reloj56 cmp vid_act,0 ;¿int 10h activa?57 jne Fin1C

VI 1 13 polibits 5

Desarrollo de Programas Residentes en base a un TSR genérico

concurrente con la activación de laint 10h puede generar basura en eldespliegue. Cabe mencionar queexiste una interrupción, la 8h, quetambién se genera 18.2 veces porsegundo; la diferencia entre estainterrupción y la 1Ch radica en lasrutinas de servicio asociadas a cadauna de ellas. La interrupción 8hmaneja un determinado código paraactualizar la hora del sistema (alma-cenada en el área de bios), mientrasque la única instrucción de la inte-rrupción 1Ch es el retorno de lamisma, iret. Por esta razón se reco-mienda interceptar para aplicacio-nes de usuario la int 1Ch, evitandoasí el provocar disturbios en elmanejo de la hora interna del siste-ma.

Posteriormente se leen los apun-tadores a indos e indos2 (servi-cios 34 y 5d-06, int 21h) [3]; estasbanderas son manejadas por elsistema operativo para indicar si seestá procesando una llamada a MS-DOS o si se ejecuta una rutina deatención por error crítico, respecti-vamente. Las banderas indos e in-dos2, al igual que los servicios de laint 21h necesarios para obtenerlasforman parte del llamado MS-DOSno documentado [3]; se ha deno-minado así a un conjunto de inte-rrupciones, servicios y estructurasde datos que, pese a estar imple-mentadas en el sistema, no hansido aceptadas como existentes porparte de Microsoft. Si bien su em-pleo es a riesgo del programador,su aplicación es de dominio casipúblico entre los diseñadores desoftware, especialmente en los ca-sos de programas TSR o cuando serequiere un manejo especializadode dispositivos periféricos, siendoutilizadas inclusive en los progra-mas mismos de Microsoft, talescomo Windows R y Excel R.

Por último, con auxilio de laetiqueta final se determina el nú-

58 mov di,off_indos ;¿bandera indos activa?59 mov es,seg_indos60 cmp byte ptr es:[di],061 jne Fin1C62 mov di,err_act ;¿atención a error crítico?63 cmp byte ptr es:[di],064 jne Fin1C65 pop es66 pop di67 call Reloj ;ejecuta la rutina principal del TSR68 iret69 Fin1C:70 pop es71 pop di72 dec activo73 iret ;return to MS-DOS74 Sust1C endp7576 ; Rutina modificada para la int 10h77 ;—————————————————78 Sust10 proc near79 pushf ;simula llamado a INT80 inc vid_act81 call i10 ;invoca int 10h original82 dec vid_act83 iret84 Sust10 endp8586 ; Rutina modificada para la int 28h87 ;—————————————————88 Sust28 proc near89 pushf ;simula llamado a INT90 call i28 ;invoca int 28h original91 cmp activo,092 je Fin289394 ; Checa si está activa int 10h o se atiende un error95 ; crítico. En caso afirmativo finaliza rutina int 28h96 ; en caso contrario ejecuta Reloj97 cmp vid_act,0 ;int 10h activa?98 jne Fin2899 push di100 push es101 mov es,seg_indos ;atención a error crítico?102 mov di,err_act103 cmp byte ptr es:[di],0104 pop es105 pop di106 jne Fin28107 mov activo,0108 call Reloj ;ejecuta la rutina principal109 Fin28:110 iret111 Sust28 endp112113 ; Rutina principal del TSR. Realiza el llamado a la lectura114 ; de la hora y efectúa el despliegue de la misma

6 polibits 1994

Desarrollo de Programas Residentes en base a un TSR genérico

115 ;—————————————————————————————116 Reloj proc near117 ;establece el stack local y salva registros del DOS118 cli119 mov sp_sist,sp ;guarda apuntadores a120 mov ss_sist,ss ;la pila del sistema y121 push cs ;establece pila propia122 pop ss123 mov sp,offset tsr_pil124 sti125 push ax ;salva registros126 push bx ;del sistema127 push cx128 push dx129 push si130 push di131 push ds132 push es133 push bp134 mov ah,0fh ;¿trabajando en modo gráfico?135 int 10h136 cmp al,3137 jbe Pos_cursor138 cmp al,7139 je Pos_cursor140 Termino:141 pop bp ;modo gráfico activo, por142 pop es ;lo que termina rutina143 pop ds144 pop di145 pop si146 pop dx147 pop cx148 pop bx149 pop ax150 cli151 mov ss,ss_sist152 mov sp,sp_sist153 sti154 ret155 Pos_cursor: ;modo texto, continúa despliegue156 mov ah,03 ;lee posición original del cursor157 int 10h ;y la almacena en área de datos158 mov cursor1,dx159 mov cursor2,cx160 call Tiempo ;lee hora del sistema161 push cs162 pop ds163 mov ah,016 ;cambia atributo de cursor164 mov cx,1000h165 int 10h166 mov ah,02 ;coloca cursor en la esquina167 mov dh,0 ;superior derecha de la pantalla,168 mov dl,70 ;en (0,70)169 int 10h170 mov si,offset horas10 ;apuntador a cadena171 mov cx,8 ;para desplegar

mero de párrafos que conforman alTSR, dejándose a éste permanenteen memoria (servicio 31, int 21h).Como ya se había mencionado an-tes, en el código residente no seincluye el área de inicialización.

Declaración y Manejo delas Nuevas Rutinas de

Interrupción

Uno de los principales detallesque debe respetar la nueva rutinade interrupción es lo que se conocecomo encadenamiento (chaining)[2] [4]. El encadenamiento consis-te en que el procedimiento nuevoinvoque a la interrupción original,ya que puede darse el caso de quese hubieran montado anteriormen-te otros programas residentes queutilicen dicha interrupción. Dadoque el llamado de la rutina antiguaes por medio de call [1], es nece-sario eje-cutar primero la instruc-ción pushf para simular una invo-cación por interrupción y compen-sar así el regreso de la rutina, el cualestá marcado por iret. En el listadoanexo, las nuevas rutinas de inte-rrupción ocupan las líneas 44 a111.

Rutina Principal

Se denomina rutina principal alcódigo que genera la acción que sedesea realice el TSR (por ejemplo,desplegar la hora en pantalla, comoen el listado anexo). Independien-temente de su función, esta rutinadebe cumplir algunas reglas no es-critas, entre las que destaca el con-servar los registros en su estadoinicial, almacenándolos en la pila(stack). Lo anterior obedece a queen esos registros se conserva partedel estado del programa que sesuspendió para dar paso al TSR; enla medida de lo posible es conve-niente implementar una zona de

VI 1 13 polibits 7

Desarrollo de Programas Residentes en base a un TSR genérico

172 Desplegar:173 lodsb ;muestra cadena en pantalla,174 mov ah,0ah ;escribiendo un carácter a la vez175 push cx176 mov cx,1177 int 10h178 pop cx179 inc dl180 mov ah,02 ;avanza cursor una posición181 int 10h182 loop Desplegar183 mov ah,18 ;regresa cursor a posición original184 mov cx,cursor2 ;y restablece registros del sistema185 int 10h186 mov ah,2187 mov dx,cursor1188 int 10h189 jmp Termino190 Reloj endp191192 ; Rutina para leer la hora del sistema, convertirla193 ; a código ASCII y almacenarla en el área de datos194 ; del TSR195 ;—————————————————————————196 Tiempo proc near197 mov ah,2ch198 int 21h ;lectura de la hora199 mov bl,10200 xor ah,ah201 mov al,ch ;horas en ch202 div bl203 or ax,3030h204 mov horas10,al205 mov horas,ah206 xor ah,ah207 mov al,cl ;minutos en cl208 div bl209 or ax,3030h210 mov mins10,al211 mov mins,ah212 xor ah,ah213 mov al,dh ;segundos en dh214 div bl215 or ax,3030h216 mov segs10,al217 mov segs,ah218 ret219 Tiempo endp220 final db “$” ;marca para fin de TSR221222 ; Rutina de instalación en memoria del TSR. También223 ; modifica los vectores de interrupción utilizados224 ; o afectados por el TSR, para apuntar a los nuevos225 ; manejadores.226 ;—————————————————————————227 Implementa proc near228 assume ds:@code ;variables en este segmento

pila local en el área de datos delTSR, para evitar conflictos talescomo desbordamiento si se empleael stack convencional del sistema.En consecuencia, previo a la termi-nación de la rutina principal sedeben restaurar los registros, si-guiendo la operación inversa.

La rutina principal, al igual quelas nuevas rutinas de interrupción,deben respetar la no reentrancia(reentry) [2] del sistema operati-vo. La no reentrancia consiste enque no se puede efectuar una lla-mada al sistema en tanto no finalicela llamada anterior, ya que de locontrario se pueden generar fallasocasionadas por el frágil manejo deMS-DOS para preservar su estadoactual al momento de una interrup-ción. Este problema se maneja enel programa ejemplo mediante eluso de la bandera indos para detec-tar si existe una llamada al sistemaactiva y no ejecutar el TSR en talcaso. Por esta misma razón para eldespliegue de la cadena generadacon la hora se utiliza la int 10hservicio 0ah, que muestra un carác-ter a la vez, para no emplear la int21h servicio 9h, que permite des-plegar la cadena completa.

Como consecuencia de la noreentrancia del sistema operativo,se debe evitar activar el TSR cuan-do se presenta una condición deerror crítico; estos errores se produ-cen cuando el DOS necesita utilizarun dispositivo periférico pero esteno se encuentra listo o disponible,activándose entonces la int 24h[3], conocida como manejador deerrores críticos. En el listado anexose comprueba esta condición pormedio de la bandera indos2, permi-tiéndose o no la ejecución del TSR,dependiendo del valor de esa ban-dera.

La rutina principal del progra-ma ejemplo se explica línea por

8 polibits 1994

Desarrollo de Programas Residentes en base a un TSR genérico

229230 Instalar:231 mov ah,34h ;localiza bandera indos232 int 21h233 mov off_indos,bx ;offset y segmento234 mov seg_indos,es ;de indos235 mov ah,5dh ;localiza bandera de atención236 mov al,6h ;a error crítico y copia apuntador237 int 21h ;en el área de datos238 push cs239 pop ds240 mov err_act,si241242 ; Sustitución de vectores de interrupción afectados,243 ; conservando los apuntadores originales para efectos244 ; de restauración por terminación del TSR245 mov ax,351Ch ; int 1Ch246 int 21h247 mov off_i1C,bx248 mov seg_i1C,es249 mov ax,251Ch250 mov dx,offset Sust1C251 int 21h252 mov ax,3510h ; int 10h253 int 21h254 mov off_i10,bx255 mov seg_i10,es256 mov ax,2510h257 mov dx, offset Sust10258 int 21h259 mov ax,3528h ; int 28h260 int 21h261 mov off_i28,bx262 mov seg_i28,es263 mov ax,2528h264 mov dx,offset Sust28265 int 21h266267 ; Cálculo de longitud del TSR y asignación de268 ; espacio permanente en memoria269 mov dx,(offset final-@code+15) ; No. de bytes270 mov cl,4h271 shr dx,cl ; No. de párrafos272 mov ax,3100h273 int 21h274 Implementa endp275 end Inicio

línea en el listado anexo (líneas 113a 218); no se hace mayor hincapiéen la misma puesto que puede sersustituida en el TSR genérico des-crito por cualquier otro procedi-miento que se desee.

Consideraciones Finales

Dentro de las consideracionesfinales se encuentran las corres-pondientes a la desactivación delTSR. La desactivación incluye dos

tareas principales, la primera esinterceptar los vectores de las inte-rrupciones ocupadas de tal formaque tomen los apuntadores origi-nales (los cuales previamente seguardaron en el área de datos delTSR) ocupando para ello la int 21hservicio 25h. La segunda tarea pre-senta mayor complejidad, y consis-te en liberar el área de memoriaocupada por el TSR, después de sudesactivación; debido a esta com-plejidad implícita, se considera con-veniente manejar este tópico en unartículo posterior.

Finalmente, debe recordarse quesi bien existen características delsistema no documentadas cuya uti-lidad es manifiesta, su uso se deberestringir a aquellas situaciones enlas que constituyan la única opcióndado que, por ser información nooficial, no se puede asegurar su nomodificación o incluso su conserva-ción en versiones posteriores delsistema operativo MS-DOS, lo quepuede ocasionar problemas futu-ros de compatibilidad.

Bibliografía

[1] Barkakati, Nabajyoti & Hyde,Randall. �Microsoft MacroAssembler Bible�. SAMS.1992.

[2] Holzner, Steven. �AdvancedAssembly Language�. Pe-ter Norton Computing, Inc.1991.

[3] Schulman et Al. �Undocu-mented DOS� . AddisonWesley Publishing Company,Inc. 1990.

[4] Simrin, Steven. �MS-DOS Bi-ble�. Howard W. Sams &Company. 1989.

VI 1 13 polibits 9

Aplicaciones del procesamiento gráfico y de imágenes: La realidad virtual. (Introducción)

Aplicaciones del procesamientográfico y de imágenes:

La realidad virtual.(Introducción)

Antecedentes

El procesamiento gráfico y deimágenes representa hoy en díauna de las aplicaciones más impor-tantes en el campo computacional.Las nuevas tecnologías, como porejemplo: arquitecturas adecuadaspara el tratamiento de datos, semi-conductores con tiempos de res-puesta más cortas, conductores conresistencias menos importantes alpaso de los electrones, mayoresescalas de integración en los C.I.,dispositivos de memoria con mayorcapacidad de almacenamiento,nuevas técnicas de procesamientode datos, etc., han permitido quelos procesos para tratar imágenesdisminuyan los tiempos de ejecu-ción. Todo esto ha tenido comoresultado el desarrollo de podero-sos programas de aplicación enesta área, conduciendo así a unaexplosión en cuanto a las aplicacio-nes del tratamiento gráfico y deimágenes, en una serie de campostan diversos como sorprendentes.

Ahora bien, los avances de es-tas técnicas se han llevado a cabode una manera muy compleja. Lasnecesidades económicas han sido,desde luego, las que han influido (yseguirán haciéndolo) de maneradeterminante en la dirección quehan tomado los desarrollos de loscampos de investigación.

Así, una de las aplicaciones quemás ha contribuido al desarrollo deestas técnicas ha sido el campocinematográfico. Las necesidadesde este campo; en la producción ytratamiento de imágenes y gráficoshan permitido que se dediquengrandes presupuestos a la investi-gación en el área, y los resultadosy técnicas de estos procedimientos,se han difundido a otras disciplinas.Así, la realidad virtual ha sido unade las consecuencias de este tipo deavances.

El término de realidad virtualpuede parecer incongruente; sinembargo, la referencia es aplicadadebido a la interacción de objetosreales con objetos sintéticos. Losnuevos dispositivos electrónicos ylas técnicas del procesamiento grá-fico y de imágenes permiten crearobjetos gráficos sintéticos en unescenario gráfico de tres dimensio-nes, equivalentes a los objetos rea-les. Las acciones efectuadas por elobjeto real son transmitidas a losobjetos sintéticos modificando deesta manera el escenario gráfico,produciendo así una realidad vir-tual (representación matemática deun universo espacio-temporal).

Así, las interacciones se llevan acabo entre los objetos virtuales querepresentan a los objetos reales,con objetos virtuales imaginarios o

M. en C. Héctor S. García SalasProfesor e Investigador del CINTEC-IPN

on esta publicación se de-sea involucrar al lector enuno de los últimos campos

de aplicación del procesamientográfico y de imágenes, siendo ésteel primero de una serie de artículosen donde se pretende presentaralgunos de los diferentes aspectostécnicos y problemas que aparecena lo largo de estos procesos.

Glosario

Objeto sintético.- Conjunto dedatos calculados, cuya estructu-ra permite obtener una repre-sentación gráfica con una for-ma y una textura. Estos objetospueden ser una representaciónde algo real o imaginario.

Objeto virtual.- Objeto sintético,que ocupa un lugar en un mun-do virtual (posición tridimensio-nal, etc.).

Mundo virtual.- Escenario gráfi-co donde se encuentran losobjetos sintéticos. En este am-biente, se llevan a cabo las inte-racciones entre los objetos, de-sarrollando así una secuenciade escenas que dan vida a larealidad virtual.

C

10 polibits 1994

Aplicaciones del procesamiento gráfico y de imágenes: La realidad virtual. (Introducción)

con otros objetos virtuales interpre-tados, es decir, que si existen física-mente pero que se encuentran enotro emplazamiento.

En la actualidad los �mundosvirtuales� son poco detallados debi-do a la complejidad de los objetosy a los problemas de cálculo de lasimágenes de los objetos virtuales.No obstante, éstos permiten ya unasensibilidad (percepción de los ob-jetos en tres dimensiones y en pers-pectiva así como la modificación entiempo real del escenario), de talmanera que el ejecutante puedeintroducirse en ellos e interactuarcon los otros objetos de estos mun-dos, es decir, manipularlos o bienllevar a cabo acciones que no po-drían hacerse en el mundo real.Estos son de hecho algunos de losobjetivos de la tecnología de larealidad virtual.

Objetivos

Como puede suponerse, los ob-jetivos de esta tecnología son tan-tos como aplicaciones se efectúen;sin embargo, el elemento principalconsiste en permitir desarrollar ac-ciones en terrenos donde lo impo-sible puede cuestionarse.

Esto puede parecer a primeravista superfluo. Sin embargo, ac-tualmente la solución de proble-mas, en cualesquiera de las discipli-nas científicas e inclusive en otrasáreas, pasa primero por la simula-ción computacional, donde las con-diciones y los límites son extrapola-dos, de tal manera que puedanobtenerse resultados que en condi-ciones normales, físicamente se-rían difícilmente realizables.

Ahora bien, la creación de con-diciones ficticias, puede no ser en

realidad sin consecuencias. Conesto se quiere decir que existensituaciones a las cuales no noshemos enfrentado debido a lascondiciones en las cuales vivimos.Es dentro de esta óptica que larealidad virtual puede ser compren-dida más claramente.

Problemática

El problema fundamental en eltratamiento de datos (en cuales-quiera de las disciplinas del proce-sado gráfico y de imágenes), haconsistido en desarrollar los méto-dos y técnicas para la adquisición,el análisis, la modulación, la inter-

pretación, etc., de los datos, ya quela cantidad de información que semaneja es demasiado voluminosa.

Vamos a tratar de separar, si esposible, los diferentes problemas alos que se enfrentan a los quequieren aventurarse en esta área.

La interpretación de un objeto realpasa a través de una serie de accio-nes las cuales pueden ser (ya queexisten muy variadas técnicas):1. Adquisición de los datos, nor-

malmente pasa por una tecno-logía de digitalización de imáge-nes.

2. Tratamiento y modelización delos datos adquiridos; en generalpuede ser un tratamiento gráfi-co (análisis de contornos, de loshistogramas, variancia del en-torno, filtrado , correlación, con-volución, etc.). La modelizaciónpasa por el tratamiento a basede métodos matemáticos quepermiten obtener una represen-

tación del objeto real.

3. La interpretación del conjuntode datos en un ambiente gráfi-co.La creación de un objeto sinté-

tico imaginario pasa por los dosúltimos pasos del procedimiento

Figura 1

VI 1 13 polibits 11

Aplicaciones del procesamiento gráfico y de imágenes: La realidad virtual. (Introducción)

anterior, es decir, una vez modeliza-do y tratado, el objeto es interpre-tado. Por ejemplo, la figura 1muestra un objeto esférico, el cualha sido calculado a partir de unaconstrucción geométrica tridimen-sional llamada �hilos�, figura 2.

Figura 2

Después de calcular la superfi-cie en función de los parámetros:Textura, fuentes luminosas, puntode observación, etc. y de conside-rar los objetos que van a interveniren el escenario, es necesario sediseñe este último teniendo en cuen-ta las posiciones y formas de los

objetos. Esto permitirá más adelan-te, que la interacción pueda serllevada a cabo en una buena armo-nía.

Bibliografía

[1] Joseph Graderick, �RéalitéVirtuelle�, SYBEX, París,1994.

[2] Zahid Hussain, �Digital Sig-nal Processing�, ELLISHORWOOD, England,1991.

[3] Robert Sedgewick, �Algori-thms in C�, ADDISON-WES-LEY, New York,1990.

[4] Ludovic Lecoint, �PV3D unmodeleur d�image de syn-thèse�, París, 1993.

12 polibits 1994

Temporizador Programable en base a un dispositivo MAPL128.

Temporizador Programable enbase a un dispositivo MAPL128.

Ing. Aquilino Cervantes AvilaAlumno de la Maestría del CINTEC-IPN

l trabajo con DispositivosLógicos Programables(PLD�S) se ha desarrollado

ampliamente en este centro de es-tudios, por lo cual el objetivo de estetrabajo es, por medio de un proble-ma relativamente simple, introdu-cir un dispositivo programable degran potencial.

El trabajo con un Arreglo Múlti-ple de Lógica Programable ("Múl-tiple Array Programable Logic",MAPL), ofrece la ventaja de susti-tuir a múltiples dispositivos de lógi-ca tradicional o de lógica progra-mable; debido a esto, disminuye elárea física en tarjeta, además dereducir el consumo de corriente dela fuente de poder empleada.

Hasta el momento se tiene no-ticia de 4 de estos dispositivos,siendo: MAPL�s 128, 144, 244 y268, fabricados por National Semi-conductor. Si bien poseen ligerasvariaciones en su configuración in-terna, la diferencia real la estableceel número de compuertas que pue-den sustituir y, por ende, el tamañode su presentación física.

Para este proyecto se aplicará eldispositivo más sencillo de la serie,el MAPL 128. Para ello se realizaráuna descripción general de estedispositivo.

Características de los dis-positivos MAPL128/144.

El MAPL128/144 pertenece ala tecnología EECMOS y posee unaarquitectura de arreglos lógicos pro-gramables integrando múltiplesFPLAS ("Field Programable LogicArray", Arreglo Lógico Programa-ble en Campo), lo que permite faci-litar el diseño de máquinas de esta-do, controladores, secuenciadoresde microinstrucciones, interfaces yen general cualquier diseño lógicosecuencial. Las características queposee son las siguientes:

La arquitectura MAPL es fun-cionalmente equivalente a un FPLAgrande, teniendo un total de 128productos términos. En realidad, elMAPL128 tiene ocho planos o pá-ginas FPLAS, consistiendo cada

página de un arreglo AND y unarreglo OR, ambos programables.

Cada arreglo AND posee 58entradas y 16 términos producto,los cuales pueden conectarse a cual-quiera de las 54 sumas de términos,por lo que cada página tiene unaconfiguración de 58 X 16 X 54.

Paginación

Tres registros internos manejanla paginación, teniendo solo unapágina activa en un momento dado.Al igual que los demás registros

internos, estos pueden usarse tam-bién para almacenar bits.

Las páginas se seleccionan enel momento de la aplicación; talcomo las salidas de las macroceldas

Características generales de la serie MAPL128/144:

o Alta densidad, con arquitectura PLA.o Velocidad de operación de 33,40 y 45 MHz dependiendo de la

terminación en el dispositivo.o Bajo consumo de potencia Icc = 110 mA máximo.o Borrable eléctricamente.

* 100 % de funcionalidad de prueba.* Lógica instantáneamente reconfigurable* Capacidad Mínima de 100 ciclos programación - borrado.

o 27 macroceldas con registros tipo DE, JK, RS o T.o Precarga asíncrona, y capacidad de reinicio.o Reemplazo de múltiples dispositivos pal/pla.o Soportado por OPAL y por software popular dedicado al tema.o Celdas de seguridad que previenen el copiado.

E

VI 1 13 polibits 13

Temporizador Programable en base a un dispositivo MAPL128.

son controladas por reloj, así tam-bién lo son los registros de página.Lo anterior tiene el efecto de prese-leccionar la página donde se en-cuentra el siguiente estado lógico.Debido a que el dispositivo poseearquitectura PIPELINE, la siguientepágina no acumula retardo, con loque la paginación aparece transpa-rente al usuario.

La arquitectura que presenta elMAPL128/144 se muestra en lafigura 1 .

Macroceldas

En general, los dispositivosMAPL incluyen una estructura demacrocelda flexible, configurablepor el usuario. La misma macrocel-da registrada se emplea para lasfunciones de salida, retroalimenta-ción o entrada/salida. Cada ma-crocelda puede ser configurada

como registro JK o D; ambos tiposse implementan en hardware y no

Características del MAPL128

Terminales de alimentación 2Entrada de reloj 1Entrada de habilitación 1Terminales de entrada 9Terminales de salida 4Terminales de entrada/salida 12

Total 28

Registros de página 3Registros Internos* 8Registros de salida 16Total 27

Total de arreglos AND (entradas) 32Total de arreglos OR (salidas) 54

Términos de transición lógicos 128Control de términos 4Suma de términos 432Total de términos producto y suma 564

* Registros internos se refiere a que con estos se puede lograr la conexión interna,es decir, un nodo interno.

requieren transformaciones porsoftware o por lógica adicional.Todas las macroceldas se sincroni-zan por el flanco de subida de laseñal de reloj.

Las macroceldas de salida pre-sentan una señal de habilitación(OE) que permite llevar al dispositi-vo a un estado de alta impedancia.Es posible utilizar esta terminal en lafunción indicada o como entrada alarreglo AND; además, se tiene quelas macroceldas de salida puedenser configuradas como activas enalto o en bajo.

Las arquitecturas que presentanlas macroceldas del MAPL 128 semuestran en las figuras 2 y 3 .

NOTA: La macrocelda paginada esexactamente igual a la macro-celda interna. Por su parte, lamacrocelda de solo salida, esigual a la de entrada/salida,excepto por la línea de retroali-mentación.

ANDARREGLO

7

ANDARREGLO

0

ANDARREGLO

1

ANDARREGLO

2

ANDARREGLO

3

ANDARREGLO

6

ANDARREGLO

4

ANDARREGLO

5

ORARREGLO

7

ORARREGLO

6

ORARREGLO

5

ORARREGLO

0

ORARREGLO

1

ORARREGLO

2

ORARREGLO

3

ORARREGLO

4

MULTIPLEXOR 8*1*16

MULTIPLEXOR 8*1*54

ARREGLO DE

CONTROL

P0 P0P0

8 I

12 E/S

4 S

___OE

54 545454545454 54

16 16161616161616

REGISTROS I = INTERNO E/S = ENTRADA/SALIDA S = SALIDA P = PAGINA

Figura 1

14 polibits 1994

Temporizador Programable en base a un dispositivo MAPL128.

Descripción General deltemporizadorimplementado

El circuito consta de: 4 contado-res tipo ascendente - descendentey una unidad de control; 3 contado-res trabajan en módulo 10 y elrestante en módulo 6. La unidad decontrol se encarga de conectar loscontadores en cascada para la for-ma descendente y de forma indivi-dual para la opción ascendente; elorden en que la unidad de controlconecta los contadores, da comoresultado el número 9:59:9 paracuenta máxima, generando así elmayor retardo. La programaciónde cada contador se realiza en for-ma individual; para esto se eligealguno de ellos y se lleva a la cuenta

deseada (cuenta en forma ascen-dente), una vez que la cuenta hasido seleccionada, se marca el ini-cio de cuenta y los contadores ini-cian su actividad en forma descen-dente.

Existen dos líneas de control,PROG Y CHG: la primera se utilizapara lograr la programación, mien-tras que la segunda para la selec-ción del contador deseado. Unavez que el sistema se programa conambas señales, se marca el inicio decuenta descendente, a partir del

valor preestablecido en la progra-mación. Esto se resume en la si-guiente tabla.

Se presenta además una señalde entrada que permite la inhibi-ción de una nueva cuenta descen-dente (NEW), o el abandono de lacuenta actual; si esta señal se aterri-za, después que el temporizadorllega al fin de su cuenta descenden-te (0000) el circuito continúa conuna nueva cuenta descendente apartir de 9 : 59 : 9, y así en formasucesiva. Si se desea tener solo unacuenta, entonces la señal de EN-DCOUNT se conecta en formadirecta a la terminal NEW. De estaforma, la cuenta se detiene en ceroy permite programar al sistemanuevamente, si así se desea, o rei-niciar la cuenta en que se encontra-ba el temporizador en el momentoen que se detuvo.

El diagrama a bloques del tem-porizador se muestra en la figura4 .

Programa de aplicación

Para este proyecto se empleó laherramienta de programaciónOPAL, proporcionado por Natio-nal Semiconductor. El método quese usó para la solución del proble-ma es el de tablas de verdad. Dadoque el OPAL no soporta dos tiposde tablas diferentes (si se deseaverificar el ejemplo), es necesariotrabajar con métodos alternativos,o compilar en forma parcial lasdiferentes tablas, y utilizar los mó-dulos EQN.

MACROCELDA DE ENTRADA/SALIDA DEL MAPL 128

SO

S1

0

1

0

1

J

K

D

E

1

0

00 01 10 11

___OE

E/S

CLK

R

SO

S1

0

1

0

1

J

K

D

E

1

0

CLK

R

MACROCELDA DE INTERNA DEL MAPL 128

Figura 2

Figura 3

PROG CHG FUNCION

0 0 Inicio de cuenta descendente 0 1 Cuenta ascendente para el contador elegido 1 0 Cambio de contador 1 1 Cuenta descendente

Una vez que la cuenta termina, una línea señaliza el fin de la cuenta ENDCOUNT.

VI 1 13 polibits 15

Temporizador Programable en base a un dispositivo MAPL128.

En esta aplicación se manejapaginación manual para lograr unmejor control sobre el sistema. Sien el sistema se deja que el OPALrealice la paginación automática,es probable que se marque erroresen la compilación , esto es debidoa que el OPAL intenta aprovecharal máximo el espacio por página,por lo que es posible que algunaecuación sobrepase el númeromáximo de términos producto y nosea posible crear el archivo JEDpara el programa. A continuaciónse tiene una explicación del progra-ma, y en cuadros anexos el listadodel mismo.

Explicación general delprograma

El programa ocupa las 8 pági-nas del MAPL, esto es, cada conta-dor ocupa dos páginas, una de ellasse destina para la cuenta ascenden-te y otra más para la cuenta descen-dente. La unidad de control se or-ganiza dentro de las 8 páginas y valigada en forma directa con el con-trol de la paginación.

Si se observa en forma detenidala manera en que se logra la co-nexión de los contadores en casca-da, se podrá ver que ésta se dagracias precisamente a que las pá-

ginas se encuentran multiplexadas,así la conmutación de páginas es laque realiza la conexión indicada ydebido a que todas las salidas sonregistradas, se observa el efecto decaptura (HOLD).

También es necesario indicarque el MAPL 128 posee únicamen-te 12 salidas configurables tambiéncomo entradas; si consideramosque el temporizador emplea 4 con-tadores con un total de 15 salidas,se aprecia la necesidad de obtenerla retroalimentación de alguna ma-nera para compensar las tres sali-das faltantes. Para evitar un aca-

Figura 4

Hacia decodificadores BCD a 7 segmentos

UNIDAD DE

CONTROL

CONTADORMODULO 10

CONTADORMODULO 6

CONTADORMODULO 10

CONTADORMODULO 10

Vcc

NEW

ENDCOUNT

A B C D A B C DA B C DA B C D

PROG

CHG

BEGIN HEADER IPN

CENTRO DE INVESTIGACION TECNOLOGICA EN COMPUTACIONEDIFICIO DE GRADUADOS DE UPIICSA

CALLE TE No. 950 COL. GRANJAS MEXICO MEXICO D.F. CP. 08400ALUMNO: AQUILINO CERVANTES AVILA

.DESCRIPCION: El siguiente programa implementa un temporizador programable en un MAPL 128

END HEADER

BEGIN DEFINITION

Device MAPL128;

Inputs clk,chg,prog,new; {señales de control }

Outputs (jk,hold) endcount,al0,al1,al2; {señales solo salida }

Feedbacks (jk,hold) sl0,sl1,sl2,sl3; {forman al contador menos significativo}Feedbacks (jk,hold) ml0,ml1,ml2,ml3; {forman al contador que sigue al menos significativo}Feedbacks (jk,hold,buried) l0,l1,l2; {forman al contador que sigue al más significativo}Feedbacks (jk,hold) s0,s1,s2,s3; {forman al contador más significativo}Feedbacks (buried) p0,p1,p2; {registros internos de paginación}

END DEFINITIONS

BEGIN EQUATIONS

al0 = l0; { se ocupan tres registros internos ( l0, l1 y l2) para el contador }al1 = l1; { módulo 6, y se conectan a tres salidas (al0, al1 y al2) }al2 = l2;

{se garantiza que ENDCOUNT está activa solo al término }{de la cuenta descendente. }

aux 1= sl0 * /p0 * /p1 * p2;aux2 = /sl1 * /sl2 * /sl3 * /ml0 * /ml1 * /ml2 * /ml3 ;

endcount = aux1 * aux2 * /l0 * /l1 * /l2 * /s0 * /s1 * /s2 * /s3 ;

END EQUATIONS

BEGIN TRUTH_TABLE { tabla de verdad para el contador ascendente }{ menos significativo }

TTIN chg,prog,sl3,sl2,sl1,sl0,p2,p1,p0;TTOUT sl3,sl2,sl1,sl0,p2,p1,p0;

01 —— 000 ???? 001 { si chg,prog están en 01 o en 11, sin importar el }11 —— 000 ???? 000 { contenido de sl3-sl2, captura su valor y hace un }

16 polibits 1994

Temporizador Programable en base a un dispositivo MAPL128.

00 —— 000 ???? 100 { cambio de página a 001 o 000 respectivamente }{ La combinación chg,prog = 00 provoca un inicio }

{ de cuenta descendente }10 0000 000 0001 00010 0001 000 0010 00010 0010 000 0011 000 { la combinación chg,prog = 10 permite al contador }10 0011 000 0100 000{ continuar con su cuenta }10 0100 000 0101 00010 0101 000 0110 00010 0110 000 0111 00010 0111 000 1000 000{ si se efectúa el cambio de página a 001, se busca }10 1000 000 1001 000{ el siguiente contador ascendente por programar }10 1001 000 0000 000

END TRUTH_TABLE

BEGIN TRUTH_TABLE { tabla de verdad para el contador descendente }{ menos significativo }

TTIN new,chg,prog,sl3,sl2,sl1,sl0,p2,p1,p0;TTOUT sl3,sl2,sl1,sl0,p2,p1,p0;

111 —— 100 ???? 000 { si new,chg y prog se encuentran en 1, se }{ captura el contenido de sl3-sl0 y salta a la } { página 000 (donde es posible la precarga) }

011 0000 100 1001 101011 1001 100 1000 100011 1000 100 0111 100011 0111 100 0110 100 { para que el contador trabaje es necesario la }011 0110 100 0101 100 { combinación de bits 011 dada por new, chg }011 0101 100 0100 100 { y prog en forma respectiva. Este contador se }011 0100 100 0011 100 {localiza en la página 100 }011 0011 100 0010 100011 0010 100 0001 100011 0001 100 0000 100

END TRUTH_TABLE

BEGIN TRUTH_TABLE { tabla de verdad para el contador ascendente- }{ descendente que sigue al menos significativo }

TTIN chg,prog,ml3,ml2,ml1,ml0,p2,p1,p0;TTOUT ml3,ml2,ml1,ml0,p2,p1,p0;

01 —— 001 ???? 011 { si chg,prog están en 01 o en 11, sin importar el }11 —— 001 ???? 001 { contenido de sl3-sl2, captura su valor y hace un }00 —— 001 ???? 100 { cambio de página a 011 o 001 respectivamente }

{ La combinación chg,prog = 00 provoca un inicio }{ de cuenta descendente }

10 0000 001 0001 00110 0001 001 0010 00110 0010 001 0011 00110 0011 001 0100 001 { el contador ascendente se encuentra en la página }10 0100 001 0101 001 { 001 y trabaja con la combinación 01 dada por chg }10 0101 001 0110 001 {y prog }10 0110 001 0111 00110 0111 001 1000 00110 1000 001 1001 00110 1001 001 0000 001

11 0000 101 1001 11011 1001 101 1000 10011 1000 101 0111 10011 0111 101 0110 100 { el contador descendente se encuentra en la página }11 0110 101 0101 100 {101 actualiza registros y regresa al contador descen- }11 0101 101 0100 100 {dente menos significativo. Si existe un cambio de }11 0100 101 0011 100 {estado 0000 a 1001, se busca el contador siguiente }11 0011 101 0010 100 {en la página 110 }11 0010 101 0001 10011 0001 101 0000 100

END TRUTH_TABLE

rreo externo, y además el uso pro-bable de lógica adicional, el conta-dor módulo 6 se efectúa por mediode 3 registros internos conectados,también en forma interna, a 3 regis-tros de sólo salida, solucionandocon esto el problema.

De esta forma, si el MAPL cuen-ta con 16 terminales de salida, restaindicar que la última salida se utilizapara marcar el fin de cuenta.

Conclusiones

El trabajo con el MAPL 128sirve como introducción para elmanejo de otros dispositivos máscomplejos, tales como GATEARRAY's, FPGA's, ASIC's, etc. Sinembargo, aunque en este ejemplono se utiliza, es necesario usar latécnica de �pruebabilidad�, quepermite verificar si un proyectodentro de un dispositivo programa-ble se encuentra trabajando en for-ma adecuada.

Lo mas interesante de este ejem-plo es, sin duda, el manejo de lapaginación. Las páginas dentro delMAPL se encuentran multiplexa-das, por lo cual solo un plano estáactivo a la vez. Debido a esta carac-terística es posible insertar los de-codificadores de BCD a 7 segmen-tos dentro del propio MAPL. Sinembargo, debido a que se necesitamultiplexar las líneas del decodifi-cador (si se desean tener líneasindependientes, no son suficienteslas salidas del dispositivo), sería ne-cesario el aumentar un latch paracada contador y agregar al menosdos señales (con las que se tienencuatro combinaciones) de controlpara indicar en que momento seencuentran válidos los datos de quécontador. El trabajo, finalmente,resulta en agregar circuitos tipolatch o colocar decodificadores,optándose por lo segundo. El ejem-

VI 1 13 polibits 17

Temporizador Programable en base a un dispositivo MAPL128.

BEGIN TRUTH_TABLE { tabla de verdad para el contador ascendente- }{ descendente que sigue al más significativo }

TTIN chg,prog,l2,l1,l0,p2,p1,p0;TTOUT l2,l1,l0,p2,p1,p0;

01 —— 010 ???? 011 { si chg,prog están en 01 o en 11, sin importar el }11 —— 010 ???? 010 { contenido de l2 - l0, captura su valor y hace un }00 —— 010 ???? 100 { cambio de página a 011 o 010 respectivamente }

{ La combinación chg,prog = 00 provoca un inicio }{ de cuenta descendente }

10 0000 010 0001 01010 0001 010 0010 01010 0010 010 0011 01010 0011 010 0100 010 { el contador ascendente se encuentra en la página }10 0100 010 0101 010 { 010 y trabaja con la combinación 01 dada por chg }10 0101 010 0110 010 {y prog }10 0110 010 0111 01010 0111 010 1000 01010 1000 010 1001 01010 1001 010 0000 010

11 0000 110 1001 11111 1001 110 1000 10011 1000 110 0111 10011 0111 110 0110 100 { el contador descendente se encuentra en la página }11 0110 110 0101 100 {110 actualiza registros y regresa al contador descen- }11 0101 110 0100 100 {dente menos significativo. Si existe un cambio de }11 0100 110 0011 100 {estado 0000 a 1001, se busca el contador siguiente }11 0011 110 0010 100 {en la página 111 }11 0010 110 0001 10011 0001 110 0000 100

END TRUTH_TABLE

BEGIN TRUTH_TABLE { tabla de verdad para el contador ascendente- }{ descendente que sigue al más significativo }

TTIN chg,prog,s3,s2,s1,s0,p2,p1,p0;TTOUT s3,s2,s1,s0,p2, p1,p0;

01 —— 011 ???? 000 { si chg,prog están en 01 o en 11, sin importar el }11 —— 011 ???? 011 { contenido de l2 - l0, captura su valor y hace un }00 —— 011 ???? 100 { cambio de página a 011 o 010 respectivamente }

{ La combinación chg,prog = 00 provoca un inicio }{ de cuenta descendente }

10 0000 011 0001 01110 0001 011 0010 01110 0010 011 0011 01110 0011 011 0100 011 { el contador ascendente se encuentra en la página }10 0100 011 0101 011 { 011 y trabaja con la combinación 01 dada por chg }10 0101 011 0110 011 {y prog. }10 0110 011 0111 01110 0111 011 1000 01110 1000 011 1001 01110 1001 011 0000 011

11 0000 111 1001 10011 1001 111 1000 10011 1000 111 0111 10011 0111 111 0110 10011 0111 111 0110 100 { el contador descendente se encuentra en la página }11 0110 111 0101 100 {110 actualiza registros y regresa al contador descen- }11 0101 111 0100 100 {dente menos significativo. Este contador es el más }11 0100 111 0011 100 {significativo y no necesita llevar acarreo a otro contador}11 0011 111 0010 10011 0010 111 0001 10011 0001 111 0000 100

END TRUTH_TABLE

plo descrito, con los decodificado-res integrados, también se desarro-lló y está a disposición de quien losolicite. El paquete de OPAL, setrabajo en una computadora80386DX a 40 MHz.

Bibliografía

[1] Programable Logic DevicesData Book and Design Gui-de. National Semiconductor,1993.

[2] OPAL TM. Manual de Usua-rio.

18 polibits 1994

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

Análisis, Diseño y Construcciónde un Control Digital Directo

usando la ComputadoraIPN E-32

M. en C. Romeo Urbieta ParrazalesProfesor e investigador del CINTEC-IPNM. en C. Teodoro Alvarez SánchezJefe del Departamento de Programacióndel CINTEC-IPN

Martín S. Domínguez GonzálezClaudia Lara VivasManuel Sáenz SánchezRaymundo Téllez CortézAlumnos de la Maestría del CINTEC-IPN

ste artículo tiene tres gran-des bloques de trabajo, aná-lisis, diseño, y construc-

ción de un sistema de control digi-tal directo de un motor de C.D. Enel análisis y diseño del sistema seemplearon la transformaciones s,z y w, para representar los mode-los del motor, controlador, conver-tidores y tacómetro; el algoritmoempleado para este proceso es unode tipo Proporcional Integral yDerivativo (P.I.D. por sus iniciales).Los criterios de estabilidad usadosfueron: Jury, Nyquist, Bode, elimi-nación de polos y respuesta en eltiempo, para obtener el rango devalores de las ganancias del con-trolador. En la construcción se em-pleó una computadora personalIPN-E32 para instalar el algoritmode control y para monitorear evolu-ciones de variables de interés entiempo real, dicho algoritmo fueestructurado en lenguaje Turbo C;además se manejó una interfaceelectrónica entre la computadora yel motor de C.D., conteniendo unpuerto paralelo, convertidores A/D, D/A, F/V, amplificador de co-rriente; y un motor de C.D. de 24V,1A y 3000 rpm.

Introducción

Durante la última década, elempleo de una computadora digitalcomo dispositivo compensador aaumentado, ya que su precio yconfiabilidad han mejorado nota-blemente. Debido esto, actualmen-te los sistemas de control digital seemplean en múltiples aplicaciones:para máquinas herramienta, pro-cesos metalúrgicos, procesos quí-micos, control de aviones, etc.

Las ventajas de usar control di-gital se reflejan en una mayor sen-sibilidad y una gran inmunidad a ladistorsión de las señales, básica-mente. La sensibilidad se consiguegracias al empleo de señales debaja energía, mientras que la inmu-nidad a la distorsión causada por elruido y a las no linealidades, seobtiene gracias al buen acoplamien-to de estas señales en los dispositi-vos digitales empleados.

La principal desventaja de usarcontrol digital es que la precisión deun computador y de los convertido-res asociados está limitada por unalongitud de palabra finita; así mis-mo, los convertidores (A/D y D/A)introducen un error de cuantifica-ción de amplitud. Cuando el errorde cuantificación y el error debidoal tamaño finito de palabra delcomputador son pequeños en rela-ción con la amplitud de la señal,entonces el sistema es suficiente-

mente preciso y se pueden ignorarestas limitaciones. [1,2]

Análisis y Diseño de Control

El sistema cuenta con dos partesprincipales: el computador y la in-terface de potencia del motor. Elcomputador ocupa una tarjeta con-vertidora A/D - D/A [6] controladamediante un programa, el cual tomaun valor analógico en la tarjeta depotencia (voltaje obtenido por eltacómetro), lo procesa y entrega unvalor analógico, el cual excita a laetapa de potencia del motor [4,5].La interface de potencia cuentacon un amplificador de potencia, yun convertidor de frecuencia a vol-taje (F/V), éste último dará el volta-je que se introducirá al A/D, enrelación a la velocidad del motor. Elamplificador tiene una gananciaque producirá el voltaje necesariopara el motor (0-24V), a partir delvoltaje que proporciona el D/A (0-5V), [4,5]. En la figura 1 se observaun diagrama general del lazo decontrol.

Función de Transferencia delSistema

El sistema analizado se describeen la figura 2, la cual contemplatodas y cada una de las partes y lasfunciones de control que involucracada sección. Para efectuar el aná-lisis es necesario encontrar la fun-

E

VI 1 13 polibits 19

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

ción de transferencia del sistema,sin controlador P.I.D., y en lazoabierto. Empleando K1=4.8,Km=2105, a=80 y T=1 mseg, deacuerdo a la referencia [5], se obtie-nen las ecuaciones de la figura 3.

Observando la ecuación se apre-cia un polo en z=1; por lo tanto, elerror en estado estacionario a lazocerrado será igual a cero. El siguien-te paso será calcular los valores delas constantes Kp, Ki y Kd, para locual se igualará el numerador de lafunción de transferencia del con-trol P.I.D. con el denominador de lafunción a lazo abierto [3]. Esto pue-de apreciarse en la figura 4.

De la ecuación [7], se obtienenlos valores para Kp, Ki y Kd, figura5.

Una vez obtenidos los valores,la función de transferencia del sis-tema compensado a lazo cerradose obtiene sustituyendo dichos da-tos en las ecuaciones [11], [12], [13]y [14], como se observa en la figura

6.A esta ecuación se aplican los

criterios de estabilidad. Variandolos valores de Kp, Ki y Kd, se tienenecuaciones iguales en estructura ala ecuación 14, pero con diferentes

gráficas de respuesta. Al final de laspruebas, se obtienen los valoressiguientes:

Q[z] = 0.5(z+0.974) - (15) E[z] z - 0.9963z + 0.0036

Kp= 7.854Ki = 0Kd= 0.094

Prueba de estabilidad deNyquist, Bode y Jury

El análisis de sistemas de controlmuestreados se realiza bajo el do-minio del tiempo y la frecuencia.Los métodos más apropiados parael análisis de estos sistemas son:

1. Dominio de la frecuencia.-Método de transformada s(Transformada de Laplace), res-puesta en frecuencia, transfor-mada z y transformada w (trans-formación bilineal).

Figura 2

Figura 4

Figura 3

Figura 1

20 polibits 1994

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

treado es estable si todos los polosde la función de transferencia decircuito cerrado están dentro delcírculo unitario (figura 7).

El método de estabilidad de Ny-quist establece que al graficar lafunción de transferencia en el pla-no z, el lugar geométrico resultanteno debe encerrar al punto -1,0, yaque esto implica la existencia depolos o ceros en el lado derecho del

plano s, esto es, inestabilidad delsistema.

El diagrama de Nyquist se mues-tra en la figura 8; una manera deentenderlo mejor es por medio deldiagrama de Bode, el cual nos mues-tra el margen de fase y el margen deganancia del sistema. Para nuestrocaso, el margen de fase es aproxi-madamente 39 grados, y el margen

de ganancia es 6.4 dB; los paráme-tros anteriores nos dan una idea dela estabilidad relativa del sistema. Eldiagrama de Bode se muestra en lafigura 9.

Por último se realiza la pruebade estabilidad de Jury, que por me-dios algebraicos muestra si existe ono estabilidad en el sistema.

Figura 5

Figura 6

2. Dominio del tiempo.- Méto-do de ecuación de diferencias yrespuesta impulso.

Estos métodos se utilizanpara analizar el comportamien-to del sistema en el dominio de lafrecuencia y determinar si éstecumple con las condiciones ne-cesarias de estabilidad.

Un sistema de control con re-troalimentación lineal continuo esestable si todos los polos de lafunción de transferencia de circuitocerrado están en la mitad izquierdadel plano s; el plano z está relacio-nado con el plano s por la transfor-mación:

z= esT

z = e (s + jw)T

Esta relación se puede escribirtambién como:

I z I = esT

z = wT

En la parte izquierda del plano sse tiene s < 0, por lo tanto, lamagnitud correspondiente de z va-ría de 0 a 1. Por esta razón, el ejeimaginario del plano s correspondeal círculo unitario en el plano z y laparte interna del mismo círculo co-rresponde a la mitad izquierda delplano s. En consecuencia, se puedeestablecer que un sistema mues-

Figura 7

VI 1 13 polibits 21

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

De la Ec. [15] se deduce laecuación característica :

F(z) = z2 - 0.9963z + 0.0036

1a. Prueba de Jury

F(1) > 0

(1)2 - 0.9963(1) + 0.0036 > 0

0.0073 > 0

2a. Prueba de Jury

(-1)n F(-1) > 0 {n = grado de laecuación}

(-1)2 [(-1)2 - 0.9963(-1) + 0.0036] > 0

1.9999 > 0

3a. Prueba de Jury

z0 z1 z2

0.0036 -0.9963 1

|a0| < a2

|0.0036| < 1

Por lo tanto, según el criterio deJury, el sistema controlado por el

P.I.D. es estable. La gráfica de res-puesta en el tiempo del sistemaincluyendo el controlador P.I.D. semuestra en la figura 10. Jugandocon los valores de las constantes sepuede obtener otro tipo de res-puesta, ya sea con mayor o menoramortiguación

Diseño y Construcción

El sistema controlador se basaen el empleo de la computadoraIPN-E32 con un algoritmo de con-trol P.I.D., para conexión con elmotor, recepción y envío de datoscon convertidores A/D, D/A, F/V;también cuenta con un amplifica-dor de corriente y un motor de C.D.de 24V, 1 A.

Los convertidores A/D, D/A seencuentran conectados en la tarje-ta instalada en el bus de la compu-tadora; mientras que el F/V (con-vertidor frecuencia-voltaje) con elamplificador están en la tarjeta deinterface de potencia [4], ver figura11. La descripción de la tarjeta�interface de potencia�, diagramaesquemático y el programa realiza-do para realizar el control se deta-llan a continuación.

Descripción del Circuito

El circuito consta de una fuentede alimentación propia, que pro-

Figura 8

Figura 9

22 polibits 1994

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

porciona los siguientes voltajes:+24V, -24V, +15V, -15V, +10V y+5V; con el fin de hacer el sistemaautónomo los dos primeros pro-porcionan hasta 3A, que alimentana un amplificador operacional depotencia (LM675); los dos siguien-tes a un amplificador operacional(LM1458), mientras que con los10V se alimenta al convertidor defrecuencia a voltaje (LM2907) y 5Val circuito que está integrado alservomotor. La fuente de alimenta-ción está basada en los reguladores78XX, 79XX, diodos zener y arre-glo de transistores, como se apre-cia en el diagrama esquemático.

La tarjeta cuenta con un F/V(LM2907) el cual se ajustó (segúnformulas del manual de NationalSemiconductor) para permitir en laentrada frecuencias de 1600 Hz. a8140 Hz., proporcionando a lasalida un rango de 0.96V a 4.8 V.La salida del F/V está conectada aun amplificador operacional LM1458 como seguidor de voltaje,con el fin de presentar una impe-dancia de salida más baja (75 ohms)al A/D, que es implementado por elLM2907. Lo anterior permite que

estos voltajes puedan introducirseal A/D; de esta manera se envía ala computadora un dato digital, elcual indica la velocidad a la que girael motor.

Una vez procesado el dato porel algoritmo P.I.D. (como puedeverse en el programa); en el D/A setiene una señal analógica que entraa un amplificador operacional

LM1458 como seguidor de voltaje,con el fin de presentar ante el D/Auna impedancia de entrada alta. Lasalida del seguidor de voltaje seintroduce al amplificador operacio-nal de potencia LM675, el cualtiene un factor de amplificación de4.74 (práctico), por lo que es posi-ble alimentar al motor hasta con21V aproximadamente (teórica-mente sería hasta 24V, pero elamplificador operacional no puedeproporcionar este voltaje a su sali-da, debido a que está siendo pola-rizado con 24V). El circuito estáprovisto para ser configurado deotra forma por medio de �puentes�y así ofrecer el giro en ambos sen-tidos. El LM1458 está configuradocomo sumador de dos voltajes: Viny -2.5V; como Vin sólo puede va-riar de 0V a 5V, a la salida delsumador tendremos variaciones de-2.5V a 2.5V, los cuales permitenque el amplificador de potenciaLM675 (con otro factor de amplifi-cación: 9.6) pueda entregar volta-jes positivos y negativos (± 24 volts)al motor.

Posteriormente, teniéndose unareferencia (que será el valor espera-

Figura 10

VI 1 13 polibits 23

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

24 polibits 1994

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

do en la entrada del A/D) queindique la velocidad con que gira elmotor (proporcionada por el F/V),se ejecuta el algoritmo P.I.D., ymediante el D/A se generará unvoltaje que llegará al motor pormedio de la interface de potencia,el cual alcanza y estabiliza la velo-cidad deseada, indicada en la refe-rencia.

A continuación se tiene el lista-do del programa empleado en elsistema :

Prueba y Ajustes

Para lograr la implantación delsistema se probaron las partes quelo conforman de manera indivi-dual. Cabe resaltar que en la tarjetade �interface de potencia� se rea-lizaron algunas pruebas y ajustes,tomándose en cuenta las caracte-rísticas de la tarjeta de los converti-dores A/D y D/A, y las necesidadesde alimentación del motor de C.D.;

se sabe que a la salida del D/A setienen voltajes de 0V a 5V, por loque fue necesario aplicar un factorde ganancia de 4.8 al amplificador,para lograr alimentar al motor enun rango de 0V a 24V. Dependien-do de esta alimentación, el motorproduce una frecuencia de giro, lacual, mediante el FVC, deberá pro-ducir voltajes de 0 a 5 volts quealimentan al ADC; esto último selogro configurando el circuito inte-grado LM2907 según fórmulas delmanual de National Semiconduc-tor.

Conclusiones

En el análisis y diseño del siste-ma de control se pudo representara éste en una función de transferen-cia en transformadas s, z, w; laspruebas (simulación) de estabilidaddel sistema de control se aplicaronen conjunto para obtener un pano-rama más claro y confiable de fun-cionamiento (rangos de valores Kp,Ki, Kd). Aunque estas pruebas die-ron un amplio rango de estabilidad,al llevarlos a la práctica (tiemporeal) se tuvieron que realizar algu-nos ajustes (como por ejemplo,eliminar los sobretiros, y obtenerun seguimiento del controlador iguala la del proceso, escogiendo unsolo valor óptimo para cada Kp, Ki,y Kd) con lo cual se consiguió queel motor corriera perfectamente.También se pudo comprobar quealgoritmo P.I.D. es ligeramentemejor que el P.I.

La construcción del sistema decontrol digital se llevó a cabo contecnología elaborada y adquiridaen el mercado nacional. Se consi-guió capacitar recursos humanosasí como utilizar materiales nacio-nales propios, propiciando con estoúltimo ahorros económicos e inde-pendencia tecnológica en esta área.Finalmente, se pudo observar que

/*INSTITUTO POLITECNICO NACIONAL

CENTRO DE INVESTIGACION TECNOLOGICA EN COMPUTACION

TEORIA DE CONTROL

PROFESORES:M. EN C. ROMEO URBIETA PARRAZALEZM. EN C. TEODORO ALVAREZ SANCHEZ

ALUMNOS:MARTIN S. DOMINGUEZ GONZALEZCLAUDIA LARA VIVASMANUEL SAENZ SANCHEZRAYMUNDO TELLEZ CORTEZ

DOLASATE INC.

CONTROL P.I.D:

Programa que completa el diagrama de flujo de un controlador empleandoel algoritmo P.I.D.

El programa acepta un nivel de referencia (velocidad del motor). Elsistema muestra al usuario el nivel alcanzado realmente.

El algoritmo P.I.D. trabaja en base a los valores predefinidos de lasconstantes Kp, Ki, y Kd.

*/

#include <STDIO.H>#include <DOS.H>#include <CONIO.H>#include <GRAPHICS.H>

#define PUERTO_A 0X100 /* DIRECCION DEL PUERTO A DEL 8255 */#define PUERTO_B 0X101 /* DIRECCION DEL PUERTO B DEL 8255 */#define PUERTO_C 0X102 /* DIRECCION DEL PUERTO C DEL 8255 */#define CONTROL 0X103 /* DIRECCION DEL PUERTO DE CONTROL DEL 8255 */

#define KP 0 /* CONSTANTE PROPORCIONAL */#define KI 0.3462 /* CONSTANTE INTEGRAL */#define KD 1.3849 /* CONSTANTE DERIVATIVA */

voidportada(); /* SUBRUTINA DE PRESENTACION */void inicio(); /* SUBRUTINA DE INICIALIZACION DEL PROCESO */voidpid(); /* SUBRUTINA DE CONTROL P.I.D. */

charDATO; /* VARIABLE PARA LEER UN DATO DEL ADC */

int TECLA; /* VARIABLE QUE REGRESA EL CODIGO DE LA TECLA PRESIONADA POR EL USUARIO */

VI 1 13 polibits 25

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

float IN0 = 0, /* VALOR DE LA ENTRADA EN UN INSTANTE t*/IN1 = 0, /* VALOR DE LA ENTRADA EN UN INSTANTE t-1

*/IN2 = 0, /* VALOR DE LA ENTRADA EN UN INSTANTE t-2

*/

OUT0 = 0, /* VALOR DE LA SALIDA EN UN INSTANTE t */OUT1 = 0, /* VALOR DE LA SALIDA EN UN INSTANTE t-1 */

REF = 3, /* VALOR DE LA REFERENCIA (EN VOLTS) */PASO = 3, /* VARIABLE DE PASO PARA LA REFERENCIA */RETRO ; /* VALOR LEIDO DEL ADC */

/* ���������� PROGRAMA PRINCIPAL ���������� */void main(void){portada();inicio();pid();}

/* ������������� PRESENTACION ������������� */void portada(){int gd, gm, tam_x; /* Tamaños de letras a utilizar */

/* Inicializamos gráficos */gd=DETECT;initgraph(&gd,&gm,�c:\\tc\\bgi�);

/* Encuentra el tamaño óptimo para las letras */tam_x=(getmaxx()/4)/25;

/* Escribe el título */settextstyle(TRIPLEX_FONT,HORIZ_DIR,tam_x);outtextxy(getmaxx()/3,getmaxy()/4,�CONTROL�);settextstyle(TRIPLEX_FONT,HORIZ_DIR,tam_x);outtextxy((15*getmaxx())/36,getmaxy()/2,�P.I.D.�);settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);outtextxy(getmaxx()-190,getmaxy()-30,�by DOLASATE INC.�);

/* Cerramos gráficos */getch();}

/* ������������� INICIALIZACION ������������� */void inicio(){/*

CONFIGURAMOS EL 8255:PUERTO A SALIDAPUERTO B ENTRADAPUERTO C SALIDA

*/outportb(CONTROL,0X82);

/* MANDAMOS 0 VOLTS AL DAC0 (FRENAMOS EL MOTOR) */outportb(PUERTO_A,0x00);

/*CAPTURAMOS EL VALOR:PC5 1 LOGICOPC6 1 LOGICO

*/

outportb(CONTROL,0X0B);outportb(CONTROL,0X0D);

/*DESACTIVAMOS EL DAC0

el circuito realizado �interface depotencia�, puede tomarse comobase para implantar otros algorit-mos de control y comprobar losdesarrollos teóricos, definiendo asísi los sistemas lineales son estables,con perturbaciones suaves y brus-cas en la carga del motor

La prueba del sistema de con-trol digital se llevó a cabo medianteel programa estructurado en len-guaje Turbo C, dicho programa, decreación propia, fue instalado en lamemoria de una PC (IPN-E32). Aquí,la computadora fue utilizada comoelemento fundamental de control ycomo una poderosa herramientade monitoreo.

Bibliografía

[1] DORF, Richard. SistemasModernos de Control. Addi-son-Wesley Iberoamericana,2a. edición. México, 1989.

[2] HOUPIS, Constantine. Di-gital Control Systems.McGraw-Hill, 2a. edición.Singapore, 1992.

[3] KUO,Benjamin C. DigitalControl System. Halt, Rine-hart and Winston,Inc. 1980.

[4] ALVAREZ, Teodoro. �Dise-ño y construcción de unsistema dedicado al controlde motores de C.D. basadoen el microcontrolador8031 de INTEL.�. POLI-BITS. Año IV, Vol.1,Num.10, Octubre-Diciembre1992.

[5] PARRAZALES, Romeo.�Simulación de la posiciónde un motor de C.D. de 1/15de H.P controlado por un

26 polibits 1994

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

PC5 0 LOGICOPC6 0 LOGICO

*/outportb(CONTROL,0X0A);outportb(CONTROL,0X0C);getche();closegraph();clrscr();

gotoxy(8,5);printf(�VEL. REQUERIDA�);gotoxy(28,5);printf(�VEL. ALCANZADA�);gotoxy(13,10);printf(�CONTROL DE VELOCIDAD�);}

/* �������������� ALGORITMO �������������� */void pid(){for (;;){

/*CONFIGURAMOS EL 8255:PUERTO A SALIDAPUERTO B ENTRADAPUERTO C SALIDA

*/outportb(CONTROL,0X82);

/*SE SELECCIONA LA INT0 DEL ADC COMO ENTRADA ANALOGICA:PC10 LOGICOPC20 LOGICOPC30 LOGICO

*/outportb(CONTROL,0X02);outportb(CONTROL,0X04);outportb(CONTROL,0X06);

/*SE INICIA LA CONVERSION:PC41 LOGICOPC40 LOGICO

*/outportb(CONTROL,0X09);outportb(CONTROL,0X08);

/*SE CONFIGURA 8255:PUERTO APUERTO BPUERTO C

*/outportb(CONTROL,0X83);

/* ESPERAMOS A QUE TERMINE LA CONVERSION */do{

DATO=inportb(PUERTO_C);}while(DATO & 1);

/* LEEMOS UN DATO DEL ADC-IN0 (RETROALIMENTACION) */DATO=inportb(PUERTO_B);

RETRO=(5.0*DATO)/255;

gotoxy(30,7);printf(�%3.3f�,(RETRO*657)/5);

/* REALIZAMOS EL CONTROL PID */IN0=REF-RETRO;

OUT0=((KP+KI+KD)*IN0) - ((KP+(2*KD))*IN1) + (KD*IN2) + OUT1;

algoritmo PI usando la mi-crocomputadora IPNe16-m.� POLIBITS . Año IV,Vol.1,Num.9, Julio-Septiem-bre 1992.

[6] PARRAZALES, Romeo.�Diseño y construcción deuna tarjeta convertidora de8 canales de A/D y 4 canalesde D/A�. POLIBITS, Año VIVol. Num. 12. Enero-Marzo1994.

VI 1 13 polibits 27

Análisis, Diseño y Construcción de un Control Digital Directo usando la Computadora IPNE-32

IN2=IN1;IN1=IN0;OUT1=OUT0;

gotoxy(10,7);printf(�%3.3f�,(OUT0*657)/5);

/* ESCRIBIMOS LA SALIDA DEL CONTROL AL DAC */outportb(PUERTO_A,(unsigned char) OUT0);

outportb(CONTROL,0X0B);outportb(CONTROL,0X0D);

outportb(CONTROL,0X0A);outportb(CONTROL,0X0C);

/*ACEPTAMOS LAS TECLAS DE CURSORARRIBA AUMENTAMOS LA VARIABLE DE PASOABAJO DISMINUIMOS LA VARIABLE DE PASOENTER ACTUALIZAMOS EL VALOR DE LA REFERENCIAESC SALIMOS DEL PROGRAMA

*/if(kbhit())

{switch(getch()){

case 72:if(PASO<=4.78) PASO+=0.02;gotoxy(20,12);printf(�%1.3f�,(PASO*675)/5);break;

case 80:if(PASO>=1.02) PASO-=0.02;gotoxy(20,12);printf(�%1.3f�,(PASO*675)/5);break;

case 13:REF=PASO;break;

case 27:/* PARAMOS EL MOTOR */outportb(PUERTO_A,0x00);

outportb(CONTROL,0X0B);outportb(CONTROL,0X0D);

outportb(CONTROL,0X0A);outportb(CONTROL,0X0C);exit();

default:break;

}}

}}

28 polibits 1994

El impacto de la nueva generación de microprocesadores en la Ingeniería de Software

El impacto de la nuevageneración de

Microprocesadores en laIngeniería de Software

secuencia, la comunicación vía sa-télite y la encriptación de la infor-mación en tiempo real es un hechocomún en nuestros días.

La capacidad de estos micro-procesadores ha quedado de mani-fiesto, sin lugar a dudas; sin embar-go, todas estas aplicaciones son loque se denomina, �Soluciones Inte-grales�, donde los Ingenieros deHardware y de Software no tienenmás que aplicar esta solución yesperar los resultados. De estemodo, la solución esperada estaráacotada en las ventajas y limitacio-nes definidas por los diseñadoresde estas �Soluciones Integrales�.Para el presente análisis se partirádel caso en donde la arquitectura dela �Solución Integral� permita quediseñadores de Software desarro-llen aplicaciones para resolver untipo de problema en particular de lainstitución receptora.

A continuación se muestran al-gunas de las características que seconsidera limitan el desarrollo deSoftware:

a).- De la Arquitectura de Computa-doras.

o Arquitectura del micropro-cesador.

o Tiempo de Acceso a memo-ria.

o Ancho de banda del �bus�.o Ubicación en la arquitectura

de los periféricos.

o Características de los dispo-sitivos periféricos.

o Capacidad de procesamien-to de la unidad de puntoflotante.

o Capacidad de manejo dememoria principal y virtual.

b).- Del Compilador.

o Capacidad de migración decódigo a otros sistemas.

o Capacidad de compactaciónde código.

o Capacidad de generación decódigo utilizando las caracte-rísticas del microprocesador.

c).- Del Sistema Operativo.

o Capacidad de administraciónde recursos.

o Capacidad de administraciónde dispositivos periféricos.

o Velocidad de respuesta ensus rutinas de atención.

Con lo anterior se puede con-cluir que todo desarrollo de Soft-ware en una computadora especí-fica se encuentra en dependenciadirecta de los alcances y limitacio-nes de su arquitectura, del compila-dor en que se desarrolló la aplica-ción y del sistema operativo en quetrabajará dicho Software.

Un estandard en los diseñado-res de Software se ha establecidoen el lenguaje C de programación,mismo que se encuentra en el mer-

M. en C. Miguel A. Partida TapiaSubdirector Académico y de Investiga-ción del CINTEC-IPN.

a Ingeniería de Software hatenido una evolución muy

importante durante los últimos diezaños; sin embargo, en relación aldesarrollo del Hardware, se man-tiene y en algunos casos se amplíaun margen de retraso de por lomenos 5 años. Este desfasamientose profundizó principalmente porla llegada de las computadoras per-sonales y su alta demanda en lasdiversas áreas del conocimiento ypor el tipo de usuarios.

Los principales avances delHardware se han enfocado al desa-rrollo de microprocesadores tipoRISC ("Reduced Instruction SetCode", Conjunto Reducido de Ins-trucciones), Coprocesadores Gráfi-cos y Almacenamiento Masivo deDatos. Un ejemplo de esto es elmicroprocesador i860 de IntelCorp., el cual integra una unidad deprocesamiento tipo RISC, copro-cesador numérico y coprocesadorgráfico y, adicionalmente, capaci-dad para un alto ancho de banda de�bus� para transferencia de datos.Estas características de los micro-procesadores han generado nue-vas alternativas de procesamientode datos y comunicaciones, princi-palmente el desarrollo de Multime-dia, y en particular la capacidad derealizar comunicaciones de voz eimagen en tiempo real; como con-

L

VI 1 13 polibits 29

El impacto de la nueva generación de microprocesadores en la Ingeniería de Software

que, al diseñar el Software, seaanalizado desde un punto de vistaen el que la arquitectura del micro-procesador es óptima, esto es, quecada procedimiento pudiese serparalelizable en mayor medida. Enlas gráficas que se muestran a con-tinuación, se establece un análisis

de los diversos tipos de microproce-sadores, donde se puede observarla relación entre precio/rendimien-to. Dicha evaluación se efectuó conSoftware realizado por la StandardPerformance Evaluation Corp., elcual mide las capacidades de rendi-miento en operaciones de puntoflotante (SPECFP92) y enteros

(SPECINT92). Además, se usó elsistema operativo UNIX de SiliconGraphics y la versión mas recientede NT WINDOWS. En algunoscasos, como los microprocesadoresR4400 y ALPHA, sus resultadosfueron caracterizados por emula-ción, dado que algunas rutinas, prin-

cipalmente de NT WINDOWS,solo son nativas en microprocesa-dores de INTEL Corp. En este casola pérdida de rendimiento fue ajus-tada para la tabla comparativa (1).

De lo anteriormente descrito, sepuede expresar que el rendimientode un diseño de Software se en-

cado con diversas facetas, desde unseudo lenguaje de alto nivel (comooriginalmente fue propuesto), has-ta aplicaciones en ProgramaciónOrientada a Objetos. Este lenguajetiene su fundamento en la transpor-tabilidad, sin embargo, solo ocurreen aquellas funciones que han sidonormalizadas (ANSI). Dicha estan-darización, en el mejor de los casos,alcanza hasta un 40% de las funcio-nes que comprende el compilador,el resto se sujeta a funciones quecada fabricante ha definido por sucuenta y que tienen cierta similituda otros compiladores que existenen el mercado, pero no son compa-tibles.

La mayoría de los compiladoresmantienen un esquema de com-patibilidad hacia �atrás� (versionesanteriores), obligando con ésto amanejar criterios de compilación ygeneración de código bajo esteesquema. El compilador generarácódigo para un 8088 igual que paraun 80486, con solo cambiar unabandera en la solicitud de compila-ción, sin embargo, esto no basta,sino que se hace necesaria unaoptimización del mismo para nolimitar el rendimiento (�Performan-ce�) del microprocesador. No obs-tante, hasta el momento no existenaún, en la línea Intel, compiladoresque optimicen suficientemente elcódigo como para poder establecerun máximo rendimiento de la nue-va generación de microprocesado-res.

Como anteriormente se expu-so, la característica de los nuevosmicroprocesadores RISC estable-ce la posibilidad de ejecutar la ma-yoría de sus instrucciones en uno odos ciclos de reloj y realizar una omás instrucciones en este mismociclo; dicho de otra manera, setiene la posibilidad de paralelizarciertas operaciones de alto nivel.Lo anterior implica la necesidad de

SPECFP92

0

20

40

60

80

100

120

140 R4400 @ 100MHz

R4400 @ 75 MHz

ALPHA @ 133 MHz

PENTIUM @ 66 MHz

SSPARC @ 40 MHz

PA750 @ 66 MHz

486DX2 @ 66 MHz

SPECINT92

0

20

40

60

80

100

120

140 R4400 @ 100 MHz

R4400 @ 75 MHz

ALPHA @ 133 MHz

PENTIUM @ 66 MHz

SSPARC @ 40 MHz

PA750 @ 66 MHz

486 DX2 @ 66 MHz

30 polibits 1994

El impacto de la nueva generación de microprocesadores en la Ingeniería de Software

cuentra definido por la siguienteexpresión:

RSW = 1 - ( LAC + LCMP + LSO).

donde RSW

se define como el rendi-miento de diseño de Software.

LAC = Las limitaciones de la ar-quitectura de la computado-ra donde va a ser ejecutada laaplicación,

LCMP

= La limitación del compi-lador en obtener el máximorendimiento en la genera-ción de código y

LSO

= Las limitaciones del siste-ma operativo para entregary administrar los recursos re-queridos por la aplicación.

El cálculo de rendimiento parauna arquitectura de computadoradada se podrá determinar con elsiguiente ejemplo. Sea:

TAC

= El tiempo total en segun-dos de una rutina completa,medida en base a los tiemposreportados por instrucción aejecutar y

T�AC

= El tiempo total en segun-dos de una rutina completaejecutada, medida en tiem-po real.

RAC

= 1 - ( T�AC

- TAC

) / TAC

donde:

LAC

= 1 - RAC

= ( T�AC

- TAC

) / TAC

El rendimiento RSW del Software,independientemente de las varia-bles anteriormente expuestas, severá afectado por variables intrín-secas al Ingeniero diseñador deSoftware, como son:

o Metodología de diseño em-pleada.

o Modularidad.o Dependencia de datos.o Verificación de transferen-

cias entre módulos.o Criterios de Auditoría Infor-

mática a establecer en el sis-tema.

o Requerimiento de uso de ru-tinas de �tiempo real�

o Requerimiento de almace-namiento masivo.

o Velocidad de las transferen-cias en el almacenamientode datos.

o Menú de interface.o etc.

De la misma forma pero ensentido contrario, estas variablesdefinen los criterios particulares deltipo de arquitectura de la computa-dora, compilador y sistema opera-tivo que habrá de seleccionarse.

Bibliografía

[1] Child, J. "Pentium price/per-formance clouded by Softwareissues", Computer Design, May1993, pp 28-30.

[2] Intel Corp. �Procesador Pen-tium, Descripción General de Ren-dimiento�, Notas Técnicas, Ver-sión 2, Agosto 1993.

[3] White, B. �ProgrammingTechniques for Software Devel-opment�, Stanford University, ISBN0-442-29187-6, Edit. Van NostrandReinhold, 1989.

OBSERVACIONES

Si te interesa contribuir con algún comentario o sugerencia, el Consejo Editorialde la Revista Polibits agradecerá utilices este espacio.

#

Y lo remitas a :

Centro de Investigación Tecnológica en ComputaciónConsejo Editorial Revista POLIBITSAv. Té No. 950, Edificio de Graduados 2o. piso.Colonia Granjas México. C.P. 08400México D. F.( 6-54-39-32, 6-49-50-36, 6-49-03-66 ext. 327. Fax : 6-57-74-53.

Si tu contribución es en forma de un artículo, favor de anexar los siguientes datos:Nombre del autor, Grado Académico e Institución de procedencia.