UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica Diseño e implementación de una interfaz SCSI-1 diagnóstico de química. para un Por Olivers R. De Abreu Sarli Sartenejas, Noviembre de 2005 instrumento de UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica Diseño e implementación de una interfaz SCSI-1 diagnóstico de química. para un instrumento de Por Olivers R. De Abreu Sarli Realizado con la Asesoría de Jaime Quiroga y Osberth C. De castro C. PROYECTO DE GRADO Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, Noviembre de 2005. UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica Diseño e implementación de una interfaz SCSI-1 para un diagnóstico de química. PROYECTO DE GRADO presentado por Olivers R. De Abreu Sarli instrumento de REALIZADO CON LA ASESORIA DE Jaime Quiroga y Osberth C. De castro C. RESUMEN Este informe muestra el diseño, desarrollo e implementación de una interfaz entre la tecnología SCSI y la tecnología ATA/IDE la cual se desarrolló para integrar la tecnología de almacenamiento de un disco duro ATA/IDE a un instrumento de química EXPRESS 550. Se realizó el proyecto en etapas, basándose en otras interfaces típicas existentes, con lo cual se obtuvo una tarjeta electrónica basada en microcontroladores que ofrece una interfaz totalmente funcional, integral y con un funcionamiento óptimo que permitió actualizar el instrumento de química EXPRESS 550 a una tecnología de almacenamiento más actual y económica. PALABRAS CLAVES INTERFAZ, SCSI, ATA/IDE, MICROCONTROLADOR, EQUIPOS MÉDICOS Aprobado con mención:_______ Sartenejas, Noviembre de 2005. DEDICATORIA A mis Padres, que sin su apoyo no hubiera alcanzado mis metas. iii INDICE GENERAL Resumen ...................................................................................................................... i Dedicatoria ..................................................................................................................ii Índice General ............................................................................................................ iii Índice de Tablas...........................................................................................................v Índice de Figuras ........................................................................................................vii Tabla de Símbolos ..................................................................................................... viii Glosario de Abreviaturas ............................................................................................ ix CAPITULO 1: INTRODUCCION ..........................................................................1 1.1.- Introducción ........................................................................................................1 1.2.- Resultados Obtenidos..........................................................................................2 1.3.-Visión General de los Capítulos...........................................................................2 CAPITULO 2: PLANTEAMIENTO DEL PROBLEMA......................................4 2.1.- Justificación y antecedentes ................................................................................4 2.2.- Objetivo General .................................................................................................4 2.3.- Objetivos Específicos..........................................................................................4 2.4.- Soluciones Planteadas .........................................................................................4 2.3.- Alcance y limitaciones ........................................................................................5 CAPITULO 3: MARCO TEORICO .......................................................................6 3.1.- La interfaz SCSI .................................................................................................6 3.2.- Estándares SCSI ..................................................................................................6 3.2.1.- SCSI-1 ..................................................................................................6 3.2.2.- SCSI-2 ..................................................................................................7 3.2.3.- SCSI-3 ..................................................................................................8 3.3.- El bus de SCSI ....................................................................................................9 3.3.1.- Tipos de Buses SCSI ...........................................................................10 3.3.1.1.- Bus de Terminación Simple .................................................11 3.3.1.2.- Bus Diferencial de Alto Voltaje ...........................................11 3.3.1.3.- Bus Diferencial de Bajo Voltaje...........................................12 3.3.2.- Cables y Conectores ............................................................................12 3.3.3.- Señales del bus SCSI ...........................................................................14 3.3.3.1.- Señales de Datos...................................................................14 3.3.3.2.- Señales de Control ................................................................14 3.4.- El Protocolo SCSI ..............................................................................................17 3.4.1.- Fases del protocolo SCSI ....................................................................17 3.4.2.- Modos de transferencia de datos .........................................................20 3.4.2.1.- Transferencia de datos Síncrono...........................................20 3.4.2.2.- Transferencia de datos Asíncrona.........................................20 3.4.3. Comandos SCSI....................................................................................21 3.5.- Interfaz ATA/IDE ..............................................................................................22 3.6.- Modos de Transferencia ATA/IDE ....................................................................23 iv 3.6.1.- Modo de Transferencia PIO ................................................................23 3.6.2.- Modo de Transferencia DMA .............................................................24 3.7.-Modos de direccionamiento Lógico....................................................................25 3.8.-Configuración ATA/IDE.....................................................................................26 3.9.-Señales del bus ATA/IDE ...................................................................................26 3.10.- Registros de los Dispositivos ATA/IDE ..........................................................27 3.11.- Estándares ATA/IDE .......................................................................................29 CAPÍTULO 4: METODOLOGÍA ..........................................................................32 4.1.- Estudio bibliográfico de los dispositivos de almacenamiento ...........................32 4.2.- Estudio del proyecto de la interfaz SCSI-1 a SCSI-2.........................................32 4.3.- Estudio, modificación e implementación del programa del proyecto LUNEXPRESS..................................................................................................33 4.4.- Desarrollo de la interfaz SCSI............................................................................34 4.5.- Desarrollo del controlador IDE ..........................................................................34 4.6.- Interfaz entre el controlador SCSI y el controlador IDE....................................35 4.7.-Diseño de la Tarjeta Integrada ............................................................................37 CAPITULO 5: Interfaz entre un disco SCSI y un dispositivo de almacenamiento IDE 5.1.- Descripción General...........................................................................................38 5.2.- Características Principales..................................................................................39 5.3- Funcionamiento...................................................................................................40 5.4- Comandos y Funciones Soportadas.....................................................................41 5.5.- Direccionamiento ...............................................................................................43 5.6.- Señales de Control y Datos ................................................................................43 5.7.- Funcionamiento del Programa ...........................................................................49 5.8.- Conexiones .........................................................................................................54 5.9.- Especificaciones Eléctricas ................................................................................55 5.10.- Tecnología Seleccionada..................................................................................56 5.11.- Circuito Impreso...............................................................................................57 CAPITULO 6: ANALISIS DE RESULTADOS ....................................................60 6.1.- Resultados Obtenidos con el Analizador de Señales .........................................60 6.2.-Análisis de los Resultados...................................................................................62 CAPITULO 7: CONCLUSIONES Y RECOMENDACIONES...........................63 7.2.- Recomendaciones...............................................................................................63 REFERENCIAS BIBLIOGRAFICAS ...................................................................65 APENDICE A*: ESTANDAR SCSI-2 APENDICE B*: ESTANDAR ATA VERSION 7 * Los Apéndices están incluidos en el CD que acompaña este informe v ÍNDICE TABLAS Tabla 1.- Referencia de cables SCSI. .........................................................................12 Tabla 2.- Especificaciones del largo de los cables del bus SCSI ...............................13 Tabla 3.- Señales de Control del Bus SCSI ................................................................15 Tabla 3.- Señales de Control del Bus SCSI (Continuación).......................................16 Tabla 3.- Señales de Control del Bus SCSI (Continuación 2)....................................17 Tabla 4.- Bloque de Descripción de Comando básico de seis bytes ..........................21 Tabla 5.- Modos PIO ..................................................................................................23 Tabla 6.- Modos de Transferencia DMA de palabra simple ......................................24 Tabla 7.- Modos DMA Multipalabras ........................................................................25 Tabla 8.- Registro de los Dispositivos ATA/IDE.......................................................28 Tabla 8.- Registro de los Dispositivos ATA/IDE (Continuación) .............................29 Tabla 9.- Estándares ATA ..........................................................................................30 Tabla 10.- Comandos SCSI soportados por el IDEXPRESS ................................................. 41 Tabla 11.- Comandos IDE soportados por el IDEXPRESS ................................................... 41 Tabla 12.- Funciones del IDEXPRESS................................................................................. 42 Tabla 12.- Funciones del IDEXPRESS (Continuación)........................................................ 43 Tabla 13.- Señales de Control del Bus SCSI IDEXPRESS ................................................... 44 Tabla 13.- Señales de Control del Bus SCSI IDEXPRESS (Continuación) ......................... 45 Tabla 13.- Señales de Control del Bus SCSI IDEXPRESS (Continuación 2) ....................... 46 Tabla 14.- Señales de Control del Bus IDE del IDEXPRESS ............................................... 47 Tabla 14.- Señales de Control del Bus IDE del IDEXPRESS (Continuación) ...................... 48 Tabla 15.- Señales de Control del Bus IDE interno del IDEXPRESS ................................... 48 Tabla 15.- Señales de Control del Bus IDE interno del IDEXPRESS (Continuación) .......... 49 vi Tabla 16.- Conexión Serial RS232......................................................................................... 54 Tabla 17.- Valores de Operación............................................................................................ 55 Tabla 18.- Resultados de Escritura y Lectura......................................................................... 62 vii ÍNDICE DE FIGURAS Figura 1.- Ejemplo de Configuraciones de SCSI .......................................................10 Figura 2.- Señales de Control SCSI............................................................................14 Figura 3.- Secuencia de Fases del bus SCSI...............................................................18 Figura 4.- Esquema del sistema típico del IDEXPRESS............................................39 Figura 5.- Bloques internos del IDEXPRESS ............................................................40 Figura 6.- Diagrama de flujo programa controlador SCSI .........................................51 Figura 7.- Diagrama de flujo programa controlador IDE...........................................52 Figura 8.- Conexiones físicas del IDEXPRESS .........................................................54 Figura 9.- Diagrama esquemático del circuito controlador bus IDE del IDEXPRESS. ...................................................................................... 56 Figura 10. Diagrama esquemático del circuito controlador bus SCSI del IDEXPRESS ........................................................................................57 Figura 11.- Cara superior de la tarjeta integrada IDEXPRESS..................................58 Figura 12.- Cara inferior de la tarjeta integrada IDEXPRESS ...................................59 Figura 13.- Captura de transmisión de datos bus SCSI ..............................................60 Figura 14.- Captura de transmisión de señales de control bus SCSI..........................60 Figura 15.- Señales de control de transferencia de datos ...........................................61 viii TABLA DE SIMBOLOS Abreviatura A Unidad Ampere bps bits por segundo Hz Hertz MB MegaByte = 1x 106 bytes s Segundo RX Recepción TX Transmisión V Voltio ix GLOSARIO DE ABREVIATURAS ANSI Instituto Nacional de Estándares Americanos (del inglés American National Standards Institute) ATA Tecnología Avanzada de Acoplamiento (del inglés Advanced Technology Attachment) controla los dispositivos de almacenamiento masivo de datos. CDB Bloque Descriptor de Comandos (del inglés Command Descriptor Block). Son los bytes que conforman los comandos SCSI. CPU Unidad Central de Procesamiento (del inglés Central Proccesing Unit). Unidad donde se ejecutan las instrucciones de los programas y se controla el funcionamiento de los distintos componentes del sitema. DMA Acceso directo a memoria (del inglés Direct Memory Access) permite a cierto tipo de componentes acceder a la memoria del sistema para leer y/o escribir independientemente del CPU principal. IDE Controlador Electrónico Incorporado (del inglés Integrated Drive Electronics) que indica que el controlador del dispositivo se encuentra integrado en la electrónica del dispositivo. LUN Número de Unidad Lógica (del inglés Logical Unit Number). Número que se utiliza para identificar a los dispositivos en el bus SCSI. PIO Entrada y salida programada (del inglés programmed input/output). Modo de transferencia de datos utilizado en los primeros dispositivos ATA/IDE. SCSI Pequeño Sistema de Interfaz de Computadora (del inglés Small Computer System Interface). Es una interfaz estándar para la transferencia de datos. CAPITULO 1: INTRODUCCION Muchas veces surge la necesidad de adaptar nuevas tecnologías a equipos y sistemas que tienen tecnologías obsoletas o que ya resultan demasiado costosas para su mantenimiento. Esto se hace cada vez más necesario en nuestro país debido al alto costo que representa actualmente la importación e implementación de nuevos sistemas. Así vemos como por estos problemas se comienza a plantear la posibilidad de desarrollar tecnología de bajo costo, eficiente y optimizada, que permitan alargar la vida de los equipos, y que representen una mejora y un ahorro a largo plazo. Es por ello que ahora muchas compañías han optado por desarrollar proyectos que les permitan actualizar sus sistemas para brindar un mejor servicio y al mismo tiempo, reducir los costos de mantenimiento y operación de sus equipos y sistemas. Científica Industrial de Venezuela es la empresa donde se desarrolló el proyecto. Fue creada en 1977 y es una de las más importantes empresas en el suministro de instrumentos y productos para el laboratorio, especialmente en el laboratorio clínico, hospitales, universidades y centros de investigación en Venezuela. La empresa distribuye en forma exclusiva, a través de ocho oficinas que cubren todo el territorio nacional, los productos de empresas líderes a nivel mundial como BAYER DIAGNOSTICS, OLYMPUS DIAGNOSTICS, SYSMEX CORPORATION, entre otras. El proyecto consistió en diseñar, desarrollar e implementar una interfaz SCSI-1 a otro tipo de dispositivo de almacenamiento a través de un circuito electrónico. El dispositivo de almacenamiento se adaptó a un instrumento de diagnóstico de química Express 550 que utilizaba la tecnología SCSI. Para lograr este objetivo se diseñó e implementó una tarjeta controladora adaptando así un disco duro ATA/IDE al instrumento de química. Esta tarjeta controladora cumple con todas las funciones y características necesarias para que el instrumento de química EXPRESS 550 sea totalmente funcional sin ningún tipo de errores en la integridad de los datos almacenados, y así pueda ser implementado en los laboratorios y clínicas donde existen este tipo de instrumentos químicos. 2 La estructura de este informe se explica a continuación: - Capítulo 1. Introducción Se hace una pequeña descripción de la empresa donde se realizó la pasantía, se da una breve descripción del proyecto, los resultados obtenidos y unas breves conclusiones. - Capítulo 2. Planteamiento del Problema En este capítulo se plantean las justificaciones y razones por las cuales se desarrolló este proyecto, los objetivos generales y específicos y cuales fueron las soluciones que se plantearon para resolver este proyecto. También se discuten sus alcances y limitaciones. - Capítulo 3. Marco Teórico En este capítulo se da una visión general de las características lógicas y físicas y del funcionamiento de la interfaz SCSI así como también de la interfaz IDE. -Capítulo 4. Metodología. En este capítulo se da una síntesis de la metodología utilizada para desarrollar este proyecto, los pasos que se siguieron, las pruebas que se realizaron y de cómo se obtuvieron los resultados finales. -Capítulo 5. Interfaz entre un disco SCSI y un dispositivo de almacenamiento IDE En este capítulo se da una descripción técnica del proyecto desarrollado, su funcionamiento, sus características tanto lógicas cómo física, como por ejemplo comandos soportados, conexiones, etc. Así como su implementación en el instrumento de química EXPRESS 550. - Capítulo 6. Análisis de Resultados Aquí se hace un breve análisis y discusión de los resultados obtenidos al finalizar el desarrollo y la implementación de la interfaz. 3 - Capítulo 7. Conclusión y Recomendaciones Aquí se discuten las conclusiones a las que se llegaron y se dan las recomendaciones que se creen necesarias para el mejoramiento e implementación de este proyecto. CAPITULO 2: PLANTEAMIENTO DEL PROBLEMA En este capítulo se plantean las justificaciones y razones por las cuales se desarrolló este proyecto, los objetivos generales y específicos y cuales fueron las soluciones que se plantearon para resolver este proyecto. También se discuten sus alcances y limitaciones. 2.1.- Justificación y antecedentes El instrumento de química EXPRESS 550 es un equipo que tiene más de 15 años en el mercado y utiliza una tecnología de almacenamiento SCSI-1 de mediados de los ochentas, la cual ya no es fácil de conseguir y su adquisición se ha vuelto muy costosa. Además al dañarse el disco duro SCSI se inutiliza por completo el equipo por largos periodos de tiempo lo cual representa un gran costo para la compañía y para los laboratorios clínicos que poseen estos equipos. Por este motivo, y para alargar la vida de utilización de estos equipos, se ha propuesto en esta compañía un proyecto para actualizar el dispositivo de almacenamiento de este instrumento de química a una tecnología más actualizada y fácil de conseguir. 2.2.- Objetivo General Obtener un dispositivo electrónico que, cumpliendo con los requerimientos de funcionamiento y especificaciones del instrumento EXPRESS 550, permita almacenar datos en discos duros de tecnología actual de bajo costo. 2.3.- Objetivos específicos • Lograr una comunicación eficiente entre el protocolo de comunicación de los dispositivos SCSI-1 con el dispositivo de almacenamiento ATA/IDE. • Obtener un dispositivo electrónico confiable de fácil mantenimiento y reparación. • Lograr aminorar los costos de los dispositivos de almacenamiento actualmente utilizados. 5 2.4.- Soluciones Planteadas Como primer paso, se hizo un estudio de cuál era el dispositivo de almacenamiento actual que cumpliera con las características de ser fácil de encontrar, económico, confiable y que fuera adaptable al instrumento de química. Después de hacer un estudio en el mercado venezolano y comparar las características de varios dispositivos de almacenamiento se llegó a la conclusión de que la mejor solución era la tecnología ATA/IDE. Esta tecnología presenta todas las características que se buscan para el proyecto, entre ellas es un dispositivo que se consigue muy fácilmente, es muy económico tomando en cuenta la relación entre capacidad y precio en comparación con los disco duros SCSI, tiene un protocolo de comunicación fácil de implementar y es un dispositivo bastante confiable y existen varios programas para obtener la información dentro del disco en caso de alguna avería. 2.5.- Alcance y Limitaciones Este proyecto cumplió con los objetivos propuestos logrando desarrollar una tarjeta controladora que permite utilizar dispositivos de almacenamiento del tipo ATA/IDE en el instrumento de química EXPRESS 550 sin la necesidad de continuar utilizando el dispositivo SCSI-1. La tarjeta controladora acepta cualquier dispositivo ATA/IDE actual y logra una comunicación eficiente entre el instrumento de química y el disco duro ATA. Aunque se debía lograr la eliminación de la tarjeta controladora SCSI que es parte del instrumento de química se deja propuesta la eliminación del dispositivo de almacenamiento flexible para un futuro proyecto y así se pueda eliminar esta tarjeta controladora SCSI. CAPITULO 3: MARCO TEORICO En este capítulo se explican las características lógicas, físicas y de funcionamiento de la interfaz SCSI así como también de la interfaz IDE. 3.1.- La Interfaz SCSI SCSI del acrónimo inglés Small Computer System Interface es una interfaz estándar para la transferencia de datos entre periféricos en el bus de la computadora. SCSI es un bus de entrada y salida independiente e inteligente a través del cual una variedad de diferentes dispositivos y una o mas controladoras pueden comunicarse e intercambiar información independientemente de lo que esté haciendo el resto del sistema. El principal objetivo de la interfaz es proveer a las computadoras de una independencia del tipo de dispositivo. Así, diferentes tipos de discos, cintas magnéticas, impresoras, medios ópticos, y otros periféricos pueden ser añadidos a una computadora sin requerir ninguna modificación al hardware o al sistema operativo. Precauciones son tomadas para la adición de características y funciones especiales a través del uso de campos únicos y códigos para los fabricantes. Para ver más información acerca de este tema se recomienda ver [1], [2], [3] 3.2.- Estándares SCSI SCSI comienza en el año de 1979 bajo el nombre de Shugart Associates System Interface (ó SASI). Esta fue la primera interfaz inteligente diseñada para trabajar con disco duros en mini computadoras. En el año de 1981 Shugart Associates y National Cash Register (NCR) presentaron la propuesta SASI al comité X3T9.2 para la publicación de un estándar por el Instituto Nacional Americano de Estándares (ANSI por sus siglas en inglés). Después de muchos años de deliberaciones, finalmente se aprobó el estándar en Junio de 1986. El nuevo estándar publicado como el documento X3.131-1986 fue llamado Small Computer System Interface (SCSI). Esta primera versión ahora es referida como SCSI-1 debido a que desde 1986 nuevos estándares fueron publicados. 7 3.2.1.- SCSI-1 SCSI-1 define lo básico de los primeros buses SCSI, incluyendo la longitud de los cables, señalizaciones, comandos y modos de transferencia. Es muy limitada, especialmente comparándola con los estándares actuales. Los dispositivos correspondientes al estándar SCSI-1 usan una transferencia de 8 bits, con una tasa de velocidad de transferencia máxima de 5 MB/s. Sólo está soportada una transmisión de terminación pasiva. Este estándar no tuvo la adecuada aceptación por parte de los fabricantes, especialmente por la falta de estandarización de los comandos, por lo que no había garantía de que un dispositivo trabajara con otro. Actualmente SCSI-1 es obsoleto y el estándar fue retirado por la ANSI. [4] Debido a la falta de estandarización en el conjunto de comandos casi inmediatamente después de que el SCSI-1 fuera adoptado un grupo de la industria desarrollo el llamado Conjunto de Comandos Comunes (CCS por sus siglas en inglés) el cual fue un intento en resolver este problema de estandarización. 3.2.2.- SCSI-2 En el año de 1986 se comenzó a trabajar con la especificación de SCSI-2. En enero de 1994 fue aprobado por la ANSI el nuevo estándar designado como X3.131-1994 el cual pasó a reemplazar al SCSI-1. Algunas de las metas de esta actualización del estándar fue mejorar el desempeño, la eficiencia y añadir nuevas características a la interfaz. Sin embargo, el objetivo principal fue el de formalizar y estandarizar propiamente los comandos SCSI. A continuación se presenta una lista de las mejoras que introdujo el estándar SCSI-2: i. Nuevos conectores de 50 y 68 pines fueron estandarizados lo cual disminuyó el tamaño de los conectores y los hizo mas eficientes. Esto fue especialmente importante para las computadoras IBM PC, debido a que los conectores anteriores eran muy difíciles de adaptar en una tarjeta controladora dentro de la PC. ii. La velocidad de transferencia de datos a través del bus SCSI fue incrementada gracias a la transmisión síncrona. Esto permitió que la velocidad del bus fuera duplicada hasta llegar a tazas de transferencia de 10MB/s con transmisiones de 8 bits. 8 iii. La velocidad fue aún mayor por el aumento en el tamaño del bus de datos a 16 y 32 bits llamado Wide SCSI. iv. La confiabilidad de la comunicación entre dispositivos fue incrementada al permitir que se inicien negociaciones síncronas siempre que el iniciador o el dispositivo objetivo detecte un cambio. v. La integridad de la señalización fue mejorada debido a que la revisión de paridad en el bus fue hecha obligatoria. vi. Se permitió que varias peticiones fueran hechas simultáneamente en el bus. vii. Se definió el uso de la terminación activa, que provee una terminación más confiable que la terminación pasiva. viii. Para permitir cables más largos se introdujo la señalización diferencial. ix. Con el Wide SCSI se aumentó el número de dispositivos posibles por bus, permitiendo hasta 16 dispositivos en comparación con los 8 permitidos por SCSI-1. x. Conjuntos de comandos fueron añadidos para dispositivos como CD-ROMs, escáner. xi. Muchas otras mejoras se le agregaron a los conjuntos de comandos que existían. Uno de los criterios de diseños más importantes en la creación de SCSI-2 fue la compatibilidad hacia atrás con SCSI-1. Para mayor información de este estándar leer Apéndice A en el CD adjunto. 3.2.3.- SCSI-3 Justo después de la aprobación de SCSI-2 en 1994, se comenzó a trabajar en un nuevo estándar llamado SCSI-3. A diferencia de los estándares anteriores SCSI-3 es una familia de estándares que se van desarrollando independientemente pero que están interrelacionados entre si y con un objetivo común. Debido a su formato y al continuo desarrollo de estos estándares SCSI-3 no se considera aún un estándar aprobado, sin embargo, alguno de sus desarrollos han sido oficialmente adoptados por la industria. Estos estándares están basados en 9 variaciones de la Interfaz Paralela SCSI (SPI por sus siglas en inglés SCSI Parallel Interface), la cual es la manera en que los dispositivos SCSI se comunican entre si. Debido a que SCSI-3 define un número de diferentes estándares, cada uno cubriendo distintos aspectos de SCSI, se hizo necesario organizarlos en un formato que definiría cómo se relacionan entre si y los objetivos de la interfaz como un todo. Este formato es llamado Arquitectura de SCSI-3. Para más información acerca de los estándares se recomienda leer [2], [3], [4] y [5]. 3.3.- El bus SCSI En el bus SCSI es permitida la comunicación entre únicamente dos dispositivos en un tiempo dado, donde uno debe actuar como Iniciador el cual es el que origina la operación y el otro actúa como Objetivo, que es el que responde a la operación solicitada por el Iniciador. Cada dispositivo SCSI tiene un identificador único llamado SCSI ID lo que permite tener múltiples dispositivos en un solo bus. Para un bus de datos de 8 bits se puede tener un máximo de 8 dispositivos lo cual da como resultado un rango de ID de 0 a 7, para un bus de datos de 16 el rango sería de 0 a 15, y para un bus de datos de 32 bits sería de 0 a 31. Además de esto cada dispositivo SCSI puede tener hasta 8 sub-dispositivos, para identificar estos sub-dispositivos se utiliza el Número de Unidad Lógico (LUN logical unit number por sus siglas en inglés) esto permite que se expanda el número de dispositivos que puede soportar el bus SCSI. El diagrama presentado en la Figura 1. muestra las distintas configuraciones que puede tener un sistema SCSI, incluyendo un iniciador con un objetivo, un iniciador con múltiples objetivos y múltiples iniciadores con múltiples objetivos. 10 Un Iniciador conectado a un solo Objetivo Sistema Adaptador SCSI Bus SCSI Iniciador Controlador Unidades Lógicas Objetivo Un Iniciador conectado a múltiples Objetivos Sistema Adaptador SCSI Bus SCSI Iniciador Controlador Unidades Lógicas Objetivo Controlador Unidades Lógicas Objetivo Múltiples Iniciadores conectado a múltiples Objetivos Sistema Adaptador SCSI Bus SCSI Iniciador Sistema Adaptador SCSI Iniciador Controlador Unidades Lógicas Objetivo Controlador Unidades Lógicas Objetivo Controlador Unidades Lógicas Objetivo Figura 1. Ejemplo de Configuraciones de SCSI 3.3.1.- Tipos de Buses SCSI El bus de SCSI puede ser de dos tipos eléctricos: i. Terminación simple ii. Diferencial de Alto Voltaje (HDV High Differential Voltage) iii. Diferencial de Bajo Voltaje (LDV Low Differential Voltage) Los cables están definidos como cable tipo A que es de 50 conductores y cable tipo B que es de 68 conductores. Ambos extremos de cada cable deben tener una terminación o acoplamiento. 11 3.3.1.1.- Bus de Terminación Simple En esta configuración las señales están representadas en un solo conjunto de cables, la información es interpretada por el voltaje con referencia a tierra. Este tipo es el más económico debido a que la electrónica usada para enviar y recibir señales es simple y barata. El problema de este tipo de bus es que, al usar solo una interpretación por la amplitud del voltaje, el ruido presenta un grave problema y esto trae como consecuencia que la longitud de los cables no puede ser mucha, ya que a mayor longitud mayor es la interferencia por el ruido eléctrico externo. Para este tipo de bus se debe usar un cable plano de 50 conductores o un cable de 25 pares cruzados, si se está trabajando con un cable tipo A. Si se utiliza un cable tipo B, se debe usar un cable plano de 68 conductores o un cable de 34 pares cruzados. La máxima longitud del cable no debe exceder los 6 metros. La terminación o acoplamiento del bus debe estar presente en cada extremo del cable y debe ser interna en los dispositivos SCSI que están en los extremos del cable. 3.3.1.2 Bus Diferencial de Alto Voltaje En la configuración diferencial cada señal es enviada a través de dos cables. La información es interpretada por la diferencia de voltaje entre los cables. Cuando en esta configuración el ruido interviene lo hace por igual en ambos cables, al hacer la diferencia entre ambas señales el ruido es cancelado, por lo que esta configuración es más inmune al ruido que la configuración de terminación simple y por lo tanto pueden utilizarse cables más largos y transmisiones a tazas de velocidad mayores. Para este tipo de bus se debe usar un cable plano de 50 conductores o un cable de 25 pares cruzados, si se está trabajando con un cable tipo A. Si se utiliza un cable tipo B, se debe usar un cable plano de 68 conductores o un cable de 34 pares cruzados. La máxima longitud del cable no debe exceder los 25 metros. La terminación o acoplamiento del bus debe estar presente en cada extremo del cable y debe ser interna en los dispositivos SCSI que están en los extremos del cable. 12 3.3.1.3 Bus Diferencial de Bajo Voltaje En este tipo de configuración se utilizan las ventajas de la señalización diferencial pero con la diferencia de que utiliza un bajo voltaje y como consecuencia una baja disipación de potencia. Esto permite que se integre el controlador en un solo componente electrónico integrado. Además se llego al acuerdo de que el bus diferencial de bajo voltaje fuera capaz de detectar tanto dispositivos que trabajen en una configuración de bus de terminación simple como de dispositivos de bus diferencial de alto voltaje. Esto es logrado a través de una señal llamada DIFF SENSE, si el voltaje de esta señal es menor a los 0.6 V evidencia la presencia de un dispositivo de terminación simple, si el voltaje está entre los 0.7 y los 1.9 V es un dispositivo de diferencial de bajo voltaje y si el voltaje sobrepasa los 2.2 V hay dispositivos de diferencial de alto voltaje presentes. Para más información acerca de los tipos de bus véase [2] y [3]. 3.3.2.- Cables y Conectores SCSI define un número mínimo de requerimientos para el número de cables necesarios así como también como las características eléctricas de los cables. Los sistemas SCSI pueden utilizar cables tanto internos como externos al gabinete. Los cables internos son típicamente planos, no aislados, mientras que los cables externos suelen ser redondos y aislados. Debido a que los cables planos causan mucha interferencia, los sistemas LVD utilizan cables redondos internamente también. Tabla 1. Referencia de Cables SCSI. Máxima taza de Estándar de Ancho de bus Bus de datos SCSI-1 8 bits 4 SCSI-2 8 bits SCSI-2 transferencia Tipo de Cable (MB/s) Número de conductores Sin Sin especificación especificación 5 A 50 16 bits 10 B 68 SCSI-3 Paralelo 16 bits 80 P 68 Interfaz (SPI) 32 bits 60 PyQ 68 y 68 13 Tabla 2. Especificaciones del largo de los cables del bus SCSI Tipo de Bus Síncrono 5 MHz Fast-10 Fast-20 (Ultra) Fast-40 (Ultra 2) Fast-80 (Ultra 3) Propiedad Máxima longitud del bus Máxima longitud del bus Máxima longitud del bus Máxima longitud del bus Máxima Terminación Diferencial Alto Diferencial Simple Voltaje Bajo Voltaje 6 metros 25 metros 12 metros 3 metros 25 metros 12 metros 1.5 metros 25 metros 12 metros No se utiliza 25 metros 12 metros No se utiliza No se utiliza 12 metros 0.1 metros 0.1 metros 0.2 metros 0.3 metros No disponible No disponible longitud del bus Todos Máxima longitud de los terminales Todos Mínima longitud de los terminales 14 3.3.3.- Señales del Bus SCSI SCSI utiliza 18 señales para un bus de 8 bits de datos, nueve de estas son señales de control usa para manejar las fases lógicas del bus y nueve son señales de datos 8 para la palabra de datos y uno para paridad. En la Figura 2 se muestran todos los nombres de las señales y cuales señales puede manejar cada dispositivo (el iniciador o el objetivo o ambos). Figura 2 Señales de Control SCSI 3.3.3.1.- Señales de Datos Estas señales están definidas normalmente por la notación DB(0-8,P) para un bus de ancho de 8 bits. Las características principales de estas señales son: • DB7 es el bit mas significativo mientras que DB0 es el menos significativo. • El bit de datos es definido como 1 cuando la señal es verdadera (Una señal verdadera tiene un nivel de voltaje de 0 Voltios en un bus de terminación simple). • El bit de datos es definido como 0 cuando la señal es falsa (Una señal falsa tiene un nivel de voltaje de 3 Voltios para un bus de terminación simple). • La paridad en SCSI es impar. 3.3.3.2.- Señales de Control Las señales de control son utilizadas para realizar las distintas fases del protocolo de comunicación SCSI las cuales son usadas para transmitir toda la información a través del bus. Estas señales están divididas en tres categorías principales: 15 • Señales de control básicas, que son usadas para determinar si el bus esta en uso, para seleccionar otro dispositivo, para tener la atención del objetivo y para resetear el bus. • Señales de control para la transferencia de información, son usadas por el objetivo para controlar las fases de transferencia de información. Las fases de transferencia de información son utilizadas para transmitir comandos, mensajes, datos e información de estado a través del bus. • Señales de tiempo de datos, que son usadas para capturar y validar los datos en el dispositivo de recepción. Tabla 3. Señales de Control del Bus SCSI Señal Definición Categoría Iniciador Objetivo BSY Ocupado Básica Si Si Descripción Indica que el bus esta siendo utilizado. SEL Selección Básica Si Si Indica que un dispositivo SCSI esta tratando de seleccionar o reseleccionar otro dispositivo SCSI. El iniciador utiliza esta señal para seleccionar un objetivo, y el objetivo la utiliza para reseleccionar el iniciador. ATN Atención Básica Si No Usada por el iniciador para indicar una condición de atención, marca un momento cuando el iniciador necesita la atención del objetivo RST Resetear Básica Si No Indica la condición de Reset y tiene la atención de todos los dispositivos. 16 Tabla 3 (Continuación) Señales de Control del Bus SCSI Señal Definición Categoría Iniciador Objetivo C/D Control/Datos Transferencia No Si Información Descripción Indica que datos de información o control están en el bus. Falso indica datos y verdadero indica control. I/O Entrada/Salida Transferencia No Si Información y Indica la dirección del flujo de información en el bus de Control datos desde el punto de vista del iniciador. Falso indica que la dirección es desde el iniciador al objetivo y verdadero indica lo contrario. MSG Mensaje Transferencia No Si Indica que el dispositivo Información y SCSI tiene un mensaje para Control transferir a otro dispositivo. Esta señal es manejada durante la fase de Mensaje. REQ Petición Reloj Datos No Si El objetivo indica una petición para una fase de transferencia de datos. Cuando el objetivo esta manejando el bus de datos esta señal es utilizada para indicarle al iniciador que hay datos listo para el en el bus. 17 Tabla 3 (Continuación 2) Señales de Control del Bus SCSI. Señal Definición Categoría ACK Reconocimiento Reloj Datos Iniciador Objetivo Si No Descripción Esta señal indica que el iniciador reconoce una fase de transferencia de datos. Cuando el iniciador esta manejando el bus de datos esta señal es utilizada para indicarle al objetivo que hay datos disponibles en el bus. Leyenda: Si = Maneja la señal No = No maneja la señal 3.4.- El Protocolo SCSI SCSI utiliza un método para transferir datos entre los dispositivos en un proceso circular que comienza y termina en la misma capa. Este protocolo se realiza a través de varias etapas que debe cumplir cualquier dispositivo para poder transmitir información por el bus. 3.4.1.- Fases del Protocolo SCSI El bus SCSI sólo puede estar en una sola fase en un determinado tiempo. Cada fase tiene un conjunto de reglas o protocolo que debe ser aplicado cuando el bus cambia de una fase a otra. Estas reglas son parte del código interno del dispositivo por lo que el control de las fases viene dado por cada dispositivo conectado al bus. 18 En la Figura 3 se presenta un diagrama de las distintas fases del protocolo SCSI que son seguidas por los dispositivos. Figura 3. Secuencia de Fases del bus SCSI A continuación se explican las distintas fases del protocolo SCSI. BUS LIBRE Es utilizada para indicar que ningún dispositivo SCSI esta usando el bus y que está disponible para cualquier dispositivo. Antes de poder seguir a otra fase el dispositivo debe detectar la fase de bus libre para poder continuar. ARBITRACION Esta fase permite al dispositivo SCSI ganar el control del bus para que así pueda asumir el rol de iniciador u objetivo. Esta es la fase que le sigue a la fase de bus libre. SELECCIÓN 19 Esta fase es utilizada por el iniciador para seleccionar a un objetivo para iniciar cualquier función o comando en el objetivo. Durante esta fase el iniciador envía su número ID y el número ID del objetivo. RESELECCIÓN Es una fase opcional que permite al objetivo reconectarse con un iniciador para continuar una operación que fue anteriormente iniciada por el iniciador pero que fue detenida por el objetivo. COMANDO Esta fase permite al objetivo solicitar información de comandos desde el iniciador. STATUS Permite al objetivo pedir que información acerca del estado sea enviada al iniciador. ENTRADA DE MENSAJE Esta fase es utilizada para que el objetivo pueda solicitar enviar un mensaje hacia el iniciador. SALIDA DE MENSAJE Permite que el objetivo pida que el iniciador le envíe un mensaje. El objetivo llama a esta fase en respuesta a una condición de Atención hecha por el iniciador. ENTRADA DATOS Permite que el objetivo envíe datos al iniciador. SALIDA DATOS Es utilizada por el objetivo para pedirle al iniciador que le envíe datos. Para mayor información acerca de las fases del bus SCSI ver [2] y [3]. 20 3.4.2.- Modos de Transferencia de Datos Para la tecnología de SCSI existen dos modos de transferencia de datos el modo de transferencia Síncrono y el modo de transferencia Asíncrono. 3.4.2.1.- Modo de Transferencia de datos Síncrono Este tipo de modo de transferencia permite a los dispositivos comunicarse más rápidamente debido a que el dispositivo que transmite no debe esperar ningún acuse de recibo por parte del receptor para poder enviar el próximo dato. En SCSI este tipo de transmisión es opcional y debe ser negociado entre el objetivo y el iniciador. La sincronización es hecha a nivel de hardware por lo que los dispositivos deben soportar este tipo de modo de transmisión para que pueda ser aplicado. 3.4.2.2.- Modo de Transferencia de datos Asíncrono Este modo de transferencia es el más utilizado en la comunicación entre dispositivos SCSI y es mucho más lento que el modo de transferencia síncrono debido a los retrasos que ocurren en la negociación en el envío de datos. La negociación asíncrona ocurre en cuatro pasos: • El objetivo hace verdadera la señal de control de petición (REQ) para hacerle saber al iniciador que está solicitando que se le envíe alguna información. • Luego de que el iniciador recibe la señal de REQ coloca los datos en el bus y a continuación hace verdadera la señal de reconocimiento (ACK) para hacerle saber al objetivo que los datos ya están disponibles en el bus. • Al objetivo recibir la señal de ACK lee el bus de datos y hace falsa la señal de REQ • Por último al recibir la señal falsa de REQ el iniciador hace falsa la señal de ACK y espera la próxima petición del objetivo. Aunque este método de transferencia es más lento es mucho más fácil y económico de implementar debido a que se reduce la complejidad del hardware. 21 3.4.3.- Comandos SCSI Un comando es ejecutado cuando el iniciador envía un Bloque de Descripción de Comandos (CDB por sus siglas en inglés Command Descriptor Block) al objetivo durante una fase de comando. Las condiciones que aplican a cada CDB son: • El primer byte del CDB siempre es el código de operación. • El último byte del CDB es el byte de control. • El formato de los bytes del código de operación y de control son idénticos para todo comando SCSI. En la Tabla 4 se muestra el formato básico de un comando de seis bytes: Tabla 4. Bloque de Descripción de Comando básico de seis bytes. bit 7 bit 6 bit 5 byte 2 bit 3 bit 2 bit 1 bit 0 Código de Operación byte 0 byte 1 bit 4 Número de Unidad Lógica (LUN) Bit más significativo de la dirección lógica Dirección de bloque lógico (Si es requerida) Bit menos significativo de la dirección lógica byte 3 byte 4 Tamaño de la transferencia (Si es requerido) byte 5 Byte de control Código de operación: Este campo le dice al objetivo que tan largo sera el CDB y que operación quiere el iniciador que el objetivo realice. Número de Unidad Lógica (LUN): Este campo fue más usado por SCSI-1 pero casi nunca es utilizado por los nuevos estándares. Dirección de bloque lógico: Este campo le dice al objetivo donde está ubicada la información en el medio físico. Los bloques lógicos comienzan en 0 y son contiguos hasta la ubicación del último bloque en el dispositivo. Los bloques son medidos en bytes y son la unidad más 22 pequeña de medición en un dispositivo una medida típica de bloque en un disco duro es de 512 bytes. Tamaño de la transferencia: Este campo le dice al objetivo la cantidad de datos que se van a transferir, normalmente está definido como la cantidad de bloques que se van a transmitir. Byte de control: Este campo es utilizado para operaciones especiales como enlace de comandos, también tiene algunos bits para operaciones únicas de los fabricantes. También existen CDB de 10, 12 y 16 bytes. Algunos dispositivos aceptan todos estos tipos de CDB y algunos solamente aceptan de 6 bytes. Para mayor información acerca de los comandos y los CDB véase [2] y el Apéndice A. 3.5.- Interfaz ATA/IDE ATA viene de las siglas en inglés para Advanced Technology Attachment, es una interfaz estándar para conectar dispositivos de almacenamiento tales como disco duros y unidades de CD-ROM dentro de sistemas. A pesar de que el nombre oficial del estándar ATA, hay muchos sinónimos y abreviaciones utilizadas entre la cual la que más popular se ha hecho es la IDE (Integrated Drive Electronics por sus siglas en inglés), por lo que normalmente esta tecnología es llamada indistintamente ATA, IDE ó ATA/IDE. En el año de 1984 tiene su origen el estándar ATA/IDE, debido a un pedido de Compaq a Western Digital. Compaq necesitaba una controladora compatible con el estándar ST506, pero debido a la falta de espacio en el interior de un nuevo modelo de PC, la interfaz debía estar integrada en el propio disco, de ahí el nombre IDE ("Integrated Drive Electronics"). Toda la electrónica de control se concentra en el dispositivo a controlar (el disco duro), con lo que puede conectarse directamente el disco con el bus del sistema. Las primeras unidades IDE son de 1986. La realización práctica estaba acompañada de una serie de normas denominadas AT Attachment (ATA) que establecían las condiciones que deben seguir los fabricantes de este tipo de unidades. El sistema fue adoptado rápidamente por otros fabricantes, y en 1994 fue aprobada la primera versión del estándar ATA. Para mayor información de la interfaz ATA/IDE véase [6] y [7]. 23 3.6.-Modos de Transferencia ATA/IDE Aparte de las distintas interfaces, la velocidad de transferencia de un disco viene determinada por los modos de transferencia que pueden soportar tanto la controladora como el disco duro. Los dispositivos IDE pueden transferir información principalmente empleando dos métodos: PIO y DMA. 3.6.1.- Modo de Transferencia PIO El modo de transferencia de entrada/salida programada (PIO programmed input/output por sus siglas en inglés) fue el método original usado para transferir datos entre el controlador ATA y el dispositivo ATA. PIO esta agrupado en diferentes modos que correspondes a tazas de transferencias distintas. Todos los dispositivos ATA soportan el modo más lento (Modo 0). Al acceder los registros de información usando el Modo 0 en el controlador ATA, el CPU puede determinar la taza de transferencia máxima para el dispositivo y configurar el controlador ATA para un desempeño optimo. El modo PIO depende del procesador principal del sistema para efectuar el trasiego de datos repercutiendo en el rendimiento del sistema. Tabla 5. Modos PIO Modo Taza de Transferencia Estándar donde fue Máxima (MB/s) definido Modo 0 3.3 ATA Modo 1 5.2 ATA Modo 2 8.3 ATA Modo 3 11.1 ATA-2 Modo 4 16.7 ATA-2 24 3.6.2.-Modo de Transferencia DMA Acceso directo de memoria (Direct memory access DMA por sus siglas en inglés) permite, como su nombre lo indica, que los dispositivos tengan acceso directo para la lectura y escritura de la memoria del sistema independientemente del procesador principal del sistema, dejando esta tarea a el controlador DMA. Muchos tipos de modos DMA han sido definidos para la interfaz ATA/IDE, están agrupados en dos categorías. El primer grupo de modos son llamados modos DMA de palabras simples, cuando estos son utilizados, cada transferencia contiene solamente una palabra de 16 bits. Este tipo de transferencia fue definido en el primer estándar ATA. Tabla 6. Modos de transferencia DMA de palabra simple Modo DMA Palabra simple Taza de Transferencia Estándar donde fue Máxima (MB/s) definido 2.1 ATA 4.2 ATA 8.3 ATA Modo 0 Palabra simple Modo 1 Palabra simple Modo 2 La velocidad de transferencia de los modos de palabra simple es muy lenta y además es poco eficiente, es por esto que fueron rápidamente suplantados por los modos de multipalabra. En estos modos la transferencia ocurre en ráfagas de palabras en rápida sucesión, una palabra tras otra, evitando así la sobrecarga de enviar palabra por palabra separadamente. A continuación en la Tabla 7 se presentan algunos de los modos de transferencia multipalabra. 25 Tabla 7. Modos DMA Multipalabras Modo DMA Taza de Transferencia Estándar donde fue Máxima (MB/s) definido 4.2 ATA 13.3 ATA-2 16.7 ATA-2 Multipalabra Modo 0 Multipalabra Modo 1 Multipalabra Modo 2 Actualmente todos los modos de transmisión para ATA/IDE son DMA multipalabra. 3.7.- Modos de Direccionamiento Lógico La especificación original de ATA usaba un modo de direccionamiento de 28 bits, lo cual permitía direccionar hasta 268,435,456 sectores de 512 bytes (hasta 137 GB). Sin embargo en las primeras computadoras personales se utilizaba el direccionamiento por Cilindro, Cabeza y Sector (CHS por sus siglas en inglés Cylinder, Head and Sector) que limitaba a un tamaño máximo de direccionamiento para los dispositivos ATA/IDE de solo 512 MB. Como la capacidad de los discos crecía de forma imparable, pronto se hizo necesario sobrepasar también el límite de direccionamiento de CHS. Para esto se ideó un sistema denominado Direccionamiento Lógico por Bloques (LBA Logical Block Addressing por sus siglas en inglés), que implica un sistema radicalmente distinto de direccionar los clusters o bloques. En lugar de referirse a ellos en términos geométricos (Cilindro, Cabeza y Sector), a cada cluster se le asigna un número único, Número de Sector. Para ello se numeran 0, 1, 2, ... N-1, donde N es el número total de sectores del disco. Actualmente LBA es el sistema dominante para direccionamiento de discos grandes, puesto que desde que alcanzaron el límite de 8.455 GB, se hizo imposible expresar su geometría en términos de Cilindro, Cabeza y Sector. 26 3.8.- Configuración ATA/IDE Normalmente se utiliza un conector de 40 pines conectado a un cable plano de 40 hilos que posee 3 conectores, uno de ellos se conecta con el controlador ATA y los restantes se conectan a los dispositivos ATA/IDE. En el bus ATA se transmiten 16 bits de datos a la vez. Para los modos de transmisión Ultra DMA/66 que son modos de transmisión de alta velocidad se utilizan cables de 80 hilos que conservan los mismos 40 conectores y los 40 hilos restantes van conectados a tierra para evitar la interferencia entre las señales de los cables. El estándar ATA siempre a especificado un largo máximo del cable de 46 cm, lo que limita a este tipo interfaz para hacer conexiones externas. Si dos dispositivos están conectados al mismo cable, uno de ellos tiene que estar configurado como maestro y el otro como esclavo para evitar conflictos de comunicación en el cable ya que sólo uno de ellos puede transmitir a la vez. En la interfaz ATA no se pueden conectar más de dos dispositivos en el mismo bus. 3.9.- Señales del bus ATA/IDE En el bus ATA/IDE existen 12 señales de control y 16 señales de datos. A continuación una breve explicación de cada una de estas señales RESET Esta señal es colocada como verdadera (verdadera = 5 Voltios) por un tiempo de por lo menos 25 microsegundos después que los niveles de voltaje se estabilizan durante el encendido del dispositivo, puede ser negada en cualquier momento que el dispositivo necesite resetearse. D0...D15 Bus de datos bidireccional. D0...D7 son usados para transferencias de 8 bits por ejemplo cuando se van a transmitir datos a los registros. IOW Señal de escritura. Cuando es detectado un flanco de subida en esta señal el dispositivo copia los datos que se encuentran en el bus de datos al dispositivo. IOR Señal de lectura. En el flanco de bajada de esta señal coloca los datos del dispositivo en el bus de datos. IOCHRDY Esta señal es negada para extender el ciclo de escritura o lectura del controlador en caso de que el dispositivo no esté listo para responder a una petición de transferencia de datos. Cuando no esta negada está en alta impedancia. 27 SPSYNC Esta es una señal de sincronización generada por el dispositivo Maestro. INTRQ Es utilizada para interrumpir el controlador cuando el dispositivo tiene una interrupción pendiente. INTRQ es negada por: • • • • Una señal de RESET. Que el bit SRST del registro de Control del Dispositivo sea puesto en 1 Que el controlador ATA/IDE escriba al Registro de Comando Que el controlador ATA/IDE lea el Registro de Estado. IOCS16 Indica al controlador ATA/IDE que la transmisión de datos va a ser de 16 bits. ADDR(0…2) Usadas para seleccionar un registro o puertos de datos en el dispositivo. PDIAG Será colocada en 1 por el dispositivo Maestro si el dispositivo esclavo ha pasado el diagnostico de prueba. CS1FX Esta señal es generada por las líneas de dirección A3…A9 y es utilizada para acceder los 8 bloques de registros de comandos del disco duro. CS3FX Esta señal es generada por las líneas de dirección A3…A9, es válida durante transferencia de 8 bits desde y hacia el Registro de Bloques de Control, Registro Alterno de Estado, Registro de Control del Dispositivo y la dirección del dispositivo. DASP Es una señal multiplexada de tiempo que indica que el dispositivo esta activo. Usualmente es utilizada como señal de actividad del disco. 3.10.- Registros de los Dispositivos ATA/IDE Los dispositivos ATA/IDE utilizan una serie de registros para realizar los comandos, acceder información del estado del disco y para realizar operaciones de transferencia de datos. Estos registros son diseccionados a través de las líneas de señal ADDR(0..2). 28 Tabla 8. Registros de los Dispositivos ATA/IDE Registro Acceso Descripción Registro de Puerto de Datos Lectura/Escritura Toda la transferencia de datos entre el dispositivo y el buffer de datos pasan a través de éste registro. Registro de Error Lectura Contiene la información de estado acerca del último comando ejecutado por el disco. Sólo es valido cuando el bit de error del Registro de Estado es verdadero. Precompensación de Escritura Escritura El dispositivo ignora el valor de precompensación enviado por el controlador. Registro Contador de Sectores Lectura/Escritura Define el número de sectores que van a ser transmitidos por el bus con el próximo comando ejecutado. Registro de Número de Sector Lectura/Escritura Contiene el número de identificación del primer sector que va a ser utilizado por el próximo comando ejecutado. Registro de Cilindro Bajo Lectura/Escritura Contiene los 8 bits menos significativos de la dirección de los cilindros para cualquier acceso al disco. Registro de Cilindro Alto Lectura/Escritura Contiene los 8 bits más significativos de la dirección de los cilindros para cualquier acceso al disco. Registro Disco/Cabezal Lectura/Escritura Contiene el número de identificación de disco y el número de Cabezal para cualquier acceso al disco. 29 Tabla 8. Registros de los Dispositivos ATA/IDE (Continuación) Registro Acceso Descripción Registro de Estado Lectura Contiene información hacerca del estado del disco y el controlador. Los contenidos de este registro son actualizados después de que se completa cada comando. Registro de Comando Escritura Cuando el sistema requiere ejecutar un comando, es transmitido al disco duro a través de un código de ocho bits que se escribe en el registro de comando. Registro de Estado Alterno Lectura Contiene la misma información que el Registro de Estado en el Bloque de Comandos, pero no ocurre una interrupción en el dispositivo cuando es leído. Registro de Control del Escritura Dispositivo Este registro contiene un bit que cuando es colocado como verdadero hay un reset suave en el disco, y otro bit para habilitar las interrupciones. Registro de Dirección del Disco Lectura Este registro retorna las direcciones actuales del cabezal. 3.11.- Estándares ATA El primer documento que describía la propuesta del estándar ATA/IDE fue introducido a principios de 1989, y fue formalmente introducido a la ANSI en 1990. Actualmente el grupo que se encarga del desarrollo e implementación de los estándar para ATA/IDE es un comité llamado T13 los cuales introducen los estándares a la ANSI para su aprobación. 30 Tabla 9. Estándares ATA Estándar Otros Nombres ATA-1 ATA, IDE Modos de Transferencia Otras Referencia Añadidos (MB/s) Características ANSI PIO 0,1,2 (3.3, 5.2, 8.3) Hasta 528 MB de X3.221-1994 DMA Palabra simple 0,1,2 direccionamiento (obsoleto (2.1, 4.2, 8.3) desde 1999) Multi-palabra DMA 0 (4.2) ATA-2 ATA-3 EIDE, Fast PIO 3,4: (11.1, 16.6) ATA, Fast IDE, Multi-palabra DMA 1,2 Ultra ATA (13.3, 16,6) EIDE - 24-bit LBA (hasta X3.279-1996 8.4 GB) (obsoleto desde 2001) 28-bit LBA (hasta X3.298-1997 137 GB) (obsolete S.M.A.R.T., desde 2002) Seguridad. ATA-4 ATAPI-4, Ultra DMA 0,1,2 (16.7, Soporte para CD- NCITS 317- ATA/ATAPI-4 25.0, 33.3) también ROM, etc.,vía 1998 llamado Ultra-DMA/33 paquetes de comandos ATAPI ATA-5 ATA/ATAPI-5 Ultra DMA 3,4 (44.4, 66.7) Cables de 80 NCITS 340- también llamado Ultra hilos 2000 UDMA 5 (100) también 48-bit LBA (hasta NCITS 347- llamado Ultra DMA 100 144 PB) 2001 UDMA 6 (133) - NCITS 361- DMA 66 ATA-6 ATA-7 ATA/ATAPI-6 ATA/ATAPI-7 2002 ATA-8 ATA/ATAPI-8 - - En progreso 31 Para mayor información acerca de la interfaz ATA/IDE y de todos sus funciones, características y comandos véase el Apéndice B y las referencias [6], [7], [8], [9], [10], [11] y [12]. CAPITULO 4: METODOLOGIA En este capítulo se da una síntesis de la metodología utilizada para desarrollar este proyecto, los pasos que se siguieron, las pruebas que se realizaron y de cómo se obtuvieron los resultados finales. 4.1.- Estudio bibliográfico de los dispositivos de almacenamiento. En esta etapa se hizo un estudio bibliográfico y a través de Internet de las características físicas y lógicas de los dispositivos SCSI. Se recopiló una gran cantidad de material acerca del funcionamiento del bus SCSI tales como sus señales de control, formato de comandos, niveles lógicos entre otros. Esta etapa duró aproximadamente 1 mes y se obtuvo un mejor conocimiento de las características de los dispositivos SCSI, lo cual era esencial para el desarrollo del proyecto. 4.2.- Estudio del proyecto de la interfaz SCSI-1 a SCSI-2. En el instrumento de química EXPRESS 550 se utiliza originalmente como dispositivo de almacenamiento un disco duro SCSI-1, como se había mencionado anteriormente, debido a la escasez de este tipo de discos y al tiempo de uso, la mayoría de los discos SCSI-1 que disponía la compañía estaban deteriorados y presentaban cada vez más seguido fallas, uno de los ingenieros de la compañía desarrollo un proyecto para poder adaptar disco duros del tipo SCSI-2 al instrumento de química. A este proyecto se le dio el nombre de LUNEXPRESS. Se procedió a estudiar este proyecto ya que era la base del desarrollo del proyecto actual. En esta etapa se encontraron gran cantidad de problemas, pues el proyecto LUNEXPRESS presentaba una gran cantidad de fallas a la hora de instalarlo y el código desarrollado para el microcontrolador que utilizaba tenía una documentación pobre y nadie en la compañía tenía conocimientos del funcionamiento del proyecto. Existían varias tarjetas integradas que la compañía mando a fabricar con el proyecto LUNEXPRESS, al principio ninguna de estas tarjetas trabajaba correctamente con el equipo de prueba EXPRESS 550 que se tenía en la empresa. Además se contaba con el circuito montado sobre un Protoboard el cual no correspondía en su totalidad con el esquemático que proporcionaron en la compañía. Luego de varias pruebas y de revisar cuidadosamente el diseño se tomo una de las tarjetas integradas y se le hicieron varias modificaciones como el de colocar resistencias de pull-up 33 a las patas del microcontrolador que estaban al aire colocar algunos capacitores de bypass que le faltaban a algunos de los circuitos integrados. Además se fabrico manualmente un par de cables SCSI ya que los que estaban en el EXPRESS 550 tenían una mala continuidad entre sus extremos. Después de todos estos cambios el equipo logro arrancar con un disco duro SCSI-2, se hicieron varias pruebas las cuales dieron como resultados varias fallas que presentaba el proyecto LUNEXPRESS, entre ellas el equipo no siempre encendía correctamente y arrojaba errores de comunicación con el disco. Luego de hacer los cambios de la tarjeta integrada, se volvió a montar de nuevo todo el circuito en el Protoboard para poder realizar los cambios y pruebas de una manera más fácil. El tiempo de duración de esta etapa fue de aproximadamente 2 meses debido a la gran cantidad de inconvenientes encontrados. Con las pruebas realizadas y los cambios en el circuito se consiguió que trabajara mucho mejor de lo que lo hacia anteriormente y gracias a esto luego se implementaron varias de estas tarjetas en algunos equipos EXPRESS 550 que se encuentran en varios laboratorios. Además se obtuvo un mayor conocimiento del funcionamiento del proyecto LUNEXPRESS el cual es la base para el desarrollo de esta pasantía. 4.3.- Estudio, modificación e implementación del programa del proyecto LUNEXPRESS Luego de hacerle los cambios al circuito y de haber montado el circuito nuevamente en el Protoboard con los cambios procedí a estudiar el programa que contenía el microcontrolador del proyecto LUNEXPRESS. El programa estaba desarrollado en lenguaje ensamblador (assembler), estaba muy mal documentado y tenía varias fallas de programación. Primero se hizo un estudio del programa y se capturaron varias etapas de la comunicación entre el instrumento EXPRESS 550 y la tarjeta controladora a través de un analizador de señales marca Link Instruments, modelo LA4040 de 40 canales que era capaz de hacer un muestreo de hasta 128 Kb/s. Este método no resulto tan efectivo ya que aunque se pudieron observar varias fases de la comunicación su resolución de muestreo no era lo suficientemente buena cómo para observar los cambios críticos de las señales de control. Después de entender su funcionamiento básico se procedió a depurar el programa, quitar retardos, etiquetas, saltos e interrupciones innecesarias. A medida que se depuraba el 34 programa se hacían pruebas de funcionamiento y errores en el equipo EXPRESS 550 de prueba. Esta etapa duro un tiempo aproximado de 15 días luego del cual se tenía un conocimiento mucho mejor del funcionamiento de la comunicación entre el equipo EXPRESS 550 y el disco duro SCSI y del funcionamiento general del equipo. Además a través de los manuales del EXPRESS 550 y el manual del controlador SCSI del equipo se obtuvo una mayor información de los errores que arrojaba el equipo a través de una impresora térmica que tiene incorporada. Esto fue de gran ayuda en el posterior desarrollo de la implementación y pruebas del proyecto. 4.4.- Desarrollo de la interfaz SCSI Luego que se le hicieron las mejoras al proyecto LUNEXPRESS se tomó como base para el desarrollo de la primera etapa de la interfaz entre SCSI e IDE. Primero se le agregó la capacidad de transmitir a través de una comunicación serial RS232. Esto permitió capturar los comandos y datos transmitidos a través de un programa de Terminal serial en la computadora. Y se logró hacer un estudio de la comunicación entre el equipo EXPRESS 550 y el disco duro. Luego de capturar varios comandos y las respectivas respuestas por parte del disco duro, se procedió a modificar el código para que el microcontrolador fuera capaz de interpretar y responder todas las peticiones hechas por el controlador SCSI del equipo EXPRESS 550 al disco duro. Para cada comando y petición se realizaron varias pruebas de funcionamiento y error. Para probar el correcto funcionamiento se fueron eliminando los comandos que pasaban al disco duro para que sólo los manejara el controlador uno por uno hasta que se pudo controlar todos los comandos y peticiones y el equipo trabajara correctamente. Esta etapa duró aproximadamente 1 mes y medio, después de esto se finalizó la primera etapa del proyecto donde el microcontrolador respondía a todos los comandos y peticiones del equipo EXPRESS 550 al disco duro excepto los comandos de lectura y escritura los cuales tenía que hacerse cargo el controlador IDE que se desarrollaría en la próxima etapa. 4.5.- Desarrollo del controlador IDE En esta etapa primero se estudió que dispositivo de almacenamiento era el más indicado para el proyecto, después de estudiar varios materiales bibliográficos, fuentes de Internet y 35 hacer un estudio de que dispositivos eran más fáciles de conseguir en el mercado venezolano, se concluyó que el dispositivo que mejor se adaptaba era el disco duro ATA/IDE. Después se paso a diseñar e implementar un controlador para disco duros ATA/IDE, para esto primero diseñe el programa para controlar el disco para luego diseñar el circuito que necesitaba para hacerlo funcionar, el circuito fue montado en un Protoboard y un disco duro ATA/IDE el cual fue proporcionado por la compañía para realizar las pruebas. A este circuito también se le implemento una comunicación serial a través de un protocolo RS232 para la comunicación con la computadora. En el programa desarrollé un pequeño menú que permitía enviarle a través del puerto serial comandos al disco duro para que este lo ejecutara. Después de varias pruebas logré que el controlador manejara los comandos principales del disco duro en especial el de escritura y el de lectura que eran los más importantes para el proyecto. Esta etapa duró aproximadamente 1 mes, se obtuvo un controlador totalmente funcional de disco duros ATA/IDE que maneja la mayoría de los comandos de estos dispositivos, pudiéndose manejar el disco duro a través de una interfaz serial, escribir y leer hacia y desde el disco respectivamente, lee los registros de estado y error y los datos pueden ser direccionados a cualquier sector del disco utilizando un direccionamiento LBA como se menciono en el marco teórico por lo que puede utilizar discos de cualquier capacidad. 4.6.- Interfaz entre el controlador SCSI y el controlador IDE Luego de tener ambos controladores funcionando se pasó a unir ambos, para esto se tuvo que adaptar los programas de ambos controladores para que el controlador IDE pudiera recibir y traducir los comandos SCSI al formato IDE, a través de una tabla de comandos, y los pudiera ejecutar así el disco duro. Para poder hacer compatibles los niveles lógicos de ambos circuitos se tuvo que hacer una pequeña adaptación. Primero se manejo únicamente el comando de lectura de disco, como sin la escritura no se podía formatear el disco duro ATA/IDE con el programa del EXPRESS 550 se consiguió una tarjeta controladora para la computadora que manejara disco duros SCSI y con una herramienta de clonación llamada WinHex con su versión gratuita, se clonó el disco duro SCSI del equipo EXPRESS 550 al disco duro ATA/IDE de prueba con excelentes 36 resultados. Además se obtuvo el beneficio de que con este método es mucho más rápido cargar el programa del EXPRESS 550 a los disco duros ya que normalmente se hace a través de 9 discos flexibles a través de la unidad de discos flexibles del equipo, lo cual lleva un tiempo considerable y además no siempre se carga el programa de manera efectiva. Luego se hicieron varias pruebas y se ajustaron algunos tiempos de retardos para que la lectura fuera optima. Después que el comando de lectura funcionó correctamente y cargaba por completo el programa directamente desde el disco ATA/IDE se procedió a manejar también el comando de lectura el cuál fue un poco mas crítico para poder sincronizar los tiempos de retardo para obtener una escritura confiable en el disco duro ATA/IDE. Luego que ambos comandos funcionaron exitosamente se procedió a remover el disco duro SCSI del equipo y se colocaron las terminaciones respectivas en el extremo del cable del bus SCSI para garantizar los niveles lógicos de la señal. Luego se probó el encendido y funcionamiento del equipo a través de varias pruebas de funcionamiento básico del equipo donde se pudo comprobar el estado de todos sus componentes. Para comprobar la lectura se encendió numerosas veces el equipo durante todo el tiempo de prueba, comprobando que el programa se cargara sin ninguna falla de comunicación entre el equipo EXPRESS 550 y el disco duro ATA/IDE. Mientras que para la comprobación de la escritura en el disco, el equipo permite cargar los datos y pruebas de los pacientes al disco duro, con lo cual se podía comprobar que la escritura estaba funcionando correctamente. La metodología que se utilizó fue la de introducir varios pacientes de prueba al disco duro con sus respectivos datos y pruebas químicas a realizar y luego de apagar y encender el equipo numerosas veces se comprobaba que los datos estuvieran intactos. Después se procedía a cambiar los datos y a realizar de nuevo las pruebas pudiendo comprobar así tanto la lectura como la escritura en el disco duro. También se observo las fases de comunicación especialmente las de negociación entre el instrumento EXPRESS 550 y la tarjeta controladora con el analizador de señales LA4040. Esta etapa duró un tiempo de aproximadamente 1 mes y medio, y se logró obtener un dispositivo que permitía el uso de un disco duro ATA/IDE en el equipo EXPRESS 550 el cual era el objetivo principal de este proyecto, los resultados fueron muy favorables ya que 37 se logro por completo su funcionamiento como se pudo comprobar en la practica a través de las pruebas. 4.7.-Diseño de la Tarjeta Integrada Después de realizar varias pruebas exitosas se decidió hacer el diseño final uniendo ambos circuitos en uno solo y así diseñar la tarjeta integrada. Se diseñó el circuito PCB en el programa de CAD Eagle donde se obtuvo los parámetros y el PCB final que se llevó a una empresa que realiza circuitos impresos. Se tuvieron algunos problemas con el diseño de la tarjeta por la cantidad de componentes luego esperando el dinero para la realización de la tarjeta. La empresa que fabrica el circuito impreso se tarda aproximadamente 20 días hábiles para entregar el prototipo. CAPITULO 5: INTERFAZ ENTRE UN DISCO SCSI Y UN DISPOSITIVO DE ALMACENAMIENTO IDE. En este capítulo se da una descripción técnica del proyecto, su funcionamiento, sus características tanto lógicas cómo física, comandos soportados, conexiones, tecnología seleccionada, etc. 5.1.- Descripción General El instrumento de química EXPRESS 550, es un equipo que realiza análisis químicos de sangre y tiene más de 15 años en el mercado, utiliza una tecnología de almacenamiento SCSI1, de mediados de los ochentas, la cual ya no es fácil de conseguir y su adquisición se ha vuelto muy costosa debido a que se tienen que importar. Además al dañarse el disco duro SCSI se inutiliza por completo el equipo por largos periodos de tiempo, lo cual representa un gran costo para la compañía e inclusive la paralización de la realización de exámenes de química en los laboratorios clínicos que poseen estos equipos. Para solucionar este problema se desarrolló en este proyecto una interfaz, que de ahora en adelante será llamada IDEXPRESS, que permite conectar disco duros ATA/IDE al instrumento de química EXPRESS 550. Este tipo de discos son muy fáciles de conseguir y además son mucho más económicos que los discos SCSI. El IDEXPRESS soporta cualquier tipo de disco duro ATA/IDE hasta el estándar ATA-7. Es capaz tanto de conectarse a cualquier instrumento de química EXPRESS 550, así cómo también permite ver el contenido del disco y escribir en el mismo a través de una interfaz serial. También sirve como un analizador del bus SCSI del EXPRESS 550 lo que puede servir para detectar fallas de comunicación entre el disco y el instrumento y para obtener datos del bus si así se requiere. El IDEXPRESS está compuesto por dos microcontroladores, 2 conectores tipo SCSI y 1 conector tipo IDE además de 2 conexiones para una interfaz serial RS232. En la Figura 4, se muestra un diagrama de bloques que representa el sistema del equipo EXPRESS 550 con el IDEXPRESS integrado. El área enmarcada en una línea punteada 39 representa el conjunto del IDEXPRESS conformado por la tarjeta controladora, el disco duro ATA/IDE y la interfaz serial RS232. En esta área se representa el conjunto de dispositivos que conforman al IDEXPRESS. Conexión Serial RS232 | Instrumento de Química EXPRESS 550 BUS SCSI Tarjeta controladora SCSI NCR Interfaz IDEXPRESS BUS SCSI BUS IDE Disco Duro ATA/IDE Unidad de Floppy SCSI Figura 4. Esquema de Sistema típico del IDEXPRESS. 5.2.- Características Principales El IDEXPRESS tiene las siguientes características: • Tiene una taza máxima de transferencia de 5 MB/s. • Manejo del conjunto de comandos principales de SCSI-2. • Soporta únicamente comunicación SCSI de terminación simple. • Manejo del conjunto de comandos principales de ATA/IDE. • Soporta Disco Duros ATA/IDE de cualquier capacidad. • Reset por software. • 2 puertos de comunicación serial con el protocolo RS232 a una velocidad máxima de 9200 bps de 8 bits sin bit de paridad. • Menú activado por comunicación serial para leer ó escribir el disco ATA/IDE, además ofrece acceso a los registros de estado, error y direccionamiento, así como también la posibilidad de enviar comandos. 40 • Posibilidad de que trabaje como un analizador del bus SCSI por el segundo puerto serial. • Fácil de conectar al EXPRESS 550. 5.3.- Funcionamiento El IDEXPRESS pasa por un proceso de inicialización cuando se enciende el instrumento químico EXPRESS 550 (al cual nos referiremos de ahora en adelante como EXPRESS 550), primero selecciona la unidad de discos flexibles SCSI para poder enviarle comandos y comprueba que el disco ATA/IDE esté listo y sin errores. Luego responde al controlador SCSI un estado de OK, y prosigue con la lectura del disco duro ATA/IDE con lo cual se carga el sistema operativo del EXPRESS 550. Luego el IDEXPRESS queda a la espera de la llegada de comandos por parte del controlador SCSI del EXPRESS 550. Cuando un nuevo comando llega lo analiza si el comando es de escritura o lectura es traducido y enviado al IDE para su ejecución, si el comando no es de lectura o escritura, es respondido por el mismo IDEXPRESS. Si llega algún comando dirigido a la unidad SCSI de discos flexibles es enviado directamente a esta para que lo ejecute. En caso de ocurrir un error el IDEXPRESS se resetea por software y queda a la espera de nuevos comandos. En la Figura 5 se muestra una representación de los bloques internos de la interfaz IDEXPRESS junto con los buses de datos y las señales de control. Figura 5 Bloques internos del IDEXPRESS. 41 5.4.- Comandos y Funciones Soportadas Los comandos SCSI soportados por el IDEXPRESS son los siguientes: Tabla 10. Comandos SCSI soportados por el IDEXPRESS Código de Operación Nombre del Comando Implementado Soporte RS232 00h Test Unit Ready Si No 03h Request Sense Si No 08h Read Si Si 0Ah Write Si Si 12h Inquirí Si No 15h Mode Select Si No 1Ah Mode Sense Si No 25h Read Capacity Si No Para mayor información acerca de los comandos SCSI véase Apéndice A Los comandos IDE soportados por el IDEXPRESS son los siguientes: Tabla 11. Comandos IDE soportados por el IDEXPRESS Código de Operación Nombre del Comando Implementado Soporte RS232 20h Leer Sector Si Si 30h Escribir Sector Si Si ECh Identificar Disco Si Si E0h Detener Disco Si Si E1h Arrancar Disco Si Si Para una mayor información acerca de los comandos IDE véase el Apéndice B. En la Tabla 12 se presentan las funciones implementadas por el IDEXPRESS a través de los puertos RS232 42 Tabla 12. Funciones del IDEXPRESS Comando DN Nombre del Comando Leer N Sectores Nº Puerto Descripción 1 Lee N sectores del disco ATA/IDE y los transmite vía serial. N de la forma 000 hasta 255. Con 000 lee todo el disco. UN Escribe N Sectores 1 Lee N sectores del disco ATA/IDE y espera N sectores de 512 bytes vía serial. N de la forma 000 hasta 255. Con 000 escribe todo el disco. d Leer Sector 1 Lee el sector actual del disco ATA/IDE y lo transmite vía serial u Escribir Sector 1 Escribe el sector actual del disco ATA/IDE y espera un sector de 512 bytes vía serial. i Identificar Disco 1 Envía a través del puerto serial la identificación del disco se esperan 256 palabras de 16 bits. z Detiene el Disco 1 Detiene el disco ATA/IDE. l Arranca el Disco 1 Arranca el disco ATA/IDE después de una parada. e Registro de Error 1 Muestra el Registro de Error del disco ATA/IDE. s Registro de Estado 1 Muestra el Registro de Estado del disco ATA/IDE. p Incrementar Dirección 1 Incrementa la dirección LBA actual del disco ATA/IDE en 1. 43 Tabla 12. Funciones del IDEXPRESS (Continuación) Comando Nombre del Comando Nº Puerto Descripción r Resetear Dirección 1 Resetea la dirección LBA a 00h. a Leer Dirección 1 Lee la dirección LBA actual. f Asignar Dirección 1 Define una dirección LBA espera una cadena de 28 bits. E Espiar Bus SCSI 2 Lee el Bus SCSI y lo transmite vía puerto serial. 5.5.- Direccionamiento El IDEXPRESS utiliza un direccionamiento LBA de 28 bits, con esto se logra direccionar todo el espacio necesitado por el EXPRESS 550, ya que originalmente utiliza un disco de 40 MB de capacidad por lo que el disco duro ATA/IDE va a ser subutilizado. El direccionamiento se puede hacer manualmente a través del puerto serial 1 en caso de que se requieran hacer pruebas de lectura o escritura en el disco. 5.6.- Señales de Control y Datos Las señales utilizadas entre el IDEXPRESS y el EXPRESS 550 son 9 señales de control y 8 bits de datos. En este caso el EXPRESS 550 actúa como iniciador y el IDEXPRESS como objetivo. Las señales de control se muestran en la Tabla 13. 44 Tabla 13. Señales de Control del Bus SCSI IDEXPRESS. Señal Definición Categoría EXPRESS IDEEXPRESS Descripción 550 BSY Ocupado Básica Si Si Indica que el bus esta siendo utilizado. SEL Selección Básica Si Si Indica que un dispositivo SCSI esta tratando de seleccionar o reseleccionar otro dispositivo SCSI. El iniciador utiliza esta señal para seleccionar un objetivo, y el objetivo la utiliza para reseleccionar el iniciador. ATN Atención Básica Si No Usada por el iniciador para indicar una condición de atención, marca un momento cuando el iniciador necesita la atención del objetivo RST Resetear Básica Si No Indica la condición de Reset y tiene la atención de todos los dispositivos. 45 Tabla 13. (Continuación) Señales de Control del Bus SCSI IDEXPRESS. Señal Definición Categoría EXPRESS IDEXPRESS Descripción 550 C/D Control/Datos Transferencia No Si Información Indica que datos de información o control están en el bus. Falso indica datos y verdadero indica control. I/O Entrada/Salida Transferencia No Si Indica la Información dirección del flujo y Control de información en el bus de datos desde el punto de vista del iniciador. Falso indica que la dirección es desde el iniciador al objetivo y verdadero indica lo contrario. MSG Mensaje Transferencia No Si Indica que el Información dispositivo SCSI y Control tiene un mensaje para transferir a otro dispositivo. 46 Tabla 13. (Continuación 2) Señales de Control del Bus SCSI IDEXPRESS. Señal ACK Definición Reconocimiento Categoría Reloj EXPRESS IDEXPRES 550 S Si No Datos Descripción Esta señal indica que el iniciador reconoce una fase de transferencia de datos. Cuando el iniciador esta manejando el bus de datos esta señal es utilizada para indicarle al objetivo que hay datos listo para el en el bus. REQ Petición Reloj No Datos Si El objetivo indica una petición para una fase de transferencia de datos. Cuando el objetivo esta manejando el bus de datos esta señal es utilizada para indicarle al iniciador que hay datos listos. Leyenda: Si = Maneja la señal, No = No maneja la señal 47 Los niveles lógicos de las señales del bus SCSI son: • 3.3 V Estado lógico Falso • 0V Estado lógico Verdadero Las señales utilizadas entre el IDEXPRESS y el disco ATA/IDE son 9 señales de control y 16 bits de datos. Las señales de control se muestran a continuación: Tabla 14. Señales de Control del Bus IDE del IDEXPRESS. Señal Definición Descripción Señal de Esta señal es colocada como verdadera por un tiempo de Reset por lo menos 25 microsegundos después que los niveles de voltaje se estabilizan durante el encendido del RESET dispositivo, puede ser negada en cualquier momento que el dispositivo necesite resetearse. IOW Señal de Señal de escritura. Cuando es detectado un flanco de Escritura subida en esta señal el dispositivo copia los datos que se encuentran en el bus de datos al dispositivo. IOR Señal de Señal de escritura. Cuando es detectado un flanco de Lectura subida en esta señal el dispositivo copia los datos que se encuentran en el bus de datos al dispositivo. INTRQ IOCS16 Señal de Interrupción dispositivo tiene una interrupción pendiente. Transmisión Indica al controlador ATA/IDE que la transmisión de de 16 bits ADDR(0…2) Es utilizada para interrumpir el controlador cuando el Dirección de Registros datos va a ser de 16 bits. Usadas para seleccionar un registro o puertos de datos en el dispositivo. 48 Tabla 14. Señales de Control del Bus IDE del IDEXPRESS (Continuación). Señal Definición Descripción Acceso CS(1..3)FX DASP Son utilizadas para acceder al registro de comandos. Comandos Señal de Es una señal multiplexada de tiempo que indica que el Actividad dispositivo esta activo. Es utilizada en el IDEXPRESS como señal de actividad del disco. Los niveles lógicos para el bus IDE son: • 5 V Estado lógico Verdadero • 0 V Estado lógico Falso También son utilizadas 4 señales de control internas para la comunicación entre el controlador SCSI y el controlador IDE del IDEXPRESS, así como también 8 bits de datos. A continuación son explicadas las señales de control internas. Tabla 15. Señales de Control del Bus interno IDE del IDEXPRESS. Señal REQ Definición Dirección de la Señal Señal de Controlador IDE Petición Controlador SCSI Descripción a Esta señal se utiliza para solicitar un envío de datos desde el controlador SCSI al controlador IDE. ACK Señal de Controlador SCSI a Esta señal se utiliza para indicar Acuse de Controlador IDE que los datos enviados fueron Recibo bien recibidos. O para indicar que hay datos disponibles para el controlador IDE 49 Tabla 15. Señales de Control del Bus interno IDE del IDEXPRESS (Continuación). Señal MS Definición Dirección de la Señal Descripción Selección de Controlador IDE a Señal que indica el sentido de Dirección Controlador SCSI transmisión de los datos. Si es verdadera SEL Señal de Controlador SCSI a Si es verdadera le indica al Selección Controlador IDE controlador IDE que se le va a enviar un comando de escritura o lectura. 5.7.- Funcionamiento del programa El IDEXPRESS contiene dos programas uno que controla el bus SCSI y otro que controla el bus IDE. El programa que controla el bus SCSI se encarga de responderle las peticiones de comandos al EXPRESS y de pasarle los comandos de escritura y lectura al microcontrolador que se encarga de manejar el bus IDE. Primero este programa realiza una inicialización de las señales de control y del bus de datos y prepara a la unidad de discos flexibles para que esté lista para recibir comandos. En caso de recibir un comando de lectura o escritura comienza la negociación de transferencia con el controlador IDE, envía los parámetros del comando y comienza la transferencia de datos, si es lectura recibe los datos del controlador IDE y los coloca en el bus SCSI manteniendo de forma simultanea la negociación entre ambas partes. Si en cambio es un comando de escritura espera recibir los datos desde el EXPRESS 550 por el bus SCSI y los envía al controlador IDE para que este los escriba en el disco. Si el comando que recibe no es de lectura o escritura el mismo microcontrolador maneja la petición y dependiendo del comando lo deja pasar al disco flexible o responde el mismo de acuerdo con el comando que recibió. El programa que controla el bus IDE, inicializa las señales de control y el disco ATA/IDE enviándole un comando de estado y espera recibir un estado OK por parte del disco duro, en caso de que no lo reciba no sigue el programa y se notifica un error en el disco a través de la 50 interfaz serial. Luego que el disco envíe el estado de OK se queda en espera de recibir una señal de selección lo que indica que el controlador SCSI está enviándole un comando de lectura o escritura. Recibe el comando lo revisa en la tabla de comandos y comienza la negociación de recepción de de los parámetros del comando, después ejecuta la acción, si recibió un comando de lectura, lee los sectores que han sido pedidos y los transmite a través del bus de datos al controlador SCSI, si en cambio el comando es de lectura recibe los datos del controlador SCSI y los escribe en los sectores que fueron solicitados. La Figura 6 y 7 muestran los diagramas de flujo de los programas. 51 Figura 6. Diagrama de flujo programa controlador SCSI 52 Figura 7. Diagrama de flujo programa controlador IDE 53 La negociación tanto en el bus SCSI y entre el controlador SCSI y el IDE es asíncrona. En las siguientes explicaciones se supone que el Iniciador es el EXPRESS 550 y el objetivo es el IDEXPRESS. Negociación Asíncrona de comandos i. En el caso de ser una comunicación en el bus SCSI se coloca la señal de C/D como verdadera y niega las señales de I/O y MSG durante toda la transmisión de comando. ii. En el caso de ser una comunicación en el bus IDE se coloca la señal de MS como verdadera y se niega la señal SEL. iii. El objetivo coloca la señal de REQ como verdadera, luego espera que la señal de ACK del iniciador sea verdadera lo que indica que hay datos disponibles en el bus. iv. El objetivo copia los datos de bus y coloca la señal REQ como falsa y espera que la señal ACK sea falsa, luego se repiten los pasos iii y iv hasta que se tengan todos los datos del comando. Negociación Asíncrona de datos i. En el caso de ser una comunicación en el bus SCSI se coloca la niegan las señales de C/D y MSG y la señal de I/O se niega o se hace verdadera dependiendo de la dirección en que se envíen los datos. ii. En el caso de ser una comunicación en el bus IDE se niega la señal SEL y la señal MS se niega o se hace verdadera dependiendo de la dirección en que se envíen los datos. iii. Si está enviando datos hacia el EXPRESS 550 (comando de lectura) I/O se hace verdadera y MS se niega. Primero el objetivo coloca los datos en el bus y coloca la señal de REQ como verdadera. iv. El iniciador al recibir la señal de REQ como verdadera copia los datos del bus y coloca la señal de ACK como verdadera. v. Al objetivo recibir la señal de ACK como verdadera niega la señal de REQ y espera a que la señal de ACK se haga falsa para luego repetir el procedimiento hasta que no haya más datos que repetir. 54 Si se están recibiendo datos desde el EXPRESS 550 (comando de escritura) I/O se niega y MS se hace verdadera. La negociación es la misma que para la transmisión de comandos. 5.8.- Conexiones A continuación se presenta en la Figura 8 un diagrama con las conexiones del IDEXPRESS: Figura 8. Conexiones Físicas del IDEXPRESS Como se puede observar en el diagrama básicamente existen 3 conectores de cable plano. 2 de ellos son del tipo SCSI de 50 pines uno va conectado al EXPRESS 550 y es llamado en la tarjeta CPU y el otro va conectado a la tarjeta NCR y es llamado en la tarjeta SCSI. Mientras que el conector de 40 pines IDE va conectado a un cable plano al disco duro IDE/ATA. Luego se tiene el conector de la alimentación que se conecta a través de un conector hembra a la fuente de poder del EXPRESS plus y proporciona 5 V y la conexión a tierra. Por último se tienen dos conexiones seriales con el siguiente esquema: Tabla 16. Conexión Serial RS232 Pin Conexión 2 TX 3 RX 5 Tierra 55 El Puerto Serial 1 corresponde a las funciones IDE y el Puerto Serial 2 a las de SCSI. 5.9.- Especificaciones Eléctricas Tabla 17. Valores de Operación Símbolo Parámetro Vdd Voltaje Min Max Unidad de 4,5 5,0 V de 330 400 mA de 1 - KOmh de 3,5 4 V 0,5 V 5 V 0,5 V Alimentación Idd Corriente Alimentación Ri Resistencia Entrada VOHS Voltaje Salida alto bus SCSI VOLS Voltaje de 0 Salida bajo bus SCSI VOHA Voltaje de 4,5 Salida alto bus ATA/IDE VOA Voltaje de 0 Salida bajo bus ATA/IDE 56 5.10.- Tecnología Seleccionada El IDEXPRESS utiliza dos microcontroladores PIC16F877 de 8 bits, basados en la tecnología CMOS Flash/EEPROM de baja potencia y alta velocidad. Basados en el modelo de Set Reducido de Instrucciones de Computadora RISC (reduced instruction set computer por sus siglas en inglés). Soportan un reloj externo de hasta 40 MHz, 8 KB de memoria interna y posee 5 puertos de datos y una interfaz serial integrada. Se utilizan este tipo de microcontroladores por tener un set de instrucciones reducido lo que hace que sean más fáciles de programar. Además al poseer la tecnología Flash/EEPROM pueden ser programados muchas veces lo que facilita el cambio de la programación, por lo que se puede actualizar el dispositivo fácilmente. Para los buffer de datos se escogió la familia 74LS por ser una tecnología de baja disipación y alta velocidad además de cumplir con los niveles lógicos del dispositivo. Para el IDEXPRESS se utilizaron capacitores de acoplamiento para la alimentación de voltaje de todos los dispositivos para reducir el ruido que se pueda producir en la alimentación. Además se procuró que los bus de datos fueran lo más cortos posibles para reducir al mínimo el ruido. En la Figura 9 se muestra el esquemático del circuito responsable del control del bus IDE y en la Figura 10 se muestra el esquemático del circuito responsable del control del bus SCSI del IDEXPRESS. Figura 9. Diagrama esquemático del circuito controlador bus IDE del IDEXPRESS. 57 Figura 10. Diagrama esquemático del circuito controlador bus SCSI del IDEXPRESS. 5.11.- Circuito Impreso A continuación en las Figura 11 y en la Figura 12 se presentan las caras superior e inferior del circuito PCB del IDEXPRESS, es una tarjeta de dos caras y se siguieron las recomendaciones generales en la fabricación de circuitos impresos. Para mayor información de estas recomendaciones véase [13]. 58 Figura 11. Cara superior de la tarjeta integrada IDEXPRESS 59 Figura 12. Cara inferior de la tarjeta integrada IDEXPRESS CAPITULO 6: ANALISIS DE RESULTADOS En este capítulo se hace un breve análisis y discusión de los resultados obtenidos al finalizar el desarrollo y la implementación de la interfaz. 6.1.- Resultados Obtenidos con el Analizador de Señales El analizador de señales fue útil para observar alguna de las fases de comunicación entre el EXPRESS 550 y la tarjeta controladora del proyecto LUN. Esto sirvió para comprobar de forma visual el comportamiento del programa en las fases de comunicación y el envío de comandos a través del bus de datos. A continuación se presentan algunas de las pantallas de captura del programa que utiliza el analizador de señales para desplegar los datos. Figura 13. Captura de transmisión de datos bus SCSI En la Figura 13 se muestra una captura de transmisión de datos en la inicialización del equipo EXPRESS 550. A través de estas capturas se pudo observar los tiempos de transmisión de datos y la forma en que el EXPRESS 550 manejaba las señales de control Figura 14. Captura de transmisión de señales de control bus SCSI 61 En la figura anterior se muestran las señales de control del bus SCSI entre el EXPRESS 550 y la tarjeta controladora. Figura 15. Señales de control de transferencia de datos La figura anterior es una captura de las señales de control del IDEXPRESS en una negociación asíncrona de datos entre el EXPRESS 550 y el disco duro ATA/IDE. Aquí se observa el flanco de bajada de la señal MS lo que indica la habilitación del buffer de datos debido a la recepción de un comando de lectura, luego de esto comienza el envío de los datos a través del bus controlado por las señales de ACK y REQ. Por cada par de estas señales está representado un envío de 8 bits de datos a través del bus. Para comprobar la lectura y escritura en el disco durante más de un mes se introdujeron pacientes al EXPRESS 550 a través de una interfaz gráfica que tiene el equipo. Los datos que se introdujeron fueron nombre, edad, sexo, tipos de pruebas a realizar. Todos estos datos son escritos en el disco. Luego se apagaba el equipo y se volvía a encender numerosas veces y se verificada que los datos que habían sido introducidos no tuvieran ninguna modificación el éxito de estas pruebas fue de un 100% debido a que siempre los datos permanecieron sin modificaciones y se mantuvieron después de apagar y encender numerosas veces el equipo. Luego se procedió a modificar los datos de los pacientes, como por ejemplo el nombre, tipo de pruebas a realizar y eliminación de pacientes para luego comprobar que las modificaciones se mantenían en el tiempo en el transcurso de los días mientras se utilizaba el equipo. También en este caso el éxito de las pruebas fue de un 100% debido a que siempre los datos mantuvieron las modificaciones y se mantuvieron íntegros después de apagar y encender numerosas veces el equipo. 62 En la Tabla 18 se presentan los resultados que se obtuvieron durante las pruebas de escritura, lectura y modificación de datos, cabe destacar que estas pruebas se realizaron bajo un ambiente de laboratorio. Tabla 18. Resultados de Escritura y Lectura Acción Realizada Número de Intentos Integridad de los datos (%) Escritura 400 100 Lectura 400 100 Modificación de 200 100 datos Observaciones: El número de intentos se refiere al número de veces que se apago y encendió el equipo luego de hacer las modificaciones en los datos. 6.2.- Análisis de los resultados Los resultados finales obtenidos en este proyecto fueron satisfactorios, debido a que se logró cumplir con el objetivo final de unir el equipo EXPRESS 550 con un disco duro ATA/IDE. Después de realizar numerosas pruebas de lectura y escritura se comprobó que el equipo es bastante estable y que conserva la integridad de los datos en su totalidad en todas las pruebas de escritura, lectura y modificación que se realizaron. Con el analizador de señales se pudieron comprobar los tiempos de transmisión y el manejo de las señales de control, esto fue de gran ayuda sobre todo al principio del proyecto. Sin embargo, se comprobó que un mejor método para observar los datos y los cambios de fases es a través del terminal serial ya que se tiene un mayor control sobre lo que se quiere mostrar y los momentos en que se muestra. Además no solo se obtuvo una interfaz entre un equipo EXPRESS y un disco duro IDE, sino que también se tiene un controlador independiente de discos IDE, que podría tener otras aplicaciones. Con pequeñas modificaciones el IDEXPRESS se podría adaptar a otros equipos que utilicen como dispositivo de almacenamiento discos duros SCSI. CAPITULO 7: CONCLUSIONES Y RECOMENDACIONES En el proyecto desarrollado se pudo observar las diferencias y similitudes entre dos tecnologías de almacenamiento y el proceso que se llevó a cabo para poder hacer una traducción eficiente entre éstas. Quedando así los objetivos cumplidos a cabalidad, ya que se logró diseñar, implementar y probar una interfaz entre un controlador SCSI y un disco duro ATA/IDE. Además se logró su integración con un funcionamiento óptimo al instrumento de química EXPRESS 550 con lo que se logró alargar la vida útil de estos equipos y aminorar los costos de reparación y mantenimiento. Una de las conclusiones más importantes a la que llegué en este trabajo es que es importante conocer los estándares, y tratar de apegarse a ellos al momento de desarrollar cualquier equipo electrónico para garantizar así su funcionamiento a largo plazo. Así mismo se abrió paso para la implementación de nuevos proyectos en otros equipos que posee la compañía que utilizan discos duros SCSI y que puede adaptarse este proyecto con pequeños cambios para que puedan trabajar con discos ATA/IDE más económicos lo cual representaría a la larga un gran ahorro a la compañía. 7.2.- Recomendaciones: • Una de las recomendaciones más importantes que se puede hacer, es la de que una vez que se tengan las tarjetas integradas hacer pruebas con equipos en laboratorios reales y llevar un control del funcionamiento del equipo para detectar posibles fallas que no pudieron ser detectadas durante las pruebas en el equipo de laboratorio. • Se recomienda seguir trabajando en el proyecto, haciendo mejoras ajustando los tiempos de retardo, para hacer más optima la comunicación entre los dispositivos. • Se puede pensar en un futuro en mejorar el controlador SCSI para que el proyecto pueda ser adaptado a cualquier equipo que utilice esta tecnología. Se deberá agregar soporte a más comandos y utilizar microcontroladores más rápidos para mejorar la transferencia de datos, en caso de que se utilice en equipos que tengan velocidades de transmisión más altas. • Desarrollar una programa de interfaz con el computador para que sea más fácil la interacción con el usuario, además se pueden agregar más funciones por la interfaz serial. 64 • Se recomienda hacer un estudio en la integridad de los datos bajo condiciones de trabajo real. En un laboratorio donde se tengan volúmenes de datos reales y uso constante del equipo EXPRESS 550. • Por último se recomienda hacerle un seguimiento al proyecto para que no se pierda todo el trabajo hecho y se pueda mejorar en un futuro. 65 REFERENCIAS BIBLIOGRAFICAS 1. Wikipedia Enciclopedia Libre. (4 de Junio 2005). SCSI. (Versión electrónica), Extraído el 20 Agosto, 2005 de http://es.wikipedia.org/wiki/SCSI 2. Field, G., Ridge, P. M. (2000). The Book of SCSI (2nd ed.). San Francisco, EU: No Starch Press. 3. American National Standard of Accredited Standards Committee X3.(1993) Information technology -Small Computer System Interface – 2. (Revisión borrador, version 10L). San Jose, CA. EU: Lawrence J. Lamers. 4. Kozierok, Charles M. (Abril 17, 2001). Small Computer Systems Interface. SCSI-1. Extraído el 22 de Agosto, 2005 de http://www.pcguide.com/ref/hdd/if/scsi/ 5. Tyson, Jeff. How SCSI Works. Extraído el 30 de Agosto, 2005 de http://computer.howstuffworks.com/scsi2.htm 6. Kozierok, Charles M. (Abril 17, 2001). Small Official IDE/ATA Standards and Feature Sets. Extraído el 1 de Septiembre, 2005 de http://www.pcguide.com/ref/hdd/if/ide/index.htm 7. Wikipedia Enciclopedia Libre. (4 de Junio 2005). Advanced Technology Attachment. (Versión electrónica), Extraído el 1 de Septiembre, 2005 de http://en.wikipedia.org/wiki/Advanced_Technology_Attachment 8. Faasse, Peter. (Febrero 2, 1998). How to connect an IDE disk to a microcontroller using an 8255. Extraído el 2 de Septiembre, 2005 de http://www.pjrc.com/tech/8051/ide/wesley.html 9. Baker, John D. (1995). Connecting IDE Devices to 8-bit Machines. Extraído el 2 de Septiembre, 2005 de http://www.mylinuxisp.com/~jdbaker/oldsite/SmallSys/8bitIDE.html 10. Davis, Leroy (Septiembre 5, 2005) IDE (ATA) Bus. Extraído el 15 de Septiembre, 2005 de http://www.interfacebus.com/Design_Connector_IDE.html 11. Reh, Tilmann. (Octubre 29, 2001). Connecting IDE Drives. Extraído el 15 de Septiembre de 2005 de http://www.gaby.de/gide/IDE-TCJ.txt. 66 12. Kozierok, Charles M. (Abril 17, 2001). Small Official IDE/ATA Standards and Feature Sets. Extraído el 15 de Septiembre, 2005 de http://www.pcguide.com/ref/hdd/if/ide/std.htm 13. ExpressPCB (2005). Tips for Designing PCBs. Extraído el 16 de Septiembre, 2005 de http://www.expresspcb.com/ExpressPCBHtm/Tips.htm