JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola (Recibido: 13 de diciembre de 2010; aprobado: 26 de septiembre de 2011) Resumen El JTAG (Boundary Scan Architecture IEEE 1149.1), es una arquitectura eficiente que facilita la depuración de errores, así como las pruebas de funcionamiento para dispositivos digitales. Actualmente, esta arquitectura es utilizada por algunos fabricantes en la programación y la emulación de diseños basados en microcontroladores, FPGAs y microprocesadores. En el presente artículo se hace una revisión de los principales aspectos técnicos de este estándar y se utiliza en la elaboración de una aplicación que permite la programación de una FPGA Spartan II. Palabras clave – JTAG, IEEE 1149.1, arquitectura, borde. Adriana Carolina Sanabria: [email protected], Facultad de Ingeniería Electrónica, División de Ingenierías, Universidad Santo Tomás, Carrera 9 No. 51 - 11 (C.P. 110311), Bogotá, Colombia. César Pedraza Bonilla: Doctor en Ingeniería Informática, [email protected], Facultad de Ingeniería de Telecomunicaciones, División de Ingenierías, Universidad Santo Tomás, Carrera 9 No. 51-11 (C.P. 110311), Bogotá, Colombia. Jaime Vitola Oyaga: Máster en Ingeniería Electrónica, [email protected], Facultad de Ingeniería Electrónica, División de Ingenierías, Universidad Santo Tomás, Bogotá, Colombia. Alexander Aponte: Máster en Ingeniería, [email protected], Facultad de Ingeniería Electrónica, División de Ingenierías, Universidad Santo Tomás, Carrera 9 No. 51-11 (C.P. 110311), Bogotá, Colombia. Artículo de investigación derivado de proyecto de investigación realizado por los grupos GPDUS e INVTEL de las facultades de Ingeniería Electrónica e Ingeniería de Telecomunicaciones de la Universidad Santo Tomás. Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 39 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola JTAG: Concepts and Design of a Tool for FPGAs Abstract The JTAG (Boundary Scan Architecture IEEE 1149.1), is an efficient architecture that facilitates debugging and performance testing for digital devices. Nowadays this architecture is used by many manufacturers in the programming and emulation of microcontrollers, FPGAs and microprocessors based systems. This article reviews the main technical aspects of this standard and shows an application designed to allow programming a Spostan II FPGA. Keywords – JTAG, IEEE 1149.1 boundary, scan, architecture. JTAG: conceitos e desenho de uma ferramenta para FPGAs Resumo O JTAG Boundary Scan architecture IEEE 1149.1 () é uma arquitetura eficiente que facilita a depuração de error , assim como o testes de desempenho para os dispositivos digitais. Atualmente esta arquitetura é usada por alguns fabricantes na programação e emulação de desenhos baseados em microcontroladores, FPGAs e microprocessadores. Neste artigo vamos rever os principais aspectos técnicos desta norma e é usado na preparação de um aplicativo que permite a programação de um FPGA Spartan II. Palavras - chave – JTAG, IEEE 1149.1, arquitetura, borda. 40 Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola I. Introducción Las pruebas son un elemento relevante en el desarrollo de productos y servicios. Con el avance tecnológico han aparecido nuevos retos para cumplir con las expectativas de los usuarios, es así como se ha hecho necesaria la implementación de pruebas cada vez más robustas tanto a nivel de dispositivos como a nivel de sistemas complejos. El DFT (Design for Testability), un esfuerzo que se dirige a desarrollar dispositivos con facilidades para la realización de dichas pruebas, las cuales necesariamente se han complejizado por los avances tecnológicos, ha orientando estos trabajos a la implementación de estándares que faciliten la realización de pruebas a nivel de dispositivos [1]. El JTAG es una arquitectura que se ha empleado para la realización de pruebas de dispositivos digitales. En este artículo se describe su uso para la programación de una FPGA, evidenciando las líneas y señales presentes, como también el procedimiento y los resultados de las pruebas experimentales realizadas. II. Antecedentes y problema Desde el inicio de la electrónica, los fabricantes de dispositivos se han enfrentado al problema de cómo probar sus sistemas y/o dispositivos. Es así como los diseñadores han ofrecido diferentes tipos de soluciones a este inconveniente, entre las que se encuentran los puntos de pruebas, las camas de agujas (bed of nails) para el diagnóstico de los circuitos impresos y los procedimientos de evaluación de sistemas de baja y mediana complejidad, siendo estas pruebas relativamente sencillas para los sistemas que poseían niveles de integración bajo SSI (Small-Scale Integration) compuestos por unos cuantos transistores en los años sesenta. Luego en las postrimerías de esta década se pasó al MSI (MediumScale Integration), donde cientos o miles de transistores eran encapsulados en un dispositivo. En los años setenta se llegó a los LSI (Large-Scale Integration), pero cuando se alcanzó en la década del ochenta los VLSI (Very LargeScale Integration), el número de transistores se incrementó exponencialmente pasando de miles a millones, con lo cual la complejidad de los sistemas y con ello la dificultad para la elaboración de pruebas aumentó en gran medida. Adicio- nalmente, los dispositivos contaban con nuevas formas de presentación como son los dispositivos de superficie (SMT - Surface Mount Technology) [2], que tenían un nivel de interconexión superior trayendo consigo circuitos impresos más complejos, con más de dos caras, haciendo inviables las camas de pruebas, y los procedimientos sumamente dispendiosos. En 1985 se reunió el JETAG (Joint European Test Action Group), que como su nombre lo indica fue establecido en Europa, pero luego se integró un solo grupo con Norteamérica para constituir el JTAG (Joint Test Action Group) [3] en 1986. Desde esta época y hasta 1988 se desarrolló una serie de propuestas y publicaciones, que perfilarían un bus con capacidad para hacer pruebas, que desembocó en el estándar de 1990 denominado IEEE Std 1149.1-1990 (IEEE Standard Test Access Port and Boundary-Scan Architecture) [4]. Las medidas recomendadas por este grupo son atendidas por compañías como Phillips, IBM, NEC, DEC, British Telecom, Gen Rad, Texas Instruments, National Semiconductor, AT&T y muchas otras [5]. Otro esfuerzo paralelo que evidencia la relevancia de esta tarea fue el VHSIC ETM-BUS [1], aunque menos conocido dado el interés despertado por el JTAG. Existe también un esfuerzo orientado a la prueba de sistemas analógicos, es así como en 1999 se definió el estándar IEEE 1149.4 para cubrir esta serie de elementos [6]. Son tres las condiciones que deben ser tenidas en cuenta cuando se realizan pruebas de un equipo: en primera instancia, que los dispositivos implicados realicen adecuadamente la tarea para la cual fueron diseñados; posteriormente, que los dispositivos estén interconectados de la manera apropiada; y por último, que el producto final desarrolle la tarea para la cual fue diseñado. Las tareas mencionadas influyen para que los dispositivos sean diseñados con la filosofía DFT (Design for Testability), en tanto procesadores de Motorola [7], FPGAs [8], sistemas como fuentes de alimentación [9], sistemas más complejos como los controladores embebidos [10] y procesadores digitales de señales [11], pueden ser también monitoreados utilizando las bondades de esta arquitectura. Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 41 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola Este puerto ha tenido tanta acogida que su horizonte de aplicación se ha visto expandido no sólo a la realización de pruebas, sino también a la programación y emulación de dispositivos facilitando la depuración [12][13][14][15] [16] de códigos y síntesis de los mismos. En el mismo sentido, y dado su grado de penetración y el incremento de la complejidad de los sistemas, se están haciendo esfuerzos para aumentar su robustez y velocidad [17]. Figura 1. Diagrama de interconexión del TAP y el anillo registro de frontera Es también interesante destacar que las pruebas se pueden realizar en circuito y en sitio, facilitando la verificación del correcto comportamiento de los sistemas para aplicaciones críticas, como lo demuestra el uso del puerto en un TDC (Time to Digital Converter), para un aplicativo experimental en el CERN [18]. Hoy en día se está explorando la posibilidad de realizar pruebas remotas sin las restricciones que supone la conexión física, es el caso del uso de un puerto JTAG en conjunción con un sistema de comunicaciones inalámbricas que permite monitoreo no invasivo remoto de dispositivos [19][20]. El desarrollo de un puerto con este estándar ha tenido tanta penetración, que se está considerando la idea de proteger información crítica a la cual se pueda tener acceso por éste. Es así como el JTAG protegido podrá ser en el futuro un mecanismo para tal fin [21]. III. JTAG Como se mencionó anteriormente, el JTAG es la respuesta a una necesidad que exigen las pruebas en un producto a diferentes niveles [22]. Es así como mediante un registro de desplazamiento y una máquina de control, implementados al interior de los dispositivos, se obtiene acceso a cada uno de sus pines permitiendo leer o alterar su valor. Esto, más una máquina de estados que permite el acceso a este anillo y algunas características adicionales, es lo que se conoce como JTAG. En la Figura 1 se observa la ubicación del anillo JTAG en la periferia de un dispositivo, logrando de esta manera reemplazar la funcionalidad de la cama de pruebas que permitía el acceso sobre cada pin, pero con la ventaja adicional de facilitar la ejecución de pruebas más sofisticadas a un menor costo. 42 Fuente: adaptación de autores L. Wang, M. Marchoefer Edward, J. McCluskey[23]. El acceso a la infraestructura de pruebas del dispositivo se realiza por medio del controlador TAP (Test Access Port) [24], que aunado a unos registros permite el control sobre todo el sistema. Este controlador consiste en una máquina de estados, que mediante una señal de control y otra de reloj permite alcanzar los diferentes valores de estados posibles, para activar las distintas funcionalidades del bus que hay en la actualidad. Adicionalmente, permite la emulación y programación de dispositivos como lo demuestra el presente trabajo. En la Tabla 1 se consignan las líneas definidas por el estándar IEEE 1149.1, el cual declara cuatro líneas obligatorias y una opcional. Tabla 1. Líneas del JTAG Línea TDI TDO TMS Descripción Test Data In, entrada serial de los datos Test Data Out, salida serial de los datos Test Mode Select, entrada que modifica los diferentes estados del controlador del TAP Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola TCK nTRST Test Clock, para temporizar el controlador del TAP Test Reset Input, reset asíncrono del TAP (opcional) Figura 3. Arquitectura del registro de datos Fuente: Autores. El núcleo fundamental del JTAG es la celda lógica que es conectada entre el pin del dispositivo y la lógica de control del mismo. Esta arquitectura es la encargada de ofrecer observabilidad y controlabilidad sobre cada uno de los pines del elemento, dependiendo de las necesidades particulares se pueden implementar celdas más o menos complejas. En la Figura 2 se muestra la arquitectura de una celda típica. Figura 2. Diagrama de una celda de un registro de frontera Fuente: Adaptación deautores IEEE Standards Board[4]. El estándar exige la presencia de dos tipos de registros: uno es el boundary-scan register y el otro es el bypass register. El primero es el anillo de celdas conectado a cada uno de los pines del dispositivo y el segundo es un registro de un bit, que permite omitir dispositivos sobre los cuales no se quiera realizar ninguna operación. Aparte de estos dos registros de naturaleza obligatoria, existen otros que pueden ser opcionales, como es el caso del registro de identificación que como su nombre lo indica, contiene un número referencial del dispositivo, pero por necesidad del fabricante se pueden incluir otros registros que ofrezcan características adicionales de control y observación sobre el dispositivo. En la Figura 3 se observa la conexión de estos registros. Fuente: Adaptación de autores Texas Instruments. IEEE std 1149.1 (JTAG) Testability primer [25]. Otro registro importante es el de instrucciones, que almacena las operaciones que serán ejecutadas. El estándar determina tres instrucciones básicas que son: BYPASS que permite que el dispositivo esté en operación normal y esté fuera del anillo de pruebas, EXTEST que permite el acceso desde el exterior al anillo de pruebas y SAMPLE/PRELOAD [26], que permite al dispositivo estar en funcionamiento normal pero que se pueda acceder al estado de los pines. Existen otras instrucciones que permiten, por ejemplo, el acceso al registro de identificación del dispositivo (IDCODE) o colocar las salidas en estado de alta impedancia (HIGHZ). La Figura 4 muestra las señales de control que ofrece el controlador TAP y su interconexión con los registros de datos y de instrucciones. Figura 4. Diagrama de interconexión del TAP Fuente: Adaptación de autores Texas Instruments. IEEE std 1149.1 (JTAG) Testability primer [25]. Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 43 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola Es el controlador TAP el encargado de permitir el acceso a todas las funcionalidades del puerto JTAG, es así como esta máquina de estados posee la característica de poder alcanzar y modificar los valores de los registros de datos y de instrucciones. En la Figura 5 se muestra cómo son las secuencias para acceder a cada uno de los registros, siendo la señal TMS la que determina el estado futuro del controlador TAP [27]. Figura 6. Circuito de conexión Figura 5. Diagrama de estados del controlador TAP Fuente: Xilinx [28]. IV. Implementación del programador JTAG A. Diagrama de interconexión del bus JTAG En primera instancia se debe resolver lo pertinente a la parte física del puerto JTAG. La Figura 6 presenta el circuito necesario para poder acceder a un bus JTAG desde un puerto paralelo. Este diagrama es el recomendado por el fabricante Xilinx para la programación de sus dispositivos [29], haciendo la aclaración de que dado que el objetivo era programar por dicho puerto sólo se conectaron los datos pertenecientes a este, a saber: TCK, TDO, TDI y TMS. 44 Fuente: Xilinx [29]. B. Archivo de programación .bit En la Figura 7 se muestra el encabezado de un archivo con extensión .bit, que es el archivo de configuración dela FPGA. De allí se puede extraer la información que a continuación se relaciona: A partir de la dirección 10H se encuentra el nombre del proyecto, que para este caso es led1.ncd; el tipo de empaquetado de la FPGA, 2s200epq208,está a partir de la dirección 1CH; la fecha a partir de la dirección 2BH, para este archivo 2005/05/14 y la hora a partir de la dirección 39H, en este caso 17:38:31. Los datos de configuración se encuentran desde la dirección 47H comenzando con 8 bytes de sincronismo que son FFH FFHFFHFFH AAH 99H 55H 66H, luego de estos está la descripción para la FPGA. Los cuatro bytes anteriores a los bytes de sincronismo indican el tamaño en bytes de los datos de configuración, en Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola nomenclatura big-endian (comienzo por el mayor) que en este caso 0002C01CH siendo la dirección final del archivo 2C01CH-1H +47h = 2C062H. Figura 7. Encabezado del archivo .bit figuración empezando por el msb hasta el lsb de cada byte teniendo cuidado de colocar el TMS en 1 durante el último bit que será el lsb del byte en la posición 0C2C062H, para finalizar en el estado SELECT-DR-SCAN. Figura 9. Diagrama de flujo del algoritmo de programación Fuente: Autores. Por tanto, el archivo debe ir hasta el dato 2C062H. En la Figura 8 se muestra el final del archivo demostrando hasta dónde se encuentran consignados los bytes de programación. Figura 8. Datos finales del archivo .bit Fuente: Autores. Concluyendo que para este archivo los datos de programación de la FPGA se encuentran desde la dirección 47H hasta la dirección 2C062H. C. Algoritmo de programación de la Spartan II En la Figura 9 se muestra el algoritmo de programación dela FPGA, siguiendo el diagrama de estados del puerto JTAG de la Figura 5. Éste se resume en los siguientes pasos: primero, encontrar los datos de configuración en el archivo .bit, que es a partir de los 8 bytes de sincronismo; luego, llevar el TAP al estado TEST-LOGIC-RESET, esta tarea se logra colocando el TMS en 1 y haciendo 6 pulsos de reloj por la señal TCK, una vez allí se lleva la máquina al estado SHIFT-IR, donde se envía el comando 00101 que es el CFG_IN, enviando primero el lsb (least significant bit) hasta el msb (most significant bit), durante el último bit es necesario colocar el TMS en 1 para que pase al estado EXIT1-IR. De allí se pasa al UPDATE-IR y finalmente al SELECT-DR-SCAN, en este estado se pone el TMS en 0, se pasa al SHIFT-DR y se envía bit a bit el archivo de con- Fuente: Autores. V. Resultados. A. Experimento Para el experimento se implementó el montaje mostrado en la Figura 6, el cual se conectó al puerto paralelo del PC, y se ejecutó el programa cuyo algoritmo se muestra en la Figura Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 45 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola 9. Este programa fue desarrollado en lenguaje C y como herramienta de compilación se utilizó el compilador GCC (GNU Compiller Collection) sobre sistema operativo Linux. Con el fin de verificar el correcto funcionamiento del programa se realizaron pruebas utilizando la tarjeta Digilab 2E del fabricante Digilent que cuenta con una FPGA Spartan 2E. La primera prueba consistió en la lectura del identificador del dispositivo que corresponde al número propietario del fabricante, esto se logró mediante el comando básico del JTAG, IDCODE (01001). Una vez se obtuvo el número de identificación se garantizó que la navegación por la máquina de estados del JTAG se estaba haciendo correctamente. A continuación se realizó una descripción en VHDL de un contador sincrónico de 26 bits con una entrada de reinicio asincrónica conectando el bit 25 de este contador a la salida de la FPGA, el cual a su vez en esta tarjeta estaba unido a un indicador led, descripción cuyo modelo gráfico se puede observar en la Figura 10. Finalmente, se descargó el programa utilizando la herramienta ofrecida por Digilent para estos propósitos denominada iMPACT, verificando el correcto funcionamiento de la descripción; es decir, que el led se encendiera de manera intermitente con un periodo de 2.68s. Una vez comprobado el funcionamiento se procedió a programar el dispositivo utilizando el hardware y el software descrito en el presente artículo verificando su igual comportamiento. Figura 10. Circuito de prueba descrito mecanismo JTAG, básicamente lleva la máquina a un estado inicial de Test-logic-reset y con una apropiada secuencia de señales en las entradas TMS y CLOCK la conduce hasta el estado SHIFT-IR y una vez allí descarga todo el archivo de configuración de la FPGA. El programa se probó con tres descripciones de hardware utilizando el procedimiento descrito en el apartado anterior y se verificó su correcto funcionamiento. Estas pruebas se realizaron utilizando el hardware y software para este trabajo concebido y se contrastó con los resultados ofrecidos utilizando las herramientas de programación del fabricante Xilinx, evidenciando el correcto e igual funcionamiento por los dos mecanismos. VI. Conclusiones y recomendaciones Se pueden desarrollar herramientas de muy bajo costo, como la mostrada en este trabajo, que posee la ventaja adicional que estriba en el conocimiento ofrecido del estándar JTAG. En estos momentos el estándar JTAG es un mecanismo que no sólo permite realizar pruebas de funcionamiento, sino también programación de dispositivos e inclusive emulación en circuito. El estándar JTAG es muy flexible, se están desarrollando sistemas para hacer pruebas remotas y en operación, de tal suerte que se pueda obtener información en sitio sobre el comportamiento de algún sistema, lo cual facilita la toma de decisiones y labores de supervisión y mantenimiento. Son muchas las empresas fabricantes de dispositivos que ofrecen soporte sobre JTAG, facilitando las pruebas de los desarrollos finales. Fuente: Autores. B. Funcionamiento del algoritmo El algoritmo implementado está concebido para manipular el controlador TAP que administra toda la funcionalidad del 46 Como ingenieros, es importante el correcto diseño de los sistemas, pero de igual manera es indispensable ofrecer plataformas que faciliten la realización de pruebas de funcionamiento y que verifiquen el estado del circuito impreso así como de las soldaduras, daños en los componentes y demás circunstancias que puedan afectar el objetivo trazado. A manera de continuación del trabajo se ha considerado realizar un programa de pruebas de hardware, para verificación de estado de señales y evaluación de conexiones. Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola VII. Referencias [1] D. J. Richards, Value of Testability Standards in Testing Commercial Products,1988, pp. 201-202. [13] I. Chum, and C.Lim. ES- Debugger: the Flexible Embedded System Debugger based on JTAG Technology. 2004, pp. 900-903. [2] P. Fleming. Semiconductor Perspective on Test Standards,1990, pp. 197-198. [14] Y. Jeang, L. Chen, Y. Chou and H. Su. An Embedded In-Circuit Emulator Generator for Soc Plataform, 2003, pp. 315-318. [3] R.P. Van Riessen, H.G. Kerkhoff, and A. Kloppenburg. Designing and Implementing an Architecture with Boundary Scan, 1990, pp. 9-19. [15] E. Tarra and B. Terry, Programming Flash Memory with Boundary Scan Using General Purpose Digital Instrumentation, 2010, pp. 1-5. [4] IEEE Standards Board. IEEE Standard Test Access Port and Boundary-Scan, pp. 1-44, 1990. [16] I. Igor, and G. Rostislav, Internal Structure of Software Application for Controlling Devices Via JTAG 1149 Interface, 2010, pp. 119-126,. [5] R. Dettmer, JTAG Setting the Standard for BoundaryScan Testing, 1989, pp. 49-52. [6] B. Van Ngo, P. Law, and A. Sparks, Use of JTAG Boundary-Scan for Testing Electronic Circuit Boards and Systems, 2008, pp. 17 -22. [7] T. Sponhrer, D. Marquette, and M. Gallup. Test Architecture of the Motorola 68040, 1990, pp. 191-194. [8] H. Ehrenberg. PXI Express based JTAG / Boundary Scan Ate for Structural Board and System Test. , 2006, pp. 467-473. [9] M. Kärkkäinen, K. Tiensyrjä and M. Wissenfelt. Boundary Scan Testing Combined with Power Supply Current Monitoring, 1994, pp. 232-235. [10] J. Saalmueller, and J. Wuertz. Embedded Controllers for Solving Complex Industry Applications, 2006, pp. 149- 152. [11] F. Pichon. Implementing BIST and Boundary Scan in a Digital Ignal Processor Asic for Radiocommunication Applications, 1993, pp. 361-369. [12] E. de la Torre, M. Garcia, T Riesgo, Y. Torroja and J. Uceda, Non-Intrusive Debugging using the JTAG Interface of FPG-based Prototypes, pp. 666-671. [17] S. Ostendorff, H. Wuttke, J. Sachße, and J. Meza, Test Pattern Dependent FPGA Based System Architecture for JTAG Test, Fifth International Conference on Systems 2010. [18] C. Ljuslin, J. Christiansen, A. Marchioro and O. Klingsheim, CERN. An Integrated 16 Channel CMOS Time to Digital Converter, 1994, pp. 1104-1108. [19] H. Eberle, A. Wander and N. Gura. Testing Systems Wirelessly, 2004, pp. 1-6. [20] A. Sparks, M. van Houcke, and I. Reis. A BoundaryScan Solution for Remote System Monitoring, Testing and Configuration Via Inherent Secure Wired or Wireless Communication Protocols, 2006, pp. 704 - 712. [21] R. F. Buskey, B. Oabara and B. Frosik. Protected JTAG, 2006. [22] E. M. Miller. Nondestructive Inspection Via Boundary Scan, 1989, pp. 1964-1969. [23] L. Wang, M. Marchoefer Edward, and J. McCluskey. A Self-Test and Self-Diagnosis Architecture for Boards Using Boundary Scans, 1989. [24] L. Whetsel. A Proposed Standard Test Bus and Boundary Scan Architecture, 1998, pp. 330-333. Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48 47 JTAG: conceptos y diseño de una herramienta para FPGAs A. C. Sanabria, C. Pedraza, A. Aponte, J. Vitola [25] Texas Instruments. IEEE std 1149.1 (JTAG) Testability primer, 1997. [26] T. John. Toshiba IEEE 1149.1 (JTAG) Development Summary, 2002, pp. 1-4. [28] Xilinx. Configuration and Readback of Spartan II and Spartan IIE. FPGAs Using Boundary ScanXapp188. 2005. [29] Xilinx. JTAG Programmer Guide, pp. 1-142. [27] H. Zhang, and Z. Yu, An FPGA Configuration Circuit Based on JTAG. 2009, pp. 2588-2590. 48 Intekhnia | Vol. 6 | No. 2 | Julio - diciembre de 2011 | ISSN: 1900-7612 | pp. 39 - 48