60
PLATAFORMA ACADEMICA PARA EL DESARROLLO DE SISTEMAS DIGITALES Raúl Alberto Brugés Moreno PROYECTO DE GRADO Asesor: Mauricio Guerrero Hurtado Universidad de los Andes Facultad de Ingeniería Departamento de Ingeniería Eléctrica y Electrónica Bogotá, D.C. 2007 1

PLATAFORMA ACADEMICA PARA EL DESARROLLO DE SISTEMAS …

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  

PLATAFORMA ACADEMICA PARA EL DESARROLLO DE SISTEMAS DIGITALES 

    

  

 

Raúl Alberto Brugés Moreno  

  

PROYECTO DE GRADO         

Asesor: Mauricio Guerrero Hurtado 

  

  

  

  

Universidad de los Andes Facultad de Ingeniería  

Departamento de Ingeniería Eléctrica y Electrónica  Bogotá, D.C. 

2007  

1

TABLA DE CONTENIDO  

Pag 1. INTRODUCCION…………………………………………………………………………………..4 1.1 Introducción General……………………………………………………………………………..4 1.2 Objetivos…………………………………………………………………………………………...4 

 2. MARCO TEORICO…………………………………………………………………………………5 2.1 Antecedentes Externos……………………………………………………………………………5 2.2 Antecedentes Internos……………………………………………………………………………5 2.3 Elementos técnicos………………………………………………………………………………..6 2.3.1 Boundary Scan / Estándar IEEE 1149.1……………………………………………………6 2.3.2 FPGA (Field Programmable Gate Arrays)…………………………………………………...7 2.3.3 Analizadores Lógicos.............................................................................................................8 2.3.4 ChipScope Pro Tools………………………………………………………………………..9 

 3. DESARROLLO…………………………………………………………………………………….11 3.1 Especificaciones de la plataforma……………………………………………………………..11 3.1.1 Especificaciones de la interfaz grafica...............................................................................11 3.1.2 Especificaciones de la tarjeta de adquisición……………………………………………11 

3.2 Arquitectura de la plataforma………………………………………………………………….11 3.2.1 Tarjeta de adquisición……………………………………………………………………..12 3.2.2 Cable JTAG............................................................................................................................13 3.2.3 Interfaz grafica……………………………………………………………………………..13 3.2.4 Modos de configuración de la plataforma………………………………………............14 3.2.4.1 Modo de configuración: CLASE 1……………………………………………………...15 3.2.4.2 Modo de configuración: CLASE 2...................................................................................16 3.2.4.3 Modo de configuración: CLASE 3A……………………………………………............17 3.2.4.4 Modo de configuración: CLASE 3B…………………………………………….............18 3.2.4.5 Modo de configuración: CLASE 4A……………………………………………............19 3.2.4.6 Modo de configuración: CLASE 4B…………………………………………….............20 

3.3 Implementación de la plataforma académica………………………………………………...22 3.3.1 Generación de los bloques ICON, ILA y VIO desde el ChipScope Pro Core 

Generator………………………………………………………………………...…………22 3.3.2 Inserción de los módulos y desarrollo de los proyectos en Xilinx ISE……………….24 3.3.3 Implementación de la tarjeta de adquisición……………………………………………24 3.3.4 Implementación de la interfaz grafica…………………………………………………...27 

 4. PRUEBAS DE VALIDACION Y RESULTADOS……………………………………………...29 4.1 Pruebas del modo CLASE 1…………………………………………………………….............29 4.2 Pruebas del modo CLASE 2…………………………………………………………….............29 4.3 Pruebas del modo CLASE 3A…………………………………………………………..............30 4.4 Pruebas del modo CLASE 3B…………………………………………………………………..30 4.5 Pruebas del modo CLASE 4A…………………………………………………………..............31 4.6 Pruebas del modo CLASE 4B…………………………………………………………………..31  5. CONCLUSIONES…………………………………………………………………………………33 

 

2

6. PERSPECTIVAS…………………………………………………………………………………..34  

7. REFERENCIAS…………………………………………………………………………….............35  

8. MANUALES (GUIAS PARA EL USUARIO)…………………………………………..............36 8.1 Guía rápida de cómo usar el ChipScope Pro…………………………………………………36 8.2 Guía para el uso de la Plataforma Académica………………………………………………..48 

 9. ANEXOS…………………………………………………………………………………………….58 9.1 Esquema de la tarjeta de protección …………………………………………………………..58 9.2 Dibujo de la tarjeta de protección (top)……………………………………………………….59 9.3 Dibujo de la tarjeta de protección (Bottom)………………………………………………….60 

                                    

3

1. INTRODUCCION  1.1 Introducción General.  Generalmente los cursos para el diseño y desarrollo de sistemas digitales de la Universidad de los Andes y otras instituciones, están complementados con prácticas o trabajos en el laboratorio. Estos son muy  importantes,  ya  que  su  fin  es  fortalecer  los  conceptos  vistos  en  las  clases  a  través del diseño de  sistemas digitales. En muchas  ocasiones  es difícil  cumplir  con  todos  los  objetivos del trabajo  en  el  laboratorio,  esto  se  debe  en  parte  a  que  existen  herramientas muy  limitadas  para probar y validar los circuitos lógicos diseñados por los estudiantes.   La  herramienta  más  conocida  para  probar  y  validar  circuitos  lógicos  es  el  analizador  lógico. Mientras un osciloscopio permite examinar muy pocas señales  (generalmente dos), un analizador lógico puede examinar hasta cientos de señales al mismo tiempo. Los pocos analizadores existentes en el laboratorio de la Universidad de los Andes (solo dos), no están totalmente disponibles para los estudiantes.  Estas  herramientas  son muy  costosas  y  se  necesita  un  entrenamiento  previo  para operarlas. Por otro lado existen software como el ChipScope Pro desarrollado por Xilinx, que sirven para la visualización y el análisis de cualquier señal interna en una FPGA.  Debido a los problemas mencionados en un principio, surgió la necesidad de diseñar e implementar una  herramienta  con  la  que  fuera  posible  probar  y  validar  cualquier  sistema  digital  en  el laboratorio. Un  propósito  fundamental  de  este  proyecto,  es  buscar  desarrollar  una  herramienta completa, fácil de operar, de fácil mantenimiento, económica y robusta.  Este proyecto hace uso del ChipScope Pro, este se toma como base para visualizar las señales lógicas de un circuito. Para  la adquisición de  los datos se usó un FPGA que actúa como  interfaz entre el circuito  lógico  y  el PC. Para  la plataforma  se desarrolló un  sistema  que  adaptara  los niveles de voltajes externos al FPGA. La plataforma cuenta con una interfaz grafica que permite interactuar al usuario con la herramienta.    1.2 Objetivos  Este proyecto  tiene como objetivo principal el desarrollo de una herramienta con  la que se podrá probar y validar cualquier circuito  lógico desarrollado en el  laboratorio de  la Universidad de  los Andes. Se debe diseñar e  implementar una herramienta completa,  fácil de operar, que sea viable económicamente  para  la  universidad    y  que marque  la  diferencia  con  las  otras  ya  existentes. Además se debe crear una plataforma modificable y que pueda ser mejorada con futuros proyectos.             

4

2. MARCO TEORICO  2.1 Antecedentes Internos  Este proyecto  se desarrolló basado  en  anteriores proyectos  realizados por  la Universidad de  los Andes,  los  objetivos  planteados  se  especificaron  con  el  fin  completarlos  basados  en  nuevas necesidades.  Los  proyectos  que  se  mencionan  a  continuación  se  relacionan  con  La  plataforma académica para el desarrollo de sistemas digitales:  • “PLATAFORMA  ACADEMICA  DE  DISEÑO  Y  DEPURACION  DE 

MICROPROCESADORES” [1].  Este proyecto se realizó con el fin de crear una herramienta para el diseño y  la verificación de un microprocesador tipo MIPS a través de una FPGA (Dispositivo Lógico Programable).   • “ANALIZADOR  LOGICO  CON  PRESTACIONES  ACADEMICAS  PARA  LA 

VERIFICACION DE SISTEMAS DIGITALES” [2].  En este proyecto quiso crear una herramienta con la cual fuera posible hacer pruebas a diferentes circuitos lógicos, esta herramienta buscaba tener usos académicos y la validación de diseños hechos para la clase o el laboratorio.   2.2 Antecedentes Externos  Como antecedentes externos se encontraron varios proyectos donde se  implementan analizadores lógicos que están muy relacionados con el nuestro. Entre los proyectos existentes se mencionan los siguientes:  • “Analizador Lógico de 100 MHz utilizando FPGA” [3].   Este proyecto describe la arquitectura de un analizador lógico implementado en un FPGA, dentro de  las  tareas  estaba  la  creación  de  un  componente  hardware  para  la  adquisición  de  datos  y  la interfaz con un PC. Este analizador se creó para ser usado en diferentes aplicaciones a un muy bajo costo.  • “Analizador  lógico  de  tiempos  implementado  en  un  FPGA  utilizando  el  bus  PCI  como 

interfaz de comunicación” [4].  De manera similar al anterior este proyecto describe la implementación de un analizador lógico en un  FPGA,  la  comunicación  en  este  caso  es  a  través  de  un  bus  PCI.  Las  aplicaciones  están más enfocadas a fines académicos.           

5

2.3 Elementos técnicos  2.3.1 Boundary Scan / Estándar IEEE 1149.1 [5].   El JTAG es conocido formalmente como el Estándar IEEE 1149.1, este es un estándar de pruebas con el que se puede hacer test a grandes circuitos digitales de una manera sencilla y rápida. El estándar posee una arquitectura propia y un funcionamiento que se explicara a continuación.  Arquitectura del Estándar IEEE 1149.1   La arquitectura de mas alto nivel del Std  IEEE 1149.1  esta  compuesta por 3 bloques principales, estos son el  Controlador, el Registro de Instrucciones y el Registro de Datos.  • Controlador   El Controlador  responde a  las secuencias de control que  le  son asignadas a  través del TAP  (Test Access Port), este controlador también genera una señal propia de reloj y señales de control para los demás módulos.    • Registro de Instrucciones  Este es un bloque que esta basado en registros de corrimientos y que recibe  las  instrucciones que van a ser desarrolladas de forma serial.  • Registro de Datos   Este modulo es un banco de  registros de corrimientos,  los estímulos necesarios para realizar una operación son cargados de forma serial dentro de un registro del banco, el registro se selecciona a través de las instrucciones.   • TAP (Test Access Port)  El  puerto  TAP  contiene  cuatro  (4)  pines  con  los  que  se  pueden manejar  los  demás  bloques  y controlar  las operaciones especificadas. El TAP  facilita  la carga y descarga de  las  instrucciones y datos. Los Cuatro pines del TAP son el TMS, TCK, TDI y el TDO y se describen a continuación:   TCK – Este pin es el Reloj del Std IEEE 1149.1. Este reloj lleva la secuencia del controlador al igual que la de los registros.  TMS – Este pin es una entrada del bloque controlador, el controlador es una maquina FSM (Finite State Machine) de 16 estados que brinda el control lógico del JTAG. El estado del TMS en el borde de subida del TCK determina la secuencia de los estados.  TDI – Este pin proporciona la entrada serial para los datos de los registros en cualquier instrucción JTAG. El estado de la maquina de control y el tipo de instrucción determina cual de los registros es alimentado por el TDI para una operación especifica.  

6

TDO – Este pin proporciona la salida serial para los datos de los registros en cualquier instrucción JTAG. El estados de la maquina de control y el tipo de instrucción determinan cual de los registros alimenta la salida TDO para una operación especifica.  2.3.2 FPGA (Field Programmable Gate Arrays) [6].  Con las exigencias de la tecnología moderna, cada vez es necesario más compuertas dentro de un dispositivo  lógico. Para  implementar grandes  circuitos  lógicos  se usan otro  tipo de  componentes diferentes a las SPLDs (Simple Programmable Logic Devices) y las CPLD (Complex Programmable Logic Devices).  El  FPGA  es  un  dispositivo  lógico  programable  que  soporta  la  implementación  de complejos circuitos lógicos. Los FPGAs son completamente diferentes de las SPLD y CPLD ya que estos  no  poseen  planos  de  compuertas AND  ó OR,  los  FPGAs  poseen  bloques  lógicos  para  la implementación de sus funciones. La estructura general de un FPGA se puede apreciar en la figura 2‐1. Estos dispositivos  contienen  tres  componentes principales: Los bloques  lógicos  (Logic Blocks) donde se implementan las distintas funciones lógicas, los módulos de entrada y salida (I/O Blocks) que  sirven  para  crear  conexiones  con  los  pines  externos  del  componente,  y  los  interruptores programables  (Interconnection  Switches)  que  permiten  la  conexión de  los  bloques  lógicos  con  los cables internos de la FPGA al igual que con los pines externos del dispositivo.   Los  FPGAs  pueden  ser  usados  para  implementar  circuitos  lógicos  con  cientos  de  miles  de compuertas. Cada bloque lógico en un FPGA tiene unas cuantas entradas y una salida. Los FPGAs comerciales  tienen diferentes  tipos de bloques  lógicos,  el más usado  es  el LUT  (Lookup Table). El LUT  contiene  celdas  de  almacenamiento  que  son  usadas  para  implementar  pequeñas  funciones lógicas, cada celda es   capaz de almacenar cualquier valor  lógico, 1 ó 0. La  figura 2‐2 muestra  la estructura de una LUT simple. Esta tiene dos entradas, x1 y x2 y una salida f, en este caso el LUT es capaz  de  implementar  una  función  lógica  de  dos  variables.  Las dos  variables  son  usadas  como líneas de  selección de  entradas de  tres multiplexores, dependiendo de  los  estados de  x1  y  x2  se muestra el contenido de una de las celdas en la salida del LUT.   

 Figura 2‐1: Estructura interna de un FPGA1

1 BROWN, Stephen y VRANESIC, Zvonko. Fundamentals of Digital Logic with VHDL design. Singapore: Mc Graw Hill, 2000. [Imagenes 3.35, 3.36 y 3.38]. 93, 94, 96 p.

7

 

 Figura 2‐2: LUT de dos entradas lógicas1. 

 Las LUT usan bloques adicionales para mejorar sus funciones, en la figura 3‐1 se puede ver como un bloque lógico incluye un flip flop dentro de su arquitectura. El flip flop es usado para almacenar un dato (entrada D) bajo el control de la señal de reloj (clock).   

 Figura 2‐3: Inserción de un flip flop en un bloque lógico de un FPGA1 

 2.3.3 Analizadores lógicos [6].  Un  analizador  lógico permite  examinar decenas  y  hasta  cientos de  señales  al mismo  tiempo. El analizador toma como entradas un grupo de señales en un circuito a través de puntas de pruebas, estas señales son digitalizadas y mostradas en formas de señales o vectores lógicos en una pantalla. Una característica apreciable del analizador lógico es que tiene módulos de almacenamiento con la capacidad de tomar distintas muestras de una secuencia de cambios, estos se hacen en periodos de tiempo determinados por el usuario. Luego el usuario puede desplegar  los datos que desee en  la pantalla.  

8

 Es  fundamental  al probar  y validar un diseño  o  circuito  observar  las  señales  cuando  el  circuito presenta un mal funcionamiento. El analizador lógico puede ser condicionado (triggered), es decir, puedo desplegar en la pantalla solo los eventos que cumplan condiciones (depende de mi circuito) que el usuario decide.  2.3.4 ChipScope Pro Tools [7].  Con el crecimiento de los dispositivos programables como los FPGAs cada vez es más difícil hacer pruebas  (test)  sobre  estos.  ChipScope  Pro  Tools  es  un  conjunto  de  herramientas  que  integran dispositivos de análisis y otros módulos hardware dentro de un FPGA,  estos con el fin de analizar circuitos lógicos diseñados sobre el dispositivo.   El  ChipScope  Pro  Tools  esta  compuesto  por  tres  herramientas  software  básicas,  estas  son:  El ChipScope Pro Core Generator, el ChipScope Pro Core Inserter y el ChipScope  Pro Analyzer. En la tabla 2‐1 se ofrece una breve descripción de cada herramienta.   

Herramientas  Descripción   ChipScope Pro Core Generator    

Genera el netlist y las plantillas para instanciar los siguientes módulos: • Integrated Controller (ICON) • Integrated Logic Analyzer (ILA) • Virtual Input Output (VIO)  

ChipScope Pro Core Inserter  Instancia automáticamente los módulos ICON y ILA   ChipScope Pro Analyzer  

Provee la configuración, evaluación de diferentes eventos y el muestreo de los módulos ILA y VIO. El modulo ICON es el que provee la comunicación a los  diferentes pines del dispositivo (a los Boundary Scan Pins) 

 Tabla No 2‐1: Descripción de las herramientas del ChipScope Pro.  Descripción de los bloques ICON, ILA y VIO    Modulo ICON  El ChipScope Pro utiliza el puerto JTAG para comunicarse con los diferentes dispositivos (FPGA en su mayoría), El Modulo ICON es aquel módulo que sirve como interfase de comunicación entre el puerto JTAG y los bloques ILA y VIO.  Modulo ILA  Este bloque se caracteriza porque al  igual que en un analizador  lógico se evalúan  las condiciones lógicas (Trigger Conditions) y se capturan los datos de cualquier señal en un circuito digital. A través del ChipScope Pro se configuran las condiciones lógicas, estas permiten que los datos se almacenen en  bloques  de memoria  y  luego  sean  desplegados.  Por  ejemplo,  a  través  del  ILA  puedo  lograr conocer las señales de control de mi circuito cuando la salida alcanza un valor lógico específico. En una compuerta NAND con dos entradas A y B, podría asignar la condición para capturar los datos cuando la salida es cero ‘0’. Entonces si la compuerta no presenta ningún defecto yo veré en A y B el 

9

valor de un  ‘1’  lógico. Generalmente se pueden establecer varias condiciones dentro del ILA, esto permite  hacer análisis de mayor complejidad sobre los diferentes diseños.  Modulo VIO   El bloque VIO permite generar vectores lógicos que permiten estimular mi diseño. El módulo VIO puede generar señales asíncronas y sincronas de acuerdo a las necesidades del usuario. A través del VIO  también puedo visualizar  señales  en  tiempo  real,  es decir no  son  almacenadas  en memoria para después ser despegadas.                                         

10

3. DESARROLLO  3.1 Especificaciones de la plataforma.  Esta  herramienta  debe  ser  capaz  de  examinar  circuitos  combinacionales  y  secuénciales.  La plataforma tendrá dos (2) componentes básicos: el primero será una interfaz grafica, esta permitirá al usuario manipular las pruebas y observar los resultados obtenidos. El segundo componte debe ser un  componente  hardware    o  tarjeta  de  adquisición,  a  través  de  esta  se  podrá  conectar  el  diseño (circuito bajo prueba) a la plataforma y se adquirirán los datos de la prueba.     3.1.2 Especificaciones de la interfaz grafica  Para  la  interfaz  grafica  de  la  plataforma  se  pensaron  en  las  siguientes  características  o especificaciones que esta debe tener:   • Debe  ser  una  herramienta  completa,  donde  se  tengan  todos  los  elementos  necesarios  para 

validar un  circuito lógico. • Se  quiere  una  herramienta  fácil  de  usar,  es  decir  que  al  usuario  le  tome muy  poco  tiempo 

aprender a operarla.  • La  interfaz debe  ser  robusta,  esta  debe  permitir  la  validación  de  cualquier  clase  de  circuito 

lógico (secuenciales y combinacionales). • Desde  la  interfaz debe  ser posible  aplicar  estímulos  (señales de prueba)  al  circuito  lógico,  y 

observar los resultados en tiempo real, al igual que los resultados de estímulos que se aplican con otras fuentes distintas a la plataforma. 

• La interfaz permitirá ver la secuencia de toda la prueba en un diagrama (historial) y observar con detalle todas las señales lógicas que están involucradas en el análisis. 

 3.1.3 Especificaciones de la Tarjeta de adquisición.  La tarjeta de adquisición de la plataforma debe tener las siguientes características o especificaciones:  • 16 puntos de pruebas, es decir se podrán observar hasta 16 señales lógicas simultáneamente. • 16  señales  de  estímulos,  estos  puertos  permitirán  estimular  el  circuito  bajo  prueba  si  así  se 

desea. • Debe  tener  cables de  fácil  conexión  al  circuito bajo prueba,  los  cables deben  estar diseñados 

para ser conectados directamente a la tarjeta experimental (Protoboard o PCB). • La  tarjeta  de  adquisición  podrá  ser  conectada  a  circuitos  de  lógica  TTL  o  CMOS,  además 

conectar circuitos que trabajan con voltajes de 3.3 ó 5 voltios. • Esta tarjeta esta diseñada con componentes comerciales y de bajo costo.  3.2 Arquitectura de la Plataforma  En  la  figura  3‐1  se  puede  observar  la  arquitectura  completa  de  la  plataforma,  los  principales componentes  que  se muestran  son  los  siguientes: La  interfaz  grafica,  el  cable  JTAG  y  la  tarjeta  de adquisición. A continuación se explica en detalle todos los elementos que componen la arquitectura.  

11

 Figura 3‐1: Arquitectura de la plataforma 

 3.2.1 Tarjeta de Adquisición  Esta tarjeta se encarga de capturar y generar las señales lógicas del circuito bajo prueba. La tarjeta de  adquisición  de  la  plataforma  esta  compuesta  por  4 módulos  básicos: Un módulo  ICON,  un módulo  ILA, uno VIO y bloques de adaptación eléctrica de  las entradas y  salidas o bufers. En  la figura 3‐2 se muestra un esquema de la arquitectura de la tarjeta.  FPGA: Este es el  componente mas  importante de  la plataforma, aquí  se encuentran  los módulos necesarios para  la captura y generación de señales  lógicas. Los módulos están en  la capacidad de ser  configurados desde  la  interfaz  grafica. La  arquitectura  general de  la plataforma  contiene un bloque ICON, uno bloque ILA y un bloque VIO (ver sección 2.3.4).  

  ICON: Ya que  este modulo  es  el que permite  la  comunicación entre  la  interfaz grafica y  los demás módulos,  debe  estar  conectado  al  cable  JTAG  que  es  un  canal  de  comunicación  del FPGA. Por medio del ICON se pueden configurar los módulos ILA y VIO desde la interfaz.   

ILA: Este módulo es el encargado de capturar las señales lógicas provenientes del circuito bajo prueba,  internamente  este  módulo  tiene  bloques  de  control  que  seleccionan    los  datos  a capturar (datos condicionados), los módulos de memoria se usan para almacenar los datos. El ILA  es un modulo  sincrono,  es decir necesita una  señal de  reloj para  su  funcionamiento. En cada  pulso  de  reloj  el  ILA  evalúa  las  condiciones de  las  señales  y  almacena  los  datos  si  es necesario. Se utiliza una frecuencia de reloj de 50 MHz, esta frecuencia no dejará que se pierdan datos que pueden ser importantes para la prueba. 

  VIO: A diferencia del ILA este módulo no tiene una memoria interna disponible, por esta razón muestra los datos en tiempo real. Este modulo también es capaz de generar señales lógicas para estimular el circuito. El módulo VIO puede manejar señales asíncronas y sincronas con un reloj.   

 

12

 Figura 3‐2: Arquitectura de la Tarjeta de Adquisición. 

 Bufers: Ya que  la mayoría de  los FPGA  trabaja con niveles de voltajes de 3.3 voltios es necesario regular  los  voltajes  provenientes  del  circuito. Con  los  bufers  de  protección,  es  posible  conectar circuitos  a  la  tarjeta  de  adquisición  que  trabajen  con  niveles  de  5.0  ó  3.3  voltios.  La  tarjeta  de adquisición  tiene  disponible  16  bufers  de  entrada  y  16  bufers  de  salida,  es  decir  se  tienen disponibles 16 puntas de pruebas y 16 puntas de estímulos lógicos.   3.2.2 Cable JTAG   Este cable es el canal de comunicación entre la interfaz grafica y el resto de la plataforma.   3.2.3 Interfaz grafica  La interfaz grafica es el componente donde el usuario puede manipular todas las pruebas hechas al sistema. La interfaz permite ver un diagrama de los resultados obtenidos en la prueba para después ser analizados. A través de esta también se pueden generar y manipular estímulos lógicos para el sistema bajo prueba. En la figura 3‐3 se muestra un esquema de la interfaz grafica, este contiene una ventana de configuración, una ventana para ver el diagrama de pruebas y una ventana de control desde donde puedo ver la prueba en tiempo real.  

13

 Figura 3‐3: Arquitectura de la interfaz grafica 

  3.2.4 Modos de Configuración de la Plataforma.  Una de las especificaciones de la plataforma es que debe poder examinar cualquier clase de sistema digital,  tanto  combinacionales  como  secuenciales. Los  esquemas de  la  tarjeta y  la  interfaz  en  las figuras 3‐2 y 3‐3 respectivamente, muestran una arquitectura global de  la plataforma. En realidad para cada circuito lógico a probar debería existir una arquitectura específica. Si vamos a examinar un sistema puramente combinacional, usamos módulos ILA y VIO diferentes a los que se necesitan para un sistema secuencial.  Debido  a  lo mencionado  anteriormente,  se decidió  crear dos  grandes  grupos de  arquitecturas  o modos de configuración. Esto permite diferenciar dos  tipos de sistemas o diseños hechos por  los estudiantes, los combinacionales y los secuenciales. El primer grupo son circuitos lógicos que están conformados por dispositivos  que no dependen de una  señal de  reloj, por  ejemplo,  compuertas NAND, OR, XOR etc. El segundo grupo son los circuitos secuenciales, estos dependen de una señal de reloj, por ejemplo flip flops, contadores, registros, etc.  Básicamente la diferencia entre los modos de configuración de la plaforma académica, se encuentra en  las condiciones o “triggers” que necesita el bloque  ILA para capturar  los datos. En un circuito secuencial, se podrían tomar muestras de las señales de control cada borde de bajada de mi reloj, ya que no me interesa lo que ocurre entre borde y borde. En  un circuito puramente combinacional, me interesa saber lo que esta pasando con mis señales en todo momento.   Dentro de los  modos de configuración para diseños combinaciones se diseñaron dos (2) categorías, el modo CLASE  1  y  el CLASE  2. De  los modos  de  configuración  para  diseños  secuénciales  se pueden distinguir cuatro (4) categorías: CLASE 3A, CLASE 3B, CLASE 4A y CLASE 4B. Después de conocer cada una de las clases o modos de configuración, el usuario podrá escoger cual usar para examinar su diseño desde la interfaz grafica.  

14

 3.2.4.1 Modo de configuración: CLASE 1  Este tipo de configuración de la plataforma permite probar y analizar circuitos combinacionales. En esta configuración el usuario dispone de 16 puntas de prueba. Desde  la ventana de configuración de la interfaz grafica el usuario podrá configurar el número de  muestras que desea capturar, estas serán potencias de 2 con un máximo de 512 muestras. La interfaz grafica permite ver los datos de la prueba  en  tiempo  real  a  través de      la ventana de  control y  con una  señal  interna  (“Cargar”)  se anexan los datos al historial o al diagrama de pruebas de la interfaz.    Este  modo  servirá  especialmente  para  circuitos  puramente  combinacionales,  por  ejemplo  un sumador, un decodificador, etc. En esta clase el usuario debe proporcionar los estímulos lógicos al circuito con otras fuentes ya que el CLASE 1 no proporciona la opción de generar vectores lógicos (estímulos).  Arquitectura del CLASE 1   En la figura 3‐4 se puede apreciar la arquitectura del CLASE 1 que se implementará sobre un FPGA. El bloque  ILA  tiene como entradas el reloj (clk), que opera a una frecuencia de 50 MHz. También existen dos  (2) puertos de 8 bits cada uno, Puerto 1 y Puerto 2,  la señal de control proveniente del ICON y por ultimo la señal cargar. Este modulo ILA esta configurado para capturar datos (Puerto 1 y 2) cada vez que se genere un estimulo (trigger) de la señal Cargar, este estimulo es generado por el usuario desde la interfaz grafica.  El  bloque VIO  recibe  como  entradas  el  control  y  puerto.  La  primera  es  el  control  del  ICON,  la segunda recibe las señales provenientes de las puntas de prueba de la plataforma y las visualiza en tiempo real en la interfaz. Este módulo es el que genera la señal interna “cargar”.  

 Figura 3‐4: Arquitectura del modo CLASE 1  

 

15

3.2.4.2 Modo de configuración: CLASE 2.  Este modo de configuración permite al usuario el análisis de circuitos combinacionales. A diferencia del modo CLASE 1, con este se tiene la opción de generar estímulos lógicos al circuito bajo prueba. El usuario dispone de 16 puntas de pruebas y de 16 puntas de estímulos. Desde la interfaz grafica se modifican  los  valores  de  los  estímulos  lógicos.  También  es  posible  configurar  el  número  de muestras que se desean capturar, estas serán potencias de 2 con un máximo de 512.  Arquitectura del CLASE 2.  En  la  figura 3‐5 se muestra  la arquitectura del modo de configuración CLASE 2. A diferencia del CLASE 1 el modulo VIO tiene 16 salidas que son las entradas o estímulos del circuito bajo prueba.   El modulo ILA tiene entradas de control, reloj (clk), salidas, entradas y carga. El control son todas  las señales de control provenientes del ICON. El reloj (clk) del ILA opera a una frecuencia de 50 MHz. Las  “salidas”  son  las  señales  provenientes  de  las  puntas  de  prueba  (salidas  de mi  diseño).  Las “entradas”  son  tomadas  directamente  del  modulo  VIO,  estas  corresponden  a  los  estímulos generados para el diseño. La activación de la señal interna “cargar”, es la condición necesaria para capturar los datos en la memoria del ILA.  En el modulo VIO se reciben las señales de control provenientes del ICON, las señales de las puntas de  prueba  de  la  plataforma  o  “salidas”.  Este  módulo  genera  la  señal  interna  “cargar”  que  se manipula  desde  la  interfaz  grafica.  La  señal  “entradas”  corresponde  a  los  valores  lógicos  que estimulan el diseño y también se manipulan desde la interfaz grafica.  

 Figura 3‐5: Arquitectura del modo CLASE 2  

 3.2.4.3 Modo de configuración: CLASE 3A.  Con este módulo se pueden probar circuitos secuenciales. El usuario tiene disponibles 15 puntas de pruebas, estas sirven para conectar a las señales que quiero observar de mi diseño. También tiene 

16

disponible una entrada para el reloj (clk) global del diseño. El número de muestras es configurable desde la interfaz grafica, estas son potencias de 2 con un máximo de 512.   Arquitectura de la CLASE 3A.  La arquitectura del CLASE 3A corresponde a la de la figura 3‐6. El modulo ILA tiene 5 puertos de entrada: control, clk, Puerto 1, Puerto 2 y clk_dsg. La señal control proviene del modulo  ICON, esta provee  los datos para  la configuración del  ILA. El  reloj del modulo  ILA esta operando 50 MHz. Tiene dos puertos de entrada (Puerto 1 y 2), estos reciben  los datos de  las puntas de prueba de  la plataforma. La señal clk_dsg es el reloj del diseño bajo prueba y funciona como estimulo o trigger, cada que vez a existe un flanco (borde) del clk_dsg se capturan los datos en los Puertos 1 y 2.    El bloque VIO recibe un puerto de control del bloque ICON. Las señales lógicas provenientes de las puntas de prueba de  la plataforma,  junto con el reloj del diseño (clk_dsg) se reciben en un puerto, estos después son visualizados en tiempo real en la interfaz grafica.  

 Figura 3‐6: Arquitectura del modo CLASE 3A 

 Modulo Retraso    Debido a  los  tiempos de respuesta que presentan  los dispositivos  lógicos, es muy normal que  los diseños que probamos en la plataforma no respondan inmediatamente a los estímulos aplicados. El modulo “Retraso” genera  retrasos programados en  la  señal proveniente del  reloj del diseño,  esto garantiza  que  las  repuestas  que  se  visualizan  en  el  diagrama  de  pruebas  de  la  interfaz  no  se muestren desfasadas. Por  ejemplo,  supongamos  que  estamos probando  en  la plataforma un  flip flop que funciona en los bordes de bajada del reloj, si no existiera el bloque Retraso, el modulo ILA captura  las  señales de  control  actuales pero  las  salidas  correspondientes a  ese  evento un  tiempo después.  

17

En la figura 3‐7 se muestran varios diagramas del análisis de un sistema secuencial. Este sistema es activo en  los bordes de bajadas del  reloj. Las señales de control  toman valores de A, B y C y  las salidas  los valores de X Y y Z. En  la  figura  3‐7(a)  se ven  las  señales del  sistema  secuencial que responde en borde de bajada. Nótese que las respuestas del sistema tienen un tiempo de retraso td. Hay que recordar que la plataforma tomaría los eventos en cada flanco de reloj (1, 2, 3, 4 y 5 en las figura 3‐7(a)). En  la figura 3‐7(b) se ve como  la plataforma mostraría las respuestas de mi circuito sin el modulo Retraso, las respuestas se ven desfasadas un evento ya que se capturan los datos antes de que termine el tiempo td. La figura 3‐7(c) muestra las respuestas de la plataforma con el modulo de Retraso, aquí las respuestas y las señales de control correspondientes se muestran en un mismo evento. 

 Figura 3‐7 ‐ (a): Diagrama de tiempos de un sistema secuencial. (b): Diagrama de eventos 

capturados por la plataforma sin el modulo “Retraso”. (c): Diagrama de eventos capturados por la plataforma con el modulo “Retraso”. 

  Los módulos de Retraso para los modos CLASE 3A, 3B, 4A y 4B tienen un tiempo aproximado de 280 nseg. Es posible que si se tienen tiempos de respuestas mayores a este en el diseño se presenten problemas de desfases en los diagramas visualizados por la interfaz grafica.    3.2.4.4 Modo de configuración: CLASE 3B.   Este modo de configuración es muy parecido al CLASE 3A. La diferencia se encuentra en la señal de  reloj. En el CLASE 3B  la señal de  reloj del diseño es proporcionada por  la plataforma para el sistema.  El  usuario  podrá  generar  un  pulso  de  reloj  desde  la  interfaz  grafica  para  estimular  su diseño, además configurar un reloj para sistemas activos por borde de subida o por borde bajada.  Arquitectura del CLASE 3B.  Esta arquitectura difiere del CLASE 3A en tres módulos, en la figura 3‐8 se presenta la arquitectura del CLASE 3B. El modulo Divisor toma una señal de reloj de 50 MHz y genera una señal de reloj a una frecuencia de 11.9 Hz. El módulo Mux genera la señal clk_dsg negada si el select esta activo, de lo contrario el clk_dsg no es negado.  El bloque VIO en este caso genera una señal secuencial llamada clk_dsg, esta señal corresponde a los pulsos de  reloj para estimular el diseño. El pulso  tiene un ancho de 84   milisegundos. Ya que el bloque VIO esta generando señales secuenciales es necesario agregarle una señal de reloj.  

18

 Figura 3‐8: Arquitectura del modo CLASE 3B. 

 3.2.4.5 Modo de configuración: CLASE 4A.     Este  modo  de  configuración  esta  diseñado  para  probar  circuitos  secuenciales.  El  modo  de configuración CLASE  4A   permite  observar  15 puntas de pruebas de  la plataforma. Además  se pueden generar estímulos desde interfaz grafica, hasta 16 puntos de estímulos. Es necesario que la tarjeta  tome  el  reloj  global  del  diseño  para  poder  capturar  los  datos  y  visualizarlos.  Se  pueden capturar hasta 512 datos en potencias de 2.  Arquitectura del CLASE 4A.   La arquitectura del modo de configuración CLASE 4A corresponde a la de la figura 3‐9. El bloque ILA tiene los siguientes puertos de entrada: control, clk, Salidas, Entradas y clk_dsg. El puerto control proviene  del  módulo  ICON,  este  sirve  como  señal  de  control  del  ILA.  El  puerto  “Salidas” corresponde  a  las  señales  provenientes  de  las  puntas  de  prueba  de  la  plataforma.  El  puerto “Entradas”  corresponde  a  los  estímulos  del  diseño  hechos  desde  la  plataforma.  El  clk_dsg  es  el puerto correspondiente al reloj del diseño, esta señal paso antes por el modulo Retraso (ver sección 3.2.4.3). Las condiciones de captura (triggers conditions) de ILA se dan en cada borde del clk_dsg.   El modulo VIO tiene las entradas “control” y “Salidas”. Con la entrada control proveniente del ICON se  da  configuración  al  módulo  VIO  desde  la  interfaz.  La  entrada  Salidas  recibe  las  señales provenientes de las puntas de prueba, estas son visualizadas en la interfaz grafica en tiempo real. La salida Entradas son los estímulos hechos desde la interfaz grafica para el diseño.  

19

 Figura 3‐9: Arquitectura del modo CLASE 4A. 

 3.2.4.6 Modo de configuración: CLASE 4B.   Con  el modo de  configuración CLASE 4B  se pueden probar  circuitos  secuenciales. El CLASE 4B permite  analizar  16  puntas de  prueba de  la  plataforma. Este modo de  configuración,  genera  15 estímulos  lógicos para el diseño que se esta probando. A Diferencia del CLASE 4A, el CLASE 4B proporciona  el  reloj  del  diseño.  Desde  la  plataforma  se  pueden  generar  pulsos  de  reloj  para estimular el diseño.  Arquitectura del CLASE 4B.  La arquitectura del CLASE 4B se muestra en  la  figura 3‐10. El modulo  ILA es  igual que el usado para el modo de configuración CLASE 4A (ver sección 3.2.4.6). El bloque VIO tiene tres (3) puertos de  entradas:  control,  salidas  y  clk. Los puertos de  salida del VIO  son  clk_dsg,  select  y  entradas. El módulo VIO genera el reloj del diseño a través del puerto clk_dsg, la señal select es una señal interna que se usa para cambiar los flancos del reloj en el bloque Mux (Ver sección 3.2.4.5). Ya que el bloque VIO esta generando variables secuénciales es necesario un reloj para su funcionamiento, la señal de reloj (clk) tiene una frecuencia de 11.9 Hz.   En la tabla 3‐1 se muestran resumidas las características de cada uno de los modos de configuración, estos podrán ser cargados desde la interfaz grafica.  Nota: En la Guía para el uso de la plataforma académica (sección 8.2) se muestra como operar cada uno de los modos de configuración desde la interfaz grafica.  

20

 Figura 3‐10: Arquitectura del modo CLASE 4B 

 MODOS DE 

CONFIGURACION  CARACTERISTICAS 

 CLASE 1 

  

• Para el análisis de diseños combinacionales • 16 puntas de pruebas  • Se capturan los datos con la señal cargar desde la interfaz grafica 

CLASE2    

•  Para el análisis de diseños combinacionales • 16 puntas de pruebas • Es posible generar hasta 16 estímulos lógicos desde la interfaz para el 

circuito bajo prueba • Se capturan los datos con la señal cargar desde la interfaz grafica 

CLASE 3A   

• Para el análisis de diseños secuenciales. • 15 puntas de pruebas. • Recibe el reloj global del diseño • Captura los datos en cada flanco del reloj del diseño 

CLASE 3B  

 

•  Para el análisis de diseños secuenciales. • 16 puntas de pruebas. • Genera pulsos de reloj para estimular el diseño • Captura los datos en cada flanco del reloj del diseño 

CLASE 4A    

• Para el análisis de diseños secuenciales • 15 puntas de pruebas • Es posible generar hasta 16 estímulos lógicos desde la interfaz para el 

circuito bajo prueba • Recibe el reloj global del diseño • Captura los datos en cada flanco del reloj del diseño 

CLASE 4B    

• Para el análisis de diseños secuenciales • 16 puntas de pruebas • Es posible generar hasta 15 señales lógicas desde la interfaz para 

estimular el circuito • Genera pulsos de reloj para estimular el diseño • Captura los datos en cada flanco del reloj del diseño  Tabla 3‐1: Características de los modos de configuración 

 

21

3.3 Implementación de la plataforma académica  3.3.1 Generación de los bloques ICON, ILA y VIO desde el ChipScope Pro Core Generator  Como  se  había  mencionado  en  la  sección  2.3.4,  el  ChipScope  Pro  Core  Generator  [8]  es  una herramienta con la cual se pueden generar las plantillas para los módulos ICON, ILA y VIO de la tarjeta de adquisición. Una vez se hallan creado estas plantillas es posible instalar los módulos en un proyecto VHDL a través del programa Xilinx ISE 9.1i / Project Navigator [9].   Nota:  En  el Manual  para  el  uso  del ChipScope  Pro  Tools  (sección  8.1)  en  las  secciones  del manual ChipScope Pro Generator  e Insertando los módulos ICON, ILA y VIO se explica como se pueden generar e insertar los módulos de la tarjeta de desarrollo.   En las tablas No. 3‐2 y 3‐3 se resumen las características de los bloques ICON, ILA y VIO de cada modo de configuración, estas deben tenerse en cuenta para poder generarlos con el ChipScope Pro Core Generator.  .  

 Tabla 3‐2: Características de los bloques ICON, ILA y VIO para ser creados en el 

ChipScope Pro Core Generator – Modos de configuración para circuitos combinacionales 

 

22

 Tabla 3‐3: Características de los bloques ICON, ILA y VIO para ser creados en el 

ChipScope Pro Core Generator – Modos de configuración para circuitos combinacionales 

23

3.3.2 Inserción de los módulos y desarrollo de los proyectos en Xilinx ISE.   Después de haber generado los bloques ICON, ILA y VIO correspondientes a cada sección, el paso siguiente corresponde a insertarlos en un proyecto VHDL con los demás componentes. Este paso se tiene que hacer a través del programa Xilinx ISE. La implementación de los diseños se hizo sobre el dispositivo una FPGA con referencia XC3S200 De  la  familia Xilinx Spartan3  [10].El empaquetado (Package) es tipo FT256 y tiene un grado de velocidad (speed) de ‐4.  Nota: En  los anexos del CD de datos adjunto se muestran  todos  los códigos VHDL usados en  la implementación de la plataforma  3.3.3 Implementación de la tarjeta de adquisición.  Para el desarrollo de la tarjeta de adquision se dispuso de una tarjeta de desarrollo Digilent Spartan‐3 System Board  [11]. Esta  tarjeta cuenta con el dispositivo FPGA Spartan3 XC3S200  [10]. También tiene herramientas básicas como un cable JTAG, un oscilador de 50 MHz y expansiones de los pines de entrada y salida (I/O pins) del FPGA.   Debido  a  que  la  tarjeta  de  desarrollo  trabaja  a  niveles  de  voltajes  de  3.3  voltios,  fue  necesario diseñar una tarjeta adicional (tarjeta de protección eléctrica) para regular los voltajes provenientes de los  circuitos  lógicos  que  se  conecten  a  la  plataforma.  Si  el  circuito  bajo  prueba  esta manejando niveles  lógicos de 5.0 voltios  (‘1’  lógico es 5.0 V y  ‘0’  lógico es 0 V),  también es necesario que  los estímulos generados por la plataforma correspondan a niveles aceptados por el diseño.  Diseño e implementación de la tarjeta de protección eléctrica  La tarjeta de protección eléctrica tiene un puerto de salida y otro de entrada, cada uno de 16 bits. Los puertos que se seleccionaron como entradas y salidas del FPGA se muestran en la tabla 3‐4. Se escogieron dos (2) pines de los 32 para el manejo de la señal de reloj, un pin de entrada y otro de salida. El pin D9 del FPGA  (input 15) sirve como  la entrada de  la  señal de  reloj para  los modos CLASE 3A y 4A. El pin B14  (Output 15) es usado para generar  los pulsos de  reloj en  los modos CLASE 3B y 4B   Para  la  tarjeta  de  protección  se  usaron  buffers  o  drivers  con  la  referencia MC54/74HC244A  de Motorola [12]. Estos son   buffers 3 estados que pueden trabajar en niveles TTL o CMOS. Además son dispositivos de muy bajo costo que pueden ser cambiados en caso de que sean dañados. Si se generan  corto  circuitos  en  el diseño,  los  buffers  recibirán  la descarga  sin  afectar  el  FPGA. El  la figura 3‐11 se muestra un esquema de  la  tarjeta de adquisición, esta conformada por  la  tarjeta de desarrollo y la tarjeta de protección.   

24

 Tabla 3‐4: (a) Pines de la FPGA correspondientes a las entradas de la plataforma 

(b) Pines de la FPGA correspondientes a las salidas de la plataforma.  

 Figura 3‐11: Tarjeta de adquisición, conformada por la tarjeta de desarrollo y la tarjeta de adquisición. 

 La tarjeta de protección eléctrica posee tres puertos de expansión, 2 puertos de 20 pines cada uno y un puerto de 40 pines que se conectan a  la  tarjeta de desarrollo. La  tarjeta de protección eléctrica 

25

esta diseñada para ser conectada al puerto de expansión A2 de la tarjeta de desarrollo (ver figura 3‐11).  En  la  figura 3‐12 se muestra  la configuración de pines de  la  tarjeta de protección, El puerto From Design recibe todas las señales provenientes del diseño bajo prueba. El puerto To Design lleva todas las señales que generan estímulos al diseño. El puerto de 40 pines recoge y lleva todas las señales al puerto A2 de la tarjeta de desarrollo.  Nota: En la sección 9.1, 9.2 y 9.3 (anexos) se muestran con detalle el esquema circuital y el dibujo de la tarjeta protección  

Figura  3‐12: Configuración de pines de la tarjeta de protección electrica. 

  

26

Tabla 3‐5: (a) Pines del puerto de 40 pines de la tarjeta de protección 

(b) Pines del puerto FROM DESIGN ‐ (C) Pines del puerto TO DESIGN  3.3.4 Implementación de la interfaz grafica.   La  interfaz grafica de  la plataforma se desarrolló con el programa de computador ChipScope Pro Analyzer  [13].  Aunque  muy  parecidas  cada  modo  de  configuración  tiene  una  interfaz  grafica específica. Los modos de configuración son cargados desde la interfaz, para cada modo se necesita un archivo  *.bit generado desde Xilinx  ISE y otro archivo  *.cpj generado desde el ChipScope Pro Analyzer.  Lo más  importante  en  el desarrollo de  proyectos del ChipScope Pro Analyzer,  es  establecer  las condiciones  de  estímulo  (Triggers  Conditions)  y  las  condiciones  de  almacenamiento  (Storage Qualification). Estas condiciones permiten el muestreo y captura de  los datos correctamente. En  la tabla 3‐6 se describen las configuraciones hechas en el ChipScope para cada modulo.  Nota: En el Manual para  el uso del ChipScope Pro Tools de  la sección 8.1,   se muestra cómo usar el ChipScope Pro Analyzer [13].        

27

Modo Config.  Match Unit  Funtion Value RadixTrigger 

Conditions Storage 

Qualification CLASE 1  M0: DataPort[0]  =  R  Bin  M0  M0 CLASE 2  M1: DataPort[32]  =  R  Bin  M1  M1 CLASE 3A  M1: DataPort[16]  =  B  Bin  M1  M1 CLASE 3B  M1: DataPort[16]  =  B  Bin  M1  M1 CLASE 4A  M2: DataPort[31]  =  B  Bin  M2  M2 CLASE 4B  M2: DataPort[31]  =  B  Bin  M2  M2 Tabla 3‐6: Condiciones del Trigger Setup del ChipScope Analyzer  para los Modos de configuración 

                                      

28

4. PRUEBAS DE VALIDACION Y RESULTADOS  De las distintas pruebas hechas a la plataforma se tomaron dos diferentes sistemas que se exponen a  continuación.  El  primero  es  una  compuerta NAND,  este  se  usara  para  probar  los modos  de configuración CLASE 1 y 2. El segundo diseño es un  flip  flop  toggle, este se usó para  los demás modos de configuración.  4.1 Pruebas del modo CLASE 1.  Para esta prueba se utilizó uno de los puertos disponibles en modo CLASE 1. Se uso una compuerta NAND de dos entradas, las señales de control de la NAND se conectaron a los puertos PTO_1 [0] y PTO_1  [1].La salida de  la compuerta se conectó al puerto PTO_1  [3]. Las señales de control de  la compuerta fueron manipuladas a través de interruptores en el diseño (fuentes externas). El circuito trabajó con niveles de voltajes de 5.0 voltios.  

 Figura 4‐1: Compuerta NAND probada en el modo CLASE 1. 

 Resultados: Los resultados fueron consistentes con los esperados. La salida (PTO_1 [2]) es solo cero ‘0’ cuando las dos señales de control de la compuerta son ambas 1 lógico.   4.2 Pruebas del modo CLASE 2.  Para esta prueba se usaron los puertos Entrada [0] y Entrada [1] para conectarlos las entradas de la compuerta NAND. En el puerto Salida  [0] se conecto  la salida de  la NAND. Los estímulos de  las señales de control para la compuerta se hicieron desde la interfaz grafica.   

 Figura 4‐2: Compuerta NAND probada en el modo CLASE 2. 

 

29

Resultados: Los resultados son consistentes con los esperados para una compuerta NAND. En este caso las entradas de la compuerta fueron proporcionadas por la interfaz grafica.   4.3 Pruebas  del modo CLASE 3A.  En esta prueba se usaron dos (2) flip flop toggle, los dos manejados por una misma señal de reloj. La entrada del primer flip flop se conectó al puerto PTO_1[0]. La entrada del segundo se conectó al  puerto PTO_1[1]. Las salidas del primer y segundo flip flop se conectaron a los puertos PTO_2[0] y PTO_2[1] respectivamente. El reloj del diseño es conectado a la línea especial de la plataforma.  

 Figura 4‐3: flip flops toggle activos en borde de bajada probados en el modo CLASE 3A. 

 Resultados: Los resultados obtenidos en el modo CLASE 3A fueron  los esperados de un flip flop toggle. El toggle del flip flop se activa cuando la entrada tiene el valor de ‘1’ lógico. Nótese que los estímulos  se hacen  en  los bordes de  subida del  reloj,  las  respuestas  se  obtiene  en  los bordes de bajada del reloj.   Sí  los  estímulos  hubieran  sido  aplicados  justo  antes  del  borde  de  bajada  del  reloj,  teniendo  en  cuenta que los tiempos de respuesta del diseño no fueran mayores de 280 nseg, las respuestas del flip flop y su correspondiente entrada se verían en una misma muestra, como si se tratara de un flip flop ideal (respuesta inmediata). Este fenómeno se menciono en la sección 3.2.4.3 al implementar el modulo Retraso. Si no existiera este modulo,  las respuestas correspondientes del evento actual se verían como si pertenecieran al evento próximo.   4.4 Pruebas del modo CLASE 3B.  Esta fue la misma prueba hecha en el modo CLASE 3A, con diferencia que el reloj en este caso fue generado  por  la  plataforma.  El  usuario  en  este  caso  genera  un  pulso  reloj  cuando  lo  considera necesario para estimular su diseño. Los resultados en este caso fueron los mismos del CASO 3B.  

30

 Figura 4‐4: flip flops toggle activos en borde de bajada probados en el modo CLASE 3B. 

 4.5 Pruebas del modo CLASE 4A.  En estas pruebas de nuevo se tienen dos flip flops toggle. La entrada del primer flip flop se conectó al puerto Entrada[0]. La entrada del segundo se conectó al puerto Entrada[1]. Las salidas del primer y segundo flip flop se conectaron a los puertos Salida[0] y Salida[1] respectivamente. En esta prueba la  señal de  reloj  es proporcionada por  el diseño bajo prueba. Los  estímulos  (entradas de  los  flip flops) son proporcionados por la plataforma desde la interfaz grafica.   

 Figura 4‐5: flip flops toggle activos en borde de bajada probados en el modo CLASE 4A. 

 Resultados: Los resultados de la prueba fueron muy buenos. El Toggle se activo en el momento en que  las  entradas  de  los  flip  flops  tomo  el  valor  lógico  de  ‘1’.  La  señal  de  reloj  estuvo  a  una frecuencia lo suficientemente lenta para poder hacer cambios entre flancos.  4.5 Pruebas del modo CLASE 4B.  Las pruebas hechas en este modo de configuración fueron iguales a las del CLASE 4A. La diferencia radica  en  que  la  señal de  reloj del  sistema  fue proporcionada por  la plataforma. Los  resultados fueron los esperados de un flip flop toggle.  

31

 Figura 4‐6: flip flops toggle activos en borde de bajada probados en el modo CLASE 4B. 

                                       

32

5. CONCLUSIONES  Con  los  resultados  obtenidos  en  este  proyecto  se  han  cumplido  los  objetivos  propuestos  en  un principio. Se diseñó e implemento una herramienta para probar y validar distintos circuitos lógicos diseñados en el laboratorio. Esta plataforma posee distintas configuraciones que permiten examinar tanto circuitos combinacionales como secuenciales. También cuenta con otras herramientas como: elementos de protección eléctrica y cables que facilitan la manipulación y la conexión del circuito a la plataforma. A  través de  la plataforma es posible obtener muestras en tiempo real y generar un historial de todas las pruebas realizadas sobre un diseño.  Cabe resaltar la importancia que tuvo en el desarrollo del proyecto el ChipScope Pro de Xilinx. Toda la plataforma académica  se  estructuro  sobre  las bases del ChipScope Pro. Este permitió  establecer comunicación directa con señales internas de un FPGA, que fue usado para tomar y generar señales externas del circuito bajo prueba. Además el ChipScope es una herramienta flexible, ya que muchas de las tareas pueden ser reconfiguradas directamente desde un PC durante el funcionamiento.  La  plataforma  académica  es  una  herramienta  bastante  flexible.  Esta  tiene  la  capacidad  de  ser modificada  o  mejorada  en  futuros  proyectos  sin  cambiar  su  hardware.  La  plataforma  posee elementos  que  pueden  ser  potecializados,  El  FPGA  tiene  compuertas  internas  suficientes  para agregar más funciones integradas con las ya existentes.                                

33

6. PERSPECTIVAS  A este proyecto se le pueden agregar mejoras que faciliten la utilización de la plataforma, algunas podrían ser:  

Mejorar  la  interfaz grafica a  través de  la  integración de un software para  facilitar el manejo de  la plataforma. Es posible automatizar varias operaciones que el usuario debe hacer manualmente. A través de  esta  nueva  interfaz  grafica  se  podría dar más  opciones  al  usuario  como  configurar  el número de puertos, ajustar la frecuencia, etc.  Diseñar e implementar una tarjeta de adquisición especifica para la plataforma. Con esto se lograría conseguir integrar todo el hardware en una sola tarjeta. También es posible recurrir a un FPGA de menor capacidad ya que la actual esta  siendo subutilizada.  Por  ultimo  se  quiere  que  con  otros  proyectos  la  plataforma  cuente  con  un  microprocesador interactivo  insertado en el FPGA. Se busca que el estudiante desde  la plataforma pueda examinar los estados de todas las señales internas del microprocesador. Esto con el fin de que los estudiantes conozcan mejor el desarrollo de las instrucciones en un microprocesador.                               

34

7. REFERENCIAS   [1] BUSTOS YUÑEZ, Paola. Plataforma académica de diseño y depuración de microprocesadores. 

Bogotá, 2007. Proyecto de grado (Pregrado de Ingeniería Electrónica). Universidad de los Andes. Facultad de Ingeniería. Departamento de Ingeniería Eléctrica y Electrónica. 

[2] DAVILA ORTIZ, Diego. Analizador lógico con prestaciones académicas para la verificación de sistemas digitales. Bogotá, 2007. Proyecto de grado (Pregrado de Ingeniería Electrónica). Universidad de los Andes. Facultad de Ingeniería. Departamento de Ingeniería Eléctrica y Electrónica. 

[3] OLIVEIRA MEDEIRA, Oscar., et al. Analizador Lógico de 100 MHz utilizando una FPGA. [En línea]. [Consultado 20 Jun. 2007]. Disponible en < http://iie.fing.edu.uy/~geirea/pub/analiza.pdf >. 

[4] TERAN AYALA, Juan. Analizador Lógico de tiempos implementado en una FPGA utilizando el bus PCI como interfaz de comunicación. [En línea]. [Consultado 20 Jun. 2007]. Disponible en  < http://www.depi.itchihuahua.edu.mx/electro/archivo/electro2001/mem2001/articulos/dig5.pdf >. 

[5] Xilinx, JTAG Programmer Guide. [Base de datos en línea]. [Consultado 20 Jun. 2007]. Disponible en: < http://toolbox.xilinx.com/docsan/3_1i/pdf/docs/jtg/jtg.pdf. > 

[6] BROWN, Stephen y VRANESIC, Zvonko. Fundamentals of Digital Logic with VHDL design. Singapore: Mc Graw Hill, 2000. 92, 679 p. 

[7] Xilinx, ChipScope Pro Software and Cores User Guide. [Base de datos en linea]. [Consultado 18 Jun 2007]. Disponible en < http://www.xilinx.com/ise/verification/chipscope_pro_sw_cores_9_1i_ug029.pdf. > 

[8] Xilinx. ChipScope Pro Core Generator. [Programa de computador]: versión 9.1i: XILINX, 2007. [9] Xilinx. Xilinx ISE 9.1i Software Manuals and Help – PDF collection. [Base de datos en  linea]. 

[Consultado 20 Jun de 2007]. Disponible: < http://toolbox.xilinx.com/docsan/xilinx9/books/manuals.pdf > [10] Xilinx. Spartan‐3 FPGA Family: Funtional Description. [Base de datos en linea]. [Consultado 18 

Jun 2007]. Disponible en: < http://www.xilinx.com/bvdocs/publications/ds099.pdf > [11] Xilinx. Spartan‐3 Starter Kit Board User Guide. [Base de datos en linea].[Consultado 18 Jun 

2007]. Disponible en < http://www.digilentinc.com/Data/Products/S3BOARD/S3BOARD‐rm.pdf >.  [12] On semiconductor. MC74HC244A. [Base de datos en linea]. [Consultado 19 Jun 2007]. 

Disponible en: < http://www.onsemi.com/pub/Collateral/MC74HC244A‐D.PDF >. [13] Xilinx. ChipScope Pro Analyzer. [Programa de computador]: versión 9.1i: XILINX, 2007.                   

35

8. MANUALES (GUIAS PARA EL USUARIO)  8.1 MANUAL PARA EL USO DEL CHIPSCOPE PRO TOOLS. (ChipScope Pro Software 9.1.01i) Versión 9.1.01i, Junio de 2007 (ultima actualización)   

TABLA DE CONTENIDO DEL MANUAL  

Pag Características de los módulos ILA y VIO……………………………………………………………….37 

Módulo ILA……………………………………………………………...……………...……………….37 Módulo VIO………………………………………………………………………………..……………38 

 ChipScope Pro Core Generator……………………………………………………………………………39 

Como generar el módulo ICON.............................................................................................................39 Como generar el módulo ILA………………………………………………………………………….40 Como generar el módulo VIO…………………………………………………………………………41 

 Insertando los módulos ICON. ILA y VIO……………………………………………………………....42 

Como insertar los módulos con Xilinx ISE………………………………………...............................42  Como usar el ChipScope Pro Analyzer…………………………………………………………………..44 

Guardar un proyecto………………………………………………………………...............................44 Establecer conexión con la tarjeta (FPGA)……………………………………………………………44 Programar el dispositivo (FPGA)...........................................................................................................45 Comunicación con el ILA desde el ChipScope Analyzer…………………………………………...45 

Agregar señales al waveform..........................................................................................................45 Configuración del Trigger Setup.………………………………………………….......................46 Como empezar el muestreo……………………………………………………………………….47 

Comunicación con el VIO desde el ChipScope Analyzer...................................................................47                  

36

Características de los módulos ILA y VIO.  Módulo ILA  Ya que el ILA es un módulo sincrono es necesario que el reloj usado en el diseño también sea usado para el ILA. El módulo ILA esta compuesto principalmente por tres componentes.  • Trigger Input and Output Logic  Este es un capturador de eventos en las entradas del ILA.  • Data Capture Logic Este componente captura y almacena en una memoria RAM la información. • Control and Status Logic Es el componente que controla todos los módulos internos del ILA.  

Características  Descripción Tamaño de los puertos   Cada puerto puede ser de 1 a 256 bits de tamaño Múltiples Puertos   Cada modulo ILA puede tener hasta 16 puertos 

de entrada Múltiples  comparadores  (Match  Units)  para cada puerto del ILA 

Cada  ILA  puede  tener  hasta  16  unidades comparativas  (Match  Units),  distribuidas  en todos los puertos de entrada. 

    Tipos de comparadores  

Es  posible  escoger  6    tipos  de  comparadores (Match  Units)  diferentes.  El  comparador  mas completo  es  capaz  de  detectar  eventos  dentro de un rango especificado por el usuario, valores concretos y detectar flancos o bordes. • Range comparator w/edges 

Funciones: = ; <> ; > ; >= ; < ; <= ; in range ; not in range. 

Detecta flancos de subida y de bajada o ambos 

Tabla 8‐1: ILA Triggers Input Logic (Capturador de Eventos de entradas)  Condiciones para el muestreo.  A  través de  las condiciones de eventos (Trigger Conditions) y  las condiciones de muestreo (Storage Qualification Conditions)  se pueden definir condiciones para empezar el muestreo y  los datos que deben ser capturados. Las condiciones de eventos son combinaciones boleanas que son detectados por las unidades comparadoras (Match Units), estas condiciones son usadas para marcar los datos con un punto distintivo en la ventana de muestreo. Las Triggers Conditions son las condiciones que se beben  cumplir para  empezar a  capturar y guardar  los datos. Similarmente  las  condiciones de muestreo  (Storage Qualification Conditions)  son  también  combinaciones Boleanas que deciden que datos son capturados y cuales no.  

37

 Figura 8‐1: Ejemplo de conexión del modulo ILA2. 

 Modulo VIO (Virtual Inputs Outputs)  Cuatro clases de señales pueden ser utilizadas en el VIO.  • Entradas Asincrónicas (Asynchronous Inputs ): 

Estas son muestreadas usando el reloj del JTAG que es insertado a través del cable JTAG  Los  valores  son  muestreados  periódicamente  y  mostrados  a  través  del  ChipsScope Analyzer.  

• Entradas Sincrónicas (Synchronous Inputs):  Estas  son  muestreadas  a  través  del  reloj  del  diseño  (en  la  FPGA)  que  después  son mostradas en el ChipScope Analyzer. 

• Salidas Asincrónicas (Asynchronous Outputs):  Estas son definidas por el usuario y son generadas desde el modulo VIO hacia el diseño. 

• Salidas Sincrónicas (Synchronous Outputs):  Estas son definidas por el usuario y son generadas sincrónicamente con el reloj del diseño. 

         

2 XILINX. ChipScope Pro Software and Cores User Guide. [Base de datos en línea]. [Consultado 18 Junio 2007]. Disponible en < http://www.xilinx.com/ise/verification/chipscope_pro_sw_cores_9_1i_ug029.pdf >. Figura 1-3, P 27.

38

ChipScope Pro Core Generator   Como generar el módulo ICON.  Cuando iniciamos la herramienta ChipScope Generator escogemos dentro de las posibles opciones (Select core type to Generate) el ICON.  Luego con el botón next en la siguiente ventana seleccionamos la ubicación del archivo .edn en Output Netlist, generalmente este archivo se ubica en la carpeta del proyecto de  nuestro diseño  creado  en Xilinx  ISE. Además de  la  ubicación del  archivo debemos especificar el dispositivo FPGA que vamos a utilizar en Device Setting   Device Family.   Dentro de  los parámetros del  ICON  (ICON Parameters)    se  especifican  el numero de puertos de control (Number of Control Ports), estos pueden ser hasta 15 para diferentes módulos ILA y/o VIO.  Dependiendo del dispositivo se podrá usar  la cadena  JTAG que uno desee en  la opción Boundary Scan Chain, la existencia de varias cadenas dentro de un dispositivo son manipuladas a través del TAP,  estas  permiten  que  el  Boundary  Scan  pueda  ser  compartido  con  otras  aplicaciones.  Por defecto se instancian componentes Boundary Scan dentro del modulo.  Es  posible  deshabilitar  la  inserción  del  JTAG  clock  BUFG marcando  Disable  JTAG  clock  BUFG Insertion. Si desactivamos la inserción del BUFG estamos obligados a hacerlo manualmente a través de  herramientas  que  generen  el  reloj  del  JTAG  por medio  del  reloj  global.  El  Core  Utilization describe  le numero de LUT,  flip  flops  (FF)  y  bloques de memorias  (BRAM)   utilizados   para  la creación del modulo.  En la siguiente ventana al seleccionar Generate Core se generan por defecto un archivo con extensión .edn  y  un  archivo  .vhd  (Xilinx XST)  que  describen  la  entidad  del modulo  para  poder  insertarlo dentro de nuestro diseño.   

39

 Figura 8‐2: Ventana del ChipScope Pro Core Generator para crear un bloque ICON3. 

 Como generar el módulo ILA  Del  mismo  modo  que  generamos  los  demás  módulos  en  el  ChipScope    Pro  Core  Generator seleccionamos el ILA core, en la siguiente pagina seleccionamos ubicación del archivo y familia del dispositivo (FPGA). En Device Setting podemos seleccionar Use SRL 16s y/o Use RPMs (dependiendo del dispositivo), estos permiten optimizar el área del módulo dentro del FPGA. En clock Setting se puede seleccionar el flanco de reloj, subida (Rising) o Bajada (Falling).    En  la siguiente ventana se configuran  los parámetros del  ILA, en el Trigger  Input and Match Unit Setting se pueden configurar el numero de puertos (Numbers of Input trigger ports) hasta un máximo de  16.  Dentro  de  esta  casilla  aparecen  el  nombre  de  los  puertos  que  estamos  usando  (TRIG0, TRIG1,…) donde se configuran el tamaño de los puertos (Trigger Width), numero de comparadores (# Match Units) y  tipo de comparadores  (Match Type). Cada puerto  tiene un contador  interno que puede contar hasta 32 eventos ocurridos en los comparadores o Match Unit.  

3 XILINX. ChipScope Pro Core Generator. [Programa de computador]: versión 9.1i: XILINX, 2007.

40

 Figura 8.3: Ventana del ChipScope Pro Core Generator para crear un bloque ILA4. 

 Dentro del Trigger Condition Setting se puede habilitar el un secuenciador (Enable Trigger Sequencer) que es una maquina de estado cíclica de hasta 16 transiciones que termina cuando se satisfacen las condiciones  en  todo  el  ciclo. También dentro de Storage Qualification Condition  Settings  se puede activar  o  desactivar  el  calificador  de  muestreo  (Enable  Storage  Qualification),  por  defecto  esta herramienta siempre esta habilitada.  Cuando seleccionamos la siguiente ventana podemos configurar el bloque de memoria que vamos a usar configurando el numero de muestras (Data Depth) y el tamaño de cada muestra (Data Width). Otra opción es seleccionar Data Same as trigger que genera un bloque de memoria de 512 x el total de bits en los puertos de entada.    Como Generar el VIO  Para generar el VIO también es necesario especificar la ubicación del archivo y el tipo de FPGA que vamos a trabajar. En el cuadro Input/Output Port Setting podemos seleccionar el tipo de puertos y señales  que  queremos  tener  en  nuestro módulo VIO.    También  en  el  cuadro  que  dice Width  se 

4 XILINX. ChipScope Pro Core Generator. [Programa de computador]: versión 9.1i: XILINX, 2007.

41

especifica el tamaño de las entradas y salidas del VIO (hasta 256 bits). Además también podemos ajustar el flanco reloj en Clock Setting  si estamos trabajando con señales sincrónicas.  

 Figura 8‐4: Ventana del ChipScope Pro Core Generator para crear un bloque VIO5. 

 Insertando los módulos ICON, ILA y VIO  A través de la herramienta ChipScope Pro Core Inserter es posible insertar los módulos ICON e ILA en un proyecto. El modulo VIO debe ser  insertado manualmente en el código VHDL del diseño, además del VIO los módulos ICON e ILA también se pueden insertar manualmente si así se quiere.  Como insertar los módulos con Xilinx ISE  Cuando generamos los módulos ICON, ILA y VIO creamos archivos con extensiones *.edn y *.ncf, estos  son  archivos de  activación para poder  insertar  los módulos  en  el  proyecto,  estos  archivos deben ser ubicados en la carpeta de nuestro proyecto en Xilinx ISE. También el ChipScope Generator genera un archivo ejemplo xst_example.vhdl, este nos describe  las entidades de cada módulo para poder insertarlo en nuestro diseño (lenguaje VHDL).  

5 XILINX. ChipScope Pro Core Generator. [Programa de computador]: versión 9.1i: XILINX, 2007.

42

En el archivo de mayor jerarquía de nuestro proyecto insertamos los componentes de cada modulo (ICON, ILA y/o VIO) exactamente como se describen en el archivo ejemplo (xst_example.vhdl), en la figura 8‐5 se muestra la estructura de un proyecto en Xilinx ISE. Hacemos el mapeo de cada modulo con  la  función  port  map.  Luego  sintetizamos  el  proyecto,  asignamos  pines  (si  es  necesario), implementamos nuestro diseño y generamos el archivo .bit.  Anotaciones  • Al generar los archivos *.edn y *.ncf con el ChipScope Pro Core Generator la ubicación de los 

archivos debe hacerse en la carpeta del proyecto hecho en Xilinx ISE. • Al insertar los módulos del ChipScope en nuestro diseño se deben declarar los componentes y 

puertos exactamente como están descritos en el archivo xst_example.vhdl, de otra  forma no se podrá hacer la implementación completa del diseño. 

• Al insertar los módulos y sintetizar el proyecto aparecen avisos (warning) diciendo que se están instanciando cajas negras en el proyecto, sin embargo el proyecto no debe contener errores al implementar el diseño y generar el archivo de programación. 

 

 Figura 8‐5: Estructura de un proyecto con bloques ILA , ICON y VIO instanciados 

43

 Como Usar el ChipScope Pro Analyzer.  El ChipScope Pro Core Analyzer esta compuesto por cuatro partes:   • Árbol del proyecto (Project Tree) que esta ubicado en la parte superior izquierda de la ventana  • El browser de Señales (Signal Browser) esta ubicado en la parte inferior izquierda de la ventana  • El panel de mensajes (message pane) en la parte inferior de la ventana. • La ventana principal (main window).  Guardar un proyecto   Al abrir la ventana del ChipScope Pro Core Analyzer se inicia con un proyecto nuevo, en el menú principal File   Save Proyect As se pueden guardar el proyecto con la extensión *.cpj. También en File   Open Project se puede abrir un proyecto ya existente, de igual modo en File   New Project se puede crear un proyecto nuevo.  Establecer conexión con la tarjeta (FPGA)  La interfase del ChipScope se puede hacer a través de varios tipos de cables JTAG. Para detectar la cadena JTAG del dispositivo se debe especificar en el menú JTAG Chain   Xilinx Parallel Cable, se  selecciona  el  tipo  de  cable  que  se  esta  usando  y  aceptamos.  Si  la  cadena  JTAG  se  detecto correctamente  entonces  aparecerá  un  aviso  donde  aparecen  el  nombre  de  los  componentes encontrados,  el  IDCODE  y  el  IR  de  cada  componente,  de  lo  contrario  el  panel  de  mensajes aparecerá un Error diciendo Failed to detect Cable. Si el cable JTAG que estamos usando es tipo USB entonces se  ingresa a JTAG Chain   Xilinx Pratform USB Cable y procedemos  igual. ChipScope 

Analyzer puede detectar el cable automáticamente haciendo clic en el icono   ubicado en la parte superior.  En  el menú principal  JTAG Chain   Auto Core  Status Poll  se  puede  activar  y desactivar  esta herramienta. La función del Auto Core Status Poll es desactivar automáticamente el puerto que se esta usando para permitir el uso de este en otras aplicaciones cuando no esta siendo usado por el ChipScope.     

44

 Figura 8‐6: Estableciendo conexión con la tarjeta6. 

 Programar el Dispositivo (FPGA)   Cuando es detectada la cadena JTAG del dispositivo, en el menú principal se selecciona Device y se encontraran  los  diferentes  dispositivos  detectados;  se  selecciona  el  dispositivo  que  se  desea programar y hacemos clic en Configure. Aquí se selecciona la ubicación del archivo *.bit  (en Select New  file)   que generamos en Xilinx ISE y   hacemos clic en OK. Por ejemplo si estamos trabajando con una FPGA Spartan 3 XC3S200 entonces los pasos son Device   DEV:0 MyDevice0 (XC3S200)   Configure, seleccionamos el archivo .bit y aceptamos.  Al detectar la cadena JTAG en el dispositivo en el árbol del proyecto aparecerán todos los módulos ICON,  ILA  y/o VIO  que  fueron  insertados  y  que pueden  ser  configurados  y muestreados  en  el ChipScope Pro Analyzer.  Comunicación con el ILA desde ChipScope Analyzer   Si sobre el diseño que realizamos creamos los módulos ILA entonces después de haber detectado la cadena  JTAG  y programar  el dispositivo,  en  el  árbol del proyecto de  la  ventana del ChipScope Analyzer se mostraran  los módulos  insertados   (VIO y/o ILA). Por orden  jerárquico cada módulo ILA contiene cuatro elementos: Trigger Setup, Waveform, Listing y Bus Plot (como se muestra en la Figura 8‐9).   Agregar señales al Waveform   Para desplegar el Waveform en  la ventana principal hacemos doble clic en Waveform dentro del árbol del proyecto (Project Tree). Después seleccionamos las señales que queremos visualizar en el Signal  Browser  con  el  clic  derecho.  Luego  en  el Waveform  las  señales  se  pueden  distribuir  en diferentes buses y cambiar los nombres.     6 XILINX. ChipScope Pro Software and Cores User Guide. [Base de datos en línea]. [Consultado 18 Junio 2007]. Disponible en < http://www.xilinx.com/ise/verification/chipscope_pro_sw_cores_9_1i_ug029.pdf>. Figura 4-17, P 127. 

45

Configuración del Trigger Setup   Para desplegar el Trigger Setup en  la ventana principal es necesario hacer doble clic en el Trigger Setup dentro del  árbol del proyecto  (Project Tree)  o  en  el menú principal Window   New Unit Window   Dev…MyILA y seleccionar Trigger Setup.   El Trigger Setup contiene tres componentes básicos: Match Funtions, Trigger Conditions y Capture Setting que son expandibles y contraibles debajo y en la parte superior izquierda del trigger setup respectivamente.  En  el Match  Funtions  están desplegados  todas  las unidades  (Match Unit)  que  especificamos  y  el puerto al que está adjunta cada unidad en  la columna del Match Unit. En  la columna Funtions se pueden escoger las funciones a realizar de cada unidad. En la columna de Value se puede escribir el valor  (o  el  rango) para  el  cual queremos  generar un  evento. También  se puede  cambiar  la  base numérica en la columna correspondiente a Radix.   

 Figura 8‐7: El Match Funtions del Trigger setup7

 En  la ventana de Trigger Conditions dentro del Trigger Setup se especifican condiciones necesarias que deben  cumplirse debido a  los  eventos generados por  las unidades  comparativas. Se pueden agregar o borrar condiciones  en la parte izquierda de la ventana del Trigger Conditions. Si hacemos doble clic en una de  las celdas de  la columna Trigger Condition Equation, se abrirá una ventana en donde especificaremos la ecuación boleana correspondiente para la condición.  En la ventana de Capture Setting se encuentra una celda llamada Storage Qualification, al hacer doble clic  sobre  la celda  se puede especificar una ecuación boleana al  igual que en el Trigger Condition Equation. Para empezar a capturar y guardar los datos es necesario que se cumplan las condiciones del Trigger Conditions. Solo los datos que cumplan con las condiciones del Storage Qualification serán almacenados en memoria.   

 Figura 8‐8: Capture setting8

 

7 XILINX. ChipScope Pro Software and Cores User Guide. [Base de datos en línea]. [Consultado 18 Junio 2007]. Disponible en < http://www.xilinx.com/ise/verification/chipscope_pro_sw_cores_9_1i_ug029.pdf>. Figura 4-28, P 133. 8 XILINX. ChipScope Pro Software and Cores User Guide. [Base de datos en línea]. [Consultado 18 Junio 2007]. Disponible en < http://www.xilinx.com/ise/verification/chipscope_pro_sw_cores_9_1i_ug029.pdf>. Figura 4-30, P 134. 

46

Hay dos  formas de desplegar  los datos que  fueron muestreados,  en  las ventana Type dentro del Capture Setting se puede seleccionar Window o N sample. Si seleccionamos el tipo Window debemos especificar el número de ventanas (en Windows) y el número de muestras por cada ventana (Depth) que son en potencias de 2 hasta 512. Si seleccionamos N Sample entonces será solo una ventana y el numero de datos muestreados (Sample per Trigger) será cualquier entero entre 1 y 512.  

 Figura 8‐9: Ventana del ChipScope Pro Analyzer 

Trigger Setup y Waveform desplegados en la ventana principal9 

Como empezar el muestreo  Una  vez  configuradas  todas  las  condiciones  en  el  Trigger  Setup,  nos  vamos  al menú  principal Trigger Setup   Run. Cuando finaliza el muestreo de los datos entonces son desplegadas cada una de las señales que desplegamos en el Waveform.  Comunicación con el VIO desde ChipScope Analyzer   Si  sobre  el diseño  que  realizamos  en Xilinx  ISE    insertamos módulos VIO  y   después de  haber detectado la cadena JTAG y haber programado el dispositivo (FPGA) desde el ChipScope Analyzer, en el árbol del proyecto  se mostraran  todos  los módulos VIO que  insertamos, cada modulo VIO contiene un elemento  llamado VIO Console, para desplegar el VIO en  la ventana principal  (Main Window) hacemos doble clic sobre la VIO Console que queremos ver.  Para agregar las señales que queremos visualizar en la consola VIO hacemos clic derecho sobre las señales en el Signal Browser y elegimos la opción   add to view. Luego en la consola VIO podemos distribuir las señales en diferentes buses y cambiarles los nombres. Las salidas del VIO (entradas de nuestro diseño) son de color verde y las entradas del VIO (salidas del diseño) están visualizadas en color azul.   

9 XILINX. ChipScope Pro Analyzer. [Programa de computador]: versión 9.1i: XILINX, 2007

47

5.2 MANUAL PARA EL USO DE LA PLATAFORMA ACADEMICA  Versión 1.0 – Junio de 2007   

TABLA DE CONTENIDO DEL MANUAL  

Pag Como operar los modos de configuración desde la interfaz…………………………………………..49 

Modo CLASE 1………………………………………………………………………..…………………49 Modo CLASE 2…………………………………………………………………………..………………50 Modo CLASE3A………………………………………………………………………………………...50 Modo CLASE 3B.......................................................................................................................................51 Modo CLASE 4A…………………………………………………………………………………...…...52 Modo CLASE 4B…………………………………………………………………………………….…..53 Tabla de conexiones…………………………………………………………………………….………55 

 Uso de la interfaz grafica de la plataforma………………………………………………..……………..57 

Establecer conexión con la tarjeta de adquisición…………………………………………….…..….57 Como cargar un modo de configuración…………………………………………………………..…57 Como configurar y correr el muestreo de señales……………………………………………….......57 

                            

48

Como operar los modos de configuración desde la interfaz  La  plataforma  académica  cuenta  con  seis  (6) modos  de  configuración  distintos  que  pueden  ser cargados desde la interfaz grafica.   Modo de configuración: CLASE 1   En la figura 8‐10 se muestra un esquema de la interfaz grafica del modo CLASE 1. Las señales de este modo se encuentran organizadas en dos  (2) vectores de 8 bits  llamados PTO_1 y PTO_2. La señal Cargar se puede manipular en la ventana de control de la interfaz.  

Figura 8‐10: Modo de configuración CLASE 1. 

 Pasos para usar el Modo CLASE 1.  

1. Abrir el programa de computador ChipScope Pro Analyzer y establecer comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de  configuración CLASE 1 para usarlo desde  la  interfaz.  (ver  sección Como cargar un modo de configuración en este manual) 

3. Conectar al puerto From Design  las señales que se quieren observar en  la  interfaz.  (ver  la tabla  de  conexiones  de  este manual). Verificar  la  conexión  en  la  ventana de  control  de  la interfaz. 

4. Configurar el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos (ver la sección como configurar y correr el muestreo de este manual). 

5. Verificar el dato visualizado en la ventana de control y pulsar el botón Cargar de la interfaz. El  numero  de  pulsaciones  del  botón Cargar  debe  corresponder  al  numero  de muestras configuradas para finalizar la prueba. 

6. Para iniciar otra prueba el retoma el proceso desde el paso 4.   

49

Modo de configuración: CLASE 2  En la figura 8‐11 se muestra la interfaz grafica del modo de configuración CLASE 2. En la interfaz se pueden las señales Entradas (estímulos) y Salidas en puertos de 16 bits, además de la señal interna Cargar.  

 Figura 8‐11: Modo de configuración CLASE 2 

 Pasos para usar el Modo CLASE 2.  

1. Abrir el programa de computador ChipScope Pro Analyzer y establecer comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de  configuración CLASE 2 para usarlo desde  la  interfaz.  (ver  sección Como cargar un modo de configuración en este manual) 

3. Conectar los puertos From Design y To Design a las señales de observación y los estímulos del circuito respectivamente. Verificar la conexión en la ventana de control. (ver la tabla de conexiones de este manual) 

4. Establecer el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos. (ver la sección como configurar y correr el muestreo de este manual) 

5. Con  el mouse  y  el  teclado  se podrán manipular  los datos de  las  señales Entradas  en  la ventana de control y ver los resultados de los estímulos hechos en las señales Salidas. 

6. Verificar el dato visualizado en la ventana inferior y pulsar el botón Cargar de la interfaz. El  numero  de  pulsaciones  del  botón Cargar  debe  corresponder  al  numero  de muestras configuradas para finalizar la prueba. 

7. Para iniciar otra prueba el retoma el proceso desde el paso 4.  Modo de configuración: CLASE 3A.  En  la  figura 8‐12 se muestra  la  interfaz del modo de configuración CLASE 3A. En  la ventana de control de la interfaz se muestran las señales de observación en dos (2) vectores llamados PTO 1 y 

50

PTO  2, de  8 y  7 bits  respectivamente;  también  se muestra  la  actividad del  reloj del diseño bajo prueba, esta señal se llama CLK.   

 Figura 8‐12: Modo de configuración CLASE 3A. 

 Pasos para usar el modo CLASE 3A   

1. Abrir el programa de computador ChipScope Pro Analyzer y establecer comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de configuración CLASE 3A para usarlo desde la interfaz. (ver sección Como cargar un modo de configuración en este manual) 

3. Conectar al puerto From Design las señales que se quieren observar en la interfaz y el reloj del diseño bajo prueba. (ver la tabla de conexiones de este manual). Verificar la conexión en la ventana de control de la interfaz. 

4. Configurar el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos (ver la sección como configurar y correr el muestreo de este manual). 

5. Los datos se anexarán automáticamente al diagrama de pruebas con cada borde de reloj. Se debe  tener  en  cuenta  que  cada  pulso  de  reloj  equivale  dos muestras  del  diagrama  de pruebas. 

6. Para iniciar otra prueba el retoma el proceso desde el paso 4.  Modo de configuración: CLASE 3B.  En la figura 8‐13 se muestra la interfaz grafica del modo de configuración CLASE 3B. En la ventana de  control  se  visualizan  las  señales  provenientes  de  las  puntas  de  prueba,  estas  se  encuentran organizadas  en  dos  puertos  de  8  bits  llamados  PTO_1  y  PTO_2.  En  esta  ventana  también  se encuentra una señal  interna en  la que se debe especificar el  flanco de operación del circuito bajo prueba. La señal CLK genera pulsos de reloj con clic hechos en la interfaz.  

51

 Figura 8‐13: Modo de configuración CLASE 3B. 

 Pasos para usar el modo CLASE 3B.  

1. Abrir  el programa de  computador ChipScope Pro Analyzer y  establecer  comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de configuración CLASE 3B para usarlo desde la interfaz. (ver sección Como cargar un modo de configuración en este manual) 

3. Conectar al puerto From Design  las  señales que  se quieren observar en  la  interfaz. Del puerto To Design  se debe  tomar  la  señal de  reloj que estimulará el diseño bajo prueba (ver la tabla de conexiones de este manual).  

4. Verificar  las conexiones en  la ventana de control generando pulsos de reloj y viendo el funcionamiento del diseño paso a paso. 

5. Configurar el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos (ver la sección como configurar y correr el muestreo de este manual). 

6. Los datos se anexarán automáticamente al diagrama de pruebas con cada borde de reloj. Se debe tener en cuenta que cada pulso de reloj equivale dos muestras del diagrama de pruebas. 

7. Para iniciar otra prueba el retoma el proceso desde el paso 5.  Modo de configuración: CLASE 4A  En la figura 8‐14 se muestra la interfaz grafica del modo de configuración CLASE 4A. En la ventana de control se visualiza la señal CLK que muestra la actividad del reloj del diseño y las señales que se examinan son los vectores Entradas (estímulos) y Salidas.   

52

 Figura 8‐14: Modo de configuración CLASE 4A. 

 Pasos para usar el modo CLASE 4A.  

1. Abrir  el programa de  computador ChipScope Pro Analyzer y  establecer  comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de configuración CLASE 4A para usarlo desde la interfaz. (ver sección Como cargar un modo de configuración en este manual) 

3. Conectar al puerto From Design  las  señales que  se quieren observar en  la  interfaz y  la señal de reloj del diseño. Del puerto To Design se deben  tomar  las señales de control o estímulos para el diseño bajo prueba (ver la tabla de conexiones de este manual).  

4. Verificar  las  conexiones  en  la  ventana  de  control  generando  estímulos  y  viendo  los resultados, además comprobar la actividad en el reloj.   

5. Configurar el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos (ver la sección como configurar y correr el muestreo de este manual). 

6. Los datos se anexarán automáticamente al diagrama de pruebas con cada borde de reloj. Se debe tener en cuenta que cada pulso de reloj equivale dos muestras del diagrama de pruebas. 

7. Para iniciar otra prueba el retoma el proceso desde el paso 5.  Modo de configuración: CLASE 4B  En la figura 8‐15 se muestra la interfaz grafica del modo de configuración CLASE 4B. En la ventana de  control  se muestran  los vectores  Salidas  y Entradas  (estímulos). En  esta ventana  también  se encuentra una señal  interna en  la que se debe especificar el  flanco de operación del circuito bajo prueba. La señal CLK esta conectada al diseño bajo prueba y genera pulsos de reloj con cada clic hecho en la interfaz.   

53

 Figura 8‐15: Modo de configuración CLASE 4B. 

 Pasos para usar el modo CLASE 4B.  

1. Abrir  el programa de  computador ChipScope Pro Analyzer y  establecer  comunicación con la tarjeta de adquisición. (ver sección Como establecer conexión en este manual) 

2. Descargar el modo de configuración CLASE 4B para usarlo desde la interfaz. (ver sección Como cargar un modo de configuración en este manual) 

3. Conectar al puerto From Design  las  señales que  se quieren observar en  la  interfaz. Del puerto To Design  se deben  tomar  las  señales de  control para  el diseño bajo prueba  al igual que la señal del reloj. (ver la tabla de conexiones de este manual).  

4. Verificar las conexiones en la ventana de control generando pulsos de reloj y cambios en el vector Entradas para ver el funcionamiento paso a paso. 

5. Configurar el número de muestras que se quieren visualizar en el diagrama de pruebas y correr la interfaz para capturar los datos (ver la sección como configurar y correr el muestreo de este manual). 

6. Los datos se anexarán automáticamente al diagrama de pruebas con cada pulso de reloj. Se debe tener en cuenta que cada pulso de reloj equivale dos muestras del diagrama de pruebas. 

7. Para iniciar otra prueba se retoma el proceso desde el paso 5.             

54

Tabla de Conexiones  En la figura 8‐16 se muestra un esquema de la tarjeta de adquisición de la plataforma académica. La plataforma  cuenta  con  un  puente  jumper  (Configuración  eléctrica),  que  permite  adaptar  la plataforma a circuitos que trabajen con niveles de voltajes de 3.3 o 5 voltios. En la tabla 8‐2 y 8‐3 se muestra la configuración de los puertos FROM DESIGN y TO DESIGN respectivamente.  

 Figura 8‐16: Esquema de la tarjeta de Adquisición. 

        

55

Pin conector Color CLASE 1 CLASE 2 CLASE 3A CLASE 3B CLASE 4A CLASE 4B

1 Negro PTO_1 [0] Salida [0] PTO_1 [0] PTO_1 [0] Salida [0] Salida [0] 2 Blanco PTO_1 [1] Salida [1] PTO_1 [1] PTO_1 [1] Salida [1] Salida [1] 3 Gris PTO_1 [2] Salida [2] PTO_1 [2] PTO_1 [2] Salida [2] Salida [2] 4 Violeta PTO_1 [3] Salida [3] PTO_1 [3] PTO_1 [3] Salida [3] Salida [3] 5 Azul PTO_1 [4] Salida [4] PTO_1 [4] PTO_1 [4] Salida [4] Salida [4] 6 Verde PTO_1 [5] Salida [5] PTO_1 [5] PTO_1 [5] Salida [5] Salida [5] 7 Amarillo PTO_1 [6] Salida [6] PTO_1 [6] PTO_1 [6] Salida [6] Salida [6] 8 Naranja PTO_1 [7] Salida [7] PTO_1 [7] PTO_1 [7] Salida [7] Salida [7] 9 Rojo PTO_2 [0] Salida [8] PTO_2 [0] PTO_2 [0] Salida [8] Salida [8] 10 Marrón PTO_2 [1] Salida [9] PTO_2 [1] PTO_2 [1] Salida [9] Salida [9] 11 Negro PTO_2 [2] Salida [10] PTO_2 [2] PTO_2 [2] Salida [10] Salida [10] 12 Blanco PTO_2 [3] Salida [11] PTO_2 [3] PTO_2 [3] Salida [11] Salida [11] 13 Gris PTO_2 [4] Salida [12] PTO_2 [4] PTO_2 [4] Salida [12] Salida [12] 14 Violeta PTO_2 [5] Salida [13] PTO_2 [5] PTO_2 [5] Salida [13] Salida [13] 15 Azul PTO_2 [6] Salida [14] PTO_2 [6] PTO_2 [6] Salida [14] Salida [14] 16 Verde PTO_2 [7] Salida [15] CLK PTO_2 [7] CLK Salida [15] 17 Amarillo NC NC NC NC NC NC 18 Naranja NC NC NC NC NC NC 19 Rojo NC NC NC NC NC NC 20 Marrón GND GND GND GND GND GND

Tabla 8‐2: Conexiones del puerto FROM DESIGN  

Pin conector Color CLASE 1 CLASE 2 CLASE 3A CLASE 3B CLASE 4A CLASE 4B

1 Negro NC Entrada [0] NC NC Entrada [0] Entrada [0] 2 Blanco NC Entrada [1] NC NC Entrada [1] Entrada [1] 3 Gris NC Entrada [2] NC NC Entrada [2] Entrada [2] 4 Violeta NC Entrada [3] NC NC Entrada [3] Entrada [3] 5 Azul NC Entrada [4] NC NC Entrada [4] Entrada [4] 6 Verde NC Entrada [5] NC NC Entrada [5] Entrada [5] 7 Amarillo NC Entrada [6] NC NC Entrada [6] Entrada [6] 8 Naranja NC Entrada [7] NC NC Entrada [7] Entrada [7] 9 Rojo NC Entrada [8] NC NC Entrada [8] Entrada [8] 10 Marrón NC Entrada [9] NC NC Entrada [9] Entrada [9] 11 Negro NC Entrada [10] NC NC Entrada [10] Entrada [10]12 Blanco NC Entrada [11] NC NC Entrada [11] Entrada [11]13 Gris NC Entrada [12] NC NC Entrada [12] Entrada [12]14 Violeta NC Entrada [13] NC NC Entrada [13] Entrada [13]15 Azul NC Entrada [14] NC NC Entrada [14] Entrada [14]16 Verde NC Entrada [15] NC CLK Entrada [15] CLK 17 Amarillo NC NC NC NC NC NC 18 Naranja NC NC NC NC NC NC 19 Rojo NC NC NC NC NC NC 20 Marrón GND GND GND GND GND GND

Tabla 8‐3: Conexiones del puerto TO DESIGN  

56

57

Uso de la interfaz grafica de la plataforma.  Establecer conexión con la tarjeta de adquisición.  Para detectar la cadena JTAG del dispositivo se debe especificar en el menú JTAG Chain   Xilinx Parallel Cable, se selecciona el cable Xilinx Parallel  III y aceptamos. Si  la cadena  JTAG se detecto correctamente  entonces  aparecerá  un  aviso  donde  aparecen  el  nombre  de  los  componentes encontrados, de lo contrario el panel de mensajes aparecerá un Error diciendo Failed to detect Cable. 

ChipScope Analyzer puede detectar el cable automáticamente haciendo clic en el icono   ubicado en la parte superior.  Nota: Para la plataforma académica el ChipScope debe detectar dos dispositivos: el FPGA XC3S200 y la memoria flash XCF02S    Como cargar un modo de configuración.  Para  el  uso  de  la  interfaz  grafica  es  necesario  descargar  en  el  PC  seis  (6)  carpetas  cada  una correspondiente a los modos de configuración existentes. Cada carpeta contiene un archivo *.bit y uno *.cpj. Para cargar un modo de configuración primero se programa el FPGA con el archivo *.bit y luego abrimos un proyecto con el archivo *.cpj.   Para  cargar  un modo  primero  se  debe  detectar  la  cadena  JTAG,  luego  en  el menú  principal  se selecciona Device   DEV:0 MyDevice0 (XC3S200)   Configure. Aquí en Select New File se ubica el archivo *.bit ubicado en la carpeta del modo que queremos usar y hacemos clic en OK. En la parte inferior de  la ventana aparecerá   una barra de proceso de  la programación. Si antes de cargar el modo  configuración  se  encontraba  abierto  un  modo  distinto,  entonces  aparecerá  una  ventana preguntando si se quieren cambiar las señales del proyecto actual a lo cual se debe responder que NO.   Una vez programada  la  tarjeta  se va al menú en File   Open Project y  se carga el archivo  *.cpj correspondiente  al  modo  de  configuración  que  queremos  cargar.  Aparecerá  una  ventana  que preguntara si queremos guardar el proyecto anterior a lo cual se responderá que NO.   Como configurar y correr el muestreo de señales. 

Para correr el muestreo de las señales en el diagrama de pruebas debemos seleccionar en la ventana de configuración el número de muestras a desplegar (Depth), estas son en potencias de 2 hasta un máximo  de  512.  Luego  nos  vamos  al menú  principal  Trigger  Setup   Run. Cuando  finaliza  el muestreo de los datos entonces son desplegadas cada una de las señales en un diagrama. 

 

 

       

9. ANEXOS  9.1 Esquema de la tarjeta de protección Diseñada  

 

58

9.2 Dibujo de la tarjeta de protección (Top)  

  

59

9.3 Dibujo de la tarjeta de protección (Bottom)  

  

60