6. Descripción de las herramientas utilizadas para llevar a cabo
6.1 Introducción al proceso de reconfiguración remota
6.1.1 Protocolo JTAG (Estándar IEEE 1149.1/1532)
6.1.1.2 Arquitectura JTAG (IEEE 1149.1/1532)
El estándar IEEE 1149.1 está compuesto por el Puerto de Acceso de Prueba (TAP), el controlador del TAP y una arquitectura Boundary-Scan, los cuales se muestran en la figura 6.1.
Figura 6.1. Arquitectura JTAG.
El diagrama de la figura anterior muestra el módulo JTAG embebido en un dispositivo programable, cada uno de los bloques, que lo integran, se explican a continuación.
Puerto de acceso de prueba (TAP)
El TAP es un puerto de propósito general, el cual permite el acceso a las funciones integradas en el dispositivo. Se compone de 4 señales: 3 señales de entrada (TMS, TDI y TCK) y una de salida TDO, con una cuarta señal de entrada opcional denominada TRST. Estas señales se describen a continuación.
TDI: Es la señal de entrada para todos los registros de instrucción y datos de JTAG.
TMS: Esta señal determina la secuencia de los estados en el TAP cuando se presenta un flanco de subida en la señal TCK.
TCK: Provee la señal de reloj para el TAP y los registros JTAG.
TDO: Es la señal de salida establecida por los registros de instrucción y datos. Todas las funciones JTAG se llevan a cabo cuando se presenta un flanco de subida de esta señal. TRST: Esta señal inicializa la comunicación de forma asíncrona, esto quiere decir que cuando el TAP no se restablece correctamente esta señal envía el TAP a su estado inicial.
Controlador del TAP
El controlador del TAP es una máquina de estados (FSM), que se muestra en la figura 6.2, la cual utiliza las señales TCK y TMS para realizar el cambio de estado, mientras que usa TDI para escribir y a TDO para leer datos.
Figura 6.2. Diagrama de estados del TAP.
Las dos columnas verticales que se observan en la figura 6.2, al interior del bloque, representan, la ruta de instrucciones del lado derecho y la ruta de datos del lado izquierdo. La FSM está integrada por 16 estados diferentes los cuales son:
Test Logic Reset
En este estado se deshabilita toda la lógica JTAG y el TAP regresa al estado inicial, sin importar cual sea el estado actual del controlador.
Run test/IDLE
En este estado se activa la lógica JTAG solo si se presentan ciertas instrucciones. El controlador permanecerá en este estado mientras TMS se mantiene bajo. La instrucción no cambia mientras el TAP se encuentre en este estado.
Select IR Scan/Select DR Scan
El controlador entra a la línea de instrucciones o a la línea de datos. Este es un estado temporal en el que el registro de datos seleccionados por la instrucción actual conserva su estado anterior. La instrucción no cambia mientras el TAP se encuentre en este estado.
Ruta de datos
Capture DR
En este estado el dato del banco de registro de datos cambia, mientras que en paralelo se cargan los siguientes valores en el registro, en un flanco de subida de TCK.
Shift DR
En este estado el registro de datos conectado entre TDI y TDO, como resultado de la instrucción actual, desplaza los datos hacia la salida de forma serial en cada flanco de subida de TCK. La instrucción no cambia mientras el TAP se encuentre en este estado.
Exit1 DR
El controlador pasa al estado de Update_DR y termina el proceso de escaneo o al estado de Pause_DR. Este es un estado temporal en el que el registro de datos seleccionados por la instrucción actual conserva su estado anterior. La instrucción no cambia mientras el TAP se encuentre en este estado.
Pause DR
Este estado permite el cambio del registro de datos que se encuentra en la trayectoria entre TDI y TDO y es detenido temporalmente.
Exit2 DR
El controlador pasa al estado de Update_DR y termina el proceso de escaneo, o bien, pasa al estado de shift_DR. Este es un estado temporal en el que el registro de datos seleccionados por la instrucción actual conserva su estado anterior. La instrucción no cambia mientras el TAP se encuentre en este estado.
Update DR
El dato se almacena en el registro de datos en cada flanco de bajada de TCK.
Ruta de Instrucciones
Los estados Shift IR, Exit1 IR, Pause IR y Exit2 IR que se presentan en la línea de instrucciones, llevan un proceso similar a los estados de la línea de datos.
Capture IR
En este estado la instrucción en el banco de registro de instrucciones cambia, mientras que en paralelo se carga la siguiente instrucción en el registro en un flanco de subida de TCK. Los últimos dos bits menos significativos deben ser siempre “01”.
Arquitectura Boundary-Scan
Cuando se habla de la arquitectura Boundary-Scan, se habla de los tipos de registros que componen la arquitectura, esto es: registro de Instrucciones, de identificación, de BYPASS,
Boundary-Scan, de configuración JTAG, etc., sólo por mencionar a los más relevantes. A continuación se mencionan algunos detalles de cada uno de los registros antes mencionados.
Registro de Instrucciones
Permite que una instrucción pueda ser cambiada dentro del diseño. La instrucción define la tarea a realizar, el registro de datos a acceder o ambos. Este registro se
conecta entre TDI y TDO durante el escaneo de las instrucciones. La instrucción se envía a través de TDO, al mismo tiempo que se carga la siguiente instrucción a través de TDI.
Registro de Identificación
También llamado Registro IDCODE, este registro permite identificar a través del TAP datos de: fabricante, número de parte y versión del dispositivo conectado en la cadena.
Registro de BYPASS
Proporciona una ruta corta en serie para los datos transmitidos, consiste en flip-flops
conectados entre TDI y TDO. Cuando se presenta una instrucción de BYPASS el
bitstream pasa inadvertido de TDI a TDO mientras se encuentra en esta instrucción.
Registro Boundary-Scan
Es un registro integrado por celdas que permiten la interacción entre las terminales externas del dispositivo y la lógica embebida en él, cuando se encuentra en modo de prueba.
Registro de Configuración JTAG
Este registro permite el acceso al bus de configuración y a las operaciones de
readback. El bus de configuración, permite cargar el bitstream de configuración en el FPGA. Las operaciones readback permiten verificar que los datos de configuración actuales dentro del dispositivo son correctos, leyendo los datos desde la memoria de configuración interna.
6.1.2
Arquitectura interna del firmware de configuración
Antes de hablar de los tipos de archivos de reconfiguración, es necesario explicar la arquitectura interna del Firmware utilizado para configurar un FPGA a través del protocolo JTAG, utilizando como medio de control y gestión de datos, a un procesador, figura 6.3.
Como se muestra en la figura anterior, la arquitectura del firmware fue dividida en tres bloques, donde cada uno de ellos se encuentra ligado al otro. Estos bloques son:
Control JTAG
Este bloque controla todos los procesos que se llevan a cabo internamente, los cuales realizan las siguientes tareas:
Obtiene la información almacenada en el registro TDO y la compara con un paquete de datos generado con anterioridad.
Byte a byte extrae el bitstream almacenado en la memoria EEPROM, para: ejecutar las instrucciones propias del protocolo JTAG, generar la señal TDI y transmitirla al FPGA.
Una vez que se ejecutan las instrucciones de este mismo bloque, controla la Maquina de estados del TAP.
Registro TDO
En este bloque se almacena momentáneamente la información recibida desde FPGA.
TAP
Dentro de cada uno de los estados del TAP se generan las señales TCK y TMS, y se transmiten al FPGA para controlar el TAP del bloque JTAG embebido en el FPGA.
6.1.3
Archivos de reconfiguración para los dispositivos FPGA
Los dispositivos FPGA de Xilinx pueden reconfigurarse a partir de archivos de datos que contienen arquitecturas de cómputo diseñados previamente en la suite de desarrollo ISE. Estos archivos pueden cargarse en un FPGA en tres formatos diferentes: archivos con formato bit, formato svf o formato xsvf. Cada formato posee características propias y ventajas, las cuales se describen en los siguientes párrafos:
Formato bit
Es la representación binaria de la arquitectura de cómputo. Este archivo se utiliza para configurar los dispositivos de Xilinx, también puede utilizarse para generar archivos para memorias PROM, realizando algunas adecuaciones del formato. Los archivos en este formato frecuentemente se generan en el navegador de proyectos de la suite ISE de Xilinx.
Formato svf
Es un archivo vectorial en serie, y es una versión del formato .bit, el cual se utiliza para registrar las instrucciones del protocolo JTAG con la descripción de la arquitectura de cómputo que será descargada en el FPGA (bitstream). Este archivo es una representación ASCII de los comandos del protocolo JTAG junto con el bitstream, y es generado por medio del software IMPACT, incluido también en la suite ISE, o bien por medio de un programador JTAG comercial. Al integrar las instrucciones del protocolo JTAG, la magnitud de este archivo es aproximadamente tres veces mayor que el .bit.
Formato xsvf
Este formato reúne las características de los dos formatos anteriores, es un archivo que integra las instrucciones del protocolo JTAG, como el formato svf y binario, o como el formato .bit, con la ventaja de que este es un formato comprimido del formato svf, por lo tanto a pesar de que integran las instrucciones JTAG son de la misma magnitud que un archivo .bit. Es un formato propietario de Xilinx. Los archivos con este formato están optimizados para ejecutar los comandos del protocolo JTAG en los dispositivos de Xilinx y están destinados para uso en aplicaciones embebidas.
Para realizar la reconfiguración del FPGA se optó por utilizar un archivo de reconfiguración en formato xsvf debido a las ventajas que ofrece en términos de un tamaño compacto, optimización de uso con el protocolo JTAG y flexibilidad para manejarlo en ambientes de desarrollo en software de Xilinx y de otros fabricantes.