REINGENIERÍA DE LAS INTERFACES ENTRE COMPUTADORAS DEL
SISTEMA DE COMANDO Y CONTROL
CHRISTIAN L. GALASSO(1,2,3)
, GUILLERMO R. FRIEDRICH(2)
, SERGIO O. BURGOS(3)
,
GUSTAVO J. DÍAZ(1,2)
, ALEJANDRO A. ANTONINI(3)
.
(1)
Escuela de Oficiales de la Armada, (2)
Universidad Tecnológica Nacional – Facultad Regional
Bahía Blanca, (3)
Armada Argentina – Servicio de Análisis Operativo, Armas y Guerra Electrónica.
Resumen
Los sistemas automatizados de Comando y Control de los destructores y corbetas tipo Meko
son de tecnología de los años 80 y cuentan con una arquitectura y un software asociado de
características propietario. Todo el intercambio de información entre las computadoras que
conforman el sistema se lleva a cabo a través de un dispositivo denominado Inter Computer
Interface (ICI). Cada unidad naval cuenta con un determinado número de estas interfaces que se
encargan de mantener interconectadas todas sus computadoras.
En este trabajo se describen aspectos técnicos de la investigación realizada en el marco del
PIDDEF(1)
26/10, que comprendió el diseño y desarrollo, a nivel de prototipo, de una interfaz
equivalente a las actuales ICI, manteniendo la compatibilidad con el resto del equipamiento,
conectores, cableado, etc., a fin de permitir su reemplazo directo conservando la integridad del
sistema original.
Palabras clave: Interfaz, prototipo, compatibilidad, sistema de comando y control.
Abstract
The automated systems of Command and Control for destroyers and corvettes Meko have a
technology from the 80’s, with architecture and software type proprietary. All information exchange
between the system's computers is accomplished through a device called Inter Computer Interface
(ICI). Each naval unit has a specific number of these interfaces, which are responsible of
interconnecting their computers.
In this paper we describe the technical aspects of the research work carried out in the
framework of the PIDDEF 26/10, which included the design and development (with characteristics
of prototype) of an equivalent interface to the existent ICI, maintaining compatibility with the rest
(1)
PIDDEF: Programa de Investigación y Desarrollo para la Defensa.
of the system, connectors, wiring, etc., to allow direct replacement, assuring the original system
integrity.
Keywords: Interface, prototype, compatibility, systems of Command and Control.
Introducción
En el marco del PIDDEF 26/10 se realizó la reingeniería de la placa que permite la
comunicación entre computadoras del sistema de comando y control de corbetas y destructores del
tipo MEKO. Algunas de sus características principales son:
Diseño específico para aplicaciones en tiempo real en control de armamento o manejo de
datos.
Diseño modular.
Capacidad de trabajar eficazmente aún bajo condiciones extremas.
Posibilidad de trabajar de manera simple o apareada.
Retrocompatibilidad de software.
Adaptado para el uso de diversos periféricos.
Según muestra la Figura Nº 1, la Inter Computer Interface (ICI) se encarga del intercambio de
información entre dos computadoras, realizando una conversión paralelo–serie para la transmisión y
serie–paralelo para la recepción. La comunicación es full duplex y se realiza por medio de pares
trenzados. También se debe resaltar que es punto a punto entre ICI´s, no pudiendo conectarse un
tercer dispositivo.
La ICI tiene un bus paralelo para la conexión con la computadora de comando y control, el
cual puede conectarse a uno de los buses internos de la misma. Posee, además, dos “Dispositivos
Lógicos de Control” (DCL(2)
: Device Control Logic) que trabajan de manera independiente, y aún
sus direcciones (DA: Device Addres) son distintas; es decir, cada ICI posee 2 direcciones de
dispositivo. Una para la entrada de datos y otra para la salida de datos. Para las transmisiones utiliza
protocolos exclusivos del fabricante. Tiene un software de testeo, también provisto por el fabricante,
que prueba la placa haciendo un loop en su puerto serie.
(2)
DCL: Es la denominación que le da “Hollandse Signaalapparaten” a los periféricos de la computadora.
Figura Nº 1: Diagrama de interconexión entre dos computadoras por medio de sendas ICIs.
Para el desarrollo del proyecto se armó un banco de pruebas (Figura Nº 2) en el Departamento
Ingeniería del Servicio de Análisis Operativo, Armas y Guerra Electrónica (SIAG) de Puerto
Belgrano, donde pudiera hacerse la investigación del funcionamiento y el desarrollo de los
prototipos para luego pasar a las pruebas de campo (a bordo). Como se verá luego, del análisis se
determinó que la interfaz no realiza procesamiento de los datos, sólo hace un chequeo de errores por
hardware.
Figura Nº 2: Banco de pruebas armado en el SIAG para realizar las
capturas y posterior análisis del funcionamiento.
El comportamiento de la ICI es eminentemente lógico y los tiempos de respuesta a los
comandos recibidos son muy bajos, del orden de s1ans250 . Estas características permitieron
determinar que el dispositivo más conveniente para basar el desarrollo es un Arreglo de Compuertas
Lógicas Programable en Campo (FPGA: Field-Programmable Gate Array).
Se comenzó trabajando con un kit basado en una FPGA de Actel con el que se desarrollaron y
ensayaron las primeras versiones de código VHDL(3)
, con la intención de pasar en una segunda
etapa al desarrollo de hardware del prototipo, incluyendo el diseño y fabricación del circuito
impreso, el montaje y la soldadura de los componentes (incluida la FPGA). En esta etapa se
presentaron serios inconvenientes con la provisión de FPGAs de Actel (utilizada en la primera
mitad del desarrollo), por lo que fue necesario investigar acerca de las características de dispositivos
de otros fabricantes que fueran adecuados para los requerimientos del proyecto. La elección recayó
en la Spartan 3AN de Xilinx, por poseer memoria de configuración interna, lo que mejora el
aprovechamiento del espacio, entre otros factores que se verán a continuación.
Además de cuestiones relacionadas con la lógica interna del dispositivo a desarrollar, hubo
que determinar cómo aplicar la solución en el ambiente donde finalmente operaría el prototipo.
Estándares que debían cumplir los componentes, la placa base del circuito impreso (PCB: Printed
Circuit Board) y la soldadura a utilizar (con o sin plomo), para soportar las temperaturas,
vibraciones y manipulación a la que estaría expuesto el prototipo.
También hubo que considerar la adaptación de los niveles de tensión y corriente, dado que la
FPGA puede manejar niveles de tensión del tipo Low Voltage Transistor–Transistor Logic (LVTTL)
y los buses de la computadora requieren los niveles de tensión de Transistor–Transistor Logic
(TTL), con lo que se necesitan integrados de adaptación para tal fin. Además los buses de datos
actuales operan con salidas en configuración Tres Estados (Z), mientras que el bus sobre el que se
conecta la ICI trabaja con salidas Colector Abierto.
Selección del dispositivo central del desarrollo
a) Descripción general
Rango de temperatura de los dispositivos
Debido a las características del ambiente en que se utiliza la interfaz, el punto de partida para
la selección del dispositivo fue la existencia, dentro de su familia, de versiones con rango extendido
de temperatura. No todos los dispositivos están disponibles con versiones de rango de temperatura
(3)
VHDL: Lenguaje de descripción de hardware utilizado para inferir diseños sobre FPGAs.
industrial, automotriz, militar o aeroespacial, sino que muchas veces sólo son de rango comercial.
Para el caso de la Spartan 3AN las opciones son:
C : Comercial (0° C a 85° C)
I : Industrial (– 40°C a 100°C)
Capacidad lógica
El siguiente paso consistió en verificar la capacidad lógica de la FPGA (Tabla Nº 1). A medida
que se avanzó en el análisis del dispositivo a replicar se pudieron hacer mejores estimaciones de la
capacidad lógica necesaria.
Dispositivo Compuertas
del sistema
Equivalente en
celdas lógicas CLBs Slices
XC3S50AN 50 K 1584 176 704
XC3S200AN 200 K 4032 448 1792
XC3S400AN 400 K 8064 896 3584
XC3S700AN 700 K 13248 1472 5888
XC3S1400AN 1400 K 25344 2816 11264
Tabla Nº 1: Capacidades lógicas de distintos dispositivos.
La situación ideal es tener el prototipo en VHDL armado y simulado, entonces el software de
síntesis (el ISE, para este caso) realiza el cálculo de la ocupación del dispositivo. Pero como esto no
siempre ocurre, porque los tiempos de desarrollo no siempre acompañan a los tiempos de ejecución
de los recursos de un proyecto, es necesario realizar alguna estimación que sea coherente. Como
una medida para la comparación algunos fabricantes suelen poner el número equivalente de
compuertas que se pueden inferir sobre el dispositivo. Para el prototipo en cuestión se estimó que
era suficiente el integrado de menor capacidad de la familia 3AN, el XC3S50AN, que posee el
equivalente a 50000 compuertas. Luego de completar el diseño en VHDL y realizar la síntesis se
comprobó que el mismo requiere sólo el 25% de la capacidad lógica de la FPGA.
b) Puertos de E/S
Entre los requerimientos impuestos al prototipo a desarrollar estaba la cantidad de pines de
entrada/salida (E/S), un total de 84, de los cuales 44 son entradas y 40 son salidas.
El número máximo de E/S disponibles para el usuario de la FPGA que se pretendía utilizar
(Spartan XC3S50AN) es 144, pero esta cantidad varía con el encapsulado. Se optó por el TQFP
(TQ144/TQG144), que dispone de 108 pines de E/S disponibles, con la salvedad de que 7 de ellos
son “sólo entrada”. Además, si se utilizan niveles lógicos HSTL o SSTL, la cantidad se reduce
debido a los pines dedicados a tensiones de referencia.
Configuración de los niveles lógicos de los puertos de E/S
Los puertos de E/S de la Spartan 3AN se pueden configurar para operar con los niveles
lógicos de las familias: LVCMOS, LVTTL, HSTL y SSTL. Dado que el prototipo debía ser
conectado a un bus TTL, se sabía de antemano que iba a ser necesario utilizar dispositivos de
adaptación: buffers [1], level shifters [2] o bi-directional low voltage translator [3].
Tipo de Lógica CCOV REFV ILV IHV
Nom. (V)
Nom. (V)
Máx. (V) Mín. (V)
LVTTL 3.3 NO USADO 0.8 2.0
LVCMOS18 1.8 NO USADO 0.4 0.8
HSTL_III_18 1.8 1.1 1.0VREF 1.0VREF
SSTL3_II 3.3 1.5 2.0VREF 2.0VREF
Tabla Nº 2: Valores de tensión para la implementación de los distintos niveles
lógicos estándar de las E/S. Tabla resumen de la hoja de datos
original [4].
La configuración de los niveles lógicos a utilizar se realiza por software, mediante el
“PlanAhead” (funcionalidad asociada al ISE). También se debe tener en cuenta para el diseño del
esquemático las tensiones de alimentación y referencia para poder implementar los distintos niveles
lógicos. En la Tabla Nº 2 se indican, a modo de ejemplo, las tensiones nominal de alimentación de
los bancos de E/S ( CCOV ), nominal de referencia ( REFV ), máxima de entrada que se reconoce como
un ‘0’ lógico ( ILV : Input voltage that indicates a Low logic level) y mínima de entrada que se
reconoce como un ‘1’ lógico ( IHV : Input voltage that indicates a High logic level) para las distintas
lógicas.
[1] NXP SEMICONDUCTORS, 2011.
[2] TEXAS INSTRUMENTS, 2005.
[3] PHILIPS SEMICONDUCTORS, 2003.
[4] XILINX, 2011:17.
Configuración de corriente y velocidad de respuesta (slew rate)
Una vez seleccionados los niveles lógicos de tensión, se pueden elegir diferentes capacidades
de corriente como se muestra en la Tabla Nº 3 (con ciertas restricciones que se detallan más
adelante). En ella, OLI es la intensidad de corriente de salida para la cual la tensión de salida del
nivel lógico bajo (Low) se garantiza que será a lo sumo el valor indicado e OHI es la intensidad de
corriente de salida para la cual la tensión de salida del nivel lógico alto (High) se garantiza que será
como mínimo el valor indicado.
Capacidad
de
corriente
Condiciones de testeo Niveles lógicos
OLI OHI OLV OHV
(mA) (mA) (mA) Máx. (V) Mín. (V)
2 2 – 2
0.4 2.4
4 4 – 4
6 6 – 6
8 8 – 8
12 12 – 12
16 16 – 16
24 24 – 24
Tabla Nº 3: Lógica LVTTL, características de salida en continua
de los pines de E/S estándar.
En el caso de los buffers no es necesario preocuparse por la corriente, debido a que la misma
es provista por el mismo buffer. Si se utilizan level shifters o bi-directional low voltage translators
es necesario conocer la capacidad de manejo de corriente del dispositivo a adaptar (en este caso la
FPGA); dado que estos adaptan los niveles de tensión, pero la corriente requerida para escribir en el
bus de datos es provista por el integrado a adaptar.
Existen ciertas restricciones para la corriente que puede manejar la FPGA, expresadas en las
recomendaciones del fabricante para la cantidad máxima de salidas en conmutación simultánea
(Simultaneous Switching Outputs: SSOs [4]). En las mismas se detalla la forma de calcular, en
función de la corriente elegida, el número máximo de pines que pueden conmutar en el mismo
sentido de manera simultánea, a fin de mantener el ruido de conmutación en niveles seguros de
operación.
[4] XILINX, 2011:43.
Dispositivo Encapsulado
TQG144 FTG256 FGG400 FGG484 FGG676
XC3S50AN 2 3 – – –
XC3S200AN – 4 – – –
XC3S400AN – 4 5 – –
XC3S700AN – – – 5 –
XC3S1400AN – – – 6 9
Tabla Nº 4: Número de pares Vcco/GND por banco, se ha recuadrado el valor
que se usa en el ejemplo (ver texto).
Dicho ruido tiene efecto directo sobre los márgenes internos de la relación señal-ruido y, en
última instancia, sobre la calidad de la señal. La siguiente expresión permite calcular el número de
pines de E/S por banco, que pueden conmutar en la misma dirección de manera de mantener niveles
seguros de ruido de conmutación:
5NºTabla4NºTablaBankMÁXIO/SSO pinespares (1)
A modo de ejemplo, para XC3S50AN y encapsulado TQG144, de la Tabla Nº 4 se obtiene:
opares/banc24NºTABLA pares .
Por otra parte, si se elige una capacidad de corriente de 6 mA/pin, de la Tabla Nº 5 –para el
mismo encapsulado– se obtiene: spines/pare105NºTabla pines .
Por lo tanto aplicando (1) resulta:
banco
pines
pares
pines
banco
paresBankMÁX
20102IO/SSO
es decir, un máximo de 20 salidas que pueden conmutarse de manera segura.
En la Tabla Nº 5 se indica el número recomendado de pines que se le puede asignar a los
puertos de E/S para la lógica LVTTL configurada con velocidad de respuesta SLOW, de las dos
posibles: SLOW (lenta) o FAST (rápida). Se eligió SLOW por ser de 4 MHz la frecuencia de la
señal más rápida. Se debe tener en cuenta que el ruido debido a la conmutación es tanto mayor
cuanto mayor es la rapidez de la misma: flancos muy abruptos producen más ruido que flancos
suaves, ya que el efecto inductivo de las variaciones de intensidad aumenta con dtdi / [5]. Esto ha
sido tenido en cuenta por los fabricantes de dispositivos programables complejos y de circuitos
integrados de aplicación específica, y por ello es habitual que exista la posibilidad de optar entre
flancos más o menos abruptos. Es conveniente optar por flancos suaves para aquellas señales que no
[5] POLLÁN SANTAMARÍA, 2012.
requieran de muy alta velocidad. En las FPGA suele poder configurarse cada puerto en forma
independiente, lo que permite agrupar todas las señales rápidas en uno o más puertos y las lentas en
otros, usando diferentes configuraciones de slew rate.
Capacidad
de corriente
Encapsulado
TQG144 FTG256, FGG400,
FGG484, FGG676
Top,
Bottom
Banks 0,2
Left,
Right
Banks 1,3
Top,
Bottom
Banks 0,2
Left,
Right
Banks 1,3
2 20 20 60 60
4 10 10 41 41
6 10 10 29 29
8 6 6 22 22
12 6 6 13 13
16 5 5 11 11
24 4 4 9 9
Tabla Nº 5: Lógica LVTTL configurada con slew rate en SLOW: número
recomendado de pines en conmutación simultánea por par
Vcco/GND, se han recuadrado los valores que se usan en el
ejemplo (ver texto).
Pines no utilizados
Los pines no utilizados de la FPGA, tanto los de configuración como las E/S o los “sólo
entrada” pueden dejarse al aire ya que, luego de la configuración, internamente no están conectados.
Además puede seleccionarse desde el ISE (4)
, en las propiedades de Generate Programming File, si
luego de la configuración dichos pines serán conectados a un Pull-Up, un Pull-Down, o bien
quedarán flotantes.
c) Alimentación
En lo que se refiere a la alimentación, la FPGA lleva dos tipos, una que corresponde al núcleo
de la misma y otra que corresponde a los puertos de E/S. Dentro de lo que es la alimentación del
núcleo está la alimentación de la lógica interna y en el caso particular de la Spartan 3AN (utilizada)
una alimentación auxiliar para la memoria interna de configuración. Para los puertos deben tenerse
(4)
ISE: Integrated Software Environment, es un software producido por Xilinx.
en cuenta los niveles lógicos que se quieren manejar y dependiendo de los mismos serán los valores
de tensión a usar y si se usan o no los pines de referencia. Para el prototipo en cuestión se utilizó la
memoria interna de configuración y los niveles lógicos de los puertos fueron LVTTL, quedando
definidas las alimentaciones de la siguiente manera.
Alimentación del núcleo
CCINTV : Alimentación del núcleo interno de la lógica. El número de pines dedicados varía con
el encapsulado, siendo 4 para TQG144. Deben conectarse todos los pines a V2.1 .
CCAUXV : Alimentación auxiliar para la memoria flash interna (en el caso de la Spartan 3AN).
Deben conectarse todos los pines a V3.3 .
Alimentación de los puertos para LVTTL
CCOV : Alimentación de los bancos de E/S. Para algunos de los estándares de valores lógicos,
CCOV establece los valores de referencia. Todos los pines deben conectarse a la tensión
correspondiente. Para LVTTL deben ser conectados a V3.3 .
REFV : Pin de doble propósito. Para LVTTL se pueden utilizar como pines de “sólo entrada”.
Para las otras lógicas se usan como tensión de referencia de los niveles lógicos escogidos (por
ejemplo HSTL o SSTL). En estos casos, todos los pines deberán estar conectados a la tensión de
referencia y no podrán utilizarse como E/S.
d) Configuración
Configuración mediante la memoria FLASH interna
La Spartan 3AN tiene varios modos de configuración, entre los que figuran: Configuración
desde la memoria Flash interna, desde una memoria externa, por JTAG, etc. Además, cuando se
elige realizar la configuración mediante la memoria Flash interna, se tienen otras opciones, dado
que la misma tiene capacidad de almacenar dos configuraciones completas, de forma de establecer
un doble arranque.
Para este caso se fijó el uso de la memoria Flash interna para la configuración (Figura Nº 3) y
la descarga del archivo binario de configuración en la misma mediante JTAG. Para ello la FPGA
debe estar en modo Internal Master SPI mode [6]. De forma que a través de comandos enviados vía
[6] XILINX, 2009:217.
JTAG, la FPGA se ponga en modo configuración y grabe la misma en la SPI PROM interna. En
cada arranque, se leen los pines M[2:0], y para que la FPGA se configure en base a lo almacenado
en la memoria interna debe estar en: M[2:0] = <0:1:1>, Internal Master SPI mode. Para este modo
de configuración se requiere que el pin CCAUXV esté alimentado con V3.3 .
Si se realiza la configuración con los pines de modo seteados en el modo “JTAG” [6], M[2:0]
= <1:0:1>, la FPGA esperará ser configurada por el puerto JTAG en cada arranque, dado que pierde
la configuración cuando se le quita la alimentación y no leerá la configuración de la memoria SPI
PROM interna.
Figura Nº 3: Conexionado de la Spartan-3AN para utilizar el modo de
configuración mediante la memoria flash interna (Internal
Master SPI Flash Mode).
Otros pines asociados a la configuración
Los pines que se describen a continuación están dedicados a la configuración del dispositivo y
no están disponibles como pines de E/S para el usuario. Ambos son alimentados por la tensión
CCAUXV .
[6] XILINX, 2009:199.
Pin DONE: La FPGA maneja activamente el Pin DONE, poniéndolo en estado “bajo” durante
la configuración. Cuando el proceso de configuración se completó satisfactoriamente, este pin se
pone en estado “alto” a través un una resistencia de Pull-Up interna o externa, dependiendo de lo
configurado por el usuario.
Pin Prog_B: Por medio del pin Prog_B se fuerza el inicio del proceso de configuración. La
FPGA también inicia el proceso de configuración ni bien es alimentada. Este pin es una entrada de
control asincrónica. Cuando está “bajo” resetea la FPGA, inicializando la memoria de
configuración. Una vez que este pin vuelve a estado “alto”, comienza el proceso de configuración.
Pin SUSPENDED: Este pin es de uso dedicado, no disponible para propósitos generales.
Permite suspender la FPGA, reduciendo el consumo de potencia del sistema. Está alimentado por
CCAUXV . Este pin se debe conectar a GND en el caso de no ser utilizado [7].
El puerto JTAG
En la diversa bibliografía y en los esquemáticos de los kits de distintos fabricantes hay
pequeñas diferencias en cuanto al conexionado. Se probaron varias configuraciones y la que
finalmente funcionó en la Spartan 3AN es la que se muestra en la Figura Nº 4.
Figura Nº 4: Conexión del puerto JTAG, para configurar
la Spartan 3AN.
Resumen
• Para que la FPGA se configure a partir de su memoria interna los pines de modo deben
estar, M(2): '0', M(1): '1' y M(0): '1'.
[7] XILINX, 2007.
• CCAUXV debe ser de V3.3 .
• El pin INIT_B sirve para múltiples propósitos durante el proceso de configuración. Luego
está disponible como pin E/S.
• El pin DONE pasará a estado “alto” cuando la FPGA esté completamente configurada.
• Los pines que no estén involucrados en el proceso de configuración que se esté llevando a
cabo estarán en alta impedancia (los pines involucrados en el proceso de configuración
pueden variar de un modo a otro).
e) Reloj del sistema
Para la elección del reloj del sistema se debe tener en cuenta que cada elemento de la familia
Spartan 3AN ofrece ocho relojes globales de alta velocidad y bajo Skew [8], para mejorar la
performance. Estos son utilizados automáticamente por las herramientas de síntesis de Xilinx. Aún
si la frecuencia es baja, es importante usar los recursos de enrutamiento de reloj globales para
eliminar cualquier posibilidad de problemas en el temporizado del diseño. Es importante, por lo
tanto, entender cómo se definen y como se toma ventaja de los mismos.
Los ocho pines de entrada de reloj global se denominan GCLK0 a GCLK7. GCLK0 a GCLK3
se encuentran ubicados en la zona central inferior del encapsulado, más precisamente en los pines
57 a 60. GCLK4 a GCLK7 se encuentran ubicados en la zona central superior del encapsulado, más
precisamente en los pines 124 a 127. Cualquiera de los ocho pines puede conectarse indistintamente
a cualquier recurso o diseño dentro del chip. Estos no tienen restricciones por cuadrante y no tienen
diferenciación entre primario o secundario para simplificar la ubicación de la lógica sintetizada y de
las E/S. Además, en la familia de FPGA's Spartan 3AN ninguno de los pines de reloj comparte
funcionalidad con pines de configuración, solamente con pines de E/S.
El software de síntesis utiliza los buffers inferior y superior como primera opción para el
enrutamiento de las señales de reloj. Si existiesen más de ocho relojes en un diseño se pueden usar
los semi-buffers laterales. Floorplanning [9] se recomienda para diseños que requieran más de ocho
relojes, ya que las cargas sobre los buffers de la parte izquierda o derecha está restringidos a diseños
sintetizados sobre dichas partes o se limitan a un cuadrante dado (Figura Nº 5). Estas capacidades
de manejo de distintos dominios de reloj permiten un grado mayor de libertad en el diseño.
[8] XILINX, 2011:45.
[9] XILINX, 2010.
Figura Nº 5: Distribución interna de los dominios de reloj en la
Spartan-3E y 3A. Estructura basada en cuadrantes.
Condiciones de carrera
En el diseño existe una parte encargada de transmitir una palabra recibida en paralelo, de
manera serializada, por una línea en par diferencial. Esta palabra se transmite junto con un reloj de
1 MHz (señal s_osrcl en la Figura Nº 6 de la izquierda y Q en la derecha) obtenido de la división del
reloj del sistema. Ahora bien, por la lógica de funcionamiento, cuando se recibe cierta secuencia de
señales debe resetearse (reset = '0') el módulo de salida de datos y el reloj saliente de dicho módulo
debe quedar en estado alto.
Para ello se implementó en un primer momento el siguiente VHDL:
s_osrcl <= '1' when reset = '0' else
mc_1mhz;
La herramienta de síntesis generó el hardware que puede verse a la izquierda de la Figura Nº 6.
Figura Nº 6: Hardware de salida de reloj serie con problemas de condición de
carrera a la izquierda y resuelto a la derecha.
Un mensaje del sintetizador indicó que este hardware tenía problemas de condición de
carrera. Múltiples procesos están en condición de carrera si el resultado de los mismos depende del
orden en que se ejecute. En circuitos electrónicos se da una Condición de carrera cuando la salida
de un sistema o subsistema depende del orden en que se hayan activado o desactivado sus
componentes. La Figura Nº 7 ejemplifica la situación.
Figura Nº 7: Ejemplo de circuito lógico
con condición de carrera.
Puede observarse que durante un tiempo 2t tendremos a la salida un estado no deseado o
incorrecto, dado por el retardo en la propagación del valor lógico a través del inversor. Se reescribió
entonces, el código de la siguiente manera:
proc_hab_deshab_BS: Process (reset, mc2d, mc_1mhz)
begin
if reset = '0' then
s_osrcl <= '1';
elsif mc2d' event and mc2d = '1' then
if mc_1mhz = '1' then
s_osrcl <= '1';
else
s_osrcl <= '0';
end if;
end if;
end process;
La herramienta de síntesis generó el hardware que puede verse a la derecha de la Figura Nº 6.
Se infirió un FlipFlop (derecha de la Figura Nº 6) y se solucionó el problema. El reset está
conectado a la entrada PRE, la señal de reloj de 1MHz (mc_1mhz) a la entrada D, el clock C es
“mc2d” y la señal de reloj saliente “s_osrcl” es Q.
Problemas de sincronizado
Durante las pruebas del primer prototipo se detectaron varios cortes abruptos en las
transmisiones de datos. Se realizaron simulaciones del evento, dado que en las capturas del
analizador lógico no se veían anomalías. Se armó un banco de prueba en VHDL donde se
reprodujeron las señalizaciones y se describió con dos relojes que se pudieran desplazar
temporalmente, de forma de reproducir el fenómeno lo más preciso posible. En un primer momento,
no se registraron los cortes que aparecían en las capturas, sin embargo se pudo observar un
comportamiento errático y la pérdida de algunos datos dentro de la palabra recibida.
Figura Nº 8: Diagrama superior, ejemplo de sistema con una entrada
asincrónica. Diagrama inferior, el mismo sistema con
la entrada sincronizada mediante un Flip Flop.
Como en el banco de prueba se puede ver el estado de los diferentes Flip Flops, de cada uno
de los módulos del diseño, en un ciclo de reloj dado; se pudo analizar el hardware interviniente en
la recepción de las palabras, en los momentos donde se producía la falla. Se encontró que los
desplazamientos producían la pérdida esporádica de un pulso interno necesario para identificar los
bits de las palabras y las mismas llegaban con errores. Se buscó entonces, sincronizar los relojes
dentro del prototipo. Se utilizó el primer método (Figura Nº 8) propuesto por Pong P. Chu en su
libro [10]. Se sincronizó el reloj entrante al módulo de ingreso de palabras del puerto serie por
medio de un Flip Flop implementado en VHDL, el cual entrega una nueva señal de reloj en fase con
la señal de reloj del sistema. La solución resultó acertada y no se registraron más cortes en la
comunicación, llegando a funcionar, en ocasiones, más de 72 horas continuas.
Diseño de la placa de circuito impreso
La placa de circuito impreso (PCB: Printed Circuit Board) del prototipo se realizó en seis
capas. Para su diseño se tuvieron en cuenta ciertas reglas prácticas, a fin de evitar problemas. Si
bien la frecuencia máxima del circuito es de 4 MHz, se aplicaron algunas recomendaciones [11],
[12] para circuitos de alta frecuencia (mayores que 50 MHz), que se detallan a continuación:
• El ruteo debe comenzar por los pines de mayor frecuencia y terminar por los de menor. De
este modo, las primeras tendrán los caminos más directos.
• El plano de masa debe ser lo más continuo posible, debiéndose evitar que existan lazos de
masa.
• Las señales ruidosas deben colocarse junto con otras ruidosas, las sensibles con otras
sensibles, lejos unas de las otras y sin compartir el camino de retorno (return path) para la
corriente.
• Las señales diferenciales deben ir juntas.
• En cuanto al footprint (5)
[13] de los circuitos integrados, además de tener en cuenta las
recomendaciones del fabricante, cabe recordar que el área del pad (6)
[14] es proporcional
a su capacidad de disipación de calor.
[10] CHU, P., 2006:617.
[11] MRK INDUSTRIES. Disponible en http://www.mrkindustries.com.ar/
[12] OPEN CIRCUITS. Disponible en http://www.opencircuits.com/Printed_Circuit_Boards (5)
FOOTPRINT: Es el nombre que se le da a la silueta o huella sobre el PCB del componente electrónico.
[13] CIRCUITO IMPRESO. Disponible en http://es.wikipedia.org/wiki/Circuito_impreso (6)
PAD: Un pad es una superficie de cobre en un circuito impreso que permite soldar o fijar el componente a la placa.
Existen dos tipos de pads; los thru-hole y los smd (montaje de superficie).
Selección de las interfaces de adaptación
Luego de un exhaustivo análisis de las posibilidades de adaptación existentes, para los
primeros prototipos se optó por el GTL2000, que es un “22-bit bi-directional low voltage
translator”. La forma en que realiza la traslación se tuvo en cuenta a la hora de escribir la
configuración de los puertos.
Cambios en la configuración de los puertos de salida por la adaptación mediante GTL2000
Durante las primeras pruebas del prototipo, no funcionó la placa en desarrollo y mientras
estaba conectada no permitía que la computadora de comando y control funcione, impidiendo la
carga del sistema operativo. Se realizaron capturas sobre el bus durante la carga del sistema
operativo, para observar lo que estaba ocurriendo. Para tener un punto de referencia se hicieron
mediciones del bus con la placa original. La señalización obtenida de las capturas del prototipo era
errática y sin lógica alguna, totalmente distinta a la observada con la placa original, donde había una
secuencia de diálogo entre dispositivos, bien definida y ordenada.
Entre las distintas pruebas que se realizaron se volvía a sintetizar el VHDL sobre la FPGA. En
una oportunidad se intentó realizar la carga del sistema operativo mientras se configuraba la FPGA.
En esta circunstancia, la carga del sistema operativo se completó sin problemas. Revisando la hoja
de datos de la FPGA, se encontró que durante el proceso de configuración la FPGA coloca todas sus
E/S en alta impedancia. En el diseño, cuando la configuración terminaba, la lógica indicaba poner
todas las salidas a '1', dado que el bus al cual estaba conectada la placa es colector abierto, con lo
que el estado de reposo es “alto”.
Se realizaron modificaciones en el VHDL para que, mientras la placa no tiene que dialogar
con el bus, el estado lógico de la salida sea 'Z' en vez de '1'. Esta modificación permitió que se
realice la carga del sistema operativo con normalidad y que el prototipo empezara a dialogar con el
procesador. El motivo de que haya sido necesario efectuar esta modificación es la manera en que
trabaja el dispositivo de adaptación de niveles de tensión GTL2000 utilizado, ver Figura Nº 9.
[14] ELECTROSOFT INGENIERÍA. Disponible en http://www.pcb.electrosoft.cl/04-articulos-circuitos-impresos-desarrollo-
sistemas/01-conceptos-circuitos-impresos/conceptos-circuitos-impresos-pcb.html
Figura Nº 9: Conexionado GTL20xx o NVT20xx, dispositivo de adaptación de niveles
de tensión con salida tipo “drenador abierto”.
Como puede observarse en la Figura Nº 9, si se coloca un '0' lógico en el dispositivo del lado
'A' del GTL2000, se forzará el mismo estado del lado 'B', siempre y cuando el transistor del puerto
de la FPGA pueda absorber la corriente provista por la (B)Rpu y la (A)Rpu . Esto es correcto y
deseable; el inconveniente surge si se coloca un '1' lógico del lado 'A', el dispositivo que se
encuentre del lado 'B', al querer poner un '0' se encontrará con que tiene que absorber la corriente
provista por la (B)Rpu (para lo cual está calculado) más la corriente entregada por (A)Rpu , lo cual
no tiene que haberse tenido en cuenta. Si a esto se le suma que puede haber varias de estas placas
conectadas al bus, el problema aumenta (a (B)Rpu se le agregan tantas (A)Rpu como placas
compartan el bus).
En el caso que el puerto de la FPGA esté configurado como “salida tres estados” (7)
, como
había sido configurado, en vez de drenador abierto con resistencia de Pull-Up, cuando el transistor
superior se sature para entregar un '1' lógico, conectará la fuente de alimentación de 3.3 V al pin de
salida. Entonces es prácticamente imposible que algún dispositivo del lado 'B' (como el de carga del
sistema operativo en este caso) pueda mandar a '0' alguna de las líneas del bus, impidiendo de esta
forma el diálogo a través del mismo.
A continuación se muestra el código VHDL de la solución. Se habilitan las salidas cuando se
quiere escribir en el bus y se las coloca en ´Z´ cuando no se dialoga con el mismo. Se utilizó para tal
fin la señal “S_EN” provista por una placa que hace las veces de controlador de interrupciones y
que envía un '0' cuando la placa en cuestión puede escribir en el bus.
---------SALIDAS PUERTO PARALELO---------
with S_EN select
i24xdata <= S_DATOS_I when '0',
"ZZZZZZZZZZZZZZZZZZZZZZZZ" when others;
with S_EN select
idrp <= S_IDR when '0',
'Z' when others;
with S_EN select
eip <= S_EI when '0',
'Z' when others;
with S_EN select
o6xda <= S_DA_O when '0',
"ZZZZZZ" when others;
with S_EN select
odrp <= S_ODR when '0',
'Z' when others;
El principal problema del GTL2000 es que no aumenta la capacidad de corriente del
dispositivo que tiene detrás, es más, puede que el dispositivo que adapte maneje corrientes
nominales mayores a 16 mA (la FPGA que se utilizó, Spartan 3AN, puede manejar, con ciertas
limitaciones [15], hasta 24 mA por pin), pero el GTL2000 sólo garantiza un '0' lógico cuando la
corriente que drena el mismo es inferior a este valor. Para el caso en estudio, las resistencias de
Pull-Up del puerto paralelo de salida son de 270 , con lo que la corriente nominal es de 18.5 mA
aproximadamente. Se pensó entonces, en otra solución a la adaptación de niveles de la salida (ya
que para la entrada no había inconveniente con el GTL2000), para ello debieron tenerse en cuenta
ciertas consideraciones eléctricas.
(7)
En la Figura Nº 10 puede verse la configuración de los transistores del puerto de salida cuando la FPGA se
configura en salida tres estados.
[15] XILINX, 2011:43.
Soluciones de traslación de niveles existentes [16]
Dadas las limitaciones de manejo de corriente del GTL2000, la necesidad de adaptación de
niveles de E/S y la configuración colector abierto del bus, se decidió continuar con la búsqueda de
integrados de adaptación. Un resumen de lo existente a la fecha en el mercado se ve a continuación:
Dispositivos de doble fuente: es la mejor elección para la mayoría de las aplicaciones de
traslación de niveles. Estos dispositivos pueden operar de manera bidireccional en una gran
variedad de niveles de voltaje. Ofrecen bajo consumo de potencia y pequeños retardos de
propagación.
Dispositivos drenador abierto: pueden utilizarse para subir o bajar los niveles de voltaje, por
medio del uso de un resistor de Pull-Up externo. Esta solución es muy flexible, pero no es tan
eficiente dado que consumen mayor potencia.
Dispositivos con entradas que soportan sobrevoltajes: proveen una muy sencilla opción para
bajar niveles de tensión. Si la señal de entrada tiene flancos ascendentes y descendentes lentos el
ciclo de trabajo de la señal de salida puede verse afectado.
Dispositivos CB3T: son switches FET, ideales para traslaciones de 5 V a 2.5 V, 5 V a 3.3 V y
3.3 V a 2.5 V. No proveen amplificación de corriente, debiendo utilizarse una salida con buffer en
caso de ser necesario.
Dispositivos CBT/CBTD: son utilizados para traslaciones de 5 V a 3.3 V. Ofrecen tiempos de
propagación reducidos y bajos consumos de potencia. No proveen amplificación de corriente,
debiendo utilizarse una salida con buffer en caso de ser necesario.
Dispositivos TVC: permiten una traslación de niveles bidireccional sin la necesidad de una
señal de control de dirección. Esta solución requiere el uso de resistores externos de Pull-Up. El
consumo dependerá del valor de dicha resistencia. Un dispositivo CBT puede ser configurado para
trabajar como un TVC.
Dispositivos con entradas compatibles con TTL: los dispositivos de las familias HCT, AHCT,
ACT, ABT y FCT pueden ser utilizados para realizar la traslación 3.3 V a 5 V (traslación ascendente
únicamente). Esta solución provoca un exceso en el consumo de energía y se debe evitar en
aplicaciones donde el consumo es un factor importante.
Consideraciones eléctricas de la adaptación
Cuando se dialoga con un bus colector abierto es conveniente usar dispositivos de salida del
tipo drenador abierto, para una mejor compatibilidad eléctrica. Es por ello que en un primer
[16] TEXAS INSTRUMENTS, 2004.
momento se eligió el GTL2000. Otro motivo fue la gran cantidad de pines de adaptación que posee
(hasta 22 E/S por circuito integrado).
Figura Nº 10: Conexionado de una salida 'Z' alimentada por 3.3V a un bus colector abierto
alimentado por 5V.
Se hizo un análisis de las posibilidades de usar dispositivos con salida tres estados pero según
una nota de aplicación [16] de Texas Instruments (TI), para lograr una traducción de niveles de
tensión en los dispositivos con salida CMOS push-pull, que es la salida típica de los dispositivos
con salida 3 estados, no se debe usar una resistencia de Pull-Up. Esta técnica tiene varios defectos y
debe ser evitada. El primer problema es el incremento de consumo de energía cuando la salida pasa
al estado “bajo”. Otro problema se produce cuando la salida del driver CMOS está en estado “alto”:
el transistor inferior de canal N está en corte y el superior de canal P está en saturación. Hay un
flujo de retorno de corriente desde la fuente de alta hacia la fuente de baja a través de la resistencia
R y la parte superior del transistor de canal P. Este flujo de corriente en la fuente de baja podría
causar efectos indeseables (Figura Nº 10). Se decidió reemplazar los GTL2000 que adaptaban la
salida por el buffer 74LVC07A [17]. Su salida es tipo “drenador abierto” y tiene un dispositivo de
su familia con rango de temperatura extendido (deseable para la aplicación final). Además, puede
manejar '0' lógicos bien definidos drenando corrientes de hasta 24 mA.
Cambios en la configuración de los puertos de salida por la adaptación mediante buffers 74LVC07A
Las primeras pruebas con el nuevo prototipo, construido con los pines de salida adaptados
mediante el buffer 74LVC07A (cuya configuración de salida puede verse en la Figura Nº 11) en
reemplazo del GTL2000, fallaron. En esta ocasión, no podía dejarse en la línea de entrada del buffer
[16] TEXAS INSTRUMENTS, 2004.
[17] TEXAS INSTRUMENTS, 2004:1164.
un estado indefinido como se hacía cuando la adaptación de las salidas era mediante los GTL2000,
sino que debía colocarse un '0' o un '1' lógico según correspondiese. Se cambió en el VHDL del
diseño la asignación de 'Z' a la salida por '1', con lo cual el funcionamiento fue correcto.
Figura Nº 11: Conexionado de una salida 'Z' alimentada por 3.3V
a un bus colector abierto alimentado por 5V.
Según la guía de selección de lógica de Texas Instruments [18], cuando se utiliza como
entrada desde un bus TTL, el 74LVC07A debe alimentarse con V5VCC para que interprete
dichos niveles lógicos en su entrada, mientras que, de ser necesario, a la salida puede ponerse un
Pull-Up a valores de tensión tan bajos como 1.8V (3.3V para este caso). A la hora de ser colocados
a la salida del prototipo debió conectarse la alimentación del mismo a 3.3V con sus salidas
conectadas mediante un Pull-Up a 5V.
Lógica del dispositivo a replicar
Diagramas temporales
Existen dos caminos para replicar el funcionamiento de un dispositivo. El primero es,
conociendo el diagrama esquemático y todos los componentes (o sus reemplazos, dado que la placa
en cuestión tiene más de 30 años), construir un circuito igual. El segundo consiste en interpretar la
lógica de funcionamiento y replicar el comportamiento, este último fue el camino escogido. Para
entender la lógica de funcionamiento de un dispositivo electrónico es de suma utilidad contar con
los diagramas temporales completos. Mediante ellos se pueden conocer las diferentes respuestas del
sistema frente a las distintas entradas (su protocolo).
Inicialmente, provistos por el fabricante, se contaba con dos diagramas muy elementales que
no cubren todo el abanico de operaciones de la interfaz, como así tampoco todas las señales
[18] TEXAS INSTRUMENTS, 2000:30.
involucradas. En la Figura Nº 12 se muestra uno de ellos, que representa el paso de la placa del
estado “desarmada” a “armada” y viceversa.
Figura Nº 12: Parte de uno de los diagramas temporales de la placa a
replicar.
Capturas
Debido a que la descripción que se tenía era insuficiente para poder explicar el
funcionamiento de la placa, de forma tal de poder reproducirlo, se armó un banco de pruebas que
permite ejecutar y verificar todas las funcionalidades de la misma y realizar capturas mediante un
analizador lógico Tektronik TLA5202B (Figura Nº 13, derecha).
Para ello se construyeron placas de extensión (Figura Nº 13, izquierda) que permiten
identificar, de manera inequívoca, cada uno de los 77 pines (dato + control) de la placa. Dado que el
número de pines de la placa es superior a la cantidad de canales del analizador (68 canales), se
buscaron aquellos que transportan información correspondiente al protocolo. Se tomaron todas las
señales de control, todos los pines del puerto serie y la parte superior del puerto paralelo de entrada
y de salida.
El test completo dura alrededor de tres minutos, pero el analizador lógico sólo puede
almacenar un máximo de 500 milisegundos. Esta limitación hizo necesaria una identificación de las
diferentes subrutinas del test y de las señales más convenientes para disparar cada captura. De esta
forma se obtuvieron las capturas individuales de cada una de las partes del test.
Figura Nº 13: A la izquierda, una de las placas de extensión diseñadas para poder conectar el
analizador de manera inequívoca. A la derecha, el analizador lógico -en primer
plano- conectado al banco de pruebas armado en el SIAG.
Con los datos obtenidos se elaboraron dos nuevos diagramas temporales completos, mediante
los cuales se comenzó a dilucidar el comportamiento lógico de la placa. Cabe aclarar que, si bien
podría haberse utilizado algún software que tomara los datos del analizador (dado que el mismo
provee los datos de las capturas tanto en formato propio como en formato texto) e ir reconstruyendo
el diagrama temporal completo de forma digitalizada, se consideró más productivo hacerlo
manualmente, a fin de poder ir verificando cada una de las capturas, para luego volcar las partes
donde podía apreciarse la interacción placa-procesador.
El trabajo de confección de los diagramas permitió entender gran parte de la lógica interna de
la placa. Se pusieron también al descubierto los cortos tiempos de reacción ante las instrucciones
recibidas ( s1ans250 ). Esta fue una de las razones que motivó el desarrollo del prototipo sobre
una FPGA en vez de un microcontrolador, dado que para ejecutar subrutinas en este último hubiera
requerido una excesiva capacidad de cálculo.
Descripción en VHDL
Escribiendo y describiendo
Finalizados los diagramas, se comenzó con la descripción en VHDL. Inicialmente se tomó
como base la división modular del fabricante (dado que se poseía un diagrama en bloques de la
placa) que, salvo ciertas diferencias, fue seguida hasta el final. No se realizó una réplica exacta;
algunos módulos fueron suprimidos y/o absorbidos por otros, y se agregaron otros nuevos para
añadirle mejoras en cuanto a la detección de fallas y dejar abierta la puerta para agregar otra interfaz
de comunicación (que permita la comunicación con otras computadoras modernas).
Los módulos se fueron escribiendo y probando mediante TESTBENCH (8)
en VHDL. Sólo se
dejaron sin testear tres módulos, que por su complejidad y gran cantidad de E/S, resultaba más
sencillo y rápido hacerlo con el conjunto completo en lugar de hacerlo individualmente. Se hizo un
diseño con un reset asincrónico y con un sólo reloj global, el de más alta frecuencia (4 MHz). Si
bien la FPGA utilizada tiene la capacidad de manejar ocho dominios de reloj, la segunda señal de
reloj (1 MHz) proveniente del puerto serie se utilizó como clock enable.
El registro de desplazamiento de salida, encargado de transmitir las palabras por el puerto
serie a razón de 1 Mb/s, quedó descripto de la siguiente manera:
proc_registro_desplazamiento: Process (reset, mc2d, s_load, fmc_1mhz, datos_u24, sp,
s_registro26bit)
begin
if reset = '0' then
s_registro26bit <= (others => '1');
dato_serie <= '1';
elsif mc2d' event and mc2d = '1' then
if s_load = '0' then
s_registro26bit (1) <= sp;--Last Bit
s_registro26bit (25 downto 2)<= not (datos_u24);--datos
s_registro26bit (26) <= '0';--bit de start
elsif fmc_1mhz='1' then
s_registro26bit <= s_registro26bit (25 downto 1) & '1';
dato_serie <= s_registro26bit (26);
end if;
end if;
end process;
Obteniéndose de la síntesis del mismo, la lógica que se ve en la Figura Nº 14.
Figura Nº 14: Flip Flop que maneja la salida serie de los datos
almacenados en el registro de desplazamiento.
(8)
TESTBENCH: Banco de prueba de diseños realizados en VHDL, el cual también está escrito en VHDL y se puede
simular mediante herramientas de software como ISIM [19,20].
La señal “fmc_1mhz” es un pulso de 250 ns que se pone en '1' cuando se detecta el flanco
ascendente del reloj proveniente del puerto serie; al describir el VHDL de esta forma, la misma
quedó como un clock enable de la lógica.
Como se observa en la Fig. Nº 14, el bit 26 del registro está conectado al pin “D”,
“fmc_1mhz” al “CE” y “mc2d” al reloj “Clock” del Flip Flop (FF), dado que es el reloj global del
sistema. La salida del dato serie se obtiene de “Q” y el reset asincrónico va al pin “Reset”.
TESTBENCH y depuración
La mayoría de los módulos se probaron antes de armar la estructura que los contuviera a
todos. Esto se hizo mediante bancos de pruebas individuales, diseñados en función del
comportamiento que podía inferirse de los diagramas de señales y en algunas descripciones del
fabricante. Luego de completar el primer prototipo en VHDL, se comenzó por replicar en los
TESTBENCH las secuencias completas de cada una de las subrutinas del programa de prueba. Para
ello se analizaron una a una las capturas y sus respectivos temporizados, para generar la misma
señalización que produce el procesador cuando dialoga con la placa.
Se reprodujeron siete de las diez subrutinas que componen el test. Desde la primera (que era
simplemente un reset por software de la placa, de 100 ms de duración) se encontraron errores, como
la falta de generación de señales o señales en un estado incorrecto. Una gran ventaja de los bancos
de prueba en VHDL radica en la posibilidad de conocer no sólo el estado de las entradas y salidas
(como ocurre cuando se conecta un analizador lógico a la placa), sino el de cada uno de los flip-
flops que conforman la lógica interna del diseño, en cada instante de tiempo. Esto fue tan
complicado como útil, dado que, cuando se encontraba un comportamiento incorrecto (una señal
ausente o presente en un momento incorrecto) se revisaba la señalización, desde el módulo que
genera la señal con error hacia atrás, verificando las señales que ingresaban al mismo y pudiendo
revisar aún las señales internas y externas de los módulos con los que interactúa el módulo en
cuestión. De esta forma resultó factible discriminar si el módulo estaba mal diagramado, o bien no
le estaban llegando las señales necesarias para pasar al estado correcto.
El primer prototipo fue simplemente una placa adaptadora de los puertos paralelos y serie,
conectada al kit de desarrollo que se estaba utilizando. Al llegar a la séptima subrutina del test, se
completó el armado del mismo y se prosiguió con la síntesis del VHDL sobre el kit. Se continuó
montando el prototipo en la computadora y capturando el resultado de la ejecución del test con el
analizador lógico.
Análisis, captura y simulación
En esta nueva etapa de prueba se realizó una interacción analizador-simulador (Figuras Nº 15
y 16). Durante la ejecución del test se identificaba la rutina donde el prototipo fallaba. Luego,
mediante el analizador se capturaron dichas situaciones y finalmente se replicaron las
señalizaciones en un TESTBENCH. En la Figura Nº 15 se ve la imagen de una captura con el
analizador lógico. En la Figura Nº 16 la simulación mediante ISIM. Este procedimiento tuvo un
elevado índice de aciertos. Prácticamente todos los errores capturados con el analizador pudieron,
luego, ser reproducidos en la simulación. Así fue posible identificar de manera inequívoca el o los
módulos internos que presentaban errores en su lógica, corregir el VHDL y obtener finalmente el
comportamiento deseado del conjunto.
Figura Nº 15: Captura de pantalla del analizador lógico.
Figura Nº 16: Captura de pantalla de la simulación mediante ISIM [19][20] que reproduce la
señalización vista en la captura del analizador de la Figura Nº 15.
Desarrollo de los prototipos
Primeras aproximaciones
En el desarrollo de los diferentes prototipos, se comenzó por probar los integrados que se
utilizarían para la adaptación de señales, tanto del bus paralelo como del bus serie y se
implementaron dos plaquetas de prueba (Figura Nº 17); una contenía los integrados de adaptación
del puerto serie y la otra los de adaptación del puerto paralelo y las fuentes DC-DC que se
utilizarían en el diseño.
Estas placas fueron pensadas para que las pruebas pudieran realizarse en el banco de pruebas
armado en el SIAG, sobre una ICI original. En esta etapa fue necesario realizar una capacitación en
soldadura de componentes de montaje superficial (SMD: Surface Mount Device) en la empresa
Emtech [21]. Ambas placas se probaron de la misma forma, se hacía correr el test de prueba
intercalándolas en el puerto serie y paralelo respectivamente y se corroboraba si el test presentaba
algún error. La prueba de las fuentes de alimentación DC-DC fue importante dado que operan a 1.7
MHz y su correcto funcionamiento depende directamente de utilizar los componentes que el
fabricante propone y hacer la PCB según recomendación del fabricante, dejando un estrecho
margen de modificaciones.
[19] XILINX. Disponible en http://www.xilinx.com/tools/isim.htm
[20] XILINX, 2012. [21] EMTECH. Disponible en http://www.emtech.com.ar/
Figura Nº 17: Izquierda, placa de prueba de los integrados de adaptación del puerto serie.
Derecha, prueba integrados de adaptación del puerto paralelo y fuentes DC-
DC.
Primer prototipo
El primer prototipo se diseñó aprovechando los conocimientos adquiridos en las pruebas de
los integrados de adaptación y las fuentes DC-DC y teniendo en cuenta el Kit 3PA1 [22] adquirido
para el desarrollo. El mismo fue una placa adaptadora de todos los pines de E/S del kit con el
agregado de las fuentes de alimentación, para no se necesitara alimentación externa sino que
funcionara con la alimentación que provee el bus a la placa original.
Figura Nº 18: Primer prototipo completo de la ICI. La placa roja contiene todos los integrados de
adaptación más las fuentes de alimentación del kit (placa amarilla).
[22] EMTECH. Disponible en
http://www.emtech.com.ar/index.php?option=com_content&view=article&id=15&Itemid=11&lang=es
Las diferentes versiones del VHDL del diseño se volcaban al kit y se ejecutaba el test de
prueba de la ICI, haciendo en simultáneo las capturas de los mismos para poder realizar las
correcciones pertinentes. Este prototipo recibió el nombre de AR-ICI (V4) y se depuró en el banco
de prueba del SIAG hasta que se obtuvo el mismo comportamiento que la placa original.
Obtenido esto, se empezó con las primeras pruebas a bordo de un Destructor, en ellas se
detectaron fallas. Si bien el test de prueba se ejecutaba sin inconveniente, tanto a bordo como en el
banco de pruebas del SIAG, se produjeron errores cuando se trataba de comprobar la comunicación
entre consolas tácticas. Realizando más capturas con el Analizador Lógico utilizado para nuevas
depuraciones, no se observó un comportamiento errático al que se pudiera atribuir la falla.
Cuando se comparaban las capturas hechas sobre una placa original con una hecha sobre el
prototipo se veían iguales hasta un determinado momento en que la transmisión se cortaba
abruptamente. Otra diferencia que se podía apreciar entre las capturas realizadas en el banco de
pruebas y las realizadas a bordo, era un pequeño desfasaje entre el reloj serie saliente y el entrante.
Por ello se simuló esta situación mediante un TESTBENCH con dos AR-ICI comunicándose entre
ellas y con la posibilidad de variar el desfasaje de los relojes para poder emular las capturas.
De esta manera se observó que para un determinado desfasaje, una de las señales internas se
volvía demasiado corta (1 a 4 nanosegundos) para ser detectada por la lógica de la FPGA (la
frecuencia máxima de la Spartan 3AN, es 200 MHz con lo que el pulso mínimo tiene que ser mayor
a 5 nanosegundos para ser detectado). La pérdida de dicho pulso conlleva la pérdida de algunos de
los bits de la palabra que se estaba recibiendo y por ende la falla de la comunicación. Fue entonces
que se aplicó el primer método (Figura Nº 8) que propone Pong P. Chu [10] para sincronización de
señales entrantes y que se describió en la sección “Problemas de sincronizado”.
A partir de estas modificaciones se consiguió un funcionamiento estable, salvo que, por
períodos de aproximadamente una hora de uso, la computadora perdía algunas de las tramas de
datos. Se adjudicó el problema a la parte eléctrica, más precisamente al hecho de que la conexión
del prototipo al bus es mediante cables planos. En las más de 600 capturas que se realizaron y
revisaron, no se encontró una anomalía a la que se pudiera atribuir esta falla, la cual se producía
aleatoriamente. Fruto de la interacción con los Suboficiales que realizan el mantenimiento de los
sistemas a bordo surgió la inquietud de agregar al prototipo una serie de leds indicadores que
mediante indicaciones luminosas permitieran la detección de diferentes situaciones anómalas. Estos
leds y el VHDL necesario para su funcionamiento se agregaron para el diseño del nuevo prototipo.
[10]
CHU, P., 2006:617.
Segundo prototipo
En base a los resultados de las pruebas con la AR-ICI (V4) se decidió diseñar un prototipo del
tamaño y forma de la ICI original que pudiera conectarse directamente al bus de la computadora. Se
realizó íntegramente con elementos de montaje superficial que fue necesario importar.
Esta Aproximación se la denominó AR-ICI (V5), que se muestra en la Fig. Nº 19 en
comparación con la ICI original. Se la diseño de forma tal de poder armarla tanto con una FPGA de
ACTEL, ProASIC3L-A3P600L (9)
, como con una de XILINX (Spartan-3AN – XC3S50AN), por un
inconveniente en la provisión de la primera. Durante el primer semestre de 2012 se realizó la
compra de ACTEL por parte de MICROSEMI, con lo que la provisión de la FPGA se vio
restringida, no tenían en stock ni siquiera los proveedores internacionales. Cuando se restableció el
stock, la compra se complicó debido a restricciones aplicadas al número de componentes que se
podían comprar, además de que el precio de la misma se había elevado más del 50%.
Todo esto motivó al equipo de trabajo a realizar el cambio del dispositivo central del
desarrollo. Teniendo que adquirir los conocimientos necesarios para migrar un diseño de una FPGA
que ya se había probado en el kit y del cual, mediante los esquemáticos del mismo, se sabían todos
los detalles a tener en cuenta a la hora de soldar la FPGA fuera del mismo; a una nueva FPGA en la
que el grupo nunca había trabajado.
El kit más cercano con el que se había tenido contacto no usaba la Spartan-3AN, sino la 3A
que no posee memoria flash de configuración interna. Todo esto implicó más de un mes dedicado a
leer los ocho manuales y hojas de datos del fabricante (DS099-3, DS557, DS706, ug112, ug331,
ug332, ug333, ug334), para realizar un correcto diseño de la PCB.
Figura Nº 19: A la izquierda la ICI original, a la derecha el prototipo AR-ICI (V5).
(9)
El Kit 3PA1 sobre el que se comenzó el desarrollo posee ésta FPGA y se pretendía seguir trabajando sobre la misma
hasta que un problema en la provisión de las FPGAs de ACTEL hizo que se pensara en migrar el diseño a una FPGA
de Xilinx, la Spartan 3AN.
Se logró hacer una PCB, que fuera compatible con ambas FPGAs, y se realizó el armado de
las mismas mediante el sistema de estaño en pasta y horno en Mrkindustries. No hubo dificultad
para configurar el prototipo armado con la FPGA de ACTEL; no así con la FPGA de XILINX, dado
que hubo que aprender cómo realizar la configuración para que quede almacenada en la memoria
Flash interna. Una vez que el prototipo fue probado y se comprobó su correcto funcionamiento en el
banco de pruebas del SIAG, se comenzó con las pruebas a bordo.
Figura Nº 20: Pruebas de la AR-ICI V5 en el Destructor. Se hicieron gran cantidad de capturas con
el analizador (Izquierda) y con el DPO de la UTN (Derecha), dado que el MSO
pedido llegó demorado.
Se comenzaron las pruebas en un Destructor, ver Fig. Nº 20; en particular, a la derecha se
aprecia el Osciloscopio de Fósforo Digital (DPO: Digital Phosphor Oscilloscopes) de la UTN.
Luego de comprobar que el funcionamiento era óptimo por períodos de tiempo de
aproximadamente 4 a 6 horas, se decidió continuar con los ensayos en otras unidades,
particularmente en aquellas que tenían navegaciones planificadas para poder realizar pruebas por
períodos mayores.
Se realizaron pruebas a bordo de dos Destructores y tres Corbetas. Se registró un correcto
funcionamiento, con la salvedad que en computadoras donde el prototipo compartía el bus con más
de 5 placas (lo que ocurre en una computadora en particular de todo el sistema), la computadora de
comando y control acusaba pérdidas de datos de manera aleatoria (cabe señalar que ésta pérdida se
registró en dos de los 5 buques).
Además, cuando se usaba el prototipo colocado en la EXTENDED CARD, en ocasiones se
detectó una pérdida de comunicación entre las computadoras. Se realizaron alrededor de 1000
capturas con el analizador lógico, de las cuales, cerca de 400 fueron analizadas en busca de errores
o fallas. A estas se le agregaron las capturas realizadas con el DPO de la UTN, en reemplazo del
TEKTRONIX MSO 2024 (MSO: Mixed Signal Oscilloscope) (pedido oportunamente pero con
reiteradas demoras en su recepción).
Las capturas de ambos dispositivos se complementan, ya que uno muestra exclusivamente
niveles lógicos (1 y 0) pero el DPO y el MSO muestran la forma de onda completa como un
osciloscopio común; pudiéndose ver, por ejemplo cuando está en “0”, qué tan marcado está el nivel
lógico o si la forma de onda tiene los flancos correctos.
Fue así que durante las mediciones del puerto serie se detectó que había ciertas diferencias
entre la forma de onda de las placas originales y de los prototipos, ver Fig. Nº 21. Problema que fue
resuelto modificando las impedancias de terminación de línea, con ello se obtuvo la misma forma
de onda tanto para el prototipo como para la ICI original.
Figura Nº 21: Capturas del DPO de la UTN donde puede apreciarse “abajo” que
los flancos de la ICI original son mucho más marcados que los del
prototipo “arriba”. Esto requirió nuevas modificaciones en el
prototipo.
Tercer prototipo
El tercero y último prototipo que se armó, AR-ICI (V6), es la segunda versión de forma y
tamaño de la ICI original. En base a los resultados de las pruebas con la AR-ICI (V5), en su paso
por los Destructores y Corbetas, se decidió diseñar este nuevo prototipo basado en la FPGA de
XILINX (Spartan-3AN – XC3S50AN), dado que ya se había comprobado el correcto
funcionamiento de la misma, se conocía su funcionamiento, es menos costosa y no tiene
restricciones en cuanto a su provisión por parte del fabricante.
Para implementar el AR-ICI (V6), que se muestra en la Fig. Nº 22, se cambiaron los
integrados del bus paralelo de salida por otros con mayor capacidad de corriente. También se
cambiaron los de los puertos serie, tanto entrante como saliente, por otros de la misma familia pero
que son de bajo voltaje (LVTTL: 3.3V) y toleran niveles lógicos de tensión de TTL (5V). Además
se cambió la disposición de las fuentes DC-DC para poder soldar sobre las mismas un encapsulado
metálico que aísle la radiación electromagnética de las mismas.
Figura Nº 22: AR-ICI (V6), última versión probada del prototipo. Incluye el
footprint para colocar un blindaje para las fuentes DC-DC
(Derecha-abajo) y para colocar un módulo Bluetooth (Derecha-
arriba).
Conclusiones
Durante el proceso de diseño de los prototipos fue necesario migrar de la FPGA de Actel a
otra de Xilinx. Pero no fue necesario modificar el VHDL del diseño pues se trabajó con VHDL
estándar, sin adoptar primitivas específicas de ningún fabricante. Sin embargo, los distintos tipos de
adaptación de niveles lógicos que se utilizaron obligaron a efectuar modificaciones en el código
VHDL que define la configuración de los puertos de salida.
Una cuestión que no se había considerado inicialmente es la configuración del slew rate para
señales de frecuencia menor a 50 MHz. No obstante, luego de analizarlo se determinó que lo más
conveniente es usar “SLOW” en lugar de “FAST”. Tanto las altas como las bajas frecuencias tienen
requerimientos particulares que deben contemplarse, si se quiere lograr un diseño funcional, robusto
y confiable.
El número de pines en conmutación simultánea en la misma dirección, también es un factor a
considerar cuando se tienen buses grandes (24 líneas en el prototipo en cuestión). No sólo interesa
la capacidad de manejo de corriente del dispositivo, sino que también deben tenerse en cuenta estas
limitaciones.
Los mensajes de advertencia de la herramienta de síntesis (ISE) resultaron muy útiles para
detectar problemas en tiempo de diseño, antes de realizar la implementación. Esto es importante,
dado que un error en la PCB, dependiendo de su magnitud, puede tener un gran costo en tiempo y
dinero.
Asimismo, cuando se diseña para aplicaciones industriales, que operan a temperaturas
promedio superiores a los 60 °C, es importante tener en cuenta la capacidad de disipación que
pueden brindar diferentes tamaños de pad.
El hecho de contar con las simulaciones permitió aprovechar los tiempos ociosos que siempre
aparecen cuando se diseña hardware: la compra de materiales (dos a tres semanas) y la fabricación
de las PCBs (ídem). Además, reproducir los errores capturados en las simulaciones es un camino
óptimo para la resolución de problemas en la lógica.
La realización de diagramas de señales y de estados (en el caso de las máquinas de estado)
permitió encontrar los errores con relativa facilidad. El prototipo en cuestión tenía varias partes que
realizaban acciones simultáneas y los planos permitieron ver fotografías de los estados de las partes
constitutivas en los distintos momentos.
El dispositivo de traslación de niveles que se elija dependerá principalmente del tipo de bus al
que se va a conectar, pero también de otras cuestiones, como niveles de tensión a adaptar, corriente
y velocidad a manejar, si debe ser unidireccional o bidireccional y el rango de temperatura de los
dispositivos de la familia. Además, el tipo de dispositivo tendrá directa inferencia en la
configuración de los puertos de la FPGA.
Referencias bibliográficas
- CIRCUITO IMPRESO. Disponible http://es.wikipedia.org/wiki/Circuito_impreso
- ELECTROSOFT INGENIERÍA. Disponible en http://www.pcb.electrosoft.cl/04-articulos-
circuitos-impresos-desarrollo-sistemas/01-conceptos-circuitos-impresos/conceptos-circuitos-
impresos-pcb.html
- EMTECH. Disponible en http://www.emtech.com.ar/
- EMTECH. Disponible en:
http://www.emtech.com.ar/index.php?option=com_content&view=article&id=15&Itemid=11&lang=es
- MRK INDUSTRIES. Disponible en http://www.mrkindustries.com.ar/
- NXP SEMICONDUCTORS: 74LVC07A. Hex buffer with open-drain outputs, 2011.
- OPEN CIRCUITS. Disponible en http://www.opencircuits.com/Printed_Circuit_Boards.
- PHILIPS SEMICONDUCTORS, 2003: GTL2000. 22-bit bi-directional low voltage translator.
- POLLÁN SANTAMARÍA, 2012 http://diec.cps.unizar.es/~tpollan/libro/Apuntes/digT3.pdf
- PONG P. CHU. RTL hardware design using VHDL, pp. 617, 2006.
- TEXAS INSTRUMENTS. SCED0006-Logic Selection Guide, pp. 30, 2000.
- TEXAS INSTRUMENTS. Signal Switch including digital-analog-bilateral switches and voltage
clamps (scdd003a.pdf), pp. 1164, January, 2004.
- TEXAS INSTRUMENTS. Application Report SCEA035A, Selecting the Right Level-Translation
Solution, June, 2004.
- TEXAS INSTRUMENTS. SN74ALVC164245, 16-BIT 2.5-V TO 3.3-V/3.3-V TO 5-V Level-
shifting transceiver with 3-state outputs, 2005.
- XILINX. Disponible en http://www.xilinx.com/tools/isim.htm
- XILINX. XAPP480 (v1.0). Using Suspend Mode in Spartan-3 Generation FPGAs. Application
Note: Spartan-3A, Spartan-3AN, Spartan-3A DS. May 2, 2007.
- XILINX. UG332 (v1.6). Spartan-3 Generation Configuration User Guide, pp. 199 y 217, October
26, 2009.
- XILINX. UG633 (v 12.1). Floorplanning Methodology Guide. May 3, 2010.
- XILINX. DS557 (v4.1). Spartan-3 – Spartan-3AN FPGA Family Data Sheet - Product
Specification, pp. 17 y 43, April 1, 2011.
- XILINX. DS557 (v4.1). Spartan-3 – Spartan-3AN FPGA Family Data Sheet - Product
Specification. “Simultaneously Switching Output Guidelines”, pp. 43, April 1, 2011.
- XILINX. UG331 (v1.8). Spartan-3 Generation FPGA User Guide. Chapter 2 “Using Global
Clock Resources”, pp 45, June 13, 2011.
- XILINX. UG660 (v14.1) – ISim User Guide, April 24, 2012.
***
Christian L. Galasso. Ingeniero Electrónico, egresado de la Universidad Tecnológica Nacional
(UTN), Facultad Regional de Bahía Blanca (FRBB). Reconocimiento a la actividad de Extensión e
Investigación sobresalientes año 2009 por Resolución del Consejo Directivo de la F.R.B.B de la
U.T.N N° 324/10. Reconocimiento por haber sido galardonado en la categoría “Desarrollo
Científico o tecnológico” con el premio TOYP 2011 (The Oustanding Young Persons). JCI Bahía
Blanca. Beca de investigación para alumnos. Grupo de Bio-Ingeniería. Departamento de Ingeniería
Electrónica, UTN FRBB, abril de 2007 a abril de 2009. Beca de investigación y pos-grado: Grupo
SITIC – Proyecto PIDDEF, junio de 2010 a junio 2012.
Guillermo R. Friedrich. Profesor Asociado en la Universidad Tecnológica Nacional, Facultad
Regional Bahía Blanca (UTN-FRBB). Obtuvo sus títulos de Magíster en Ciencias de la
Computación en 2001 y de Ingeniero Electricista en 1986, en la Universidad Nacional del Sur
(UNS). Director del Departamento de Ingeniería Electrónica de la UTN-FRBB desde 12/2009.
Integrante del Grupo de I+D en Sistemas y Tecnologías de la Información y las Comunicaciones de
la UTN-FRBB. Anteriormente integró el LiSiDi (Laboratorio de Sistemas Distribuidos) de la UNS.
Sus áreas de interés son redes para aplicaciones industriales y de tiempo real, redes de sensores y
arquitecturas para procesamiento digital de señales.
Sergio O. Burgos. Especialista en Gestión de la Tecnología e Innovación (UNS). Ingeniero
Electrónico ITBA – 1986. Posgrado en Dirección de Organizaciones (INUN-ESOA). Ha dictado
diferentes cursos en la Armada Argentina, en las áreas de Comunicaciones, Guerra Electrónica,
Comunicaciones Satelitales, etc. Profesor Adjunto de “Sistemas y Servicios de
Telecomunicaciones” en la UNS, cargo por concurso.
Gustavo J. Díaz. Ingeniero Electrónico UTN FRBB. Reconocimiento a los mejores promedios
otorgado por el Concejo Deliberante de Bahía Blanca, año 2011; Integrante del Grupo SITIC –
Proyecto PIDDEF. Beca de investigación y posgrado: Proyecto FS TICS 01 “TEAC 2010:
Plataforma para la producción de tecnología electrónica de alta complejidad”, Agencia Nacional de
Promoción Científica y Tecnológica (ANPCyT). Desde julio de 2013 hasta julio 2015. Profesor
Adjunto de la cátedra “Electrónica Naval”, Jefe de Trabajos Prácticos de las asignaturas del área III
e Investigador del grupo de investigación Soluciones Embebidas Aplicadas a la Defensa -SEAD-,
de la Escuela de Oficiales de la Armada - Instituto Universitario Naval.
Alejandro A. Antonini. Ingeniero Electrónico UNS. Reconocimiento de INNOVAR 2013 al
proyecto “Seguimiento de Bombero”. Investigador en la ESOA – ARA en “Soluciones embebidas
aplicadas a la defensa” desde 2012. Socio Gerente de SOLINTEC Ingeniería desde 2011.
Investigación y desarrollo en el Dpto. de Ingeniería del SIAG - ARA desde 2006. Reconocimiento
al desempeño por desarrollo, diseño y puesta en servicio de “Secuenciador de señales MAE”
Polígono de Guerra Electrónica – ARA 2012 “Muestreo de los Traces de radar en PC” Logístico
Hércules – ARA 2009.