El formato del archivo xsvf está formado por un byte de instrucción seguido por una variable numérica como argumento. Estas instrucciones describen las operaciones del estándar IEEE 1149.1, similares a las del formato svf, con la diferencia del que el archivo xsvf es más compacto. Las instrucciones, con su respectivo valor hexadecimal al que responden junto con la descripción de la tarea a efectuar en el proceso de reconfiguración, son las siguientes:
XCOMPLETE 0x00
Indica que el archivo xsvf ha finalizado.
XTDOMASK 0x01
El argumento de esta instrucción establece una máscara para los valores de TDO.
XSIR 0x02
Envía al controlador del TAP al estado Shift-IR y cambia el valor de TDI. Si el tiempo determinado por la instrucción XRUNTEST no es cero, envía el controlador
del TAP al estado Run-test/idle y espera el tiempo especificado. En otro caso, va al estado XENDIR.
XSDR 0x03
Envía al controlador del TAP al estado Shitf-DR y cambia el valor de TDI. Compara el valor TDO recibido en la instrucción XSDRTDO con el valor establecido por la instrucción XTDOMASK. Si no coinciden los valores, la operación falla.
XRUNTEST 0x04
Cuando en la instrucción XENDIR o XENDDR el estado del controlador es Run- Test/Idle, el argumento de XRUNTEST define el valor mínimo del ciclos de reloj (TCK) que deben transcurrir y el mínimo valor en microsegundos que el dispositivo debe permanecer en este estado, en cada ejecución de las instrucciones SDR o SIR.
XREPEAT 0x07
El argumento de esta instrucción indica el número de veces que el valor TDO recibido es comparado antes de que se considere que ha fallado la operación.
XSDRSIZE 0x08
El argumento de esta instrucción determina la longitud de los registros de XSDR y XSDRTDO.
XSDRTDO 0x09
Envía al controlador del TAP al estado Shift-DR y cambia el valor de TDI. Compara el valor TDO recibido con el valor TDO generado por la instrucción XTDOMASK. Si no coinciden los valores, la operación falla.
XSETSDRMASKS 0x0A
Aquí se indican las máscaras de los datos y la dirección de la instrucción XSDRINC que se presente después de esta instrucción.
XSDRINC 0x0B
Realiza sucesivamente instrucciones XSDR.
XSDRB 0x0C
Envía al controlador del TAP al estado Shift-DR y cambia el valor de TDI. Permanece en este estado hasta que se indique que la operación debe finalizar
XSDRC 0x0D
Cambia el valor de TDI y sigue permaneciendo en el estado Shift-DR hasta que se indique que la operación debe finalizar.
XSDRE 0x0E
Cambia el valor de TDI. Va al estado XENDDR y finaliza la operación.
XSDRTDOB 0x0F
Envía al controlador del TAP al estado Shift-DR y cambia el valor de TDI. Compara el valor TDO recibido con el valor TDO generado.
XSDRTDOC 0x10
Cambia el valor de TDI y compara el valor TDO recibido con el valor TDO generado (permanece en el estado Shift-DR).
XSDRTDOE 0x11
Cambia el valor de TDI y compara el valor TDO recibido con el valor TDO generado, al finalizar la operación envía el controlador del TAP al estado XENDDR y finaliza la operación.
XSTATE 0x12
Cuando el argumento de la instrucción es cero (0x00) envía al controlador del TAP al estado Test Logic Reset, garantizando el restablecimiento del TAP. Para valores distintos a cero, el TAP se mantiene en su estado actual y no realiza ninguna modificación.
XENDIR 0x13
Esta instrucción indica el final de la instrucción XSIR. El argumento indica en qué estado se posicionará el controlador del TAP. Si el valor es 0x00 envía al controlador al estado Run-Test/Idle, pero si el valor es 0x01 envía al controlador al estado Pause IR.
XENDDR 0x14
Esta instrucción indica el final de la instrucción XSDR. El argumento indica en qué estado se posicionará el controlador del TAP. Si el valor es 0x00 envía al controlador al estado Run-Test/Idle, pero si el valor es 0x01 envía al controlador al estado Pause DR.
XSIR2 0x15
Esta instrucción se utiliza para cambio de instrucciones con una longitud de más de 255 bits, en otro caso se utiliza la instrucción XSIR.
XCOMMENT 0x16
Especifica una longitud arbitraria de caracteres que terminan con un byte cero.
XWAIT 0x17
Envía al controlador del TAP al estado wait_state y permanece en el estado, al finalizar envía al controlador del TAP a estado end_state.
Una vez descritas las tareas que cumplen cada una de las instrucciones del set de JTAG, junto con el funcionamiento del TAP, es posible comprender con más claridad el proceso de reconfiguración a través del protocolo JTAG.
6.2
Diseño y construcción del hardware
Por supuesto que gran parte del éxito en el proceso de reconfiguración del sistema que se describe en este trabajo de tesis recae en el hardware. El desarrollo del hardware se realizó en dos etapas: la primera consideró el desarrollo de interfaces propietarias y propias, mientras que en la segunda se realizó la integración de los resultados parciales alcanzados en la primera etapa, para concretar un diseño final propio. Como parte de las pruebas parciales que se realizaron, se encuentran pruebas de comunicación utilizando radio módems para la escritura de una memoria utilizando un microcontrolador (PIC) como elemento gestor de carga. Los resultados de estas pruebas permitieron definir la integración de bloques fundamentales para el sistema, tales como transceptor para comunicaciones seriales, PIC gestor y memoria de almacenamiento del bitstream, cuyas pruebas se detallan en el capítulo posterior.
El diseño está integrado por una tarjeta electrónica totalmente diseñada, ensamblada de forma manual y validada en el Instituto de ingeniería de la UNAM. Esta tarjeta está integrada a su vez por varios módulos que permiten la comunicación exterior y transferencia de datos por puerto RS232, PIC a bordo para gestión del proceso de reconfiguración, una memoria EEPROM para el almacenamiento del bitstream de configuración del FPGA, adquisición de datos digitales, herramientas de depuración a bordo con entradas y salidas digitales, además de fuentes de alimentación propias que permiten realizar pruebas aisladas fuera de la plataforma SATEDU. En los siguientes apartados se describen cada uno de estos bloques.